From mboxrd@z Thu Jan 1 00:00:00 1970 From: kbuild test robot Subject: Re: [PATCH] drm/syncobj: add sync obj wait interface. (v7) Date: Wed, 19 Jul 2017 23:44:10 +0800 Message-ID: <201707192346.DNqokMqX%fengguang.wu@intel.com> References: <20170718064459.13741-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="vtzGhvizbBRQ85DL" Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2024B6E54E for ; Wed, 19 Jul 2017 15:44:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170718064459.13741-1-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dave Airlie Cc: kbuild-all@01.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --vtzGhvizbBRQ85DL Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Dave, [auto build test WARNING on drm/drm-next] [also build test WARNING on v4.13-rc1] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Dave-Airlie/drm-syncobj-add-sync-obj-wait-interface-v7/20170719-022127 base: git://people.freedesktop.org/~airlied/linux.git drm-next reproduce: make htmldocs All warnings (new ones prefixed by >>): WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org) arch/x86/include/asm/uaccess_32.h:1: warning: no structured comments found include/linux/init.h:1: warning: no structured comments found include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_major' description in 'fsl_mc_device_id' include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_minor' description in 'fsl_mc_device_id' kernel/sched/core.c:2088: warning: No description found for parameter 'rf' kernel/sched/core.c:2088: warning: Excess function parameter 'cookie' description in 'try_to_wake_up_local' include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create' kernel/sys.c:1: warning: no structured comments found include/linux/device.h:969: warning: No description found for parameter 'dma_ops' drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found include/linux/iio/iio.h:597: warning: No description found for parameter 'trig_readonly' include/linux/iio/trigger.h:151: warning: No description found for parameter 'indio_dev' include/linux/iio/trigger.h:151: warning: No description found for parameter 'trig' include/linux/device.h:970: warning: No description found for parameter 'dma_ops' include/linux/usb/gadget.h:230: warning: No description found for parameter 'claimed' include/linux/usb/gadget.h:230: warning: No description found for parameter 'enabled' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_altset_not_supp' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_stall_not_supp' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_zlp_not_supp' include/drm/drm_drv.h:537: warning: No description found for parameter 'set_busid' include/drm/drm_drv.h:537: warning: No description found for parameter 'debugfs_init' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_open_object' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_close_object' include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_handle_to_fd' include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_fd_to_handle' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_export' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_pin' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_unpin' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_res_obj' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_get_sg_table' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import_sg_table' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vmap' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vunmap' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_mmap' include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_vm_ops' include/drm/drm_drv.h:537: warning: No description found for parameter 'major' include/drm/drm_drv.h:537: warning: No description found for parameter 'minor' include/drm/drm_drv.h:537: warning: No description found for parameter 'patchlevel' include/drm/drm_drv.h:537: warning: No description found for parameter 'name' include/drm/drm_drv.h:537: warning: No description found for parameter 'desc' include/drm/drm_drv.h:537: warning: No description found for parameter 'date' include/drm/drm_drv.h:537: warning: No description found for parameter 'driver_features' include/drm/drm_drv.h:537: warning: No description found for parameter 'ioctls' include/drm/drm_drv.h:537: warning: No description found for parameter 'num_ioctls' include/drm/drm_drv.h:537: warning: No description found for parameter 'fops' include/drm/drm_color_mgmt.h:1: warning: no structured comments found drivers/gpu/drm/drm_syncobj.c:346: warning: Excess function parameter 'dev' description in 'drm_syncobj_open' drivers/gpu/drm/drm_syncobj.c:371: warning: Excess function parameter 'dev' description in 'drm_syncobj_release' >> drivers/gpu/drm/drm_syncobj.c:468: warning: Excess function parameter 'timeout_sec' description in 'drm_timeout_abs_to_jiffies' include/drm/drm_syncobj.h:1: warning: no structured comments found drivers/gpu/drm/drm_syncobj.c:347: warning: Excess function parameter 'dev' description in 'drm_syncobj_open' drivers/gpu/drm/drm_syncobj.c:372: warning: Excess function parameter 'dev' description in 'drm_syncobj_release' drivers/gpu/drm/drm_syncobj.c:469: warning: Excess function parameter 'timeout_sec' description in 'drm_timeout_abs_to_jiffies' drivers/gpu/host1x/bus.c:50: warning: Excess function parameter 'driver' description in 'host1x_subdev_add' Documentation/core-api/assoc_array.rst:13: WARNING: Enumerated list ends without a blank line; unexpected unindent. Documentation/doc-guide/sphinx.rst:126: ERROR: Unknown target name: "sphinx c domain". kernel/sched/fair.c:7650: WARNING: Inline emphasis start-string without end-string. kernel/time/timer.c:1200: ERROR: Unexpected indentation. kernel/time/timer.c:1202: ERROR: Unexpected indentation. kernel/time/timer.c:1203: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:122: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:125: ERROR: Unexpected indentation. include/linux/wait.h:127: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/time/hrtimer.c:990: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/signal.c:322: WARNING: Inline literal start-string without end-string. include/linux/iio/iio.h:219: ERROR: Unexpected indentation. include/linux/iio/iio.h:220: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/iio/iio.h:226: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/iio/industrialio-core.c:638: ERROR: Unknown target name: "iio_val". drivers/iio/industrialio-core.c:645: ERROR: Unknown target name: "iio_val". drivers/message/fusion/mptbase.c:5051: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/tty/serial/serial_core.c:1898: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/pci/pci.c:3457: ERROR: Unexpected indentation. include/linux/regulator/driver.h:271: ERROR: Unknown target name: "regulator_regmap_x_voltage". include/linux/spi/spi.h:370: ERROR: Unexpected indentation. drivers/gpu/drm/drm_scdc_helper.c:203: ERROR: Unexpected indentation. drivers/gpu/drm/drm_scdc_helper.c:204: WARNING: Block quote ends without a blank line; unexpected unindent. drivers/gpu/drm/drm_ioctl.c:704: WARNING: Definition list ends without a blank line; unexpected unindent. Documentation/gpu/todo.rst:111: ERROR: Unknown target name: "drm_fb". sound/soc/soc-core.c:2671: ERROR: Unknown target name: "snd_soc_daifmt". sound/core/jack.c:312: ERROR: Unknown target name: "snd_jack_btn". Documentation/userspace-api/unshare.rst:108: WARNING: Inline emphasis start-string without end-string. Documentation/usb/typec.rst:: WARNING: document isn't included in any toctree Documentation/usb/usb3-debug-port.rst:: WARNING: document isn't included in any toctree Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 133: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 164: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "~/.fonts.conf", line 193: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in isn't supported and may not work as expected Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in isn't supported and may not work as expected vim +468 drivers/gpu/drm/drm_syncobj.c 303 304 int drm_syncobj_export_sync_file(struct drm_file *file_private, 305 int handle, int *p_fd) 306 { 307 int ret; 308 struct dma_fence *fence; 309 struct sync_file *sync_file; 310 int fd = get_unused_fd_flags(O_CLOEXEC); 311 312 if (fd < 0) 313 return fd; 314 315 ret = drm_syncobj_fence_get(file_private, handle, &fence); 316 if (ret) 317 goto err_put_fd; 318 319 sync_file = sync_file_create(fence); 320 321 dma_fence_put(fence); 322 323 if (!sync_file) { 324 ret = -EINVAL; 325 goto err_put_fd; 326 } 327 328 fd_install(fd, sync_file->file); 329 330 *p_fd = fd; 331 return 0; 332 err_put_fd: 333 put_unused_fd(fd); 334 return ret; 335 } 336 /** 337 * drm_syncobj_open - initalizes syncobj file-private structures at devnode open time 338 * @dev: drm_device which is being opened by userspace 339 * @file_private: drm file-private structure to set up 340 * 341 * Called at device open time, sets up the structure for handling refcounting 342 * of sync objects. 343 */ 344 void 345 drm_syncobj_open(struct drm_file *file_private) > 346 { 347 idr_init(&file_private->syncobj_idr); 348 spin_lock_init(&file_private->syncobj_table_lock); 349 } 350 351 static int 352 drm_syncobj_release_handle(int id, void *ptr, void *data) 353 { 354 struct drm_syncobj *syncobj = ptr; 355 356 drm_syncobj_put(syncobj); 357 return 0; 358 } 359 360 /** 361 * drm_syncobj_release - release file-private sync object resources 362 * @dev: drm_device which is being closed by userspace 363 * @file_private: drm file-private structure to clean up 364 * 365 * Called at close time when the filp is going away. 366 * 367 * Releases any remaining references on objects by this filp. 368 */ 369 void 370 drm_syncobj_release(struct drm_file *file_private) 371 { 372 idr_for_each(&file_private->syncobj_idr, 373 &drm_syncobj_release_handle, file_private); 374 idr_destroy(&file_private->syncobj_idr); 375 } 376 377 int 378 drm_syncobj_create_ioctl(struct drm_device *dev, void *data, 379 struct drm_file *file_private) 380 { 381 struct drm_syncobj_create *args = data; 382 383 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) 384 return -ENODEV; 385 386 /* no valid flags yet */ 387 if (args->flags) 388 return -EINVAL; 389 390 return drm_syncobj_create(file_private, 391 &args->handle); 392 } 393 394 int 395 drm_syncobj_destroy_ioctl(struct drm_device *dev, void *data, 396 struct drm_file *file_private) 397 { 398 struct drm_syncobj_destroy *args = data; 399 400 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) 401 return -ENODEV; 402 403 /* make sure padding is empty */ 404 if (args->pad) 405 return -EINVAL; 406 return drm_syncobj_destroy(file_private, args->handle); 407 } 408 409 int 410 drm_syncobj_handle_to_fd_ioctl(struct drm_device *dev, void *data, 411 struct drm_file *file_private) 412 { 413 struct drm_syncobj_handle *args = data; 414 415 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) 416 return -ENODEV; 417 418 if (args->pad) 419 return -EINVAL; 420 421 if (args->flags != 0 && 422 args->flags != DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE) 423 return -EINVAL; 424 425 if (args->flags & DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE) 426 return drm_syncobj_export_sync_file(file_private, args->handle, 427 &args->fd); 428 429 return drm_syncobj_handle_to_fd(file_private, args->handle, 430 &args->fd); 431 } 432 433 int 434 drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, 435 struct drm_file *file_private) 436 { 437 struct drm_syncobj_handle *args = data; 438 439 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) 440 return -ENODEV; 441 442 if (args->pad) 443 return -EINVAL; 444 445 if (args->flags != 0 && 446 args->flags != DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE) 447 return -EINVAL; 448 449 if (args->flags & DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE) 450 return drm_syncobj_import_sync_file_fence(file_private, 451 args->fd, 452 args->handle); 453 454 return drm_syncobj_fd_to_handle(file_private, args->fd, 455 &args->handle); 456 } 457 458 /** 459 * drm_timeout_abs_to_jiffies - calculate jiffies timeout from absolute value 460 * 461 * @timeout_sec: timeout sec component, 0 for poll 462 * @timeout_nsec: timeout nsec component in ns, 0 for poll 463 * both must be 0 for poll. 464 * 465 * Calculate the timeout in jiffies from an absolute time in sec/nsec. 466 */ 467 static unsigned long drm_timeout_abs_to_jiffies(int64_t timeout_nsec) > 468 { 469 ktime_t abs_timeout, timeout, max_jiffy_ktime; 470 unsigned long timeout_jiffies; 471 472 /* make 0 timeout means poll - absolute 0 doesn't seem valid */ 473 if (timeout_nsec == 0) 474 return 0; 475 476 abs_timeout = ns_to_ktime(timeout_nsec); 477 478 timeout = ktime_sub(abs_timeout, ktime_get()); 479 480 max_jiffy_ktime = ns_to_ktime(jiffies_to_nsecs(MAX_JIFFY_OFFSET)); 481 if (ktime_compare(timeout, max_jiffy_ktime)) 482 return MAX_SCHEDULE_TIMEOUT - 1; 483 484 timeout_jiffies = nsecs_to_jiffies(ktime_to_ns(timeout)); 485 /* clamp timeout to avoid infinite timeout */ 486 if (timeout_jiffies >= MAX_SCHEDULE_TIMEOUT) 487 return MAX_SCHEDULE_TIMEOUT - 1; 488 489 return timeout_jiffies + 1; 490 } 491 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --vtzGhvizbBRQ85DL Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICBJ2b1kAAy5jb25maWcAjFxbc9u4kn4/v4KV2YdM1SbxLR5PbfkBAkEJI95CgJLsF5Yi 04kqtuTVZSb599sNkOKtodlTdc6J0Y17X75uNPXbf37z2PGwfV0e1qvly8sv71u5KXfLQ/nk Pa9fyv/x/MSLE+0JX+qPwByuN8efn9bXd7fezcfLq48XH3arP7xpuduULx7fbp7X347Qfb3d /Oc3YOdJHMhxcXszktpb773N9uDty8N/qvbF3W1xfXX/q/V384eMlc5yrmUSF77giS+yhpjk Os11ESRZxPT9u/Ll+frqAy7rXc3BMj6BfoH98/7dcrf6/unn3e2nlVnl3myieCqf7d+nfmHC p75IC5WnaZLpZkqlGZ/qjHExpEVR3vxhZo4ilhZZ7Bewc1VEMr6/O0dni/vLW5qBJ1HK9L+O 02HrDBcL4RdqXPgRK0IRj/WkWetYxCKTvJCKIX1ImMyFHE90f3fsoZiwmShSXgQ+b6jZXImo WPDJmPl+wcJxkkk9iYbjchbKUca0gDsK2UNv/AlTBU/zIgPagqIxPhFFKGO4C/koGg6zKCV0 nhapyMwYLBOtfZnDqEkiGsFfgcyULvgkj6cOvpSNBc1mVyRHIouZkdQ0UUqOQtFjUblKBdyS gzxnsS4mOcySRnBXE1gzxWEOj4WGU4ejwRxGKlWRpFpGcCw+6BCckYzHLk5fjPKx2R4LQfA7 mgiaWYTs8aEYK1f3PM2SkWiRA7koBMvCB/i7iETr3tOxZrBvEMCZCNX9Vd1+0lC4TQWa/Oll /fXT6/bp+FLuP/1XHrNIoBQIpsSnjz1VldmXYp5kresY5TL0YfOiEAs7n+roqZ6AMOCxBAn8 T6GZws7GVI2N4XtB83R8g5Z6xCyZiriA7agobRsnqQsRz+BAcOWR1PfXpz3xDG7ZKKSEm373 rjGEVVuhhaLsIVwBC2ciUyBJnX5tQsFynRCdjehPQRBFWIwfZdpTiooyAsoVTQof2wagTVk8 unokLsJNQ+iu6bSn9oLa2+kz4LLO0ReP53sn58k3xFGCULI8BI1MlEYJvH/3frPdlL+3bkQ9 qJlMOTm2vX8Q/yR7KJgGvzEh+YIJi/1QkLRcCTCQrms2ashycMqwDhCNsJZiUAlvf/y6/7U/ lK+NFJ/MPGiM0VnCAwBJTZJ5S8ahBRwsBzti9aZjSFTKMiWQqWnj6DxVkkMfMFiaT/ykb3ra LD7TjO48A+/go3MIGdrcBx4SKzZ6PmsOoO9hcDywNrFWZ4noVAvm/5UrTfBFCZo5XEt9xHr9 Wu721ClPHtFjyMSXvC3ocYIU6bppQyYpE/C8YPyU2Wmm2jwWXaX5J73c//AOsCRvuXny9ofl Ye8tV6vtcXNYb741a9OST6075DzJY23v8jQV3rU5z4Y8mC7juaeGuwbehwJo7eHgT7DAcBiU lVOWud1d9fqjYVY4CnkuODqgsTBEexolMTEHsljcI8Z8ZFxLe/hMCMNi4Bw5h/EkgKbiK1rH 5dT+w6WhOaBX64AAqfhW3tpL4OMsyVNF24+J4NM0keDx4fZ1ktFLtCOjNzBj0UeF4IreYDgF OzcznizziW1wfgISaAZQtA3cjrnobKTHhniMGI3F4LlkDChe9VxGLv3LFuxHfdYhSA8XqUFU 5o56fVKu0iksKWQa19RQrdC11xeBIZdgTTP6DAFIRSBsRWVGaKYHFaizHADrAPkM1bRxN9BT PUQ0Mc3gqqcOMRzTXboHQPcFzFQEuWPJQa7FgqSINHEdhBzHLAx8kmh276AZS+ugjdLg/OlP wJOSFCZp3878mYStV4PSZ44SYZy8Y1Uw54hlmezKTb0djBt84felEoYsTh6ndVeXFx2UYaxp FTOn5e55u3tdblalJ/4uN2C+GRhyjgYc3ExjZh2DVwgeibClYhYZIE9uaRbZ/oWx8C5JrePI jBZIFTIKlagwH7WXpcJk5OxfBGB/0SYXGQCghL5cuD0NoSRihAKQrwwkNxGWQ4OSQIY9p9W+ msRytOxI3VLEkbSy217/X3mUAvgYCVomq8CH9to4n8l4QPwLCoM2mnOhlGttIoC9SbwYCHc6 PXrYCS8Y/RK4zGKk5qwP8SV4CkwHwOJ0jzTtR2q2NROaJIBFpzvYVgyHAsouw1n2WszCDesk SaY9ImYk4G8tx3mSEygNQi6Dmyr8SSQCINSvgDYRL0N8+wDwHaGiMfEmndRbQibGCpyTb9M7 1bkXLO3vA5cKrVbferTJHNRFMOuye7RILuA6G7IyM/ZdIBgjaNd5FgMc1CDr7VxX37YQp2yo xMC1Xciq7fl51Bcac1qNuA/O2N5qoVggAA2nmNrpj1DJrD1fk03ocVT9bBjroPlJ7siLQJhV 2GCjDo2JHSjB0XIVoNJ6cHhjAClpmI9l3LGdrWaXbgKHOTlUKcEBivWgT5dIo6guD1xw3AdQ PQ64yDxkNGAZcsOxJ27DZ49R6gnYDCsDQQYRbV9QCPzvUOQYAz9Rpau6dx0lfh6CdUA7JUIU yKE4KUsxdn+YuRumRnsMYgFmlbQG3V533VtM0oc696PDjgw008La6DAdc6Oj3BgF6oJDuE/A Wnw6Z5nfWm8C8QMApirzdz0gMJPa7kgChGcQDTb+IAjOuBiz6Bnu2twrjYSQJzE4moV1ziOb 07jPxVynQyhUf7LDGuy1bnVq582dpH53K0AVj83K8WT24etyXz55Pyxgetttn9cvndj2NAxy F7Vf7yQFrBmo3Ip1OxOBYtzKHSJcVoif7i9bONDKNLH3WtpNMBmCc8s76a0RRnxEN5OShYlS UMg8RqZuDqWiG1m19HM0su88k1q4OreJ3d7d3C7TCXrOLJr3OFC7v+QiR4sPmzBZGzdLNq8Z msgDDuyxi6vNXae77arc77c77/DrzeYznsvl4bgr9+3HpEfUN9+REwTEQLZjPjsQDDwsuDO0 f24uzDjVrJinpVnHoMWBdFkMgNcg6j4gQOc8YqHBLOAjw7kYrsrDy0zSy7A5ALgpbe16YUCG I9idPAAegNAInMY4pzPQYH5GSaJt6r5Rgpu7WzpK+nyGoBUdhyAtihaUSt2aB8CGEywnBO+R lPRAJ/J5On20NfWGpk4dG5v+4Wi/o9t5lquETuBExtILR0wTzWXMJwB+HAupyNeu+DVkjnHH IvHFeHF5hlqEtIuI+EMmF87znknGrws6m2+IjrPjELg4eqEZcmpGZdAdL8tGETDjVD0XqokM 9P3nNkt42aN1hk/BlYApiDmV0EIGtHOGyWTsVN5KRCEZFKDbUGHd25t+czLrtkQyllEeGUQQ QAQTPnTXbaIQrsNIdQApLAXDFwSFIgR0SMEVGBFsvDVRreR71Wzut/MmX1NY5BPsoEIsz4YE AxQjAbE7NVYecdvemKYUAjkThZOX7UcU9IrN66wCd33avxBRqgcQu26fJSFgW5bRGdGKyylt eAippG2aubSunFif1krvvG4368N2Z6FLM2srsIMzBgM+dxyCEVgBuPEBYJ/D7joJOgERH9Hu SN7R6BEnzAT6g0AuXMlqAAkgdaBl7nNR7v3A/UnagMUJPn/0Un+1tFjKTecJo2q8vaFioVmk 0hCc5HWnS9OKuNdxoJblis7DNuR/HeGSWpepLEgA5wt9f/GTX9j/9PbZQ1cBAAZoLUTMiEID Eym7ycYu1G+TAGHbRkCGKF5hjSHwFS4X96fVnO1bLypicW5i/AainFZkacQpVJ27oxXGdNt+ raRFMxyEPVq2LKzNt4ho1MW9neZq0PaAtlBIKg7hW7t7N9qqUJEtHYh74n5aGt5zqs1ExjLd 9PKq3J3BnDyA/vt+VmhnudRMZmAkEwxGOw/pitKR+g3bxMX2idPP7m8u/rxtv4MNw3nKzrZr YaYdZMhDwWLjQulshQOmP6ZJQmdWH0c5bQ8e1TC1XWPxKq4zlSd1FtQV18C5iCzrpqvMI1jf lqTabdKMvy9GMsEyjyzL0/69diyoAtSNIeL8/rYlEJHOaLto1nsmM46DwmG4Ax0bfgDWoEMG mymjI4TH4vLigrK4j8XV54vOET0W113W3ij0MPcwTD98mWT4Ok2/m4mFcBVZMDUxCU3KrII2 SQ6mDGxEhpb1sjKsp+6ZwGSkeaI919/kNqH/Va979Uoy8xX9BMUj30TbI5ecg/mUwUMRQoxI PH61JcHa8drsThKNKcs6P5Ju/yl3HuCL5bfytdwcTNTMeCq97RtWYXYi5yoVRdsfxytM0AFe ddmBF+zK/z2Wm9Uvb79avvQgjUGtmfhC9pRPL2Wf2VkbYQ4AzY868eHrVRoKfzD46LivN+29 T7n0ysPq4+8dqMWHm/HL/frbZr7clR6S+Rb+oY5vb9sdLKM6Y2gXm6e37Xpz6A0Hl+Mbb3ku cUglgWy5ZfXO0O7giPJRAElSEjqKkEByaf2Phf78+YKO/lKOXtBtdR5UMBocofhZro6H5deX 0tQMewbwHvbeJ0+8Hl+WAzEcgQ+NNOaByYkqsuKZTCkvaJOfSd4x2FUnbD43aCQdOQmMQB22 pFL1637VXJUgk4l1Nu3zJaTs7zVEAP5u/bd91G1KDterqtlLhhqb2wfbiQhTV2QkZjpKHXli sH6xzzBB7Qp4zPCBzKI5oABb9EKyBnPwX8x3LAId89xUk1Dn2ForvlX7mZw5N2MYxCxzJOgs A2blqmHAjkPw7KiPAUTVpLzoLF5d5gXGBaaVnMz0trmw3KauoGuFp8wW7fpwhEFA5DbROD0Z Iejcb6Tp404CYhn2mQOrsU+114DdqkL05lJt02AF0Xq/opYAtxU9YCKYXIiIeZgoTIUiiOmf T3PUGaP9B78iFyMEnGHk7U+GtpnQUIo/r/nidtBNlz+Xe09u9ofd8dXUSuy/g+V+8g675WaP Q3ngi0rvCfa6fsN/1qrGXg7lbukF6ZiBkdq9/oMG/2n7z+Zlu3zybL1xzSs3h/LFA902t2aV s6YpLgOieZakRGsz0GS7PziJfLl7oqZx8m/fTplydVgeSi9q/P97nqjo976lwfWdhmvOmk8c 6GURmucQJ5EFea2ASep8PJX+qWhScSUr6Wvd+sm9KYmAqBM1Ypsryx8xDj43QfxnFjEsjZSb t+NhOGHjaeM0H4rlBG7CSIb8lHjYpQufsLbz/6eXhrXz1MwiQWoCBwFerkA4Kd3Ums5Ugaly 1UQBaeqi4aoA06Kd7sGS5lzSSBa2LNnxhjA/F5rEM5chSPndH9e3P4tx6ijaihV3E2FFYxtz uXOEmsN/HTAW4iHef4+zcnLFSfFwVH2qlM58qzSiCRM1hJwpaAwxZ5oOxRjbqi+ytqbmuAtM deqtXrarH32C2Bg0BlEM1pBjSACgBL+UwMDGHCEggyjFeqnDFmYrvcP30ls+Pa0RgSxf7Kj7 j+3l4d30KtJPtLkDTWIqs2AzR9WjoWJ0TEM2S8e4PaS1YDKPHMkUPRFZxOjAq65Lp/I3atT+ QMcaru1mvdp7av2yXm033mi5+vH2stx0QhjoR4w24oAK+sONduBvVttXb/9WrtbPAP5YNGId dNzLmVjnfXw5rJ+PmxXeT23Wnk42vjGMgW8gGG01kZglqnBE1BONgALi3mtn96mIUgdCRHKk b6//dLzxAFlFrriDjRafLy7OLx3DZNdTGZC1LFh0ff15gc8uzHc8PSJj5DAytuxGO6BiJHzJ 6jTS4ILGu+XbdxQUQrH97tuuxSM89d6z49N6C+789PD9u/sTShikAPUjjK/hCnbL19L7enx+ Bk/iDz1JQCsulq2ExnOF3Kc212SxxwzzrQ6kneQxVUKeg0IlEwiTQ6k1hO4QLUvWKt9C+uBb Smw8VXRMeAcV5GoYfmKbgX5PXcyD7en3X3v8sNULl7/QxQ41BmcDo0i7pCQ19AUXckZyIHXM /DER8pnpTXbGL19w2l/GEOtfb+UH7lpJHqbS6ZvzOX2JUeQQdhEpZ2ItFhDRCZ+eyVZBypGE e3sg7lX4jNfxL8TpeetLREMa3GkGpgWkt9sQ8cub27vLu4rS6KHG73OYcoSAESMiNRtlRwzC LzLz9RBzLA10ZJnyhS9V6vpSInfYC5OOdwHQ2XoHq6DuGbvJBG6tO2wVpK122/32+eBNQE52 H2bet2MJoQNhVWxki8aun7Vvh//jXk10J51TV55QoW8D9ycQj4kT73CnJ9Cs3tYbg0Z6ishN o9oedx2nVY8fTlXGC3l39blVIwetYqaJ1lHon1qbC9SRCItU0qYLwgSDGgse/QtDpHO6DOHE oSP6kyQRVQygcY6QRYajhM7IySSKcqdrycrX7aHEkI+SJsx/aIyZ+bDj2+v+W/8yFDC+V+YT Li/ZQPixfvu9ASO9sPGEVtSW9wdaf4wWvfbmuPJ4Id1JAVhD4TgmJD06vExqBLWfWG6uYKGd +MDkzumzdyh3Oqce1RgoyxiMXsQWRZy16wRlirW1LtNtUK4pdc+S0BVaBdHwDtE1tb+5G2Su XL4LgX66YMXVXRxhFEK7iA4XOCBa+gGSFtMkZobDPSPide54lor40HETtRGUocvY0OawzdNu u35qswEuyhJHLYHPHKlwZxitNN1un9b0ZLAik1nqoLfWM0Jzxcg16AoxIrHvgAgdgzp15Q+V TviO1G2d3YW9ul4NfRGGRTaibZvP/RFzVUEm41CcpiASdt92y1bCrZPRCvCxwEp2yx/4tiAL otXWVzCtQ6m+tWOcDu/EAo0osNnn/sRRtWIqhJHD5R9hBBHz7GHwstviMJ9qODI0Z2jS0grn R4kBO9P7S55oOitmKFzT54J560DdFI6XggBL2Ry0BAAOYKMe2YrecvW9F2ioQTWAVfZ9eXza mgei5sob2wH+yzW9ofGJDP1M0DeBpeWuFxD8dJOOdu1vaJynFk5sZf8PpMQxAL40GSmz37HR THE4PNLqu8Dvy9WP7gfc5pdnZPYlCNlYtSC26fW2W28OP0yE8fRagttvQHCzYJUYoR+b3+Co C0Tu/zhV34KuYTHEgOOmuuzt6xtc3wfztTnc++rH3ky4su07CnjbBxssmqG11b5tg+3A3/hJ M8EhxHR8Qlo9g+fmR1gEWVtvS6BxtPvLi6ubtjnPZFowFRXOj3CxqN7MwBRt+vMYdATTENEo cXxUaqu55vHZ562AzJcLfFxTdmfD7zuVsL+DBFIVYf6KlvUekz3WJA6pEK75vKpTN94r1P+3 ivJqR4n5wQfBpnWVkAMCI3QCfei+NXWGsl+J1FIdAfSFuNkvvx6/fevXTeJZmyJ65bLQvV+3 cV8ZbFElscsV2GGyxHyK2v/llh5XMvoLbsH5IlJtEjxxCKc1vOeacmYG+xFXrlyGyXLNaPRa ZVUqHghEe7V6HcKZ4atiFCybOsN1poCzOQyzH3QxQWh+fITabk12jWQ2hmc3UJ9T47kTnfRe P6snexA6L4TQ9fhm7dxkufnWMW6IH/IURhl+/deaAongT2L7qxYk0/wLmZZuCWkMmgOqndCv bR16v2zTEjE6xZqJQfGV0zZbshU3/OmqfztGnGEqREr9dAgeY6PG3vt9lSrY/7f3ejyUP0v4 x/81cjVLbsIw+FX6BJ1N0+n0CoRkvWENNeRvL0zbyWFPnUl3D/v2lWSDwUhKj4kEGFuWhKXv w3adz/OGnbA+AWWk2SOSGag9A6eTV0Jk+qnJOt6Fel3KHBWX4eqjnjzSDfC4VHnIcHxWwZTd GQs8hrDHbVltZUQSPRTMcAQu8aY2zkO4mXRyFLjulKHtvbPTBm9UZ9mYexqt5pEHpLS27IUr NwjzyZhMC+ll+NBCCyyxzwTiI6SP0ULj3ZWgG2Dzv6rxX7eRV4qIeH4Ej69tj0D11Ds5fg/z 3ZfO1Q4cx1Mp9zP75mNWZ8inRli6QKpIrn17sEWkgUmB3aN057LmkdcZOABYwoK5kIDSHI4+ iJ8JGw0KBXydJiqhi9OPwUP9U6R7uNDfJQrxCtzicQLiLC5W1lsusjtBEt5d/74ltku9UcSt 0UqlHFIRpXlcEERqy3aXE/BVlHv/9u2r7mhoLI/lWewZ84OF9N3uQhscv91Jbw+KnXDISgrE tMO3HZI8N510RELyg4RWIalDCPmipTh5VwllPiOYUEawERmdINUR55lyU+vZVPiO9ejfsueG RzxPcq3dZlaywd9awnnI28zCnSFfRJ4oD82OphIJO7yirXsr8RaRhp7cHgmo0fq2xHJWQMSy BySTed16SIdAm+WRBAovE5VPOrRauWgddTTHy1urZ8NYwO7TlKvKt9VBAiH7qgLsUpl6BotQ gvc1tWdm7btLU/YP5+8PMaVMZTDHK17mzTXSfc6lhNNbL2T0sGlbdBQIhwOjhrI9Rh2b9MOO Uxpi1nSI03y5aDJld44kaAPnqrJukJEI5YgR3NlvhSjcHJB6FL3rcjC+wnP9/X57ffvgjmP2 5UU4JyuLgzPdBdxQ2VK9ghgZVF3+IIMIcTIHWRd8PWCMJ/INyqazhD9loSbloh1EaNRBzNmy FzpZv/gq2QQclkrntKx4zitzqh5nkKfwdWxeZDqq3NjMXZho4z+GXn/dft4+Pt3+vEP0vk7O 6Ebeo87ZAmZti62w+OIMNRKoVKUVpFtjB17j3DC0lghdGBrXE5H4N0PbQVwJRLDXVGZOoFW4 oi8K0/EmBNIVj1PF67rVw8bwURrFpoOMV5Ku+RIWSPi+pMrkdJUEMip4WD9xrwZGU48PYLDo MVeipp31Fz0XOr8gz7ki6vPiiTXSFldtip/0f6FDn2MdKT4Sy+8s77B13YilElSgVgdJAXNa 4cU3G/7jiHhoRZbBgKSUhCl2MLXKFpsWMmMZg8V411PIBOE/i+vR9f1eAAA= --vtzGhvizbBRQ85DL Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --vtzGhvizbBRQ85DL--