Re: [ovirt-users] [Gluster-users] Hot to force glusterfs to use RDMA?

Dear Deepak, thank you for the hints, which gluster are you using? As you can see from my previous email that the RDMA connection tested with qperf. It is working as expected. In my case the clients are servers as well, they are hosts for the ovirt. Disabling selinux is nor recommended by ovirt, but i will give a try. Am 03.03.2017 7:50 vorm. schrieb "Deepak Naidu" <dnaidu@nvidia.com>: I have been testing glusterfs over RDMA & below is the command I use. Reading up the logs, it looks like your IB(InfiniBand) device is not being initialized. I am not sure if u have an issue on the client IB or the storage server IB. Also have you configured ur IB devices correctly. I am using IPoIB. Can you check your firewall, disable selinux, I think, you might have checked it already ? *mount -t glusterfs -o transport=rdma storageN1:/vol0 /mnt/vol0* · *The below error seems if you have issue starting your volume. I had issue, when my transport was set to tcp,rdma. I had to force start my volume. If I had set it only to tcp on the volume, the volume would start easily.* [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed · *The below error seems if you have issue with IB device. If not configured properly.* [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed -- Deepak *From:* gluster-users-bounces@gluster.org [mailto:gluster-users-bounces@ gluster.org] *On Behalf Of *Sahina Bose *Sent:* Thursday, March 02, 2017 10:26 PM *To:* Arman Khalatyan; gluster-users@gluster.org; Rafi Kavungal Chundattu Parambil *Cc:* users *Subject:* Re: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA? [Adding gluster users to help with error] [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] On Thu, Mar 2, 2017 at 5:36 PM, Arman Khalatyan <arm2arm@gmail.com> wrote: BTW RDMA is working as expected: root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]# thank you beforehand. Arman. On Thu, Mar 2, 2017 at 12:54 PM, Arman Khalatyan <arm2arm@gmail.com> wrote: just for reference: gluster volume info Volume Name: GluReplica Type: Replicate Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Status: Started Snapshot Count: 0 Number of Bricks: 1 x (2 + 1) = 3 Transport-type: tcp,rdma Bricks: Brick1: 10.10.10.44:/zclei22/01/glu Brick2: 10.10.10.42:/zclei21/01/glu Brick3: 10.10.10.41:/zclei26/01/glu (arbiter) Options Reconfigured: network.ping-timeout: 30 server.allow-insecure: on storage.owner-gid: 36 storage.owner-uid: 36 cluster.data-self-heal-algorithm: full features.shard: on cluster.server-quorum-type: server cluster.quorum-type: auto network.remote-dio: enable cluster.eager-lock: enable performance.stat-prefetch: off performance.io-cache: off performance.read-ahead: off performance.quick-read: off performance.readdir-ahead: on nfs.disable: on [root@clei21 ~]# gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------ ------------------ Brick 10.10.10.44:/zclei22/01/glu 49158 49159 Y 15870 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17473 Brick 10.10.10.41:/zclei26/01/glu 49153 49154 Y 18897 Self-heal Daemon on localhost N/A N/A Y 17502 Self-heal Daemon on 10.10.10.41 N/A N/A Y 13353 Self-heal Daemon on 10.10.10.44 N/A N/A Y 32745 Task Status of Volume GluReplica ------------------------------------------------------------ ------------------ There are no active volume tasks On Thu, Mar 2, 2017 at 12:52 PM, Arman Khalatyan <arm2arm@gmail.com> wrote: I am not able to mount with RDMA over cli.... Are there some volfile parameters needs to be tuned? /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10. 10.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt [2017-03-02 11:49:47.795511] I [MSGID: 100030] [glusterfsd.c:2454:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.8.9 (args: /usr/sbin/glusterfs --volfile-server=10.10.10.44 --volfile-server=10.10.10.44 --volfile-server=10.10.10.42 --volfile-server=10.10.10.41 --volfile-server-transport=rdma --volfile-id=/GluReplica.rdma /mnt) [2017-03-02 11:49:47.812699] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 1 [2017-03-02 11:49:47.825210] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 2 [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed [2017-03-02 11:49:47.829272] W [rpc-clnt.c:1070:rpc_clnt_connection_init] 0-GluReplica-client-2: loading of new rpc-transport failed [2017-03-02 11:49:47.829325] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=588 max=0 total=0 [2017-03-02 11:49:47.829371] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=124 max=0 total=0 [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed [2017-03-02 11:49:47.830003] W [glusterfsd.c:1327:cleanup_and_exit] (-->/usr/sbin/glusterfs(mgmt_getspec_cbk+0x3c1) [0x7f524c9dbeb1] -->/usr/sbin/glusterfs(glusterfs_process_volfp+0x172) [0x7f524c9d65d2] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (1), shutting down [2017-03-02 11:49:47.830053] I [fuse-bridge.c:5794:fini] 0-fuse: Unmounting '/mnt'. [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down On Thu, Mar 2, 2017 at 12:11 PM, Sahina Bose <sabose@redhat.com> wrote: You will need to pass additional mount options while creating the storage domain (transport=rdma) Please let us know if this works. On Thu, Mar 2, 2017 at 2:42 PM, Arman Khalatyan <arm2arm@gmail.com> wrote: Hi, Are there way to force the connections over RDMA only? If I check host mounts I cannot see rdma mount option: mount -l| grep gluster 10.10.10.44:/GluReplica on /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions, allow_other,max_read=131072) I have glusterized 3 nodes: GluReplica Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Volume Type: Replicate (Arbiter) Replica Count: 2 + 1 Number of Bricks: 3 Transport Types: TCP, RDMA Maximum no of snapshots: 256 Capacity: 3.51 TiB total, 190.56 GiB used, 3.33 TiB free _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users ------------------------------ This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ------------------------------

This is a multi-part message in MIME format. --------------0DB800CD6C4C7A7641A35C15 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hi Arman, On 03/03/2017 12:27 PM, Arman Khalatyan wrote:
Dear Deepak, thank you for the hints, which gluster are you using? As you can see from my previous email that the RDMA connection tested with qperf. It is working as expected. In my case the clients are servers as well, they are hosts for the ovirt. Disabling selinux is nor recommended by ovirt, but i will give a try.
Gluster use IPoIB as mentioned by Deepak. So qperf with default options may not be a good choice to test IPoIB. Because it will fallback to any link available between the mentioned server and client. You can force this behavior, please refer the link [1]. In addition to that, Can you please provide your gluster version, glusterd logs and brick logs. Because since it complains about absence of the device, mostly it could be a set up issue. Otherwise it could have been a permission denied error, I'm not completely ruling out the possibility of selinux preventing the creation if IB channel. We had this issue in rhel which is fixed in 7.2 [2] . [1] : https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/htm... [2] : https://bugzilla.redhat.com/show_bug.cgi?id=1386620 Regards Rafi KC
Am 03.03.2017 7:50 vorm. schrieb "Deepak Naidu" <dnaidu@nvidia.com <mailto:dnaidu@nvidia.com>>:
I have been testing glusterfs over RDMA & below is the command I use. Reading up the logs, it looks like your IB(InfiniBand) device is not being initialized. I am not sure if u have an issue on the client IB or the storage server IB. Also have you configured ur IB devices correctly. I am using IPoIB.
Can you check your firewall, disable selinux, I think, you might have checked it already ?
*mount -t glusterfs -o transport=rdma storageN1:/vol0 /mnt/vol0*
· *The below error seems if you have issue starting your volume. I had issue, when my transport was set to tcp,rdma. I had to force start my volume. If I had set it only to tcp on the volume, the volume would start easily.*
[2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed
· *The below error seems if you have issue with IB device. If not configured properly.*
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed
--
Deepak
*From:*gluster-users-bounces@gluster.org <mailto:gluster-users-bounces@gluster.org> [mailto:gluster-users-bounces@gluster.org <mailto:gluster-users-bounces@gluster.org>] *On Behalf Of *Sahina Bose *Sent:* Thursday, March 02, 2017 10:26 PM *To:* Arman Khalatyan; gluster-users@gluster.org <mailto:gluster-users@gluster.org>; Rafi Kavungal Chundattu Parambil *Cc:* users *Subject:* Re: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?
[Adding gluster users to help with error]
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]
On Thu, Mar 2, 2017 at 5:36 PM, Arman Khalatyan <arm2arm@gmail.com <mailto:arm2arm@gmail.com>> wrote:
BTW RDMA is working as expected: root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]#
thank you beforehand.
Arman.
On Thu, Mar 2, 2017 at 12:54 PM, Arman Khalatyan <arm2arm@gmail.com <mailto:arm2arm@gmail.com>> wrote:
just for reference: gluster volume info
Volume Name: GluReplica Type: Replicate Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Status: Started Snapshot Count: 0 Number of Bricks: 1 x (2 + 1) = 3 Transport-type: tcp,rdma Bricks: Brick1: 10.10.10.44:/zclei22/01/glu Brick2: 10.10.10.42:/zclei21/01/glu Brick3: 10.10.10.41:/zclei26/01/glu (arbiter) Options Reconfigured: network.ping-timeout: 30 server.allow-insecure: on storage.owner-gid: 36 storage.owner-uid: 36 cluster.data-self-heal-algorithm: full features.shard: on cluster.server-quorum-type: server cluster.quorum-type: auto network.remote-dio: enable cluster.eager-lock: enable performance.stat-prefetch: off performance.io-cache: off performance.read-ahead: off performance.quick-read: off performance.readdir-ahead: on nfs.disable: on
[root@clei21 ~]# gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 10.10.10.44:/zclei22/01/glu 49158 49159 Y 15870 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17473 Brick 10.10.10.41:/zclei26/01/glu 49153 49154 Y 18897 Self-heal Daemon on localhost N/A N/A Y 17502 Self-heal Daemon on 10.10.10.41 N/A N/A Y 13353 Self-heal Daemon on 10.10.10.44 N/A N/A Y 32745
Task Status of Volume GluReplica ------------------------------------------------------------------------------ There are no active volume tasks
On Thu, Mar 2, 2017 at 12:52 PM, Arman Khalatyan <arm2arm@gmail.com <mailto:arm2arm@gmail.com>> wrote:
I am not able to mount with RDMA over cli....
Are there some volfile parameters needs to be tuned? /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10.10.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt
[2017-03-02 11:49:47.795511] I [MSGID: 100030] [glusterfsd.c:2454:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.8.9 (args: /usr/sbin/glusterfs --volfile-server=10.10.10.44 --volfile-server=10.10.10.44 --volfile-server=10.10.10.42 --volfile-server=10.10.10.41 --volfile-server-transport=rdma --volfile-id=/GluReplica.rdma /mnt) [2017-03-02 11:49:47.812699] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 1 [2017-03-02 11:49:47.825210] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 2 [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed [2017-03-02 11:49:47.829272] W [rpc-clnt.c:1070:rpc_clnt_connection_init] 0-GluReplica-client-2: loading of new rpc-transport failed [2017-03-02 11:49:47.829325] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=588 max=0 total=0 [2017-03-02 11:49:47.829371] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=124 max=0 total=0 [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed [2017-03-02 11:49:47.830003] W [glusterfsd.c:1327:cleanup_and_exit] (-->/usr/sbin/glusterfs(mgmt_getspec_cbk+0x3c1) [0x7f524c9dbeb1] -->/usr/sbin/glusterfs(glusterfs_process_volfp+0x172) [0x7f524c9d65d2] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (1), shutting down [2017-03-02 11:49:47.830053] I [fuse-bridge.c:5794:fini] 0-fuse: Unmounting '/mnt'. [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down
On Thu, Mar 2, 2017 at 12:11 PM, Sahina Bose <sabose@redhat.com <mailto:sabose@redhat.com>> wrote:
You will need to pass additional mount options while creating the storage domain (transport=rdma)
Please let us know if this works.
On Thu, Mar 2, 2017 at 2:42 PM, Arman Khalatyan <arm2arm@gmail.com <mailto:arm2arm@gmail.com>> wrote:
Hi,
Are there way to force the connections over RDMA only?
If I check host mounts I cannot see rdma mount option: mount -l| grep gluster 10.10.10.44:/GluReplica on /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
I have glusterized 3 nodes:
GluReplica Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Volume Type: Replicate (Arbiter) Replica Count: 2 + 1 Number of Bricks: 3 Transport Types: TCP, RDMA Maximum no of snapshots: 256 Capacity: 3.51 TiB total, 190.56 GiB used, 3.33 TiB free
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
------------------------------------------------------------------------ This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ------------------------------------------------------------------------
--------------0DB800CD6C4C7A7641A35C15 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> </head> <body bgcolor="#FFFFFF" text="#000000"> <p>Hi Arman,<br> </p> <br> <div class="moz-cite-prefix">On 03/03/2017 12:27 PM, Arman Khalatyan wrote:<br> </div> <blockquote cite="mid:CAAqDm6Zb=DiWsrCS2Lp8vC=_Or5NFONoH-Ou83E5P6LssHXmEg@mail.gmail.com" type="cite"> <div dir="auto">Dear Deepak, thank you for the hints, which gluster are you using? <div dir="auto">As you can see from my previous email that the RDMA connection tested with qperf. It is working as expected. In my case the clients are servers as well, they are hosts for the ovirt. Disabling selinux is nor recommended by ovirt, but i will give a try.</div> </div> </blockquote> <br> Gluster use IPoIB as mentioned by Deepak. So qperf with default options may not be a good choice to test IPoIB. Because it will fallback to any link available between the mentioned server and client. You can force this behavior, please refer the link [1]. <br> <br> In addition to that, Can you please provide your gluster version, glusterd logs and brick logs. Because since it complains about absence of the device, mostly it could be a set up issue. Otherwise it could have been a permission denied error, I'm not completely ruling out the possibility of selinux preventing the creation if IB channel. We had this issue in rhel which is fixed in 7.2 [2] .<br> <br> <br> [1] : <a class="moz-txt-link-freetext" href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Testing_an_RDMA_network_after_IPoIB_is_configured.html">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Testing_an_RDMA_network_after_IPoIB_is_configured.html</a><br> [2] : <a class="moz-txt-link-freetext" href="https://bugzilla.redhat.com/show_bug.cgi?id=1386620">https://bugzilla.redhat.com/show_bug.cgi?id=1386620</a><br> <br> Regards<br> Rafi KC<br> <br> <br> <blockquote cite="mid:CAAqDm6Zb=DiWsrCS2Lp8vC=_Or5NFONoH-Ou83E5P6LssHXmEg@mail.gmail.com" type="cite"> <div class="gmail_extra"><br> <div class="gmail_quote">Am 03.03.2017 7:50 vorm. schrieb "Deepak Naidu" <<a moz-do-not-send="true" href="mailto:dnaidu@nvidia.com">dnaidu@nvidia.com</a>>:<br type="attribution"> <blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div link="blue" vlink="purple" lang="EN-US"> <div class="m_8813890542634899653WordSection1"> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I have been testing glusterfs over RDMA & below is the command I use. Reading up the logs, it looks like your IB(InfiniBand) device is not being initialized. I am not sure if u have an issue on the client IB or the storage server IB. Also have you configured ur IB devices correctly. I am using IPoIB.</span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Can you check your firewall, disable selinux, I think, you might have checked it already ?</span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">mount -t glusterfs -o transport=rdma storageN1:/vol0 /mnt/vol0</span></b></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="m_8813890542634899653MsoListParagraph"><span style="font-size:11.0pt;font-family:Symbol;color:#1f497d"><span>·<span style="font:7.0pt "Times New Roman""> </span></span></span><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The below error seems if you have issue starting your volume. I had issue, when my transport was set to tcp,rdma. I had to force start my volume. If I had set it only to tcp on the volume, the volume would start easily.</span></b></p> <div class="quoted-text"> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><span style="background:yellow">[2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_<wbr>rpc] 0-GluReplica-client-2: failed to initialize RPC<br> [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again<br> [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_<wbr>init] 0-GluReplica-client-2: initializing translator failed<br> [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_<wbr>activate] 0-graph: init failed</span><br> <br> <span style="background:yellow"></span></p> <p class="MsoNormal"><span style="background:yellow"> </span></p> </div> <p class="m_8813890542634899653MsoListParagraph"><span style="font-size:11.0pt;font-family:Symbol;color:#1f497d"><span>·<span style="font:7.0pt "Times New Roman""> </span></span></span><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The below error seems if you have issue with IB device. If not configured properly.</span></b></p> <div class="quoted-text"> <p class="MsoNormal"><span style="background:yellow"> </span></p> <p class="MsoNormal"><span style="background:yellow">[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_<wbr>create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]<br> [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device<br> [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_<wbr>transport_load] 0-rpc-transport: 'rdma' initialization failed</span><br> <br> <span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"></span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> </div> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">--</span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Deepak</span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span></p> <p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a moz-do-not-send="true" href="mailto:gluster-users-bounces@gluster.org" target="_blank">gluster-users-bounces@gluster.<wbr>org</a> [mailto:<a moz-do-not-send="true" href="mailto:gluster-users-bounces@gluster.org" target="_blank">gluster-users-bounces@<wbr>gluster.org</a>] <b>On Behalf Of </b>Sahina Bose<br> <b>Sent:</b> Thursday, March 02, 2017 10:26 PM<br> <b>To:</b> Arman Khalatyan; <a moz-do-not-send="true" href="mailto:gluster-users@gluster.org" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:gluster-users@gluster.org">gluster-users@gluster.org</a></a>; Rafi Kavungal Chundattu Parambil<br> <b>Cc:</b> users<br> <b>Subject:</b> Re: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?</span></p> <div class="elided-text"> <p class="MsoNormal"> </p> <div> <p class="MsoNormal">[Adding gluster users to help with error]<br> <br> [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_<wbr>create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]</p> </div> <div> <p class="MsoNormal"> </p> <div> <p class="MsoNormal">On Thu, Mar 2, 2017 at 5:36 PM, Arman Khalatyan <<a moz-do-not-send="true" href="mailto:arm2arm@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:arm2arm@gmail.com">arm2arm@gmail.com</a></a>> wrote:</p> <div> <div> <div> <p class="MsoNormal" style="margin-bottom:12.0pt">BTW RDMA is working as expected:<br> root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat<br> tcp_bw:<br> bw = 475 MB/sec<br> tcp_lat:<br> latency = 52.8 us<br> [root@clei26 ~]# </p> </div> <p class="MsoNormal">thank you beforehand.</p> </div> <p class="MsoNormal" style="margin-bottom:12.0pt"><span class="m_8813890542634899653hoenzb"><span style="color:#888888">Arman.</span></span></p> </div> <div> <div> <div> <p class="MsoNormal"> </p> <div> <p class="MsoNormal">On Thu, Mar 2, 2017 at 12:54 PM, Arman Khalatyan <<a moz-do-not-send="true" href="mailto:arm2arm@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:arm2arm@gmail.com">arm2arm@gmail.com</a></a>> wrote:</p> <div> <p class="MsoNormal" style="margin-bottom:12.0pt">just for reference:<br> gluster volume info <br> <br> Volume Name: GluReplica<br> Type: Replicate<br> Volume ID: ee686dfe-203a-4caa-a691-<wbr>26353460cc48<br> Status: Started<br> Snapshot Count: 0<br> Number of Bricks: 1 x (2 + 1) = 3<br> Transport-type: tcp,rdma<br> Bricks:<br> Brick1: 10.10.10.44:/zclei22/01/glu<br> Brick2: 10.10.10.42:/zclei21/01/glu<br> Brick3: 10.10.10.41:/zclei26/01/glu (arbiter)<br> Options Reconfigured:<br> network.ping-timeout: 30<br> server.allow-insecure: on<br> storage.owner-gid: 36<br> storage.owner-uid: 36<br> cluster.data-self-heal-<wbr>algorithm: full<br> features.shard: on<br> cluster.server-quorum-type: server<br> cluster.quorum-type: auto<br> network.remote-dio: enable<br> cluster.eager-lock: enable<br> performance.stat-prefetch: off<br> performance.io-cache: off<br> performance.read-ahead: off<br> performance.quick-read: off<br> performance.readdir-ahead: on<br> nfs.disable: on<br> <br> <br> <br> [root@clei21 ~]# gluster volume status <br> Status of volume: GluReplica<br> Gluster process <wbr> TCP Port RDMA Port Online Pid<br> ------------------------------<wbr>------------------------------<wbr>------------------<br> Brick 10.10.10.44:/zclei22/01/glu <wbr> 49158 49159 Y 15870<br> Brick 10.10.10.42:/zclei21/01/glu <wbr> 49156 49157 Y 17473<br> Brick 10.10.10.41:/zclei26/01/glu <wbr> 49153 49154 Y 18897<br> Self-heal Daemon on localhost N/A N/A Y 17502<br> Self-heal Daemon on 10.10.10.41 N/A N/A Y 13353<br> Self-heal Daemon on 10.10.10.44 N/A N/A Y 32745<br> <br> Task Status of Volume GluReplica<br> ------------------------------<wbr>------------------------------<wbr>------------------<br> There are no active volume tasks</p> </div> <div> <div> <div> <p class="MsoNormal"> </p> <div> <p class="MsoNormal">On Thu, Mar 2, 2017 at 12:52 PM, Arman Khalatyan <<a moz-do-not-send="true" href="mailto:arm2arm@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:arm2arm@gmail.com">arm2arm@gmail.com</a></a>> wrote:</p> <div> <div> <p class="MsoNormal">I am not able to mount with RDMA over cli....</p> </div> <p class="MsoNormal" style="margin-bottom:12.0pt">Are there some volfile parameters needs to be tuned?<br> /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10.<wbr>10.44:10.10.10.42:10.10.10.41,<wbr>transport=rdma 10.10.10.44:/GluReplica /mnt<br> <br> [2017-03-02 11:49:47.795511] I [MSGID: 100030] [glusterfsd.c:2454:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.8.9 (args: /usr/sbin/glusterfs --volfile-server=10.10.10.44 --volfile-server=10.10.10.44 --volfile-server=10.10.10.42 --volfile-server=10.10.10.41 --volfile-server-transport=<wbr>rdma --volfile-id=/GluReplica.rdma /mnt)<br> [2017-03-02 11:49:47.812699] I [MSGID: 101190] [event-epoll.c:628:event_<wbr>dispatch_epoll_worker] 0-epoll: Started thread with index 1<br> [2017-03-02 11:49:47.825210] I [MSGID: 101190] [event-epoll.c:628:event_<wbr>dispatch_epoll_worker] 0-epoll: Started thread with index 2<br> [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_<wbr>create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]<br> [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device<br> [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_<wbr>transport_load] 0-rpc-transport: 'rdma' initialization failed<br> [2017-03-02 11:49:47.829272] W [rpc-clnt.c:1070:rpc_clnt_<wbr>connection_init] 0-GluReplica-client-2: loading of new rpc-transport failed<br> [2017-03-02 11:49:47.829325] I [MSGID: 101053] [mem-pool.c:641:mem_pool_<wbr>destroy] 0-GluReplica-client-2: size=588 max=0 total=0<br> [2017-03-02 11:49:47.829371] I [MSGID: 101053] [mem-pool.c:641:mem_pool_<wbr>destroy] 0-GluReplica-client-2: size=124 max=0 total=0<br> [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_<wbr>rpc] 0-GluReplica-client-2: failed to initialize RPC<br> [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again<br> [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_<wbr>init] 0-GluReplica-client-2: initializing translator failed<br> [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_<wbr>activate] 0-graph: init failed<br> [2017-03-02 11:49:47.830003] W [glusterfsd.c:1327:cleanup_<wbr>and_exit] (-->/usr/sbin/glusterfs(mgmt_<wbr>getspec_cbk+0x3c1) [0x7f524c9dbeb1] -->/usr/sbin/glusterfs(<wbr>glusterfs_process_volfp+0x172) [0x7f524c9d65d2] -->/usr/sbin/glusterfs(<wbr>cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (1), shutting down<br> [2017-03-02 11:49:47.830053] I [fuse-bridge.c:5794:fini] 0-fuse: Unmounting '/mnt'.<br> [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_<wbr>and_exit] (-->/lib64/libpthread.so.0(+<wbr>0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(<wbr>glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(<wbr>cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down<br> [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_<wbr>and_exit] (-->/lib64/libpthread.so.0(+<wbr>0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(<wbr>glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(<wbr>cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down<br> <br> <br> </p> </div> <div> <div> <div> <p class="MsoNormal"> </p> <div> <p class="MsoNormal">On Thu, Mar 2, 2017 at 12:11 PM, Sahina Bose <<a moz-do-not-send="true" href="mailto:sabose@redhat.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:sabose@redhat.com">sabose@redhat.com</a></a>> wrote:</p> <div> <div> <p class="MsoNormal" style="margin-bottom:12.0pt">You will need to pass additional mount options while creating the storage domain (transport=rdma)<br> <br> </p> </div> <div> <p class="MsoNormal">Please let us know if this works.</p> </div> </div> <div> <p class="MsoNormal"> </p> <div> <div> <div> <p class="MsoNormal">On Thu, Mar 2, 2017 at 2:42 PM, Arman Khalatyan <<a moz-do-not-send="true" href="mailto:arm2arm@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:arm2arm@gmail.com">arm2arm@gmail.com</a></a>> wrote:</p> </div> </div> <blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"> <div> <div> <div> <div> <p class="MsoNormal">Hi,</p> </div> <div> <p class="MsoNormal">Are there way to force the connections over RDMA only?</p> </div> <div> <p class="MsoNormal" style="margin-bottom:12.0pt">If I check host mounts I cannot see rdma mount option:<br> mount -l| grep gluster<br> 10.10.10.44:/GluReplica on /rhev/data-center/mnt/<wbr>glusterSD/10.10.10.44:_<wbr>GluReplica type fuse.glusterfs (rw,relatime,user_id=0,group_<wbr>id=0,default_permissions,<wbr>allow_other,max_read=131072)</p> </div> <p class="MsoNormal">I have glusterized 3 nodes: <br> <br> GluReplica<br> Volume ID:<br> ee686dfe-203a-4caa-a691-<wbr>26353460cc48<br> Volume Type:<br> Replicate (Arbiter)<br> Replica Count:<br> 2 + 1<br> Number of Bricks:<br> 3<br> Transport Types:<br> TCP, RDMA<br> Maximum no of snapshots:<br> 256<br> Capacity:<br> 3.51 TiB total, 190.56 GiB used, 3.33 TiB free</p> </div> <p class="MsoNormal"> </p> </div> </div> <p class="MsoNormal" style="margin-bottom:12.0pt">______________________________<wbr>_________________<br> Users mailing list<br> <a moz-do-not-send="true" href="mailto:Users@ovirt.org" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:Users@ovirt.org">Users@ovirt.org</a></a><br> <a moz-do-not-send="true" href="http://lists.ovirt.org/mailman/listinfo/users" target="_blank"><a class="moz-txt-link-freetext" href="http://lists.ovirt.org/">http://lists.ovirt.org/</a><wbr>mailman/listinfo/users</a></p> </blockquote> </div> <p class="MsoNormal"> </p> </div> </div> <p class="MsoNormal"> </p> </div> </div> </div> </div> <p class="MsoNormal"> </p> </div> </div> </div> </div> <p class="MsoNormal"> </p> </div> </div> </div> </div> <p class="MsoNormal"> </p> </div> </div> </div> <div> <hr> </div> <div>This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. </div> <div> <hr> </div> </div> </blockquote> </div> <br> </div> </blockquote> <br> </body> </html> --------------0DB800CD6C4C7A7641A35C15--

--_000_06cbff03281448b5acd180c3f7526f7bDRHQMAIL105nvidiacom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Pj4gQXMgeW91IGNhbiBzZWUgZnJvbSBteSBwcmV2aW91cyBlbWFpbCB0aGF0IHRoZSBSRE1BIGNv bm5lY3Rpb24gdGVzdGVkIHdpdGggcXBlcmYuDQpJIHRoaW5rIHlvdSBoYXZlIHdyb25nIGNvbW1h bmQuIFlvdXIgdGVzdGluZyBUQ1AgJiBub3QgUkRNQS4gQWxzbyBjaGVjayBpZiB5b3UgaGF2ZSBS RE1BICYgSUIgbW9kdWxlcyBsb2FkZWQgb24geW91ciBob3N0cy4NCnJvb3RAY2xlaTI2IH5dIyBx cGVyZiBjbGVpMjIudmliICB0Y3BfYncgdGNwX2xhdA0KdGNwX2J3Og0KICAgIGJ3ICA9ICA0NzUg TUIvc2VjDQp0Y3BfbGF0Og0KICAgIGxhdGVuY3kgID0gIDUyLjggdXMNCltyb290QGNsZWkyNiB+ XSMNCg0KUGxlYXNlIHJ1biBiZWxvdyBjb21tYW5kIHRvIHRlc3QgUkRNQQ0KDQpbcm9vdEBzdG9y YWdlTjIgfl0jIHFwZXJmIHN0b3JhZ2VOMSB1ZF9sYXQgdWRfYncNCnVkX2xhdDoNCiAgICBsYXRl bmN5ICA9ICA3LjUxIHVzDQp1ZF9idzoNCiAgICBzZW5kX2J3ICA9ICA5LjIxIEdCL3NlYw0KICAg IHJlY3ZfYncgID0gIDkuMjEgR0Ivc2VjDQpbcm9vdEBzYy1zZGd4LTIwMiB+XSMNCg0KUmVhZCBx cGVyZiBtYW4gcGFnZXMgZm9yIG1vcmUgaW5mby4NCg0KICAgICogVG8gcnVuIGEgVENQIGJhbmR3 aWR0aCBhbmQgbGF0ZW5jeSB0ZXN0Og0KICAgICAgICBxcGVyZiBteXNlcnZlciB0Y3BfYncgdGNw X2xhdA0KICAgICogVG8gcnVuIGEgVURQIGxhdGVuY3kgdGVzdCBhbmQgdGhlbiBjYXVzZSB0aGUg c2VydmVyIHRvIHRlcm1pbmF0ZToNCiAgICAgICAgcXBlcmYgbXlzZXJ2ZXIgdWRwX2xhdCBxdWl0 DQogICAgKiBUbyBtZWFzdXJlIHRoZSBSRE1BIFVEIGxhdGVuY3kgYW5kIGJhbmR3aWR0aDoNCiAg ICAgICAgcXBlcmYgbXlzZXJ2ZXIgdWRfbGF0IHVkX2J3DQogICAgKiBUbyBtZWFzdXJlIFJETUEg VUMgYmktZGlyZWN0aW9uYWwgYmFuZHdpZHRoOg0KICAgICAgICBxcGVyZiBteXNlcnZlciByY19i aV9idw0KICAgICogVG8gZ2V0IGEgcmFuZ2Ugb2YgVENQIGxhdGVuY2llcyB3aXRoIGEgbWVzc2Fn ZSBzaXplIGZyb20gMSB0byA2NEsNCiAgICAgICAgcXBlcmYgbXlzZXJ2ZXIgLW9vIG1zZ19zaXpl OjE6NjRLOioyIC12dSB0Y3BfbGF0DQoNCg0KQ2hlY2sgaWYgeW91IGhhdmUgUkRNQSAmIElCIG1v ZHVsZXMgbG9hZGVkDQoNCmxzbW9kIHwgZ3JlcCAtaSBpYg0KDQpsc21vZCB8IGdyZXAgLWkgcmRt YQ0KDQoNCg0KLS0NCkRlZXBhaw0KDQoNCg0KRnJvbTogQXJtYW4gS2hhbGF0eWFuIFttYWlsdG86 YXJtMmFybUBnbWFpbC5jb21dDQpTZW50OiBUaHVyc2RheSwgTWFyY2ggMDIsIDIwMTcgMTA6NTcg UE0NClRvOiBEZWVwYWsgTmFpZHUNCkNjOiBSYWZpIEthdnVuZ2FsIENodW5kYXR0dSBQYXJhbWJp bDsgZ2x1c3Rlci11c2Vyc0BnbHVzdGVyLm9yZzsgdXNlcnM7IFNhaGluYSBCb3NlDQpTdWJqZWN0 OiBSRTogW0dsdXN0ZXItdXNlcnNdIFtvdmlydC11c2Vyc10gSG90IHRvIGZvcmNlIGdsdXN0ZXJm cyB0byB1c2UgUkRNQT8NCg0KRGVhciBEZWVwYWssIHRoYW5rIHlvdSBmb3IgdGhlIGhpbnRzLCB3 aGljaCBnbHVzdGVyIGFyZSB5b3UgdXNpbmc/DQpBcyB5b3UgY2FuIHNlZSBmcm9tIG15IHByZXZp b3VzIGVtYWlsIHRoYXQgdGhlIFJETUEgY29ubmVjdGlvbiB0ZXN0ZWQgd2l0aCBxcGVyZi4gSXQg aXMgd29ya2luZyBhcyBleHBlY3RlZC4gSW4gbXkgY2FzZSB0aGUgY2xpZW50cyBhcmUgc2VydmVy cyBhcyB3ZWxsLCB0aGV5IGFyZSBob3N0cyBmb3IgdGhlIG92aXJ0LiBEaXNhYmxpbmcgc2VsaW51 eCBpcyBub3IgcmVjb21tZW5kZWQgYnkgb3ZpcnQsIGJ1dCBpIHdpbGwgZ2l2ZSBhIHRyeS4NCg0K QW0gMDMuMDMuMjAxNyA3OjUwIHZvcm0uIHNjaHJpZWIgIkRlZXBhayBOYWlkdSIgPGRuYWlkdUBu dmlkaWEuY29tPG1haWx0bzpkbmFpZHVAbnZpZGlhLmNvbT4+Og0KSSBoYXZlIGJlZW4gdGVzdGlu ZyBnbHVzdGVyZnMgb3ZlciBSRE1BICYgYmVsb3cgaXMgdGhlIGNvbW1hbmQgSSB1c2UuIFJlYWRp bmcgdXAgdGhlIGxvZ3MsIGl0IGxvb2tzIGxpa2UgeW91ciBJQihJbmZpbmlCYW5kKSBkZXZpY2Ug aXMgbm90IGJlaW5nIGluaXRpYWxpemVkLiBJIGFtIG5vdCBzdXJlIGlmIHUgaGF2ZSBhbiBpc3N1 ZSBvbiB0aGUgY2xpZW50IElCIG9yIHRoZSBzdG9yYWdlIHNlcnZlciBJQi4gQWxzbyBoYXZlIHlv dSBjb25maWd1cmVkIHVyIElCIGRldmljZXMgY29ycmVjdGx5LiBJIGFtIHVzaW5nIElQb0lCLg0K Q2FuIHlvdSBjaGVjayB5b3VyIGZpcmV3YWxsLCBkaXNhYmxlIHNlbGludXgsIEkgdGhpbmssIHlv dSBtaWdodCBoYXZlIGNoZWNrZWQgaXQgYWxyZWFkeSA/DQoNCm1vdW50IC10IGdsdXN0ZXJmcyAt byB0cmFuc3BvcnQ9cmRtYSBzdG9yYWdlTjE6L3ZvbDAgL21udC92b2wwDQoNCg0KDQrigKIgICAg ICAgICBUaGUgYmVsb3cgZXJyb3Igc2VlbXMgaWYgeW91IGhhdmUgaXNzdWUgc3RhcnRpbmcgeW91 ciB2b2x1bWUuIEkgaGFkIGlzc3VlLCB3aGVuIG15IHRyYW5zcG9ydCB3YXMgc2V0IHRvIHRjcCxy ZG1hLiBJIGhhZCB0byBmb3JjZSBzdGFydCBteSB2b2x1bWUuIElmIEkgaGFkIHNldCBpdCBvbmx5 IHRvIHRjcCBvbiB0aGUgdm9sdW1lLCB0aGUgdm9sdW1lIHdvdWxkIHN0YXJ0IGVhc2lseS4NCg0K WzIwMTctMDMtMDIgMTE6NDk6NDcuODI5MzkxXSBFIFtNU0dJRDogMTE0MDIyXSBbY2xpZW50LmM6 MjUzMDpjbGllbnRfaW5pdF9ycGNdIDAtR2x1UmVwbGljYS1jbGllbnQtMjogZmFpbGVkIHRvIGlu aXRpYWxpemUgUlBDDQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44Mjk0MTNdIEUgW01TR0lEOiAxMDEw MTldIFt4bGF0b3IuYzo0MzM6eGxhdG9yX2luaXRdIDAtR2x1UmVwbGljYS1jbGllbnQtMjogSW5p dGlhbGl6YXRpb24gb2Ygdm9sdW1lICdHbHVSZXBsaWNhLWNsaWVudC0yJyBmYWlsZWQsIHJldmll dyB5b3VyIHZvbGZpbGUgYWdhaW4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQyNV0gRSBbTVNH SUQ6IDEwMTA2Nl0gW2dyYXBoLmM6MzI0OmdsdXN0ZXJmc19ncmFwaF9pbml0XSAwLUdsdVJlcGxp Y2EtY2xpZW50LTI6IGluaXRpYWxpemluZyB0cmFuc2xhdG9yIGZhaWxlZA0KWzIwMTctMDMtMDIg MTE6NDk6NDcuODI5NDM2XSBFIFtNU0dJRDogMTAxMTc2XSBbZ3JhcGguYzo2NzM6Z2x1c3RlcmZz X2dyYXBoX2FjdGl2YXRlXSAwLWdyYXBoOiBpbml0IGZhaWxlZA0KDQoNCuKAoiAgICAgICAgIFRo ZSBiZWxvdyBlcnJvciBzZWVtcyBpZiB5b3UgaGF2ZSBpc3N1ZSB3aXRoIElCIGRldmljZS4gSWYg bm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuDQoNClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyODk5Nl0g VyBbTVNHSUQ6IDEwMzA3MV0gW3JkbWEuYzo0NTg5Ol9fZ2ZfcmRtYV9jdHhfY3JlYXRlXSAwLXJw Yy10cmFuc3BvcnQvcmRtYTogcmRtYV9jbSBldmVudCBjaGFubmVsIGNyZWF0aW9uIGZhaWxlZCBb Tm8gc3VjaCBkZXZpY2VdDQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MjkwNjddIFcgW01TR0lEOiAx MDMwNTVdIFtyZG1hLmM6NDg5Njppbml0XSAwLUdsdVJlcGxpY2EtY2xpZW50LTI6IEZhaWxlZCB0 byBpbml0aWFsaXplIElCIERldmljZQ0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODI5MDgwXSBXIFty cGMtdHJhbnNwb3J0LmM6MzU0OnJwY190cmFuc3BvcnRfbG9hZF0gMC1ycGMtdHJhbnNwb3J0OiAn cmRtYScgaW5pdGlhbGl6YXRpb24gZmFpbGVkDQoNCg0KLS0NCkRlZXBhaw0KDQoNCkZyb206IGds dXN0ZXItdXNlcnMtYm91bmNlc0BnbHVzdGVyLm9yZzxtYWlsdG86Z2x1c3Rlci11c2Vycy1ib3Vu Y2VzQGdsdXN0ZXIub3JnPiBbbWFpbHRvOmdsdXN0ZXItdXNlcnMtYm91bmNlc0BnbHVzdGVyLm9y ZzxtYWlsdG86Z2x1c3Rlci11c2Vycy1ib3VuY2VzQGdsdXN0ZXIub3JnPl0gT24gQmVoYWxmIE9m IFNhaGluYSBCb3NlDQpTZW50OiBUaHVyc2RheSwgTWFyY2ggMDIsIDIwMTcgMTA6MjYgUE0NClRv OiBBcm1hbiBLaGFsYXR5YW47IGdsdXN0ZXItdXNlcnNAZ2x1c3Rlci5vcmc8bWFpbHRvOmdsdXN0 ZXItdXNlcnNAZ2x1c3Rlci5vcmc+OyBSYWZpIEthdnVuZ2FsIENodW5kYXR0dSBQYXJhbWJpbA0K Q2M6IHVzZXJzDQpTdWJqZWN0OiBSZTogW0dsdXN0ZXItdXNlcnNdIFtvdmlydC11c2Vyc10gSG90 IHRvIGZvcmNlIGdsdXN0ZXJmcyB0byB1c2UgUkRNQT8NCg0KW0FkZGluZyBnbHVzdGVyIHVzZXJz IHRvIGhlbHAgd2l0aCBlcnJvcl0NCg0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODI4OTk2XSBXIFtN U0dJRDogMTAzMDcxXSBbcmRtYS5jOjQ1ODk6X19nZl9yZG1hX2N0eF9jcmVhdGVdIDAtcnBjLXRy YW5zcG9ydC9yZG1hOiByZG1hX2NtIGV2ZW50IGNoYW5uZWwgY3JlYXRpb24gZmFpbGVkIFtObyBz dWNoIGRldmljZV0NCg0KT24gVGh1LCBNYXIgMiwgMjAxNyBhdCA1OjM2IFBNLCBBcm1hbiBLaGFs YXR5YW4gPGFybTJhcm1AZ21haWwuY29tPG1haWx0bzphcm0yYXJtQGdtYWlsLmNvbT4+IHdyb3Rl Og0KQlRXIFJETUEgaXMgd29ya2luZyBhcyBleHBlY3RlZDoNCnJvb3RAY2xlaTI2IH5dIyBxcGVy ZiBjbGVpMjIudmliICB0Y3BfYncgdGNwX2xhdA0KdGNwX2J3Og0KICAgIGJ3ICA9ICA0NzUgTUIv c2VjDQp0Y3BfbGF0Og0KICAgIGxhdGVuY3kgID0gIDUyLjggdXMNCltyb290QGNsZWkyNiB+XSMN CnRoYW5rIHlvdSBiZWZvcmVoYW5kLg0KQXJtYW4uDQoNCk9uIFRodSwgTWFyIDIsIDIwMTcgYXQg MTI6NTQgUE0sIEFybWFuIEtoYWxhdHlhbiA8YXJtMmFybUBnbWFpbC5jb208bWFpbHRvOmFybTJh cm1AZ21haWwuY29tPj4gd3JvdGU6DQpqdXN0IGZvciByZWZlcmVuY2U6DQogZ2x1c3RlciB2b2x1 bWUgaW5mbw0KDQpWb2x1bWUgTmFtZTogR2x1UmVwbGljYQ0KVHlwZTogUmVwbGljYXRlDQpWb2x1 bWUgSUQ6IGVlNjg2ZGZlLTIwM2EtNGNhYS1hNjkxLTI2MzUzNDYwY2M0OA0KU3RhdHVzOiBTdGFy dGVkDQpTbmFwc2hvdCBDb3VudDogMA0KTnVtYmVyIG9mIEJyaWNrczogMSB4ICgyICsgMSkgPSAz DQpUcmFuc3BvcnQtdHlwZTogdGNwLHJkbWENCkJyaWNrczoNCkJyaWNrMTogMTAuMTAuMTAuNDQ6 L3pjbGVpMjIvMDEvZ2x1DQpCcmljazI6IDEwLjEwLjEwLjQyOi96Y2xlaTIxLzAxL2dsdQ0KQnJp Y2szOiAxMC4xMC4xMC40MTovemNsZWkyNi8wMS9nbHUgKGFyYml0ZXIpDQpPcHRpb25zIFJlY29u ZmlndXJlZDoNCm5ldHdvcmsucGluZy10aW1lb3V0OiAzMA0Kc2VydmVyLmFsbG93LWluc2VjdXJl OiBvbg0Kc3RvcmFnZS5vd25lci1naWQ6IDM2DQpzdG9yYWdlLm93bmVyLXVpZDogMzYNCmNsdXN0 ZXIuZGF0YS1zZWxmLWhlYWwtYWxnb3JpdGhtOiBmdWxsDQpmZWF0dXJlcy5zaGFyZDogb24NCmNs dXN0ZXIuc2VydmVyLXF1b3J1bS10eXBlOiBzZXJ2ZXINCmNsdXN0ZXIucXVvcnVtLXR5cGU6IGF1 dG8NCm5ldHdvcmsucmVtb3RlLWRpbzogZW5hYmxlDQpjbHVzdGVyLmVhZ2VyLWxvY2s6IGVuYWJs ZQ0KcGVyZm9ybWFuY2Uuc3RhdC1wcmVmZXRjaDogb2ZmDQpwZXJmb3JtYW5jZS5pby1jYWNoZTog b2ZmDQpwZXJmb3JtYW5jZS5yZWFkLWFoZWFkOiBvZmYNCnBlcmZvcm1hbmNlLnF1aWNrLXJlYWQ6 IG9mZg0KcGVyZm9ybWFuY2UucmVhZGRpci1haGVhZDogb24NCm5mcy5kaXNhYmxlOiBvbg0KDQoN Cg0KW3Jvb3RAY2xlaTIxIH5dIyBnbHVzdGVyIHZvbHVtZSBzdGF0dXMNClN0YXR1cyBvZiB2b2x1 bWU6IEdsdVJlcGxpY2ENCkdsdXN0ZXIgcHJvY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVENQIFBvcnQgIFJETUEgUG9ydCAgT25saW5lICBQaWQNCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KQnJpY2sgMTAuMTAuMTAuNDQ6L3pjbGVpMjIvMDEvZ2x1ICAgICAgICAgICA0OTE1OCAgICAg NDkxNTkgICAgICBZICAgICAgIDE1ODcwDQpCcmljayAxMC4xMC4xMC40MjovemNsZWkyMS8wMS9n bHUgICAgICAgICAgIDQ5MTU2ICAgICA0OTE1NyAgICAgIFkgICAgICAgMTc0NzMNCkJyaWNrIDEw LjEwLjEwLjQxOi96Y2xlaTI2LzAxL2dsdSAgICAgICAgICAgNDkxNTMgICAgIDQ5MTU0ICAgICAg WSAgICAgICAxODg5Nw0KU2VsZi1oZWFsIERhZW1vbiBvbiBsb2NhbGhvc3QgICAgICAgICAgICAg ICBOL0EgICAgICAgTi9BICAgICAgICBZICAgICAgIDE3NTAyDQpTZWxmLWhlYWwgRGFlbW9uIG9u IDEwLjEwLjEwLjQxICAgICAgICAgICAgIE4vQSAgICAgICBOL0EgICAgICAgIFkgICAgICAgMTMz NTMNClNlbGYtaGVhbCBEYWVtb24gb24gMTAuMTAuMTAuNDQgICAgICAgICAgICAgTi9BICAgICAg IE4vQSAgICAgICAgWSAgICAgICAzMjc0NQ0KDQpUYXNrIFN0YXR1cyBvZiBWb2x1bWUgR2x1UmVw bGljYQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpUaGVyZSBhcmUgbm8gYWN0aXZlIHZvbHVtZSB0 YXNrcw0KDQpPbiBUaHUsIE1hciAyLCAyMDE3IGF0IDEyOjUyIFBNLCBBcm1hbiBLaGFsYXR5YW4g PGFybTJhcm1AZ21haWwuY29tPG1haWx0bzphcm0yYXJtQGdtYWlsLmNvbT4+IHdyb3RlOg0KSSBh bSBub3QgYWJsZSB0byBtb3VudCB3aXRoIFJETUEgb3ZlciBjbGkuLi4uDQpBcmUgdGhlcmUgc29t ZSB2b2xmaWxlIHBhcmFtZXRlcnMgbmVlZHMgdG8gYmUgdHVuZWQ/DQovdXNyL2Jpbi9tb3VudCAg LXQgZ2x1c3RlcmZzICAtbyBiYWNrdXAtdm9sZmlsZS1zZXJ2ZXJzPTEwLjEwLjEwLjQ0OjEwLjEw LjEwLjQyOjEwLjEwLjEwLjQxLHRyYW5zcG9ydD1yZG1hIDEwLjEwLjEwLjQ0Oi9HbHVSZXBsaWNh IC9tbnQNCg0KWzIwMTctMDMtMDIgMTE6NDk6NDcuNzk1NTExXSBJIFtNU0dJRDogMTAwMDMwXSBb Z2x1c3RlcmZzZC5jOjI0NTQ6bWFpbl0gMC0vdXNyL3NiaW4vZ2x1c3RlcmZzOiBTdGFydGVkIHJ1 bm5pbmcgL3Vzci9zYmluL2dsdXN0ZXJmcyB2ZXJzaW9uIDMuOC45IChhcmdzOiAvdXNyL3NiaW4v Z2x1c3RlcmZzIC0tdm9sZmlsZS1zZXJ2ZXI9MTAuMTAuMTAuNDQgLS12b2xmaWxlLXNlcnZlcj0x MC4xMC4xMC40NCAtLXZvbGZpbGUtc2VydmVyPTEwLjEwLjEwLjQyIC0tdm9sZmlsZS1zZXJ2ZXI9 MTAuMTAuMTAuNDEgLS12b2xmaWxlLXNlcnZlci10cmFuc3BvcnQ9cmRtYSAtLXZvbGZpbGUtaWQ9 L0dsdVJlcGxpY2EucmRtYSAvbW50KQ0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODEyNjk5XSBJIFtN U0dJRDogMTAxMTkwXSBbZXZlbnQtZXBvbGwuYzo2Mjg6ZXZlbnRfZGlzcGF0Y2hfZXBvbGxfd29y a2VyXSAwLWVwb2xsOiBTdGFydGVkIHRocmVhZCB3aXRoIGluZGV4IDENClsyMDE3LTAzLTAyIDEx OjQ5OjQ3LjgyNTIxMF0gSSBbTVNHSUQ6IDEwMTE5MF0gW2V2ZW50LWVwb2xsLmM6NjI4OmV2ZW50 X2Rpc3BhdGNoX2Vwb2xsX3dvcmtlcl0gMC1lcG9sbDogU3RhcnRlZCB0aHJlYWQgd2l0aCBpbmRl eCAyDQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44Mjg5OTZdIFcgW01TR0lEOiAxMDMwNzFdIFtyZG1h LmM6NDU4OTpfX2dmX3JkbWFfY3R4X2NyZWF0ZV0gMC1ycGMtdHJhbnNwb3J0L3JkbWE6IHJkbWFf Y20gZXZlbnQgY2hhbm5lbCBjcmVhdGlvbiBmYWlsZWQgW05vIHN1Y2ggZGV2aWNlXQ0KWzIwMTct MDMtMDIgMTE6NDk6NDcuODI5MDY3XSBXIFtNU0dJRDogMTAzMDU1XSBbcmRtYS5jOjQ4OTY6aW5p dF0gMC1HbHVSZXBsaWNhLWNsaWVudC0yOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJQiBEZXZpY2UN ClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTA4MF0gVyBbcnBjLXRyYW5zcG9ydC5jOjM1NDpycGNf dHJhbnNwb3J0X2xvYWRdIDAtcnBjLXRyYW5zcG9ydDogJ3JkbWEnIGluaXRpYWxpemF0aW9uIGZh aWxlZA0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODI5MjcyXSBXIFtycGMtY2xudC5jOjEwNzA6cnBj X2NsbnRfY29ubmVjdGlvbl9pbml0XSAwLUdsdVJlcGxpY2EtY2xpZW50LTI6IGxvYWRpbmcgb2Yg bmV3IHJwYy10cmFuc3BvcnQgZmFpbGVkDQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MjkzMjVdIEkg W01TR0lEOiAxMDEwNTNdIFttZW0tcG9vbC5jOjY0MTptZW1fcG9vbF9kZXN0cm95XSAwLUdsdVJl cGxpY2EtY2xpZW50LTI6IHNpemU9NTg4IG1heD0wIHRvdGFsPTANClsyMDE3LTAzLTAyIDExOjQ5 OjQ3LjgyOTM3MV0gSSBbTVNHSUQ6IDEwMTA1M10gW21lbS1wb29sLmM6NjQxOm1lbV9wb29sX2Rl c3Ryb3ldIDAtR2x1UmVwbGljYS1jbGllbnQtMjogc2l6ZT0xMjQgbWF4PTAgdG90YWw9MA0KWzIw MTctMDMtMDIgMTE6NDk6NDcuODI5MzkxXSBFIFtNU0dJRDogMTE0MDIyXSBbY2xpZW50LmM6MjUz MDpjbGllbnRfaW5pdF9ycGNdIDAtR2x1UmVwbGljYS1jbGllbnQtMjogZmFpbGVkIHRvIGluaXRp YWxpemUgUlBDDQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44Mjk0MTNdIEUgW01TR0lEOiAxMDEwMTld IFt4bGF0b3IuYzo0MzM6eGxhdG9yX2luaXRdIDAtR2x1UmVwbGljYS1jbGllbnQtMjogSW5pdGlh bGl6YXRpb24gb2Ygdm9sdW1lICdHbHVSZXBsaWNhLWNsaWVudC0yJyBmYWlsZWQsIHJldmlldyB5 b3VyIHZvbGZpbGUgYWdhaW4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQyNV0gRSBbTVNHSUQ6 IDEwMTA2Nl0gW2dyYXBoLmM6MzI0OmdsdXN0ZXJmc19ncmFwaF9pbml0XSAwLUdsdVJlcGxpY2Et Y2xpZW50LTI6IGluaXRpYWxpemluZyB0cmFuc2xhdG9yIGZhaWxlZA0KWzIwMTctMDMtMDIgMTE6 NDk6NDcuODI5NDM2XSBFIFtNU0dJRDogMTAxMTc2XSBbZ3JhcGguYzo2NzM6Z2x1c3RlcmZzX2dy YXBoX2FjdGl2YXRlXSAwLWdyYXBoOiBpbml0IGZhaWxlZA0KWzIwMTctMDMtMDIgMTE6NDk6NDcu ODMwMDAzXSBXIFtnbHVzdGVyZnNkLmM6MTMyNzpjbGVhbnVwX2FuZF9leGl0XSAoLS0+L3Vzci9z YmluL2dsdXN0ZXJmcyhtZ210X2dldHNwZWNfY2JrKzB4M2MxKSBbMHg3ZjUyNGM5ZGJlYjFdIC0t Pi91c3Ivc2Jpbi9nbHVzdGVyZnMoZ2x1c3RlcmZzX3Byb2Nlc3Nfdm9sZnArMHgxNzIpIFsweDdm NTI0YzlkNjVkMl0gLS0+L3Vzci9zYmluL2dsdXN0ZXJmcyhjbGVhbnVwX2FuZF9leGl0KzB4NmIp IFsweDdmNTI0YzlkNWI0Yl0gKSAwLTogcmVjZWl2ZWQgc2lnbnVtICgxKSwgc2h1dHRpbmcgZG93 bg0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODMwMDUzXSBJIFtmdXNlLWJyaWRnZS5jOjU3OTQ6Zmlu aV0gMC1mdXNlOiBVbm1vdW50aW5nICcvbW50Jy4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgzMTAx NF0gVyBbZ2x1c3RlcmZzZC5jOjEzMjc6Y2xlYW51cF9hbmRfZXhpdF0gKC0tPi9saWI2NC9saWJw dGhyZWFkLnNvLjAoKzB4N2RjNSkgWzB4N2Y1MjRiMzQzZGM1XSAtLT4vdXNyL3NiaW4vZ2x1c3Rl cmZzKGdsdXN0ZXJmc19zaWd3YWl0ZXIrMHhlNSkgWzB4N2Y1MjRjOWQ1Y2Q1XSAtLT4vdXNyL3Ni aW4vZ2x1c3RlcmZzKGNsZWFudXBfYW5kX2V4aXQrMHg2YikgWzB4N2Y1MjRjOWQ1YjRiXSApIDAt OiByZWNlaXZlZCBzaWdudW0gKDE1KSwgc2h1dHRpbmcgZG93bg0KWzIwMTctMDMtMDIgMTE6NDk6 NDcuODMxMDE0XSBXIFtnbHVzdGVyZnNkLmM6MTMyNzpjbGVhbnVwX2FuZF9leGl0XSAoLS0+L2xp YjY0L2xpYnB0aHJlYWQuc28uMCgrMHg3ZGM1KSBbMHg3ZjUyNGIzNDNkYzVdIC0tPi91c3Ivc2Jp bi9nbHVzdGVyZnMoZ2x1c3RlcmZzX3NpZ3dhaXRlcisweGU1KSBbMHg3ZjUyNGM5ZDVjZDVdIC0t Pi91c3Ivc2Jpbi9nbHVzdGVyZnMoY2xlYW51cF9hbmRfZXhpdCsweDZiKSBbMHg3ZjUyNGM5ZDVi NGJdICkgMC06IHJlY2VpdmVkIHNpZ251bSAoMTUpLCBzaHV0dGluZyBkb3duDQoNCg0KT24gVGh1 LCBNYXIgMiwgMjAxNyBhdCAxMjoxMSBQTSwgU2FoaW5hIEJvc2UgPHNhYm9zZUByZWRoYXQuY29t PG1haWx0bzpzYWJvc2VAcmVkaGF0LmNvbT4+IHdyb3RlOg0KWW91IHdpbGwgbmVlZCB0byBwYXNz IGFkZGl0aW9uYWwgbW91bnQgb3B0aW9ucyB3aGlsZSBjcmVhdGluZyB0aGUgc3RvcmFnZSBkb21h aW4gKHRyYW5zcG9ydD1yZG1hKQ0KUGxlYXNlIGxldCB1cyBrbm93IGlmIHRoaXMgd29ya3MuDQoN Ck9uIFRodSwgTWFyIDIsIDIwMTcgYXQgMjo0MiBQTSwgQXJtYW4gS2hhbGF0eWFuIDxhcm0yYXJt QGdtYWlsLmNvbTxtYWlsdG86YXJtMmFybUBnbWFpbC5jb20+PiB3cm90ZToNCkhpLA0KQXJlIHRo ZXJlIHdheSB0byBmb3JjZSB0aGUgY29ubmVjdGlvbnMgb3ZlciBSRE1BIG9ubHk/DQpJZiBJIGNo ZWNrIGhvc3QgbW91bnRzIEkgY2Fubm90IHNlZSByZG1hIG1vdW50IG9wdGlvbjoNCiBtb3VudCAt bHwgZ3JlcCBnbHVzdGVyDQoxMC4xMC4xMC40NDovR2x1UmVwbGljYSBvbiAvcmhldi9kYXRhLWNl bnRlci9tbnQvZ2x1c3RlclNELzEwLjEwLjEwLjQ0Ol9HbHVSZXBsaWNhIHR5cGUgZnVzZS5nbHVz dGVyZnMgKHJ3LHJlbGF0aW1lLHVzZXJfaWQ9MCxncm91cF9pZD0wLGRlZmF1bHRfcGVybWlzc2lv bnMsYWxsb3dfb3RoZXIsbWF4X3JlYWQ9MTMxMDcyKQ0KSSBoYXZlIGdsdXN0ZXJpemVkIDMgbm9k ZXM6DQoNCkdsdVJlcGxpY2ENClZvbHVtZSBJRDoNCmVlNjg2ZGZlLTIwM2EtNGNhYS1hNjkxLTI2 MzUzNDYwY2M0OA0KVm9sdW1lIFR5cGU6DQpSZXBsaWNhdGUgKEFyYml0ZXIpDQpSZXBsaWNhIENv dW50Og0KMiArIDENCk51bWJlciBvZiBCcmlja3M6DQozDQpUcmFuc3BvcnQgVHlwZXM6DQpUQ1As IFJETUENCk1heGltdW0gbm8gb2Ygc25hcHNob3RzOg0KMjU2DQpDYXBhY2l0eToNCjMuNTEgVGlC IHRvdGFsLCAxOTAuNTYgR2lCIHVzZWQsIDMuMzMgVGlCIGZyZWUNCg0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClVzZXJzIG1haWxpbmcgbGlzdA0KVXNl cnNAb3ZpcnQub3JnPG1haWx0bzpVc2Vyc0BvdmlydC5vcmc+DQpodHRwOi8vbGlzdHMub3ZpcnQu b3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMNCg0KDQoNCg0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXw0KVGhpcyBlbWFpbCBtZXNzYWdlIGlzIGZvciB0aGUgc29sZSB1c2Ugb2Yg dGhlIGludGVuZGVkIHJlY2lwaWVudChzKSBhbmQgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIGlu Zm9ybWF0aW9uLiAgQW55IHVuYXV0aG9yaXplZCByZXZpZXcsIHVzZSwgZGlzY2xvc3VyZSBvciBk aXN0cmlidXRpb24gaXMgcHJvaGliaXRlZC4gIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCBy ZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYnkgcmVwbHkgZW1haWwgYW5kIGRl c3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgb3JpZ2luYWwgbWVzc2FnZS4NCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQoNCg== --_000_06cbff03281448b5acd180c3f7526f7bDRHQMAIL105nvidiacom_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTQgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPCEtLVtp ZiAhbXNvXT48c3R5bGU+dlw6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kb1w6KiB7 YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQ0Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0 I1ZNTCk7fQ0KLnNoYXBlIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9DQo8L3N0eWxlPjwh W2VuZGlmXS0tPjxzdHlsZT48IS0tDQovKiBGb250IERlZmluaXRpb25zICovDQpAZm9udC1mYWNl DQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7 fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpUYWhvbWE7DQoJcGFub3NlLTE6MiAxMSA2IDQg MyA1IDQgNCAyIDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnAuTXNvTm9ybWFsLCBsaS5N c29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBpbjsNCgltYXJnaW4tYm90dG9tOi4w MDAxcHQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFu Iiwic2VyaWYiO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9y aXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQphOnZp c2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5 Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnAuTXNvQWNl dGF0ZSwgbGkuTXNvQWNldGF0ZSwgZGl2Lk1zb0FjZXRhdGUNCgl7bXNvLXN0eWxlLXByaW9yaXR5 Ojk5Ow0KCW1zby1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQgQ2hhciI7DQoJbWFyZ2luOjBpbjsN CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXplOjguMHB0Ow0KCWZvbnQtZmFtaWx5 OiJUYWhvbWEiLCJzYW5zLXNlcmlmIjt9DQpwLm04ODEzODkwNTQyNjM0ODk5NjUzbXNvbGlzdHBh cmFncmFwaCwgbGkubTg4MTM4OTA1NDI2MzQ4OTk2NTNtc29saXN0cGFyYWdyYXBoLCBkaXYubTg4 MTM4OTA1NDI2MzQ4OTk2NTNtc29saXN0cGFyYWdyYXBoDQoJe21zby1zdHlsZS1uYW1lOm1fODgx Mzg5MDU0MjYzNDg5OTY1M21zb2xpc3RwYXJhZ3JhcGg7DQoJbXNvLW1hcmdpbi10b3AtYWx0OmF1 dG87DQoJbWFyZ2luLXJpZ2h0OjBpbjsNCgltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsNCglt YXJnaW4tbGVmdDowaW47DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiVGltZXMg TmV3IFJvbWFuIiwic2VyaWYiO30NCnNwYW4ubTg4MTM4OTA1NDI2MzQ4OTk2NTNob2VuemINCgl7 bXNvLXN0eWxlLW5hbWU6bV84ODEzODkwNTQyNjM0ODk5NjUzaG9lbnpiO30NCnNwYW4uQmFsbG9v blRleHRDaGFyDQoJe21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQgQ2hhciI7DQoJbXNvLXN0 eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQiOw0KCWZvbnQt ZmFtaWx5OiJUYWhvbWEiLCJzYW5zLXNlcmlmIjt9DQpzcGFuLkVtYWlsU3R5bGUyMQ0KCXttc28t c3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMt c2VyaWYiOw0KCWNvbG9yOiMxRjQ5N0Q7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5 cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjt9DQpA cGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJbWFyZ2luOjEuMGluIDEu MGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpXb3JkU2VjdGlvbjE7 fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlZGVmYXVsdHMg djpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lm IGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4NCjxvOmlkbWFw IHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlm XS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJw bGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4mZ3Q7Jmd0Ozwvc3Bhbj4g QXMgeW91IGNhbiBzZWUgZnJvbSBteSBwcmV2aW91cyBlbWFpbCB0aGF0IHRoZSBSRE1BIGNvbm5l Y3Rpb24gdGVzdGVkIHdpdGggcXBlcmYuPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj5JIHRoaW5rIHlvdSBoYXZlIHdyb25nIGNvbW1hbmQuIFlvdXIgdGVzdGluZyA8Yj5UQ1Ag JmFtcDsgbm90IFJETUEuDQo8L2I+QWxzbyBjaGVjayBpZiB5b3UgaGF2ZSBSRE1BICZhbXA7IElC IG1vZHVsZXMgbG9hZGVkIG9uIHlvdXIgaG9zdHMuPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bWFyZ2luLWJvdHRvbTox Mi4wcHQiPnJvb3RAY2xlaTI2IH5dIyBxcGVyZiBjbGVpMjIudmliJm5ic3A7DQo8c3BhbiBzdHls ZT0iYmFja2dyb3VuZDp5ZWxsb3c7bXNvLWhpZ2hsaWdodDp5ZWxsb3ciPnRjcF9idyB0Y3BfbGF0 PC9zcGFuPjxicj4NCjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kOnllbGxvdzttc28taGlnaGxpZ2h0 OnllbGxvdyI+dGNwX2J3Ojwvc3Bhbj48YnI+DQombmJzcDsmbmJzcDsmbmJzcDsgYncmbmJzcDsg PSZuYnNwOyA0NzUgTUIvc2VjPGJyPg0KPHNwYW4gc3R5bGU9ImJhY2tncm91bmQ6eWVsbG93O21z by1oaWdobGlnaHQ6eWVsbG93Ij50Y3BfbGF0Ojwvc3Bhbj48YnI+DQombmJzcDsmbmJzcDsmbmJz cDsgbGF0ZW5jeSZuYnNwOyA9Jm5ic3A7IDUyLjggdXM8YnI+DQpbcm9vdEBjbGVpMjYgfl0jIDxv OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj MUY0OTdEIj5QbGVhc2UgcnVuIGJlbG93IGNvbW1hbmQgdG8gdGVzdCBSRE1BPG86cD48L286cD48 L3NwYW4+PC91PjwvYj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48dT48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90 O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD48c3BhbiBzdHlsZT0idGV4dC1k ZWNvcmF0aW9uOm5vbmUiPiZuYnNwOzwvc3Bhbj48L286cD48L3NwYW4+PC91PjwvYj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6 IzFGNDk3RCI+W3Jvb3RAc3RvcmFnZU4yIH5dIyBxcGVyZiBzdG9yYWdlTjENCjxiPnVkX2xhdDwv Yj4gPGI+dWRfYnc8L2I+PG86cD48L286cD48L3NwYW4+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj51 ZF9sYXQ8L3NwYW4+PC91PjwvYj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6 IzFGNDk3RCI+OjxvOnA+PC9vOnA+PC9zcGFuPjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5i c3A7Jm5ic3A7IGxhdGVuY3kmbmJzcDsgPSZuYnNwOyA3LjUxIHVzPG86cD48L286cD48L3NwYW4+ PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp ZiZxdW90Oztjb2xvcjojMUY0OTdEIj51ZF9idzwvc3Bhbj48L3U+PC9iPjx1PjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7 c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj46PG86cD48L286cD48L3NwYW4+PC91Pjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj b2xvcjojMUY0OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsgc2VuZF9idyZuYnNwOyA9Jm5ic3A7IDku MjEgR0Ivc2VjPG86cD48L286cD48L3NwYW4+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi Pjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4mbmJzcDsmbmJz cDsmbmJzcDsgcmVjdl9idyZuYnNwOyA9Jm5ic3A7IDkuMjEgR0Ivc2VjPG86cD48L286cD48L3Nw YW4+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp ZiZxdW90Oztjb2xvcjojMUY0OTdEIj5bcm9vdEBzYy1zZGd4LTIwMiB+XSM8bzpwPjwvbzpwPjwv c3Bhbj48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE Ij5SZWFkIHFwZXJmIG1hbiBwYWdlcyBmb3IgbW9yZSBpbmZvLjxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xv cjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5i c3A7Jm5ic3A7ICogVG8gcnVuIGEgVENQIGJhbmR3aWR0aCBhbmQgbGF0ZW5jeSB0ZXN0OjxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1z ZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgcXBlcmYgbXlzZXJ2ZXIgdGNwX2J3IHRjcF9sYXQ8bzpwPjwvbzpwPjwvc3Bh bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7 Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICogVG8gcnVuIGEgVURQIGxhdGVuY3kg dGVzdCBhbmQgdGhlbiBjYXVzZSB0aGUgc2VydmVyIHRvIHRlcm1pbmF0ZTo8bzpwPjwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv dDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IHFwZXJmIG15c2VydmVyIHVkcF9sYXQgcXVpdDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0 OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsgKiBUbyBtZWFzdXJlIHRoZSBSRE1BIFVEIGxhdGVuY3kg YW5kIGJhbmR3aWR0aDo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHFwZXJmIG15c2VydmVyIHVkX2xhdCB1ZF9i dzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7 c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsgKiBUbyBt ZWFzdXJlIFJETUEgVUMgYmktZGlyZWN0aW9uYWwgYmFuZHdpZHRoOjxvOnA+PC9vOnA+PC9zcGFu PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj b2xvcjojMUY0OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg cXBlcmYgbXlzZXJ2ZXIgcmNfYmlfYnc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Jm5i c3A7Jm5ic3A7Jm5ic3A7ICogVG8gZ2V0IGEgcmFuZ2Ugb2YgVENQIGxhdGVuY2llcyB3aXRoIGEg bWVzc2FnZSBzaXplIGZyb20gMSB0byA2NEs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHFwZXJmIG15c2VydmVy IC1vbyBtc2dfc2l6ZToxOjY0SzoqMiAtdnUgdGNwX2xhdDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj MUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHU+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtz YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPkNoZWNrIGlmIHlvdSBoYXZlIFJETUEgJmFt cDsgSUIgbW9kdWxlcyBsb2FkZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L3U+PC9iPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj MUY0OTdEIj48bzpwPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZSI+Jm5ic3A7PC9z cGFuPjwvbzpwPjwvc3Bhbj48L3U+PC9iPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss JnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5sc21vZCB8IGdyZXAgLWkgaWI8 bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3Nh bnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y OiMxRjQ5N0QiPmxzbW9kIHwgZ3JlcCAtaSByZG1hPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5 N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYm cXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0Qi Pi0tPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVv dDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPkRlZXBhazxvOnA+PC9vOnA+PC9zcGFu PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztj b2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4m bmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtz YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O1RhaG9tYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5G cm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7VGFob21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPiBBcm1hbiBLaGFsYXR5 YW4gW21haWx0bzphcm0yYXJtQGdtYWlsLmNvbV0NCjxicj4NCjxiPlNlbnQ6PC9iPiBUaHVyc2Rh eSwgTWFyY2ggMDIsIDIwMTcgMTA6NTcgUE08YnI+DQo8Yj5Ubzo8L2I+IERlZXBhayBOYWlkdTxi cj4NCjxiPkNjOjwvYj4gUmFmaSBLYXZ1bmdhbCBDaHVuZGF0dHUgUGFyYW1iaWw7IGdsdXN0ZXIt dXNlcnNAZ2x1c3Rlci5vcmc7IHVzZXJzOyBTYWhpbmEgQm9zZTxicj4NCjxiPlN1YmplY3Q6PC9i PiBSRTogW0dsdXN0ZXItdXNlcnNdIFtvdmlydC11c2Vyc10gSG90IHRvIGZvcmNlIGdsdXN0ZXJm cyB0byB1c2UgUkRNQT88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5EZWFy IERlZXBhaywgdGhhbmsgeW91IGZvciB0aGUgaGludHMsIHdoaWNoIGdsdXN0ZXIgYXJlIHlvdSB1 c2luZz88bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BcyB5b3Ug Y2FuIHNlZSBmcm9tIG15IHByZXZpb3VzIGVtYWlsIHRoYXQgdGhlIFJETUEgY29ubmVjdGlvbiB0 ZXN0ZWQgd2l0aCBxcGVyZi4gSXQgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gSW4gbXkgY2FzZSB0 aGUgY2xpZW50cyBhcmUgc2VydmVycyBhcyB3ZWxsLCB0aGV5IGFyZSBob3N0cyBmb3IgdGhlIG92 aXJ0LiBEaXNhYmxpbmcgc2VsaW51eCBpcyBub3IgcmVjb21tZW5kZWQgYnkgb3ZpcnQsIGJ1dCBp DQogd2lsbCBnaXZlIGEgdHJ5LjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj5BbSAwMy4wMy4yMDE3IDc6NTAgdm9ybS4gc2NocmllYiAmcXVvdDtE ZWVwYWsgTmFpZHUmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpkbmFpZHVAbnZpZGlhLmNvbSI+ ZG5haWR1QG52aWRpYS5jb208L2E+Jmd0Ozo8bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6 IzFGNDk3RCI+SSBoYXZlIGJlZW4gdGVzdGluZyBnbHVzdGVyZnMgb3ZlciBSRE1BICZhbXA7IGJl bG93IGlzIHRoZSBjb21tYW5kIEkgdXNlLiBSZWFkaW5nIHVwIHRoZSBsb2dzLCBpdCBsb29rcw0K IGxpa2UgeW91ciBJQihJbmZpbmlCYW5kKSBkZXZpY2UgaXMgbm90IGJlaW5nIGluaXRpYWxpemVk LiBJIGFtIG5vdCBzdXJlIGlmIHUgaGF2ZSBhbiBpc3N1ZSBvbiB0aGUgY2xpZW50IElCIG9yIHRo ZSBzdG9yYWdlIHNlcnZlciBJQi4gQWxzbyBoYXZlIHlvdSBjb25maWd1cmVkIHVyIElCIGRldmlj ZXMgY29ycmVjdGx5LiBJIGFtIHVzaW5nIElQb0lCLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFy Z2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMx RjQ5N0QiPkNhbiB5b3UgY2hlY2sgeW91ciBmaXJld2FsbCwgZGlzYWJsZSBzZWxpbnV4LCBJIHRo aW5rLCB5b3UgbWlnaHQgaGF2ZSBjaGVja2VkIGl0IGFscmVhZHkgPzwvc3Bhbj48bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0 bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7 O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRv bS1hbHQ6YXV0byI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0Qi Pm1vdW50IC10IGdsdXN0ZXJmcyAtbyB0cmFuc3BvcnQ9cmRtYSBzdG9yYWdlTjE6L3ZvbDAgL21u dC92b2wwPC9zcGFuPjwvYj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48 bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRv cC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl cmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJtODgxMzg5MDU0MjYzNDg5OTY1M21zb2xpc3RwYXJhZ3JhcGgiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OlN5bWJvbDtjb2xvcjojMUY0OTdEIj7Ctzwv c3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjcuMHB0O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjxiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss JnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5UaGUgYmVsb3cgZXJyb3Igc2Vl bXMgaWYgeW91IGhhdmUgaXNzdWUgc3RhcnRpbmcgeW91ciB2b2x1bWUuIEkgaGFkIGlzc3VlLCB3 aGVuIG15IHRyYW5zcG9ydCB3YXMgc2V0IHRvIHRjcCxyZG1hLiBJIGhhZCB0byBmb3JjZSBzdGFy dCBteSB2b2x1bWUuIElmIEkgaGFkIHNldCBpdCBvbmx5DQogdG8gdGNwIG9uIHRoZSB2b2x1bWUs IHRoZSB2b2x1bWUgd291bGQgc3RhcnQgZWFzaWx5Ljwvc3Bhbj48L2I+PG86cD48L286cD48L3A+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDph dXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv dDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21hcmdpbi1ib3R0b206 MTIuMHB0Ij48c3BhbiBzdHlsZT0iYmFja2dyb3VuZDp5ZWxsb3ciPlsyMDE3LTAzLTAyIDExOjQ5 OjQ3LjgyOTM5MV0gRSBbTVNHSUQ6IDExNDAyMl0gW2NsaWVudC5jOjI1MzA6Y2xpZW50X2luaXRf cnBjXSAwLUdsdVJlcGxpY2EtY2xpZW50LTI6IGZhaWxlZCB0byBpbml0aWFsaXplIFJQQzxicj4N ClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQxM10gRSBbTVNHSUQ6IDEwMTAxOV0gW3hsYXRvci5j OjQzMzp4bGF0b3JfaW5pdF0gMC1HbHVSZXBsaWNhLWNsaWVudC0yOiBJbml0aWFsaXphdGlvbiBv ZiB2b2x1bWUgJ0dsdVJlcGxpY2EtY2xpZW50LTInIGZhaWxlZCwgcmV2aWV3IHlvdXIgdm9sZmls ZSBhZ2Fpbjxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQyNV0gRSBbTVNHSUQ6IDEwMTA2 Nl0gW2dyYXBoLmM6MzI0OmdsdXN0ZXJmc19ncmFwaF9pbml0XSAwLUdsdVJlcGxpY2EtY2xpZW50 LTI6IGluaXRpYWxpemluZyB0cmFuc2xhdG9yIGZhaWxlZDxicj4NClsyMDE3LTAzLTAyIDExOjQ5 OjQ3LjgyOTQzNl0gRSBbTVNHSUQ6IDEwMTE3Nl0gW2dyYXBoLmM6NjczOmdsdXN0ZXJmc19ncmFw aF9hY3RpdmF0ZV0gMC1ncmFwaDogaW5pdCBmYWlsZWQ8L3NwYW4+PG86cD48L286cD48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1h cmdpbi1ib3R0b20tYWx0OmF1dG8iPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kOnllbGxvdyI+Jm5i c3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0ibTg4MTM4OTA1NDI2 MzQ4OTk2NTNtc29saXN0cGFyYWdyYXBoIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTpTeW1ib2w7Y29sb3I6IzFGNDk3RCI+wrc8L3NwYW4+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTo3LjBwdDtjb2xvcjojMUY0OTdEIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv dDs7Y29sb3I6IzFGNDk3RCI+VGhlIGJlbG93IGVycm9yIHNlZW1zIGlmIHlvdSBoYXZlIGlzc3Vl IHdpdGggSUIgZGV2aWNlLiBJZiBub3QgY29uZmlndXJlZCBwcm9wZXJseS48L3NwYW4+PC9iPjxv OnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFy Z2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9 ImJhY2tncm91bmQ6eWVsbG93Ij4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bWFyZ2luLWJvdHRv bToxMi4wcHQiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kOnllbGxvdyI+WzIwMTctMDMtMDIgMTE6 NDk6NDcuODI4OTk2XSBXIFtNU0dJRDogMTAzMDcxXSBbcmRtYS5jOjQ1ODk6X19nZl9yZG1hX2N0 eF9jcmVhdGVdIDAtcnBjLXRyYW5zcG9ydC9yZG1hOiByZG1hX2NtIGV2ZW50IGNoYW5uZWwgY3Jl YXRpb24gZmFpbGVkIFtObyBzdWNoDQogZGV2aWNlXTxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3 LjgyOTA2N10gVyBbTVNHSUQ6IDEwMzA1NV0gW3JkbWEuYzo0ODk2OmluaXRdIDAtR2x1UmVwbGlj YS1jbGllbnQtMjogRmFpbGVkIHRvIGluaXRpYWxpemUgSUIgRGV2aWNlPGJyPg0KWzIwMTctMDMt MDIgMTE6NDk6NDcuODI5MDgwXSBXIFtycGMtdHJhbnNwb3J0LmM6MzU0OnJwY190cmFuc3BvcnRf bG9hZF0gMC1ycGMtdHJhbnNwb3J0OiAncmRtYScgaW5pdGlhbGl6YXRpb24gZmFpbGVkPC9zcGFu PjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4t dG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMt c2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6 IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0 b20tYWx0OmF1dG8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj4t LTwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28t bWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVv dDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPkRlZXBhazwvc3Bhbj48bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0 bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7 O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRv bS1hbHQ6YXV0byI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPiZu YnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt c28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+PGI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGFob21hJnF1b3Q7 LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUYWhvbWEmcXVvdDssJnF1b3Q7c2Fucy1z ZXJpZiZxdW90OyI+DQo8YSBocmVmPSJtYWlsdG86Z2x1c3Rlci11c2Vycy1ib3VuY2VzQGdsdXN0 ZXIub3JnIiB0YXJnZXQ9Il9ibGFuayI+Z2x1c3Rlci11c2Vycy1ib3VuY2VzQGdsdXN0ZXIub3Jn PC9hPiBbbWFpbHRvOjxhIGhyZWY9Im1haWx0bzpnbHVzdGVyLXVzZXJzLWJvdW5jZXNAZ2x1c3Rl ci5vcmciIHRhcmdldD0iX2JsYW5rIj5nbHVzdGVyLXVzZXJzLWJvdW5jZXNAZ2x1c3Rlci5vcmc8 L2E+XQ0KPGI+T24gQmVoYWxmIE9mIDwvYj5TYWhpbmEgQm9zZTxicj4NCjxiPlNlbnQ6PC9iPiBU aHVyc2RheSwgTWFyY2ggMDIsIDIwMTcgMTA6MjYgUE08YnI+DQo8Yj5Ubzo8L2I+IEFybWFuIEto YWxhdHlhbjsgPGEgaHJlZj0ibWFpbHRvOmdsdXN0ZXItdXNlcnNAZ2x1c3Rlci5vcmciIHRhcmdl dD0iX2JsYW5rIj4NCmdsdXN0ZXItdXNlcnNAZ2x1c3Rlci5vcmc8L2E+OyBSYWZpIEthdnVuZ2Fs IENodW5kYXR0dSBQYXJhbWJpbDxicj4NCjxiPkNjOjwvYj4gdXNlcnM8YnI+DQo8Yj5TdWJqZWN0 OjwvYj4gUmU6IFtHbHVzdGVyLXVzZXJzXSBbb3ZpcnQtdXNlcnNdIEhvdCB0byBmb3JjZSBnbHVz dGVyZnMgdG8gdXNlIFJETUE/PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJv dHRvbS1hbHQ6YXV0byI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9t LWFsdDphdXRvIj5bQWRkaW5nIGdsdXN0ZXIgdXNlcnMgdG8gaGVscCB3aXRoIGVycm9yXTxicj4N Cjxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyODk5Nl0gVyBbTVNHSUQ6IDEwMzA3MV0gW3Jk bWEuYzo0NTg5Ol9fZ2ZfcmRtYV9jdHhfY3JlYXRlXSAwLXJwYy10cmFuc3BvcnQvcmRtYTogcmRt YV9jbSBldmVudCBjaGFubmVsIGNyZWF0aW9uIGZhaWxlZCBbTm8gc3VjaCBkZXZpY2VdPG86cD48 L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNv LW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPiZuYnNwOzxv OnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFy Z2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+T24gVGh1LCBNYXIg MiwgMjAxNyBhdCA1OjM2IFBNLCBBcm1hbiBLaGFsYXR5YW4gJmx0OzxhIGhyZWY9Im1haWx0bzph cm0yYXJtQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmFybTJhcm1AZ21haWwuY29tPC9hPiZn dDsgd3JvdGU6PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bWFyZ2luLWJvdHRvbTox Mi4wcHQiPkJUVyBSRE1BIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQ6PGJyPg0Kcm9vdEBjbGVpMjYg fl0jIHFwZXJmIGNsZWkyMi52aWImbmJzcDsgdGNwX2J3IHRjcF9sYXQ8YnI+DQp0Y3BfYnc6PGJy Pg0KJm5ic3A7Jm5ic3A7Jm5ic3A7IGJ3Jm5ic3A7ID0mbmJzcDsgNDc1IE1CL3NlYzxicj4NCnRj cF9sYXQ6PGJyPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7IGxhdGVuY3kmbmJzcDsgPSZuYnNwOyA1Mi44 IHVzPGJyPg0KW3Jvb3RAY2xlaTI2IH5dIyA8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4t Ym90dG9tLWFsdDphdXRvIj50aGFuayB5b3UgYmVmb3JlaGFuZC48bzpwPjwvbzpwPjwvcD4NCjwv ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRv O21hcmdpbi1ib3R0b206MTIuMHB0Ij48c3BhbiBjbGFzcz0ibTg4MTM4OTA1NDI2MzQ4OTk2NTNo b2VuemIiPjxzcGFuIHN0eWxlPSJjb2xvcjojODg4ODg4Ij5Bcm1hbi48L3NwYW4+PC9zcGFuPjxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20t YWx0OmF1dG8iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6 YXV0byI+T24gVGh1LCBNYXIgMiwgMjAxNyBhdCAxMjo1NCBQTSwgQXJtYW4gS2hhbGF0eWFuICZs dDs8YSBocmVmPSJtYWlsdG86YXJtMmFybUBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5hcm0y YXJtQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttYXJnaW4tYm90 dG9tOjEyLjBwdCI+anVzdCBmb3IgcmVmZXJlbmNlOjxicj4NCiZuYnNwO2dsdXN0ZXIgdm9sdW1l IGluZm8gPGJyPg0KJm5ic3A7PGJyPg0KVm9sdW1lIE5hbWU6IEdsdVJlcGxpY2E8YnI+DQpUeXBl OiBSZXBsaWNhdGU8YnI+DQpWb2x1bWUgSUQ6IGVlNjg2ZGZlLTIwM2EtNGNhYS1hNjkxLTI2MzUz NDYwY2M0ODxicj4NClN0YXR1czogU3RhcnRlZDxicj4NClNuYXBzaG90IENvdW50OiAwPGJyPg0K TnVtYmVyIG9mIEJyaWNrczogMSB4ICgyICYjNDM7IDEpID0gMzxicj4NClRyYW5zcG9ydC10eXBl OiB0Y3AscmRtYTxicj4NCkJyaWNrczo8YnI+DQpCcmljazE6IDEwLjEwLjEwLjQ0Oi96Y2xlaTIy LzAxL2dsdTxicj4NCkJyaWNrMjogMTAuMTAuMTAuNDI6L3pjbGVpMjEvMDEvZ2x1PGJyPg0KQnJp Y2szOiAxMC4xMC4xMC40MTovemNsZWkyNi8wMS9nbHUgKGFyYml0ZXIpPGJyPg0KT3B0aW9ucyBS ZWNvbmZpZ3VyZWQ6PGJyPg0KbmV0d29yay5waW5nLXRpbWVvdXQ6IDMwPGJyPg0Kc2VydmVyLmFs bG93LWluc2VjdXJlOiBvbjxicj4NCnN0b3JhZ2Uub3duZXItZ2lkOiAzNjxicj4NCnN0b3JhZ2Uu b3duZXItdWlkOiAzNjxicj4NCmNsdXN0ZXIuZGF0YS1zZWxmLWhlYWwtYWxnb3JpdGhtOiBmdWxs PGJyPg0KZmVhdHVyZXMuc2hhcmQ6IG9uPGJyPg0KY2x1c3Rlci5zZXJ2ZXItcXVvcnVtLXR5cGU6 IHNlcnZlcjxicj4NCmNsdXN0ZXIucXVvcnVtLXR5cGU6IGF1dG88YnI+DQpuZXR3b3JrLnJlbW90 ZS1kaW86IGVuYWJsZTxicj4NCmNsdXN0ZXIuZWFnZXItbG9jazogZW5hYmxlPGJyPg0KcGVyZm9y bWFuY2Uuc3RhdC1wcmVmZXRjaDogb2ZmPGJyPg0KcGVyZm9ybWFuY2UuaW8tY2FjaGU6IG9mZjxi cj4NCnBlcmZvcm1hbmNlLnJlYWQtYWhlYWQ6IG9mZjxicj4NCnBlcmZvcm1hbmNlLnF1aWNrLXJl YWQ6IG9mZjxicj4NCnBlcmZvcm1hbmNlLnJlYWRkaXItYWhlYWQ6IG9uPGJyPg0KbmZzLmRpc2Fi bGU6IG9uPGJyPg0KPGJyPg0KPGJyPg0KPGJyPg0KW3Jvb3RAY2xlaTIxIH5dIyBnbHVzdGVyIHZv bHVtZSBzdGF0dXMgPGJyPg0KU3RhdHVzIG9mIHZvbHVtZTogR2x1UmVwbGljYTxicj4NCkdsdXN0 ZXIgcHJvY2VzcyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBUQ1AgUG9ydCZuYnNwOyBSRE1BIFBvcnQmbmJzcDsgT25saW5lJm5ic3A7IFBpZDxi cj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCkJyaWNrIDEwLjEwLjEwLjQ0Oi96Y2xlaTIy LzAxL2dsdSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyA0OTE1OCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA0OTE1OSZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBZJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IDE1ODcwPGJyPg0KQnJpY2sgMTAuMTAuMTAuNDI6L3pjbGVpMjEvMDEvZ2x1Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDQ5MTU2Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDQ5MTU3Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IFkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMTc0NzM8YnI+DQpCcmljayAx MC4xMC4xMC40MTovemNsZWkyNi8wMS9nbHUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNDkxNTMmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgNDkxNTQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgWSZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAxODg5Nzxicj4NClNlbGYtaGVhbCBEYWVtb24gb24gbG9jYWxo b3N0Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE4vQSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBOL0EmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgWSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxNzUwMjxicj4NClNlbGYt aGVhbCBEYWVtb24gb24gMTAuMTAuMTAuNDEmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTi9BJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE4vQSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBZJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEzMzUz PGJyPg0KU2VsZi1oZWFsIERhZW1vbiBvbiAxMC4xMC4xMC40NCZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBOL0Em bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTi9BJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgMzI3NDU8YnI+DQombmJzcDs8YnI+DQpUYXNrIFN0YXR1cyBvZiBWb2x1bWUgR2x1UmVw bGljYTxicj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NClRoZXJlIGFyZSBubyBhY3RpdmUg dm9sdW1lIHRhc2tzPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPGRpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28t bWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJn aW4tYm90dG9tLWFsdDphdXRvIj5PbiBUaHUsIE1hciAyLCAyMDE3IGF0IDEyOjUyIFBNLCBBcm1h biBLaGFsYXR5YW4gJmx0OzxhIGhyZWY9Im1haWx0bzphcm0yYXJtQGdtYWlsLmNvbSIgdGFyZ2V0 PSJfYmxhbmsiPmFybTJhcm1AZ21haWwuY29tPC9hPiZndDsgd3JvdGU6PG86cD48L286cD48L3A+ DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRv cC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+SSBhbSBub3QgYWJsZSB0byBt b3VudCB3aXRoIFJETUEgb3ZlciBjbGkuLi4uPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttYXJnaW4tYm90 dG9tOjEyLjBwdCI+QXJlIHRoZXJlIHNvbWUgdm9sZmlsZSBwYXJhbWV0ZXJzIG5lZWRzIHRvIGJl IHR1bmVkPzxicj4NCi91c3IvYmluL21vdW50Jm5ic3A7IC10IGdsdXN0ZXJmcyZuYnNwOyAtbyBi YWNrdXAtdm9sZmlsZS1zZXJ2ZXJzPTEwLjEwLjEwLjQ0OjEwLjEwLjEwLjQyOjEwLjEwLjEwLjQx LHRyYW5zcG9ydD1yZG1hIDEwLjEwLjEwLjQ0Oi9HbHVSZXBsaWNhIC9tbnQ8YnI+DQo8YnI+DQpb MjAxNy0wMy0wMiAxMTo0OTo0Ny43OTU1MTFdIEkgW01TR0lEOiAxMDAwMzBdIFtnbHVzdGVyZnNk LmM6MjQ1NDptYWluXSAwLS91c3Ivc2Jpbi9nbHVzdGVyZnM6IFN0YXJ0ZWQgcnVubmluZyAvdXNy L3NiaW4vZ2x1c3RlcmZzIHZlcnNpb24gMy44LjkgKGFyZ3M6IC91c3Ivc2Jpbi9nbHVzdGVyZnMg LS12b2xmaWxlLXNlcnZlcj0xMC4xMC4xMC40NCAtLXZvbGZpbGUtc2VydmVyPTEwLjEwLjEwLjQ0 IC0tdm9sZmlsZS1zZXJ2ZXI9MTAuMTAuMTAuNDINCiAtLXZvbGZpbGUtc2VydmVyPTEwLjEwLjEw LjQxIC0tdm9sZmlsZS1zZXJ2ZXItdHJhbnNwb3J0PXJkbWEgLS12b2xmaWxlLWlkPS9HbHVSZXBs aWNhLnJkbWEgL21udCk8YnI+DQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MTI2OTldIEkgW01TR0lE OiAxMDExOTBdIFtldmVudC1lcG9sbC5jOjYyODpldmVudF9kaXNwYXRjaF9lcG9sbF93b3JrZXJd IDAtZXBvbGw6IFN0YXJ0ZWQgdGhyZWFkIHdpdGggaW5kZXggMTxicj4NClsyMDE3LTAzLTAyIDEx OjQ5OjQ3LjgyNTIxMF0gSSBbTVNHSUQ6IDEwMTE5MF0gW2V2ZW50LWVwb2xsLmM6NjI4OmV2ZW50 X2Rpc3BhdGNoX2Vwb2xsX3dvcmtlcl0gMC1lcG9sbDogU3RhcnRlZCB0aHJlYWQgd2l0aCBpbmRl eCAyPGJyPg0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODI4OTk2XSBXIFtNU0dJRDogMTAzMDcxXSBb cmRtYS5jOjQ1ODk6X19nZl9yZG1hX2N0eF9jcmVhdGVdIDAtcnBjLXRyYW5zcG9ydC9yZG1hOiBy ZG1hX2NtIGV2ZW50IGNoYW5uZWwgY3JlYXRpb24gZmFpbGVkIFtObyBzdWNoIGRldmljZV08YnI+ DQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MjkwNjddIFcgW01TR0lEOiAxMDMwNTVdIFtyZG1hLmM6 NDg5Njppbml0XSAwLUdsdVJlcGxpY2EtY2xpZW50LTI6IEZhaWxlZCB0byBpbml0aWFsaXplIElC IERldmljZTxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTA4MF0gVyBbcnBjLXRyYW5zcG9y dC5jOjM1NDpycGNfdHJhbnNwb3J0X2xvYWRdIDAtcnBjLXRyYW5zcG9ydDogJ3JkbWEnIGluaXRp YWxpemF0aW9uIGZhaWxlZDxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTI3Ml0gVyBbcnBj LWNsbnQuYzoxMDcwOnJwY19jbG50X2Nvbm5lY3Rpb25faW5pdF0gMC1HbHVSZXBsaWNhLWNsaWVu dC0yOiBsb2FkaW5nIG9mIG5ldyBycGMtdHJhbnNwb3J0IGZhaWxlZDxicj4NClsyMDE3LTAzLTAy IDExOjQ5OjQ3LjgyOTMyNV0gSSBbTVNHSUQ6IDEwMTA1M10gW21lbS1wb29sLmM6NjQxOm1lbV9w b29sX2Rlc3Ryb3ldIDAtR2x1UmVwbGljYS1jbGllbnQtMjogc2l6ZT01ODggbWF4PTAgdG90YWw9 MDxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTM3MV0gSSBbTVNHSUQ6IDEwMTA1M10gW21l bS1wb29sLmM6NjQxOm1lbV9wb29sX2Rlc3Ryb3ldIDAtR2x1UmVwbGljYS1jbGllbnQtMjogc2l6 ZT0xMjQgbWF4PTAgdG90YWw9MDxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTM5MV0gRSBb TVNHSUQ6IDExNDAyMl0gW2NsaWVudC5jOjI1MzA6Y2xpZW50X2luaXRfcnBjXSAwLUdsdVJlcGxp Y2EtY2xpZW50LTI6IGZhaWxlZCB0byBpbml0aWFsaXplIFJQQzxicj4NClsyMDE3LTAzLTAyIDEx OjQ5OjQ3LjgyOTQxM10gRSBbTVNHSUQ6IDEwMTAxOV0gW3hsYXRvci5jOjQzMzp4bGF0b3JfaW5p dF0gMC1HbHVSZXBsaWNhLWNsaWVudC0yOiBJbml0aWFsaXphdGlvbiBvZiB2b2x1bWUgJ0dsdVJl cGxpY2EtY2xpZW50LTInIGZhaWxlZCwgcmV2aWV3IHlvdXIgdm9sZmlsZSBhZ2Fpbjxicj4NClsy MDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQyNV0gRSBbTVNHSUQ6IDEwMTA2Nl0gW2dyYXBoLmM6MzI0 OmdsdXN0ZXJmc19ncmFwaF9pbml0XSAwLUdsdVJlcGxpY2EtY2xpZW50LTI6IGluaXRpYWxpemlu ZyB0cmFuc2xhdG9yIGZhaWxlZDxicj4NClsyMDE3LTAzLTAyIDExOjQ5OjQ3LjgyOTQzNl0gRSBb TVNHSUQ6IDEwMTE3Nl0gW2dyYXBoLmM6NjczOmdsdXN0ZXJmc19ncmFwaF9hY3RpdmF0ZV0gMC1n cmFwaDogaW5pdCBmYWlsZWQ8YnI+DQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MzAwMDNdIFcgW2ds dXN0ZXJmc2QuYzoxMzI3OmNsZWFudXBfYW5kX2V4aXRdICgtLSZndDsvdXNyL3NiaW4vZ2x1c3Rl cmZzKG1nbXRfZ2V0c3BlY19jYmsmIzQzOzB4M2MxKSBbMHg3ZjUyNGM5ZGJlYjFdIC0tJmd0Oy91 c3Ivc2Jpbi9nbHVzdGVyZnMoZ2x1c3RlcmZzX3Byb2Nlc3Nfdm9sZnAmIzQzOzB4MTcyKSBbMHg3 ZjUyNGM5ZDY1ZDJdIC0tJmd0Oy91c3Ivc2Jpbi9nbHVzdGVyZnMoY2xlYW51cF9hbmRfZXhpdCYj NDM7MHg2YikgWzB4N2Y1MjRjOWQ1YjRiXQ0KICkgMC06IHJlY2VpdmVkIHNpZ251bSAoMSksIHNo dXR0aW5nIGRvd248YnI+DQpbMjAxNy0wMy0wMiAxMTo0OTo0Ny44MzAwNTNdIEkgW2Z1c2UtYnJp ZGdlLmM6NTc5NDpmaW5pXSAwLWZ1c2U6IFVubW91bnRpbmcgJy9tbnQnLjxicj4NClsyMDE3LTAz LTAyIDExOjQ5OjQ3LjgzMTAxNF0gVyBbZ2x1c3RlcmZzZC5jOjEzMjc6Y2xlYW51cF9hbmRfZXhp dF0gKC0tJmd0Oy9saWI2NC9saWJwdGhyZWFkLnNvLjAoJiM0MzsweDdkYzUpIFsweDdmNTI0YjM0 M2RjNV0gLS0mZ3Q7L3Vzci9zYmluL2dsdXN0ZXJmcyhnbHVzdGVyZnNfc2lnd2FpdGVyJiM0Mzsw eGU1KSBbMHg3ZjUyNGM5ZDVjZDVdIC0tJmd0Oy91c3Ivc2Jpbi9nbHVzdGVyZnMoY2xlYW51cF9h bmRfZXhpdCYjNDM7MHg2YikgWzB4N2Y1MjRjOWQ1YjRiXSApIDAtOiByZWNlaXZlZA0KIHNpZ251 bSAoMTUpLCBzaHV0dGluZyBkb3duPGJyPg0KWzIwMTctMDMtMDIgMTE6NDk6NDcuODMxMDE0XSBX IFtnbHVzdGVyZnNkLmM6MTMyNzpjbGVhbnVwX2FuZF9leGl0XSAoLS0mZ3Q7L2xpYjY0L2xpYnB0 aHJlYWQuc28uMCgmIzQzOzB4N2RjNSkgWzB4N2Y1MjRiMzQzZGM1XSAtLSZndDsvdXNyL3NiaW4v Z2x1c3RlcmZzKGdsdXN0ZXJmc19zaWd3YWl0ZXImIzQzOzB4ZTUpIFsweDdmNTI0YzlkNWNkNV0g LS0mZ3Q7L3Vzci9zYmluL2dsdXN0ZXJmcyhjbGVhbnVwX2FuZF9leGl0JiM0MzsweDZiKSBbMHg3 ZjUyNGM5ZDViNGJdICkgMC06IHJlY2VpdmVkDQogc2lnbnVtICgxNSksIHNodXR0aW5nIGRvd248 YnI+DQo8YnI+DQo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdp bi1ib3R0b20tYWx0OmF1dG8iPk9uIFRodSwgTWFyIDIsIDIwMTcgYXQgMTI6MTEgUE0sIFNhaGlu YSBCb3NlICZsdDs8YSBocmVmPSJtYWlsdG86c2Fib3NlQHJlZGhhdC5jb20iIHRhcmdldD0iX2Js YW5rIj5zYWJvc2VAcmVkaGF0LmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPGRp dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0 OmF1dG87bWFyZ2luLWJvdHRvbToxMi4wcHQiPllvdSB3aWxsIG5lZWQgdG8gcGFzcyBhZGRpdGlv bmFsIG1vdW50IG9wdGlvbnMgd2hpbGUgY3JlYXRpbmcgdGhlIHN0b3JhZ2UgZG9tYWluICh0cmFu c3BvcnQ9cmRtYSk8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1h bHQ6YXV0byI+UGxlYXNlIGxldCB1cyBrbm93IGlmIHRoaXMgd29ya3MuPG86cD48L286cD48L3A+ DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28t bWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+Jm5ic3A7PG86 cD48L286cD48L3A+DQo8ZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8i Pk9uIFRodSwgTWFyIDIsIDIwMTcgYXQgMjo0MiBQTSwgQXJtYW4gS2hhbGF0eWFuICZsdDs8YSBo cmVmPSJtYWlsdG86YXJtMmFybUBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5hcm0yYXJtQGdt YWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxi bG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEu MHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXRv cDo1LjBwdDttYXJnaW4tcmlnaHQ6MGluO21hcmdpbi1ib3R0b206NS4wcHQiPg0KPGRpdj4NCjxk aXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2lu LXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+SGksPG86cD48L286cD48 L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdp bi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPkFyZSB0aGVyZSB3YXkg dG8gZm9yY2UgdGhlIGNvbm5lY3Rpb25zIG92ZXIgUkRNQSBvbmx5PzxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9w LWFsdDphdXRvO21hcmdpbi1ib3R0b206MTIuMHB0Ij5JZiBJIGNoZWNrIGhvc3QgbW91bnRzIEkg Y2Fubm90IHNlZSByZG1hIG1vdW50IG9wdGlvbjo8YnI+DQombmJzcDttb3VudCAtbHwgZ3JlcCBn bHVzdGVyPGJyPg0KMTAuMTAuMTAuNDQ6L0dsdVJlcGxpY2Egb24gL3JoZXYvZGF0YS1jZW50ZXIv bW50L2dsdXN0ZXJTRC8xMC4xMC4xMC40NDpfR2x1UmVwbGljYSB0eXBlIGZ1c2UuZ2x1c3RlcmZz IChydyxyZWxhdGltZSx1c2VyX2lkPTAsZ3JvdXBfaWQ9MCxkZWZhdWx0X3Blcm1pc3Npb25zLGFs bG93X290aGVyLG1heF9yZWFkPTEzMTA3Mik8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4t Ym90dG9tLWFsdDphdXRvIj5JIGhhdmUgZ2x1c3Rlcml6ZWQgMyBub2RlczoNCjxicj4NCjxicj4N CkdsdVJlcGxpY2E8YnI+DQpWb2x1bWUgSUQ6PGJyPg0KZWU2ODZkZmUtMjAzYS00Y2FhLWE2OTEt MjYzNTM0NjBjYzQ4PGJyPg0KVm9sdW1lIFR5cGU6PGJyPg0KUmVwbGljYXRlIChBcmJpdGVyKTxi cj4NClJlcGxpY2EgQ291bnQ6PGJyPg0KMiAmIzQzOyAxPGJyPg0KTnVtYmVyIG9mIEJyaWNrczo8 YnI+DQozPGJyPg0KVHJhbnNwb3J0IFR5cGVzOjxicj4NClRDUCwgUkRNQTxicj4NCk1heGltdW0g bm8gb2Ygc25hcHNob3RzOjxicj4NCjI1Njxicj4NCkNhcGFjaXR5Ojxicj4NCjMuNTEgVGlCIHRv dGFsLCAxOTAuNTYgR2lCIHVzZWQsIDMuMzMgVGlCIGZyZWU8bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21z by1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K PC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1 dG87bWFyZ2luLWJvdHRvbToxMi4wcHQiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fPGJyPg0KVXNlcnMgbWFpbGluZyBsaXN0PGJyPg0KPGEgaHJlZj0ibWFp bHRvOlVzZXJzQG92aXJ0Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPlVzZXJzQG92aXJ0Lm9yZzwvYT48 YnI+DQo8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNl cnMiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGlu Zm8vdXNlcnM8L2E+PG86cD48L286cD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2lu LWJvdHRvbS1hbHQ6YXV0byI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9k aXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJn aW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj4mbmJzcDs8bzpwPjwv bzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFs dDphdXRvIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwv ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRv O21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2IGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJj ZW50ZXIiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+DQo8aHIgc2l6ZT0iMiIgd2lkdGg9IjEw MCUiIGFsaWduPSJjZW50ZXIiPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj5UaGlzIGVtYWlsIG1lc3NhZ2UgaXMgZm9yIHRoZSBzb2xlIHVzZSBvZiB0aGUgaW50 ZW5kZWQgcmVjaXBpZW50KHMpIGFuZCBtYXkgY29udGFpbiBjb25maWRlbnRpYWwgaW5mb3JtYXRp b24uJm5ic3A7IEFueSB1bmF1dGhvcml6ZWQgcmV2aWV3LCB1c2UsIGRpc2Nsb3N1cmUgb3IgZGlz dHJpYnV0aW9uIGlzIHByb2hpYml0ZWQuJm5ic3A7IElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHBsZWFzZSBjb250YWN0DQogdGhlIHNlbmRlciBieSByZXBseSBlbWFpbCBh bmQgZGVzdHJveSBhbGwgY29waWVzIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLiA8bzpwPjwvbzpw PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxkaXYgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249ImNlbnRl ciIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4NCjxociBzaXplPSIyIiB3aWR0aD0iMTAwJSIg YWxpZ249ImNlbnRlciI+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9k eT4NCjwvaHRtbD4NCg== --_000_06cbff03281448b5acd180c3f7526f7bDRHQMAIL105nvidiacom_--

Thank you all for the nice hints. Somehow my host was not able to access the userspace RDMA, after installing: yum install -y libmlx4.x86_64 I can mount: /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10.10.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt 10.10.10.44:/GluReplica.rdma 3770662912 407817216 3362845696 11% /mnt Looks the rdma and gluster are working except ovirt GUI:( With MountOptions: backup-volfile-servers=10.10.10.44:10.10.10.42:10.10.10.41,transport=rdma I am not able to activate storage. ---Gluster Status ---- gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 10.10.10.44:/zclei22/01/glu 49162 49163 Y 17173 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17113 Brick 10.10.10.41:/zclei26/01/glu 49157 49158 Y 16404 Self-heal Daemon on localhost N/A N/A Y 16536 Self-heal Daemon on clei21.vib N/A N/A Y 17134 Self-heal Daemon on 10.10.10.44 N/A N/A Y 17329 Task Status of Volume GluReplica ------------------------------------------------------------------------------ There are no active volume tasks -----IB status ----- ibstat CA 'mlx4_0' CA type: MT26428 Number of ports: 1 Firmware version: 2.7.700 Hardware version: b0 Node GUID: 0x002590ffff163758 System image GUID: 0x002590ffff16375b Port 1: State: Active Physical state: LinkUp Rate: 10 Base lid: 273 LMC: 0 SM lid: 3 Capability mask: 0x02590868 Port GUID: 0x002590ffff163759 Link layer: InfiniBand Not bad for SDR switch ! :-P qperf clei22.vib ud_lat ud_bw ud_lat: latency = 23.6 us ud_bw: send_bw = 981 MB/sec recv_bw = 980 MB/sec On Fri, Mar 3, 2017 at 9:08 AM, Deepak Naidu <dnaidu@nvidia.com> wrote:
As you can see from my previous email that the RDMA connection tested with qperf.
I think you have wrong command. Your testing *TCP & not RDMA. *Also check if you have RDMA & IB modules loaded on your hosts.
root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]#
*Please run below command to test RDMA*
*[root@storageN2 ~]# qperf storageN1 ud_lat ud_bw*
*ud_lat**:*
* latency = 7.51 us*
*ud_bw**:*
* send_bw = 9.21 GB/sec*
* recv_bw = 9.21 GB/sec*
*[root@sc-sdgx-202 ~]#*
Read qperf man pages for more info.
* To run a TCP bandwidth and latency test:
qperf myserver tcp_bw tcp_lat
* To run a UDP latency test and then cause the server to terminate:
qperf myserver udp_lat quit
* To measure the RDMA UD latency and bandwidth:
qperf myserver ud_lat ud_bw
* To measure RDMA UC bi-directional bandwidth:
qperf myserver rc_bi_bw
* To get a range of TCP latencies with a message size from 1 to 64K
qperf myserver -oo msg_size:1:64K:*2 -vu tcp_lat
*Check if you have RDMA & IB modules loaded*
lsmod | grep -i ib
lsmod | grep -i rdma
--
Deepak
*From:* Arman Khalatyan [mailto:arm2arm@gmail.com] *Sent:* Thursday, March 02, 2017 10:57 PM *To:* Deepak Naidu *Cc:* Rafi Kavungal Chundattu Parambil; gluster-users@gluster.org; users; Sahina Bose *Subject:* RE: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?
Dear Deepak, thank you for the hints, which gluster are you using?
As you can see from my previous email that the RDMA connection tested with qperf. It is working as expected. In my case the clients are servers as well, they are hosts for the ovirt. Disabling selinux is nor recommended by ovirt, but i will give a try.
Am 03.03.2017 7:50 vorm. schrieb "Deepak Naidu" <dnaidu@nvidia.com>:
I have been testing glusterfs over RDMA & below is the command I use. Reading up the logs, it looks like your IB(InfiniBand) device is not being initialized. I am not sure if u have an issue on the client IB or the storage server IB. Also have you configured ur IB devices correctly. I am using IPoIB.
Can you check your firewall, disable selinux, I think, you might have checked it already ?
*mount -t glusterfs -o transport=rdma storageN1:/vol0 /mnt/vol0*
· *The below error seems if you have issue starting your volume. I had issue, when my transport was set to tcp,rdma. I had to force start my volume. If I had set it only to tcp on the volume, the volume would start easily.*
[2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed
· *The below error seems if you have issue with IB device. If not configured properly.*
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed
--
Deepak
*From:* gluster-users-bounces@gluster.org [mailto:gluster-users-bounces@ gluster.org] *On Behalf Of *Sahina Bose *Sent:* Thursday, March 02, 2017 10:26 PM *To:* Arman Khalatyan; gluster-users@gluster.org; Rafi Kavungal Chundattu Parambil *Cc:* users *Subject:* Re: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?
[Adding gluster users to help with error]
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]
On Thu, Mar 2, 2017 at 5:36 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
BTW RDMA is working as expected: root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]#
thank you beforehand.
Arman.
On Thu, Mar 2, 2017 at 12:54 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
just for reference: gluster volume info
Volume Name: GluReplica Type: Replicate Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Status: Started Snapshot Count: 0 Number of Bricks: 1 x (2 + 1) = 3 Transport-type: tcp,rdma Bricks: Brick1: 10.10.10.44:/zclei22/01/glu Brick2: 10.10.10.42:/zclei21/01/glu Brick3: 10.10.10.41:/zclei26/01/glu (arbiter) Options Reconfigured: network.ping-timeout: 30 server.allow-insecure: on storage.owner-gid: 36 storage.owner-uid: 36 cluster.data-self-heal-algorithm: full features.shard: on cluster.server-quorum-type: server cluster.quorum-type: auto network.remote-dio: enable cluster.eager-lock: enable performance.stat-prefetch: off performance.io-cache: off performance.read-ahead: off performance.quick-read: off performance.readdir-ahead: on nfs.disable: on
[root@clei21 ~]# gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------ ------------------ Brick 10.10.10.44:/zclei22/01/glu 49158 49159 Y 15870 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17473 Brick 10.10.10.41:/zclei26/01/glu 49153 49154 Y 18897 Self-heal Daemon on localhost N/A N/A Y 17502 Self-heal Daemon on 10.10.10.41 N/A N/A Y 13353 Self-heal Daemon on 10.10.10.44 N/A N/A Y 32745
Task Status of Volume GluReplica ------------------------------------------------------------ ------------------ There are no active volume tasks
On Thu, Mar 2, 2017 at 12:52 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
I am not able to mount with RDMA over cli....
Are there some volfile parameters needs to be tuned? /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10. 10.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt
[2017-03-02 11:49:47.795511] I [MSGID: 100030] [glusterfsd.c:2454:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.8.9 (args: /usr/sbin/glusterfs --volfile-server=10.10.10.44 --volfile-server=10.10.10.44 --volfile-server=10.10.10.42 --volfile-server=10.10.10.41 --volfile-server-transport=rdma --volfile-id=/GluReplica.rdma /mnt) [2017-03-02 11:49:47.812699] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 1 [2017-03-02 11:49:47.825210] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 2 [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed [2017-03-02 11:49:47.829272] W [rpc-clnt.c:1070:rpc_clnt_connection_init] 0-GluReplica-client-2: loading of new rpc-transport failed [2017-03-02 11:49:47.829325] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=588 max=0 total=0 [2017-03-02 11:49:47.829371] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=124 max=0 total=0 [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed [2017-03-02 11:49:47.830003] W [glusterfsd.c:1327:cleanup_and_exit] (-->/usr/sbin/glusterfs(mgmt_getspec_cbk+0x3c1) [0x7f524c9dbeb1] -->/usr/sbin/glusterfs(glusterfs_process_volfp+0x172) [0x7f524c9d65d2] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (1), shutting down [2017-03-02 11:49:47.830053] I [fuse-bridge.c:5794:fini] 0-fuse: Unmounting '/mnt'. [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down
On Thu, Mar 2, 2017 at 12:11 PM, Sahina Bose <sabose@redhat.com> wrote:
You will need to pass additional mount options while creating the storage domain (transport=rdma)
Please let us know if this works.
On Thu, Mar 2, 2017 at 2:42 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
Hi,
Are there way to force the connections over RDMA only?
If I check host mounts I cannot see rdma mount option: mount -l| grep gluster 10.10.10.44:/GluReplica on /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions, allow_other,max_read=131072)
I have glusterized 3 nodes:
GluReplica Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Volume Type: Replicate (Arbiter) Replica Count: 2 + 1 Number of Bricks: 3 Transport Types: TCP, RDMA Maximum no of snapshots: 256 Capacity: 3.51 TiB total, 190.56 GiB used, 3.33 TiB free
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
------------------------------
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ------------------------------

I think there are some bug in the vdsmd checks; 2017-03-03 11:15:42,413 ERROR (jsonrpc/7) [storage.HSM] Could not connect to storageServer (hsm:2391) Traceback (most recent call last): File "/usr/share/vdsm/storage/hsm.py", line 2388, in connectStorageServer conObj.connect() File "/usr/share/vdsm/storage/storageServer.py", line 167, in connect self.getMountObj().getRecord().fs_file) File "/usr/lib/python2.7/site-packages/vdsm/storage/mount.py", line 237, in getRecord (self.fs_spec, self.fs_file)) OSError: [Errno 2] Mount of `10.10.10.44:/GluReplica` at `/rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica` does not exist 2017-03-03 11:15:42,416 INFO (jsonrpc/7) [dispatcher] Run and protect: connectStorageServer, Return response: {'statuslist': [{'status': 100, 'id': u'4b2ea911-ef35-4de0-bd11-c4753e6048d8'}]} (logUtils:52) 2017-03-03 11:15:42,417 INFO (jsonrpc/7) [jsonrpc.JsonRpcServer] RPC call StoragePool.connectStorageServer succeeded in 2.63 seconds (__init__:515) 2017-03-03 11:15:44,239 INFO (jsonrpc/2) [jsonrpc.JsonRpcServer] RPC call Host.getAllVmStats succeeded in 0.00 seconds (__init__:515) [root@clei21 ~]# df | grep glu 10.10.10.44:/GluReplica.rdma 3770662912 407818240 3362844672 11% /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica ls "/rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica" 09f95051-bc93-4cf5-85dc-16960cee74e4 __DIRECT_IO_TEST__ [root@clei21 ~]# touch /rhev/data-center/mnt/glusterSD/10.10.10.44 \:_GluReplica/testme.txt [root@clei21 ~]# unlink /rhev/data-center/mnt/glusterSD/10.10.10.44 \:_GluReplica/testme.txt On Fri, Mar 3, 2017 at 11:51 AM, Arman Khalatyan <arm2arm@gmail.com> wrote:
Thank you all for the nice hints. Somehow my host was not able to access the userspace RDMA, after installing: yum install -y libmlx4.x86_64
I can mount: /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10. 10.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt 10.10.10.44:/GluReplica.rdma 3770662912 407817216 3362845696 <(336)%20284-5696> 11% /mnt
Looks the rdma and gluster are working except ovirt GUI:(
With MountOptions: backup-volfile-servers=10.10.10.44:10.10.10.42:10.10.10.41,transport=rdma
I am not able to activate storage.
---Gluster Status ---- gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------ ------------------ Brick 10.10.10.44:/zclei22/01/glu 49162 49163 Y 17173 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17113 Brick 10.10.10.41:/zclei26/01/glu 49157 49158 Y 16404 Self-heal Daemon on localhost N/A N/A Y 16536 Self-heal Daemon on clei21.vib N/A N/A Y 17134 Self-heal Daemon on 10.10.10.44 N/A N/A Y 17329
Task Status of Volume GluReplica ------------------------------------------------------------ ------------------ There are no active volume tasks
-----IB status -----
ibstat CA 'mlx4_0' CA type: MT26428 Number of ports: 1 Firmware version: 2.7.700 Hardware version: b0 Node GUID: 0x002590ffff163758 System image GUID: 0x002590ffff16375b Port 1: State: Active Physical state: LinkUp Rate: 10 Base lid: 273 LMC: 0 SM lid: 3 Capability mask: 0x02590868 Port GUID: 0x002590ffff163759 Link layer: InfiniBand
Not bad for SDR switch ! :-P qperf clei22.vib ud_lat ud_bw ud_lat: latency = 23.6 us ud_bw: send_bw = 981 MB/sec recv_bw = 980 MB/sec
On Fri, Mar 3, 2017 at 9:08 AM, Deepak Naidu <dnaidu@nvidia.com> wrote:
As you can see from my previous email that the RDMA connection tested with qperf.
I think you have wrong command. Your testing *TCP & not RDMA. *Also check if you have RDMA & IB modules loaded on your hosts.
root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]#
*Please run below command to test RDMA*
*[root@storageN2 ~]# qperf storageN1 ud_lat ud_bw*
*ud_lat**:*
* latency = 7.51 us*
*ud_bw**:*
* send_bw = 9.21 GB/sec*
* recv_bw = 9.21 GB/sec*
*[root@sc-sdgx-202 ~]#*
Read qperf man pages for more info.
* To run a TCP bandwidth and latency test:
qperf myserver tcp_bw tcp_lat
* To run a UDP latency test and then cause the server to terminate:
qperf myserver udp_lat quit
* To measure the RDMA UD latency and bandwidth:
qperf myserver ud_lat ud_bw
* To measure RDMA UC bi-directional bandwidth:
qperf myserver rc_bi_bw
* To get a range of TCP latencies with a message size from 1 to 64K
qperf myserver -oo msg_size:1:64K:*2 -vu tcp_lat
*Check if you have RDMA & IB modules loaded*
lsmod | grep -i ib
lsmod | grep -i rdma
--
Deepak
*From:* Arman Khalatyan [mailto:arm2arm@gmail.com] *Sent:* Thursday, March 02, 2017 10:57 PM *To:* Deepak Naidu *Cc:* Rafi Kavungal Chundattu Parambil; gluster-users@gluster.org; users; Sahina Bose *Subject:* RE: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?
Dear Deepak, thank you for the hints, which gluster are you using?
As you can see from my previous email that the RDMA connection tested with qperf. It is working as expected. In my case the clients are servers as well, they are hosts for the ovirt. Disabling selinux is nor recommended by ovirt, but i will give a try.
Am 03.03.2017 7:50 vorm. schrieb "Deepak Naidu" <dnaidu@nvidia.com>:
I have been testing glusterfs over RDMA & below is the command I use. Reading up the logs, it looks like your IB(InfiniBand) device is not being initialized. I am not sure if u have an issue on the client IB or the storage server IB. Also have you configured ur IB devices correctly. I am using IPoIB.
Can you check your firewall, disable selinux, I think, you might have checked it already ?
*mount -t glusterfs -o transport=rdma storageN1:/vol0 /mnt/vol0*
· *The below error seems if you have issue starting your volume. I had issue, when my transport was set to tcp,rdma. I had to force start my volume. If I had set it only to tcp on the volume, the volume would start easily.*
[2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed
· *The below error seems if you have issue with IB device. If not configured properly.*
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed
--
Deepak
*From:* gluster-users-bounces@gluster.org [mailto:gluster-users-bounces@ gluster.org] *On Behalf Of *Sahina Bose *Sent:* Thursday, March 02, 2017 10:26 PM *To:* Arman Khalatyan; gluster-users@gluster.org; Rafi Kavungal Chundattu Parambil *Cc:* users *Subject:* Re: [Gluster-users] [ovirt-users] Hot to force glusterfs to use RDMA?
[Adding gluster users to help with error]
[2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device]
On Thu, Mar 2, 2017 at 5:36 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
BTW RDMA is working as expected: root@clei26 ~]# qperf clei22.vib tcp_bw tcp_lat tcp_bw: bw = 475 MB/sec tcp_lat: latency = 52.8 us [root@clei26 ~]#
thank you beforehand.
Arman.
On Thu, Mar 2, 2017 at 12:54 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
just for reference: gluster volume info
Volume Name: GluReplica Type: Replicate Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Status: Started Snapshot Count: 0 Number of Bricks: 1 x (2 + 1) = 3 Transport-type: tcp,rdma Bricks: Brick1: 10.10.10.44:/zclei22/01/glu Brick2: 10.10.10.42:/zclei21/01/glu Brick3: 10.10.10.41:/zclei26/01/glu (arbiter) Options Reconfigured: network.ping-timeout: 30 server.allow-insecure: on storage.owner-gid: 36 storage.owner-uid: 36 cluster.data-self-heal-algorithm: full features.shard: on cluster.server-quorum-type: server cluster.quorum-type: auto network.remote-dio: enable cluster.eager-lock: enable performance.stat-prefetch: off performance.io-cache: off performance.read-ahead: off performance.quick-read: off performance.readdir-ahead: on nfs.disable: on
[root@clei21 ~]# gluster volume status Status of volume: GluReplica Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------ ------------------ Brick 10.10.10.44:/zclei22/01/glu 49158 49159 Y 15870 Brick 10.10.10.42:/zclei21/01/glu 49156 49157 Y 17473 Brick 10.10.10.41:/zclei26/01/glu 49153 49154 Y 18897 Self-heal Daemon on localhost N/A N/A Y 17502 Self-heal Daemon on 10.10.10.41 N/A N/A Y 13353 Self-heal Daemon on 10.10.10.44 N/A N/A Y 32745
Task Status of Volume GluReplica ------------------------------------------------------------ ------------------ There are no active volume tasks
On Thu, Mar 2, 2017 at 12:52 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
I am not able to mount with RDMA over cli....
Are there some volfile parameters needs to be tuned? /usr/bin/mount -t glusterfs -o backup-volfile-servers=10.10.1 0.44:10.10.10.42:10.10.10.41,transport=rdma 10.10.10.44:/GluReplica /mnt
[2017-03-02 11:49:47.795511] I [MSGID: 100030] [glusterfsd.c:2454:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.8.9 (args: /usr/sbin/glusterfs --volfile-server=10.10.10.44 --volfile-server=10.10.10.44 --volfile-server=10.10.10.42 --volfile-server=10.10.10.41 --volfile-server-transport=rdma --volfile-id=/GluReplica.rdma /mnt) [2017-03-02 11:49:47.812699] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 1 [2017-03-02 11:49:47.825210] I [MSGID: 101190] [event-epoll.c:628:event_dispatch_epoll_worker] 0-epoll: Started thread with index 2 [2017-03-02 11:49:47.828996] W [MSGID: 103071] [rdma.c:4589:__gf_rdma_ctx_create] 0-rpc-transport/rdma: rdma_cm event channel creation failed [No such device] [2017-03-02 11:49:47.829067] W [MSGID: 103055] [rdma.c:4896:init] 0-GluReplica-client-2: Failed to initialize IB Device [2017-03-02 11:49:47.829080] W [rpc-transport.c:354:rpc_transport_load] 0-rpc-transport: 'rdma' initialization failed [2017-03-02 11:49:47.829272] W [rpc-clnt.c:1070:rpc_clnt_connection_init] 0-GluReplica-client-2: loading of new rpc-transport failed [2017-03-02 11:49:47.829325] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=588 max=0 total=0 [2017-03-02 11:49:47.829371] I [MSGID: 101053] [mem-pool.c:641:mem_pool_destroy] 0-GluReplica-client-2: size=124 max=0 total=0 [2017-03-02 11:49:47.829391] E [MSGID: 114022] [client.c:2530:client_init_rpc] 0-GluReplica-client-2: failed to initialize RPC [2017-03-02 11:49:47.829413] E [MSGID: 101019] [xlator.c:433:xlator_init] 0-GluReplica-client-2: Initialization of volume 'GluReplica-client-2' failed, review your volfile again [2017-03-02 11:49:47.829425] E [MSGID: 101066] [graph.c:324:glusterfs_graph_init] 0-GluReplica-client-2: initializing translator failed [2017-03-02 11:49:47.829436] E [MSGID: 101176] [graph.c:673:glusterfs_graph_activate] 0-graph: init failed [2017-03-02 11:49:47.830003] W [glusterfsd.c:1327:cleanup_and_exit] (-->/usr/sbin/glusterfs(mgmt_getspec_cbk+0x3c1) [0x7f524c9dbeb1] -->/usr/sbin/glusterfs(glusterfs_process_volfp+0x172) [0x7f524c9d65d2] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (1), shutting down [2017-03-02 11:49:47.830053] I [fuse-bridge.c:5794:fini] 0-fuse: Unmounting '/mnt'. [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down [2017-03-02 11:49:47.831014] W [glusterfsd.c:1327:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7f524b343dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x7f524c9d5cd5] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x7f524c9d5b4b] ) 0-: received signum (15), shutting down
On Thu, Mar 2, 2017 at 12:11 PM, Sahina Bose <sabose@redhat.com> wrote:
You will need to pass additional mount options while creating the storage domain (transport=rdma)
Please let us know if this works.
On Thu, Mar 2, 2017 at 2:42 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
Hi,
Are there way to force the connections over RDMA only?
If I check host mounts I cannot see rdma mount option: mount -l| grep gluster 10.10.10.44:/GluReplica on /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica type fuse.glusterfs (rw,relatime,user_id=0,group_i d=0,default_permissions,allow_other,max_read=131072)
I have glusterized 3 nodes:
GluReplica Volume ID: ee686dfe-203a-4caa-a691-26353460cc48 Volume Type: Replicate (Arbiter) Replica Count: 2 + 1 Number of Bricks: 3 Transport Types: TCP, RDMA Maximum no of snapshots: 256 Capacity: 3.51 TiB total, 190.56 GiB used, 3.33 TiB free
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
------------------------------
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ------------------------------

Hello! On Fri, Mar 3, 2017 at 12:18 PM, Arman Khalatyan <arm2arm@gmail.com> wrote:
I think there are some bug in the vdsmd checks;
OSError: [Errno 2] Mount of `10.10.10.44:/GluReplica` at `/rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica` does not exist
10.10.10.44:/GluReplica.rdma 3770662912 407818240 3362844672 11% /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica
I suppose, that vdsm is not able to handle that .rdma suffix on volume path. Could you please file a bug for that issue to track it?

This is a multi-part message in MIME format. --------------A6B6812DF876E9087DC58EB2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit I will see what we can do from gluster side to fix this. I will get back to you . Regards Rafi KC On 03/06/2017 05:14 PM, Denis Chaplygin wrote:
Hello!
On Fri, Mar 3, 2017 at 12:18 PM, Arman Khalatyan <arm2arm@gmail.com <mailto:arm2arm@gmail.com>> wrote:
I think there are some bug in the vdsmd checks;
OSError: [Errno 2] Mount of `10.10.10.44:/GluReplica` at `/rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica` does not exist
10.10.10.44:/GluReplica.rdma 3770662912 407818240 3362844672 11% /rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica
I suppose, that vdsm is not able to handle that .rdma suffix on volume path. Could you please file a bug for that issue to track it?
--------------A6B6812DF876E9087DC58EB2 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> </head> <body bgcolor="#FFFFFF" text="#000000"> <p>I will see what we can do from gluster side to fix this. I will get back to you .<br> </p> <p><br> </p> <p>Regards</p> <p>Rafi KC<br> </p> <br> <div class="moz-cite-prefix">On 03/06/2017 05:14 PM, Denis Chaplygin wrote:<br> </div> <blockquote cite="mid:CANVzE5mAhqqRE7V=Ln-CKxppWMesJgbD813wK9pX7A5nrg4OWQ@mail.gmail.com" type="cite"> <div dir="ltr">Hello!<br> <div class="gmail_extra"><br> <div class="gmail_quote">On Fri, Mar 3, 2017 at 12:18 PM, Arman Khalatyan <span dir="ltr"><<a moz-do-not-send="true" href="mailto:arm2arm@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:arm2arm@gmail.com">arm2arm@gmail.com</a></a>></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div dir="ltr">I think there are some bug in the vdsmd checks;<br> <br> OSError: [Errno 2] Mount of `10.10.10.44:/GluReplica` at `/rhev/data-center/mnt/<wbr>glusterSD/10.10.10.44:_<wbr>GluReplica` does not exist<br> </div> </blockquote> <div> </div> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div dir="ltr"><br> 10.10.10.44:/GluReplica.rdma 3770662912 407818240 3362844672 11% /rhev/data-center/mnt/<wbr>glusterSD/10.10.10.44:_<wbr>GluReplica<br> </div> </blockquote> <div><br> </div> <div>I suppose, that vdsm is not able to handle that .rdma suffix on volume path. Could you please file a bug for that issue to track it? <br> </div> </div> </div> </div> </blockquote> <br> </body> </html> --------------A6B6812DF876E9087DC58EB2--

https://bugzilla.redhat.com/show_bug.cgi?id=1428851 On Mon, Mar 6, 2017 at 12:56 PM, Mohammed Rafi K C <rkavunga@redhat.com> wrote:
I will see what we can do from gluster side to fix this. I will get back to you .
Regards
Rafi KC
On 03/06/2017 05:14 PM, Denis Chaplygin wrote:
Hello!
On Fri, Mar 3, 2017 at 12:18 PM, Arman Khalatyan < <arm2arm@gmail.com> arm2arm@gmail.com> wrote:
I think there are some bug in the vdsmd checks;
OSError: [Errno 2] Mount of `10.10.10.44:/GluReplica` at `/rhev/data-center/mnt/glusterSD/10.10.10.44:_GluReplica` does not exist
10.10.10.44:/GluReplica.rdma 3770662912 407818240 3362844672 <(336)%20284-4672> 11% /rhev/data-center/mnt/glusterSD/10.10.10.44: _GluReplica
I suppose, that vdsm is not able to handle that .rdma suffix on volume path. Could you please file a bug for that issue to track it?
participants (4)
-
Arman Khalatyan
-
Deepak Naidu
-
Denis Chaplygin
-
Mohammed Rafi K C