[Users] Fatal error during migration

--0__=C9BBF0ECDFA610B98f9e8a93df938690918cC9BBF0ECDFA610B9 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: quoted-printable Hello, I have two oVirt nodes ovirt-node-iso-2.5.0-2.0.fc17. When I try to migrate VM from one host to another, I have an error: Migration failed due to Error: Fatal error during migration. vdsm.log: Thread-3797::DEBUG::2012-09-20 09:42:56,439::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmMigrate with ({'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'},) {} flowID [180ad979] Thread-3797::DEBUG::2012-09-20 09:42:56,439::API::441::vds::(migrate) {'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::122::vm.Vm::(_setupVdsConnection) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Destination server is: 192.168.10.12:54321 Thread-3797::DEBUG::2012-09-20 09:42:56,441::BindingXMLRPC::865::vds::(wrapper) return vmMigrate with {'status': {'message': 'Migration process starting', 'code': 0}} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::124::vm.Vm::(_setupVdsConnection) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Initiating connection wi= th destination Thread-3798::DEBUG::2012-09-20 09:42:56,452::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not avail= able Thread-3798::DEBUG::2012-09-20 09:42:56,457::vm::170::vm.Vm::(_prepareGuest) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration Process begins= Thread-3798::DEBUG::2012-09-20 09:42:56,475::vm::217::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration semaphore acqu= ired Thread-3798::DEBUG::2012-09-20 09:42:56,888::libvirtvm::427::vm.Vm::(_startUnderlyingMigration) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration to qe= mu +tls://192.168.10.12/system Thread-3799::DEBUG::2012-09-20 09:42:56,889::libvirtvm::325::vm.Vm::(ru= n) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration downtime threa= d started Thread-3800::DEBUG::2012-09-20 09:42:56,890::libvirtvm::353::vm.Vm::(ru= n) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration monit= or thread Thread-3798::DEBUG::2012-09-20 09:42:56,903::libvirtvm::340::vm.Vm::(cancel) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::canceling migration down= time thread Thread-3798::DEBUG::2012-09-20 09:42:56,904::libvirtvm::390::vm.Vm::(st= op) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::stopping migration monit= or thread Thread-3799::DEBUG::2012-09-20 09:42:56,904::libvirtvm::337::vm.Vm::(ru= n) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration downtime threa= d exiting Thread-3798::ERROR::2012-09-20 09:42:56,905::vm::176::vm.Vm::(_recover)= vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::operation failed: Failed= to connect to remote libvirt URI qemu+tls://192.168.10.12/system Thread-3798::ERROR::2012-09-20 09:42:56,977::vm::240::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Failed to migrate Traceback (most recent call last): File "/usr/share/vdsm/vm.py", line 223, in run File "/usr/share/vdsm/libvirtvm.py", line 451, in _startUnderlyingMigration File "/usr/share/vdsm/libvirtvm.py", line 491, in f File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", li= ne 82, in wrapper File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1034, in migrateToURI2 libvirtError: operation failed: Failed to connect to remote libvirt URI= qemu+tls://192.168.10.12/system Thread-3802::DEBUG::2012-09-20 09:42:57,793::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmGetStats with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3802::DEBUG::2012-09-20 09:42:57,793::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not avail= able Thread-3802::DEBUG::2012-09-20 09:42:57,794::BindingXMLRPC::865::vds::(wrapper) return vmGetStats with= {'status': {'message': 'Done', 'code': 0}, 'statsList': [{'status': 'Up= ', 'username': 'Unknown', 'memUsage': '0', 'acpiEnable': 'true', 'pid': '22047', 'displayIp': '192.168.10.13', 'displayPort': u'5912', 'session= ': 'Unknown', 'displaySecurePort': u'5913', 'timeOffset': '0', 'hash': '3018874162324753083', 'pauseCode': 'NOERR', 'clientIp': '', 'kvmEnable= ': 'true', 'network': {u'vnet6': {'macAddr': '00:1a:4a:a8:0a:08', 'rxDropp= ed': '0', 'rxErrors': '0', 'txDropped': '0', 'txRate': '0.0', 'rxRate': '0.0= ', 'txErrors': '0', 'state': 'unknown', 'speed': '1000', 'name': u'vnet6'}= }, 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'displayType': 'qxl', 'cpuUser': '13.27', 'disks': {u'hdc': {'flushLatency': '0', 'readLatenc= y': '0', 'writeLatency': '0'}, u'hda': {'readLatency': '6183805', 'apparentsize': '11811160064', 'writeLatency': '0', 'imageID': 'd96d19f6-5a28-4fef-892f-4a04549d4e38', 'flushLatency': '0', 'readRate'= : '271.87', 'truesize': '11811160064', 'writeRate': '0.00'}}, 'monitorResponse': '0', 'statsAge': '0.77', 'cpuIdle': '86.73', 'elapsedTime': '3941', 'vmType': 'kvm', 'cpuSys': '0.00', 'appsList': [= ], 'guestIPs': '', 'nice': ''}]} Thread-3803::DEBUG::2012-09-20 09:42:57,869::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmGetMigrationStatus with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3803::DEBUG::2012-09-20 09:42:57,870::BindingXMLRPC::865::vds::(wrapper) return vmGetMigrationStatus with {'status': {'message': 'Fatal error during migration', 'code': 12}} Dummy-1264::DEBUG::2012-09-20 09:42:58,172::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/do= m_md/inbox iflag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:42:58,262::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err= > =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0515= 109 s, 19.9 MB/s\n'; <rc> =3D 0 Dummy-1264::DEBUG::2012-09-20 09:43:00,271::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/do= m_md/inbox iflag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:00,362::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err= > =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0530= 171 s, 19.3 MB/s\n'; <rc> =3D 0 Thread-21::DEBUG::2012-09-20 09:43:00,612::__init__::1249::Storage.Misc.excCmd::(_log) '/usr/bin/dd iflag=3Ddirect if=3D/dev/26187d25-bfcb-40c7-97d1-667705ad2223/metadata = bs=3D4096 count=3D1' (cwd None) Thread-21::DEBUG::2012-09-20 09:43:00,629::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err= > =3D '1+0 records in\n1+0 records out\n4096 bytes (4.1 kB) copied, 0.0009376= 98 s, 4.4 MB/s\n'; <rc> =3D 0 Thread-3805::DEBUG::2012-09-20 09:43:01,901::task::588::TaskManager.Task::(_updateState) Task=3D`ff134ecc-5597-4a83-81d6-e4f9804871ff`::moving from state init -= > state preparing Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils::37::dispatcher::(wrapper) Run and protect: repoStats(options=3DNone) Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils::39::dispatcher::(wrapper) Run and protect: repoStats, Return response: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0,= 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid'= : True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task::1172::TaskManager.Task::(prepare) Task=3D`ff134ecc-5597-4a83-81d6-e4f9804871ff`::finished: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task::588::TaskManager.Task::(_updateState) Task=3D`ff134ecc-5597-4a83-81d6-e4f9804871ff`::moving from state prepar= ing -> state finished Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager::809::ResourceManager.Owner::(releaseAll)= Owner.releaseAll requests {} resources {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager::844::ResourceManager.Owner::(cancelAll) Owner.cancelAll requests {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::task::978::TaskManager.Task::(_decref) Task=3D`ff134ecc-5597-4a83-81d6-e4f9804871ff`::ref 0 aborting False Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`540335f0-2269-4bc4-aaf4-11bf5990013f`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2c3af5f5-f877-4e6b-8a34-05bbe78b3c82`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`0ac0dd3a-ae2a-4963-adf1-918993031f6b`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`35a65bb8-cbca-4049-a428-28914bcb094a`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`4ef3258c-0380-4919-991f-ee7be7e9f7fa`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`252e6d46-f362-46aa-a7ed-dd00a86af6f0`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`509e608c-e657-473a-b031-f0811da96bde`::Disk hdc stats not avail= able Thread-3806::DEBUG::2012-09-20 09:43:01,934::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not avail= able Dummy-1264::DEBUG::2012-09-20 09:43:02,371::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/do= m_md/inbox iflag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:02,462::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err= > =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0525= 183 s, 19.5 MB/s\n'; <rc> =3D 0 - -= --0__=C9BBF0ECDFA610B98f9e8a93df938690918cC9BBF0ECDFA610B9 Content-type: text/html; charset=US-ASCII Content-Disposition: inline Content-transfer-encoding: quoted-printable <html><body> <p><font size=3D"2" face=3D"sans-serif">Hello,</font><br> <br> <font size=3D"2" face=3D"sans-serif">I have two oVirt nodes ovirt-node-= iso-2.5.0-2.0.fc17.</font><br> <br> <font size=3D"2" face=3D"sans-serif">When I try to migrate VM from one = host to another, I have an error: Migration failed due to Error: Fatal = error during migration.</font><br> <br> <font size=3D"2" face=3D"sans-serif">vdsm.log:</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3797::DEBUG::2012-09-20 09:= 42:56,439::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::c= all vmMigrate with ({'src': '192.168.10.13', 'dst': '192.168.10.12:5432= 1', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'}= ,) {} flowID [180ad979]</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3797::DEBUG::2012-09-20 09:= 42:56,439::API::441::vds::(migrate) {'src': '192.168.10.13', 'dst': '19= 2.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'me= thod': 'online'}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,441::vm::122::vm.Vm::(_setupVdsConnection) vmId=3D`2bf3e6eb-49e4-= 42c7-8188-fc2aeeae2e86`::Destination server is: 192.168.10.12:54321</fo= nt><br> <font size=3D"2" face=3D"sans-serif">Thread-3797::DEBUG::2012-09-20 09:= 42:56,441::BindingXMLRPC::865::vds::(wrapper) return vmMigrate with {'s= tatus': {'message': 'Migration process starting', 'code': 0}}</font><br= > <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,441::vm::124::vm.Vm::(_setupVdsConnection) vmId=3D`2bf3e6eb-49e4-= 42c7-8188-fc2aeeae2e86`::Initiating connection with destination</font><= br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,452::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4= -42c7-8188-fc2aeeae2e86`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,457::vm::170::vm.Vm::(_prepareGuest) vmId=3D`2bf3e6eb-49e4-42c7-8= 188-fc2aeeae2e86`::migration Process begins</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,475::vm::217::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aee= ae2e86`::migration semaphore acquired</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,888::libvirtvm::427::vm.Vm::(_startUnderlyingMigration) vmId=3D`2= bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration to qemu+tls://= 192.168.10.12/system</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3799::DEBUG::2012-09-20 09:= 42:56,889::libvirtvm::325::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188= -fc2aeeae2e86`::migration downtime thread started</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3800::DEBUG::2012-09-20 09:= 42:56,890::libvirtvm::353::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188= -fc2aeeae2e86`::starting migration monitor thread</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,903::libvirtvm::340::vm.Vm::(cancel) vmId=3D`2bf3e6eb-49e4-42c7-8= 188-fc2aeeae2e86`::canceling migration downtime thread</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::DEBUG::2012-09-20 09:= 42:56,904::libvirtvm::390::vm.Vm::(stop) vmId=3D`2bf3e6eb-49e4-42c7-818= 8-fc2aeeae2e86`::stopping migration monitor thread</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3799::DEBUG::2012-09-20 09:= 42:56,904::libvirtvm::337::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188= -fc2aeeae2e86`::migration downtime thread exiting</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::ERROR::2012-09-20 09:= 42:56,905::vm::176::vm.Vm::(_recover) vmId=3D`2bf3e6eb-49e4-42c7-8188-f= c2aeeae2e86`::operation failed: Failed to connect to remote libvirt URI= qemu+tls://192.168.10.12/system</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3798::ERROR::2012-09-20 09:= 42:56,977::vm::240::vm.Vm::(run) vmId=3D`2bf3e6eb-49e4-42c7-8188-fc2aee= ae2e86`::Failed to migrate</font><br> <font size=3D"2" face=3D"sans-serif">Traceback (most recent call last):= </font><br> <font size=3D"2" face=3D"sans-serif"> File "/usr/share/vdsm/vm.py= ", line 223, in run</font><br> <font size=3D"2" face=3D"sans-serif"> File "/usr/share/vdsm/libvi= rtvm.py", line 451, in _startUnderlyingMigration</font><br> <font size=3D"2" face=3D"sans-serif"> File "/usr/share/vdsm/libvi= rtvm.py", line 491, in f</font><br> <font size=3D"2" face=3D"sans-serif"> File "/usr/lib/python2.7/si= te-packages/vdsm/libvirtconnection.py", line 82, in wrapper</font>= <br> <font size=3D"2" face=3D"sans-serif"> File "/usr/lib64/python2.7/= site-packages/libvirt.py", line 1034, in migrateToURI2</font><br> <font size=3D"2" face=3D"sans-serif">libvirtError: operation failed: Fa= iled to connect to remote libvirt URI qemu+tls://192.168.10.12/system</= font> <ul style=3D"padding-left: 0pt"><font size=3D"2" face=3D"sans-serif">Th= read-3802::DEBUG::2012-09-20 09:42:57,793::BindingXMLRPC::859::vds::(wr= apper) client [192.168.10.10]::call vmGetStats with ('2bf3e6eb-49e4-42c= 7-8188-fc2aeeae2e86',) {}</font></ul> <font size=3D"2" face=3D"sans-serif">Thread-3802::DEBUG::2012-09-20 09:= 42:57,793::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4= -42c7-8188-fc2aeeae2e86`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3802::DEBUG::2012-09-20 09:= 42:57,794::BindingXMLRPC::865::vds::(wrapper) return vmGetStats with {'= status': {'message': 'Done', 'code': 0}, 'statsList': [{'status': 'Up',= 'username': 'Unknown', 'memUsage': '0', 'acpiEnable': 'true', 'pid': '= 22047', 'displayIp': '192.168.10.13', 'displayPort': u'5912', 'session'= : 'Unknown', 'displaySecurePort': u'5913', 'timeOffset': '0', 'hash': '= 3018874162324753083', 'pauseCode': 'NOERR', 'clientIp': '', 'kvmEnable'= : 'true', 'network': {u'vnet6': {'macAddr': '00:1a:4a:a8:0a:08', 'rxDro= pped': '0', 'rxErrors': '0', 'txDropped': '0', 'txRate': '0.0', 'rxRate= ': '0.0', 'txErrors': '0', 'state': 'unknown', 'speed': '1000', 'name':= u'vnet6'}}, 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'displayTy= pe': 'qxl', 'cpuUser': '13.27', 'disks': {u'hdc': {'flushLatency': '0',= 'readLatency': '0', 'writeLatency': '0'}, u'hda': {'readLatency': '618= 3805', 'apparentsize': '11811160064', 'writeLatency': '0', 'imageID': '= d96d19f6-5a28-4fef-892f-4a04549d4e38', 'flushLatency': '0', 'readRate':= '271.87', 'truesize': '11811160064', 'writeRate': '0.00'}}, 'monitorRe= sponse': '0', 'statsAge': '0.77', 'cpuIdle': '86.73', 'elapsedTime': '3= 941', 'vmType': 'kvm', 'cpuSys': '0.00', 'appsList': [], 'guestIPs': ''= , 'nice': ''}]}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3803::DEBUG::2012-09-20 09:= 42:57,869::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::c= all vmGetMigrationStatus with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',)= {}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3803::DEBUG::2012-09-20 09:= 42:57,870::BindingXMLRPC::865::vds::(wrapper) return vmGetMigrationStat= us with {'status': {'message': 'Fatal error during migration', 'code': = 12}}</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 2:58,172::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/da= ta-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox if= lag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None)</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 2:58,262::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err&= gt; =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied= , 0.0515109 s, 19.9 MB/s\n'; <rc> =3D 0</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 3:00,271::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/da= ta-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox if= lag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None)</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 3:00,362::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err&= gt; =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied= , 0.0530171 s, 19.3 MB/s\n'; <rc> =3D 0</font><br> <font size=3D"2" face=3D"sans-serif">Thread-21::DEBUG::2012-09-20 09:43= :00,612::__init__::1249::Storage.Misc.excCmd::(_log) '/usr/bin/dd iflag= =3Ddirect if=3D/dev/26187d25-bfcb-40c7-97d1-667705ad2223/metadata bs=3D= 4096 count=3D1' (cwd None)</font><br> <font size=3D"2" face=3D"sans-serif">Thread-21::DEBUG::2012-09-20 09:43= :00,629::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err&g= t; =3D '1+0 records in\n1+0 records out\n4096 bytes (4.1 kB) copied, 0.= 000937698 s, 4.4 MB/s\n'; <rc> =3D 0</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,901::task::588::TaskManager.Task::(_updateState) Task=3D`ff134ecc= -5597-4a83-81d6-e4f9804871ff`::moving from state init -> state prepa= ring</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::INFO::2012-09-20 09:4= 3:01,902::logUtils::37::dispatcher::(wrapper) Run and protect: repoStat= s(options=3DNone)</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::INFO::2012-09-20 09:4= 3:01,902::logUtils::39::dispatcher::(wrapper) Run and protect: repoStat= s, Return response: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': = '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': = True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.00095582008= 3618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}}</font= ><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,902::task::1172::TaskManager.Task::(prepare) Task=3D`ff134ecc-559= 7-4a83-81d6-e4f9804871ff`::finished: {'26187d25-bfcb-40c7-97d1-667705ad= 2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'co= de': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay= ': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'val= id': True}}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,902::task::588::TaskManager.Task::(_updateState) Task=3D`ff134ecc= -5597-4a83-81d6-e4f9804871ff`::moving from state preparing -> state = finished</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,903::resourceManager::809::ResourceManager.Owner::(releaseAll) Ow= ner.releaseAll requests {} resources {}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,903::resourceManager::844::ResourceManager.Owner::(cancelAll) Own= er.cancelAll requests {}</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3805::DEBUG::2012-09-20 09:= 43:01,903::task::978::TaskManager.Task::(_decref) Task=3D`ff134ecc-5597= -4a83-81d6-e4f9804871ff`::ref 0 aborting False</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`540335f0-2269= -4bc4-aaf4-11bf5990013f`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2c3af5f5-f877= -4e6b-8a34-05bbe78b3c82`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`0ac0dd3a-ae2a= -4963-adf1-918993031f6b`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`35a65bb8-cbca= -4049-a428-28914bcb094a`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`4ef3258c-0380= -4919-991f-ee7be7e9f7fa`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`252e6d46-f362= -46aa-a7ed-dd00a86af6f0`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`509e608c-e657= -473a-b031-f0811da96bde`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Thread-3806::DEBUG::2012-09-20 09:= 43:01,934::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=3D`2bf3e6eb-49e4= -42c7-8188-fc2aeeae2e86`::Disk hdc stats not available</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 3:02,371::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=3D/rhev/da= ta-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox if= lag=3Ddirect,fullblock count=3D1 bs=3D1024000' (cwd None)</font><br> <font size=3D"2" face=3D"sans-serif">Dummy-1264::DEBUG::2012-09-20 09:4= 3:02,462::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err&= gt; =3D '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied= , 0.0525183 s, 19.5 MB/s\n'; <rc> =3D 0<br> <br> - -<br> </font></body></html>= --0__=C9BBF0ECDFA610B98f9e8a93df938690918cC9BBF0ECDFA610B9--

Hi, well, so what is the other side saying? Maybe some connectivity problems between those 2 hosts? firewall? Thanks, michal On Sep 20, 2012, at 11:55 , Dmitriy A Pyryakov wrote:
Hello,
I have two oVirt nodes ovirt-node-iso-2.5.0-2.0.fc17.
When I try to migrate VM from one host to another, I have an error: Migration failed due to Error: Fatal error during migration.
vdsm.log: Thread-3797::DEBUG::2012-09-20 09:42:56,439::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmMigrate with ({'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'},) {} flowID [180ad979] Thread-3797::DEBUG::2012-09-20 09:42:56,439::API::441::vds::(migrate) {'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::122::vm.Vm::(_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Destination server is: 192.168.10.12:54321 Thread-3797::DEBUG::2012-09-20 09:42:56,441::BindingXMLRPC::865::vds::(wrapper) return vmMigrate with {'status': {'message': 'Migration process starting', 'code': 0}} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::124::vm.Vm::(_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Initiating connection with destination Thread-3798::DEBUG::2012-09-20 09:42:56,452::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not available Thread-3798::DEBUG::2012-09-20 09:42:56,457::vm::170::vm.Vm::(_prepareGuest) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration Process begins Thread-3798::DEBUG::2012-09-20 09:42:56,475::vm::217::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration semaphore acquired Thread-3798::DEBUG::2012-09-20 09:42:56,888::libvirtvm::427::vm.Vm::(_startUnderlyingMigration) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration to qemu+tls://192.168.10.12/system Thread-3799::DEBUG::2012-09-20 09:42:56,889::libvirtvm::325::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration downtime thread started Thread-3800::DEBUG::2012-09-20 09:42:56,890::libvirtvm::353::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration monitor thread Thread-3798::DEBUG::2012-09-20 09:42:56,903::libvirtvm::340::vm.Vm::(cancel) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::canceling migration downtime thread Thread-3798::DEBUG::2012-09-20 09:42:56,904::libvirtvm::390::vm.Vm::(stop) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::stopping migration monitor thread Thread-3799::DEBUG::2012-09-20 09:42:56,904::libvirtvm::337::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration downtime thread exiting Thread-3798::ERROR::2012-09-20 09:42:56,905::vm::176::vm.Vm::(_recover) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168.10.12/system Thread-3798::ERROR::2012-09-20 09:42:56,977::vm::240::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Failed to migrate Traceback (most recent call last): File "/usr/share/vdsm/vm.py", line 223, in run File "/usr/share/vdsm/libvirtvm.py", line 451, in _startUnderlyingMigration File "/usr/share/vdsm/libvirtvm.py", line 491, in f File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", line 82, in wrapper File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1034, in migrateToURI2 libvirtError: operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168.10.12/system
Thread-3802::DEBUG::2012-09-20 09:42:57,793::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmGetStats with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3802::DEBUG::2012-09-20 09:42:57,793::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not available Thread-3802::DEBUG::2012-09-20 09:42:57,794::BindingXMLRPC::865::vds::(wrapper) return vmGetStats with {'status': {'message': 'Done', 'code': 0}, 'statsList': [{'status': 'Up', 'username': 'Unknown', 'memUsage': '0', 'acpiEnable': 'true', 'pid': '22047', 'displayIp': '192.168.10.13', 'displayPort': u'5912', 'session': 'Unknown', 'displaySecurePort': u'5913', 'timeOffset': '0', 'hash': '3018874162324753083', 'pauseCode': 'NOERR', 'clientIp': '', 'kvmEnable': 'true', 'network': {u'vnet6': {'macAddr': '00:1a:4a:a8:0a:08', 'rxDropped': '0', 'rxErrors': '0', 'txDropped': '0', 'txRate': '0.0', 'rxRate': '0.0', 'txErrors': '0', 'state': 'unknown', 'speed': '1000', 'name': u'vnet6'}}, 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'displayType': 'qxl', 'cpuUser': '13.27', 'disks': {u'hdc': {'flushLatency': '0', 'readLatency': '0', 'writeLatency': '0'}, u'hda': {'readLatency': '6183805', 'apparentsize': '11811160064', 'writeLatency': '0', 'imageID': 'd96d19f6-5a28-4fef-892f-4a04549d4e38', 'flushLatency': '0', 'readRate': '271.87', 'truesize': '11811160064', 'writeRate': '0.00'}}, 'monitorResponse': '0', 'statsAge': '0.77', 'cpuIdle': '86.73', 'elapsedTime': '3941', 'vmType': 'kvm', 'cpuSys': '0.00', 'appsList': [], 'guestIPs': '', 'nice': ''}]} Thread-3803::DEBUG::2012-09-20 09:42:57,869::BindingXMLRPC::859::vds::(wrapper) client [192.168.10.10]::call vmGetMigrationStatus with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3803::DEBUG::2012-09-20 09:42:57,870::BindingXMLRPC::865::vds::(wrapper) return vmGetMigrationStatus with {'status': {'message': 'Fatal error during migration', 'code': 12}} Dummy-1264::DEBUG::2012-09-20 09:42:58,172::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:42:58,262::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0515109 s, 19.9 MB/s\n'; <rc> = 0 Dummy-1264::DEBUG::2012-09-20 09:43:00,271::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:00,362::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0530171 s, 19.3 MB/s\n'; <rc> = 0 Thread-21::DEBUG::2012-09-20 09:43:00,612::__init__::1249::Storage.Misc.excCmd::(_log) '/usr/bin/dd iflag=direct if=/dev/26187d25-bfcb-40c7-97d1-667705ad2223/metadata bs=4096 count=1' (cwd None) Thread-21::DEBUG::2012-09-20 09:43:00,629::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in\n1+0 records out\n4096 bytes (4.1 kB) copied, 0.000937698 s, 4.4 MB/s\n'; <rc> = 0 Thread-3805::DEBUG::2012-09-20 09:43:01,901::task::588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6-e4f9804871ff`::moving from state init -> state preparing Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils::37::dispatcher::(wrapper) Run and protect: repoStats(options=None) Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils::39::dispatcher::(wrapper) Run and protect: repoStats, Return response: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task::1172::TaskManager.Task::(prepare) Task=`ff134ecc-5597-4a83-81d6-e4f9804871ff`::finished: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task::588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6-e4f9804871ff`::moving from state preparing -> state finished Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager::809::ResourceManager.Owner::(releaseAll) Owner.releaseAll requests {} resources {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager::844::ResourceManager.Owner::(cancelAll) Owner.cancelAll requests {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::task::978::TaskManager.Task::(_decref) Task=`ff134ecc-5597-4a83-81d6-e4f9804871ff`::ref 0 aborting False Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`540335f0-2269-4bc4-aaf4-11bf5990013f`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`2c3af5f5-f877-4e6b-8a34-05bbe78b3c82`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`0ac0dd3a-ae2a-4963-adf1-918993031f6b`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`35a65bb8-cbca-4049-a428-28914bcb094a`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`4ef3258c-0380-4919-991f-ee7be7e9f7fa`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`252e6d46-f362-46aa-a7ed-dd00a86af6f0`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`509e608c-e657-473a-b031-f0811da96bde`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,934::libvirtvm::240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Disk hdc stats not available Dummy-1264::DEBUG::2012-09-20 09:43:02,371::__init__::1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:02,462::__init__::1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in\n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0525183 s, 19.5 MB/s\n'; <rc> = 0
- - _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

--0__=C9BBF0ECDFA4F6D68f9e8a93df938690918cC9BBF0ECDFA4F6D6 Content-type: text/plain; charset=KOI8-R Content-transfer-encoding: base64 TWljaGFsIFNrcml2YW5layA8bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tPiDOwdDJ08HOzyAy MC4wOS4yMDEyDQoxNjowMjoxMToNCg0KPiDv1DogTWljaGFsIFNrcml2YW5layA8bWljaGFsLnNr cml2YW5la0ByZWRoYXQuY29tPg0KPiDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgPERQeXJ5YWtv dkBla2IuYmVlbGluZS5ydT4NCj4g68/QydE6IHVzZXJzQG92aXJ0Lm9yZw0KPiDkwdTBOiAyMC4w OS4yMDEyIDE2OjAyDQo+IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdy YXRpb24NCj4NCj4gSGksDQo+IHdlbGwsIHNvIHdoYXQgaXMgdGhlIG90aGVyIHNpZGUgc2F5aW5n PyBNYXliZSBzb21lIGNvbm5lY3Rpdml0eQ0KPiBwcm9ibGVtcyBiZXR3ZWVuIHRob3NlIDIgaG9z dHM/IGZpcmV3YWxsPw0KPg0KPiBUaGFua3MsDQo+IG1pY2hhbA0KDQpZZXMsIGZpcmV3YWxsIGlz IG5vdCBjb25maWd1cmVkIHByb3Blcmx5IGJ5IGRlZmF1bHQuIElmIEkgc3RvcCBpdCwNCm1pZ3Jh dGlvbiBkb25lLg0KVGhhbmtzLg0KDQo+IE9uIFNlcCAyMCwgMjAxMiwgYXQgMTE6NTUgLCBEbWl0 cml5IEEgUHlyeWFrb3Ygd3JvdGU6DQo+DQo+ID4gSGVsbG8sDQo+ID4NCj4gPiBJIGhhdmUgdHdv IG9WaXJ0IG5vZGVzIG92aXJ0LW5vZGUtaXNvLTIuNS4wLTIuMC5mYzE3Lg0KPiA+DQo+ID4gV2hl biBJIHRyeSB0byBtaWdyYXRlIFZNIGZyb20gb25lIGhvc3QgdG8gYW5vdGhlciwgSSBoYXZlIGFu DQo+IGVycm9yOiBNaWdyYXRpb24gZmFpbGVkIGR1ZSB0byBFcnJvcjogRmF0YWwgZXJyb3IgZHVy aW5nIG1pZ3JhdGlvbi4NCj4gPg0KPiA+IHZkc20ubG9nOg0KPiA+IFRocmVhZC0zNzk3OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0Mzk6OkJpbmRpbmdYTUxSUEM6Og0KPiA4NTk6OnZkczo6 KHdyYXBwZXIpIGNsaWVudCBbMTkyLjE2OC4xMC4xMF06OmNhbGwgdm1NaWdyYXRlIHdpdGgNCj4g KHsnc3JjJzogJzE5Mi4xNjguMTAuMTMnLCAnZHN0JzogJzE5Mi4xNjguMTAuMTI6NTQzMjEnLCAn dm1JZCc6DQo+ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAnbWV0aG9k JzogJ29ubGluZSd9LCkge30NCj4gZmxvd0lEIFsxODBhZDk3OV0NCj4gPiBUaHJlYWQtMzc5Nzo6 REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDM5OjpBUEk6OjQ0MTo6dmRzOjoNCj4gKG1pZ3Jh dGUpIHsnc3JjJzogJzE5Mi4xNjguMTAuMTMnLCAnZHN0JzogJzE5Mi4xNjguMTAuMTI6NTQzMjEn LA0KPiAndm1JZCc6ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAnbWV0 aG9kJzogJ29ubGluZSd9DQo+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQy OjU2LDQ0MTo6dm06OjEyMjo6dm0uVm06Og0KPiAoX3NldHVwVmRzQ29ubmVjdGlvbikgdm1JZD1g MmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+IGZjMmFlZWFlMmU4NmA6OkRlc3RpbmF0aW9uIHNl cnZlciBpczogMTkyLjE2OC4xMC4xMjo1NDMyMQ0KPiA+IFRocmVhZC0zNzk3OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0Mjo1Niw0NDE6OkJpbmRpbmdYTUxSUEM6Og0KPiA4NjU6OnZkczo6KHdyYXBw ZXIpIHJldHVybiB2bU1pZ3JhdGUgd2l0aCB7J3N0YXR1cyc6IHsnbWVzc2FnZSc6DQo+ICdNaWdy YXRpb24gcHJvY2VzcyBzdGFydGluZycsICdjb2RlJzogMH19DQo+ID4gVGhyZWFkLTM3OTg6OkRF QlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ0MTo6dm06OjEyNDo6dm0uVm06Og0KPiAoX3NldHVw VmRzQ29ubmVjdGlvbikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+IGZjMmFlZWFl MmU4NmA6OkluaXRpYXRpbmcgY29ubmVjdGlvbiB3aXRoIGRlc3RpbmF0aW9uDQo+ID4gVGhyZWFk LTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ1Mjo6bGlidmlydHZtOjoNCj4gMjQw Ojp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0K PiBmYzJhZWVhZTJlODZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4gVGhyZWFk LTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ1Nzo6dm06OjE3MDo6dm0uVm06Og0K PiAoX3ByZXBhcmVHdWVzdCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+IGZjMmFl ZWFlMmU4NmA6Om1pZ3JhdGlvbiBQcm9jZXNzIGJlZ2lucw0KPiA+IFRocmVhZC0zNzk4OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0NzU6OnZtOjoyMTc6OnZtLlZtOjoocnVuKQ0KPiB2bUlk PWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjptaWdyYXRpb24gc2VtYXBo b3JlIGFjcXVpcmVkDQo+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2 LDg4ODo6bGlidmlydHZtOjoNCj4gNDI3Ojp2bS5WbTo6KF9zdGFydFVuZGVybHlpbmdNaWdyYXRp b24pDQo+IHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NmA6OnN0YXJ0 aW5nIG1pZ3JhdGlvbiB0bw0KPiBxZW11K3RsczovLzE5Mi4xNjguMTAuMTIvc3lzdGVtDQo+ID4g VGhyZWFkLTM3OTk6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDg4OTo6bGlidmlydHZtOjoN Cj4gMzI1Ojp2bS5WbTo6KHJ1bikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+IGZj MmFlZWFlMmU4NmA6Om1pZ3JhdGlvbiBkb3dudGltZSB0aHJlYWQgc3RhcnRlZA0KPiA+IFRocmVh ZC0zODAwOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw4OTA6OmxpYnZpcnR2bTo6DQo+IDM1 Mzo6dm0uVm06OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiBmYzJhZWVh ZTJlODZgOjpzdGFydGluZyBtaWdyYXRpb24gbW9uaXRvciB0aHJlYWQNCj4gPiBUaHJlYWQtMzc5 ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTAzOjpsaWJ2aXJ0dm06Og0KPiAzNDA6OnZt LlZtOjooY2FuY2VsKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gZmMyYWVlYWUy ZTg2YDo6Y2FuY2VsaW5nIG1pZ3JhdGlvbiBkb3dudGltZSB0aHJlYWQNCj4gPiBUaHJlYWQtMzc5 ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTA0OjpsaWJ2aXJ0dm06Og0KPiAzOTA6OnZt LlZtOjooc3RvcCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+IGZjMmFlZWFlMmU4 NmA6OnN0b3BwaW5nIG1pZ3JhdGlvbiBtb25pdG9yIHRocmVhZA0KPiA+IFRocmVhZC0zNzk5OjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6OmxpYnZpcnR2bTo6DQo+IDMzNzo6dm0uVm06 OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiBmYzJhZWVhZTJlODZgOjpt aWdyYXRpb24gZG93bnRpbWUgdGhyZWFkIGV4aXRpbmcNCj4gPiBUaHJlYWQtMzc5ODo6RVJST1I6 OjIwMTItMDktMjAgMDk6NDI6NTYsOTA1Ojp2bTo6MTc2Ojp2bS5WbTo6DQo+IChfcmVjb3Zlcikg dm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6b3BlcmF0aW9uDQo+ IGZhaWxlZDogRmFpbGVkIHRvIGNvbm5lY3QgdG8gcmVtb3RlIGxpYnZpcnQgVVJJIHFlbXUrdGxz Oi8vMTkyLjE2OC4NCj4gMTAuMTIvc3lzdGVtDQo+ID4gVGhyZWFkLTM3OTg6OkVSUk9SOjoyMDEy LTA5LTIwIDA5OjQyOjU2LDk3Nzo6dm06OjI0MDo6dm0uVm06OihydW4pDQo+IHZtSWQ9YDJiZjNl NmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NmA6OkZhaWxlZCB0byBtaWdyYXRlDQo+ID4g VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPiA+IEZpbGUgIi91c3Ivc2hhcmUv dmRzbS92bS5weSIsIGxpbmUgMjIzLCBpbiBydW4NCj4gPiBGaWxlICIvdXNyL3NoYXJlL3Zkc20v bGlidmlydHZtLnB5IiwgbGluZSA0NTEsIGluDQpfc3RhcnRVbmRlcmx5aW5nTWlncmF0aW9uDQo+ ID4gRmlsZSAiL3Vzci9zaGFyZS92ZHNtL2xpYnZpcnR2bS5weSIsIGxpbmUgNDkxLCBpbiBmDQo+ ID4gRmlsZSAiL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvdmRzbS9saWJ2aXJ0Y29u bmVjdGlvbi5weSIsDQo+IGxpbmUgODIsIGluIHdyYXBwZXINCj4gPiBGaWxlICIvdXNyL2xpYjY0 L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2xpYnZpcnQucHkiLCBsaW5lIDEwMzQsDQo+IGluIG1p Z3JhdGVUb1VSSTINCj4gPiBsaWJ2aXJ0RXJyb3I6IG9wZXJhdGlvbiBmYWlsZWQ6IEZhaWxlZCB0 byBjb25uZWN0IHRvIHJlbW90ZQ0KPiBsaWJ2aXJ0IFVSSSBxZW11K3RsczovLzE5Mi4xNjguMTAu MTIvc3lzdGVtDQo+ID4NCj4gPiBUaHJlYWQtMzgwMjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6 NTcsNzkzOjpCaW5kaW5nWE1MUlBDOjoNCj4gODU5Ojp2ZHM6Oih3cmFwcGVyKSBjbGllbnQgWzE5 Mi4xNjguMTAuMTBdOjpjYWxsIHZtR2V0U3RhdHMgd2l0aA0KPiAoJzJiZjNlNmViLTQ5ZTQtNDJj Ny04MTg4LWZjMmFlZWFlMmU4NicsKSB7fQ0KPiA+IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0Mjo1Nyw3OTM6OmxpYnZpcnR2bTo6DQo+IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0 YXRzKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gZmMyYWVlYWUyZTg2YDo6RGlz ayBoZGMgc3RhdHMgbm90IGF2YWlsYWJsZQ0KPiA+IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0Mjo1Nyw3OTQ6OkJpbmRpbmdYTUxSUEM6Og0KPiA4NjU6OnZkczo6KHdyYXBwZXIp IHJldHVybiB2bUdldFN0YXRzIHdpdGggeydzdGF0dXMnOiB7J21lc3NhZ2UnOg0KPiAnRG9uZScs ICdjb2RlJzogMH0sICdzdGF0c0xpc3QnOiBbeydzdGF0dXMnOiAnVXAnLCAndXNlcm5hbWUnOg0K PiAnVW5rbm93bicsICdtZW1Vc2FnZSc6ICcwJywgJ2FjcGlFbmFibGUnOiAndHJ1ZScsICdwaWQn OiAnMjIwNDcnLA0KPiAnZGlzcGxheUlwJzogJzE5Mi4xNjguMTAuMTMnLCAnZGlzcGxheVBvcnQn OiB1JzU5MTInLCAnc2Vzc2lvbic6DQo+ICdVbmtub3duJywgJ2Rpc3BsYXlTZWN1cmVQb3J0Jzog dSc1OTEzJywgJ3RpbWVPZmZzZXQnOiAnMCcsICdoYXNoJzoNCj4gJzMwMTg4NzQxNjIzMjQ3NTMw ODMnLCAncGF1c2VDb2RlJzogJ05PRVJSJywgJ2NsaWVudElwJzogJycsDQo+ICdrdm1FbmFibGUn OiAndHJ1ZScsICduZXR3b3JrJzoge3Undm5ldDYnOiB7J21hY0FkZHInOiAnMDA6MWE6NGE6YTg6 DQo+IDBhOjA4JywgJ3J4RHJvcHBlZCc6ICcwJywgJ3J4RXJyb3JzJzogJzAnLCAndHhEcm9wcGVk JzogJzAnLA0KPiAndHhSYXRlJzogJzAuMCcsICdyeFJhdGUnOiAnMC4wJywgJ3R4RXJyb3JzJzog JzAnLCAnc3RhdGUnOg0KPiAndW5rbm93bicsICdzcGVlZCc6ICcxMDAwJywgJ25hbWUnOiB1J3Zu ZXQ2J319LCAndm1JZCc6DQo+ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYn LCAnZGlzcGxheVR5cGUnOiAncXhsJywNCj4gJ2NwdVVzZXInOiAnMTMuMjcnLCAnZGlza3MnOiB7 dSdoZGMnOiB7J2ZsdXNoTGF0ZW5jeSc6ICcwJywNCj4gJ3JlYWRMYXRlbmN5JzogJzAnLCAnd3Jp dGVMYXRlbmN5JzogJzAnfSwgdSdoZGEnOiB7J3JlYWRMYXRlbmN5JzoNCj4gJzYxODM4MDUnLCAn YXBwYXJlbnRzaXplJzogJzExODExMTYwMDY0JywgJ3dyaXRlTGF0ZW5jeSc6ICcwJywNCj4gJ2lt YWdlSUQnOiAnZDk2ZDE5ZjYtNWEyOC00ZmVmLTg5MmYtNGEwNDU0OWQ0ZTM4JywgJ2ZsdXNoTGF0 ZW5jeSc6DQo+ICcwJywgJ3JlYWRSYXRlJzogJzI3MS44NycsICd0cnVlc2l6ZSc6ICcxMTgxMTE2 MDA2NCcsICd3cml0ZVJhdGUnOg0KPiAnMC4wMCd9fSwgJ21vbml0b3JSZXNwb25zZSc6ICcwJywg J3N0YXRzQWdlJzogJzAuNzcnLCAnY3B1SWRsZSc6DQo+ICc4Ni43MycsICdlbGFwc2VkVGltZSc6 ICczOTQxJywgJ3ZtVHlwZSc6ICdrdm0nLCAnY3B1U3lzJzogJzAuMDAnLA0KPiAnYXBwc0xpc3Qn OiBbXSwgJ2d1ZXN0SVBzJzogJycsICduaWNlJzogJyd9XX0NCj4gPiBUaHJlYWQtMzgwMzo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTcsODY5OjpCaW5kaW5nWE1MUlBDOjoNCj4gODU5Ojp2ZHM6 Oih3cmFwcGVyKSBjbGllbnQgWzE5Mi4xNjguMTAuMTBdOjpjYWxsDQo+IHZtR2V0TWlncmF0aW9u U3RhdHVzIHdpdGggKCcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCkge30N Cj4gPiBUaHJlYWQtMzgwMzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsODcwOjpCaW5kaW5n WE1MUlBDOjoNCj4gODY1Ojp2ZHM6Oih3cmFwcGVyKSByZXR1cm4gdm1HZXRNaWdyYXRpb25TdGF0 dXMgd2l0aCB7J3N0YXR1cyc6DQo+IHsnbWVzc2FnZSc6ICdGYXRhbCBlcnJvciBkdXJpbmcgbWln cmF0aW9uJywgJ2NvZGUnOiAxMn19DQo+ID4gRHVtbXktMTI2NDo6REVCVUc6OjIwMTItMDktMjAg MDk6NDI6NTgsMTcyOjpfX2luaXRfXzo6DQo+IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6Oihf bG9nKSAnZGQgaWY9L3JoZXYvZGF0YS1jZW50ZXIvDQo+IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNm LTVmZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3gNCj4gaWZsYWc9ZGlyZWN0LGZ1bGxi bG9jayBjb3VudD0xIGJzPTEwMjQwMDAnIChjd2QgTm9uZSkNCj4gPiBEdW1teS0xMjY0OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0Mjo1OCwyNjI6Ol9faW5pdF9fOjoNCj4gMTI0OTo6U3RvcmFnZS5N aXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6IDxlcnI+ID0gJzErMCByZWNvcmRzIGluDQo+IFxu MSswIHJlY29yZHMgb3V0XG4xMDI0MDAwIGJ5dGVzICgxLjAgTUIpIGNvcGllZCwgMC4wNTE1MTA5 IHMsIDE5LjkNCj4gTUIvc1xuJzsgPHJjPiA9IDANCj4gPiBEdW1teS0xMjY0OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0MzowMCwyNzE6Ol9faW5pdF9fOjoNCj4gMTI0OTo6U3RvcmFnZS5NaXNjLmV4 Y0NtZDo6KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci8NCj4gMzMyNjk0YmItMzY0YS00 MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21hc3RlcnNkL2RvbV9tZC9pbmJveA0KPiBpZmxhZz1kaXJl Y3QsZnVsbGJsb2NrIGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKQ0KPiA+IER1bW15LTEy NjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAwLDM2Mjo6X19pbml0X186Og0KPiAxMjQ5OjpT dG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgU1VDQ0VTUzogPGVycj4gPSAnMSswIHJlY29yZHMg aW4NCj4gXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAw LjA1MzAxNzEgcywgMTkuMw0KPiBNQi9zXG4nOyA8cmM+ID0gMA0KPiA+IFRocmVhZC0yMTo6REVC VUc6OjIwMTItMDktMjAgMDk6NDM6MDAsNjEyOjpfX2luaXRfXzo6DQo+IDEyNDk6OlN0b3JhZ2Uu TWlzYy5leGNDbWQ6OihfbG9nKSAnL3Vzci9iaW4vZGQgaWZsYWc9ZGlyZWN0IGlmPS9kZXYvDQo+ IDI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMy9tZXRhZGF0YSBicz00MDk2IGNv dW50PTEnIChjd2QgTm9uZSkNCj4gPiBUaHJlYWQtMjE6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQz OjAwLDYyOTo6X19pbml0X186Og0KPiAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykg U1VDQ0VTUzogPGVycj4gPSAnMSswIHJlY29yZHMgaW4NCj4gXG4xKzAgcmVjb3JkcyBvdXRcbjQw OTYgYnl0ZXMgKDQuMSBrQikgY29waWVkLCAwLjAwMDkzNzY5OCBzLCA0LjQNCj4gTUIvc1xuJzsg PHJjPiA9IDANCj4gPiBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTAx Ojp0YXNrOjoNCj4gNTg4OjpUYXNrTWFuYWdlci5UYXNrOjooX3VwZGF0ZVN0YXRlKSBUYXNrPWBm ZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gZTRmOTgwNDg3MWZmYDo6bW92aW5nIGZyb20gc3Rh dGUgaW5pdCAtPiBzdGF0ZSBwcmVwYXJpbmcNCj4gPiBUaHJlYWQtMzgwNTo6SU5GTzo6MjAxMi0w OS0yMCAwOTo0MzowMSw5MDI6OmxvZ1V0aWxzOjoNCj4gMzc6OmRpc3BhdGNoZXI6Oih3cmFwcGVy KSBSdW4gYW5kIHByb3RlY3Q6IHJlcG9TdGF0cyhvcHRpb25zPU5vbmUpDQo+ID4gVGhyZWFkLTM4 MDU6OklORk86OjIwMTItMDktMjAgMDk6NDM6MDEsOTAyOjpsb2dVdGlsczo6DQo+IDM5OjpkaXNw YXRjaGVyOjood3JhcHBlcikgUnVuIGFuZCBwcm90ZWN0OiByZXBvU3RhdHMsIFJldHVybg0KPiBy ZXNwb25zZTogeycyNjE4N2QyNS1iZmNiLTQwYzctOTdkMS02Njc3MDVhZDIyMjMnOiB7J2RlbGF5 JzogJzAuDQo+IDAxODA5MzEwOTEzMDknLCAnbGFzdENoZWNrJzogMTM0ODEzNDE4MC44MjU4OTIs ICdjb2RlJzogMCwgJ3ZhbGlkJzoNCj4gVHJ1ZX0sICc5MDEwNGMzZC04MzdiLTQ3ZGQtOGM4Mi1k ZGE5MmVlYzMwZDknOiB7J2RlbGF5JzogJzAuDQo+IDAwMDk1NTgyMDA4MzYxOCcsICdsYXN0Q2hl Y2snOiAxMzQ4MTM0MTc1LjQ5MzI3NywgJ2NvZGUnOiAwLCAndmFsaWQnOg0KVHJ1ZX19DQo+ID4g VGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6dGFzazo6DQo+IDEx NzI6OlRhc2tNYW5hZ2VyLlRhc2s6OihwcmVwYXJlKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMt ODFkNi0NCj4gZTRmOTgwNDg3MWZmYDo6ZmluaXNoZWQ6IHsnMjYxODdkMjUtYmZjYi00MGM3LTk3 ZDEtNjY3NzA1YWQyMjIzJzoNCj4geydkZWxheSc6ICcwLjAxODA5MzEwOTEzMDknLCAnbGFzdENo ZWNrJzogMTM0ODEzNDE4MC44MjU4OTIsICdjb2RlJzoNCj4gMCwgJ3ZhbGlkJzogVHJ1ZX0sICc5 MDEwNGMzZC04MzdiLTQ3ZGQtOGM4Mi1kZGE5MmVlYzMwZDknOiB7J2RlbGF5JzoNCj4gJzAuMDAw OTU1ODIwMDgzNjE4JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQxNzUuNDkzMjc3LCAnY29kZSc6IDAs DQo+ICd2YWxpZCc6IFRydWV9fQ0KPiA+IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0MzowMSw5MDI6OnRhc2s6Og0KPiA1ODg6OlRhc2tNYW5hZ2VyLlRhc2s6OihfdXBkYXRlU3Rh dGUpIFRhc2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2LQ0KPiBlNGY5ODA0ODcxZmZgOjptb3Zp bmcgZnJvbSBzdGF0ZSBwcmVwYXJpbmcgLT4gc3RhdGUgZmluaXNoZWQNCj4gPiBUaHJlYWQtMzgw NTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTAzOjpyZXNvdXJjZU1hbmFnZXI6Og0KPiA4 MDk6OlJlc291cmNlTWFuYWdlci5Pd25lcjo6KHJlbGVhc2VBbGwpIE93bmVyLnJlbGVhc2VBbGwg cmVxdWVzdHMNCj4ge30gcmVzb3VyY2VzIHt9DQo+ID4gVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEy LTA5LTIwIDA5OjQzOjAxLDkwMzo6cmVzb3VyY2VNYW5hZ2VyOjoNCj4gODQ0OjpSZXNvdXJjZU1h bmFnZXIuT3duZXI6OihjYW5jZWxBbGwpIE93bmVyLmNhbmNlbEFsbCByZXF1ZXN0cyB7fQ0KPiA+ IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDM6OnRhc2s6Og0KPiA5 Nzg6OlRhc2tNYW5hZ2VyLlRhc2s6OihfZGVjcmVmKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMt ODFkNi0NCj4gZTRmOTgwNDg3MWZmYDo6cmVmIDAgYWJvcnRpbmcgRmFsc2UNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMxOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gNTQwMzM1ZjAtMjI2OS00YmM0LQ0KPiBhYWY0 LTExYmY1OTkwMDEzZmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMxOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmMzYWY1ZjUtDQo+IGY4NzctNGU2Yi04YTM0 LTA1YmJlNzhiM2M4MmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMyOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMGFjMGRkM2EtYWUyYS00OTYzLQ0KPiBhZGYx LTkxODk5MzAzMWY2YmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMyOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMzVhNjViYjgtY2JjYS00MDQ5LQ0KPiBhNDI4 LTI4OTE0YmNiMDk0YWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gNGVmMzI1OGMtMDM4MC00OTE5LTk5MWYtDQo+ IGVlN2JlN2U5ZjdmYWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMjUyZTZkNDYtZjM2Mi00NmFhLWE3ZWQtDQo+ IGRkMDBhODZhZjZmMGA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gNTA5ZTYwOGMtZTY1Ny00NzNhLWIwMzEtDQo+ IGYwODExZGE5NmJkZWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBUaHJlYWQt MzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTM0OjpsaWJ2aXJ0dm06Og0KPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiBEdW1teS0x MjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMiwzNzE6Ol9faW5pdF9fOjoNCj4gMTI0OTo6 U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci8NCj4g MzMyNjk0YmItMzY0YS00MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21hc3RlcnNkL2RvbV9tZC9pbmJv eA0KPiBpZmxhZz1kaXJlY3QsZnVsbGJsb2NrIGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25l KQ0KPiA+IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAyLDQ2Mjo6X19pbml0 X186Og0KPiAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgU1VDQ0VTUzogPGVycj4g PSAnMSswIHJlY29yZHMgaW4NCj4gXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEu MCBNQikgY29waWVkLCAwLjA1MjUxODMgcywgMTkuNQ0KPiBNQi9zXG4nOyA8cmM+ID0gMA0KPiA+ DQo+ID4gLSAtDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCj4gPiBVc2VycyBtYWlsaW5nIGxpc3QNCj4gPiBVc2Vyc0BvdmlydC5vcmcNCj4gPiBo dHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMNCj4= --0__=C9BBF0ECDFA4F6D68f9e8a93df938690918cC9BBF0ECDFA4F6D6 Content-type: text/html; charset=KOI8-R Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48dHQ+PGZvbnQgc2l6ZT0iMiI+TWljaGFsIFNrcml2YW5layAmbHQ7 bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tJmd0OyDOwdDJ08HOzyAyMC4wOS4yMDEyIDE2OjAy OjExOjxicj4NCjxicj4NCiZndDsg79Q6IE1pY2hhbCBTa3JpdmFuZWsgJmx0O21pY2hhbC5za3Jp dmFuZWtAcmVkaGF0LmNvbSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ Jmd0OyDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgJmx0O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5y dSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyDrz9DJ0TogdXNl cnNAb3ZpcnQub3JnPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiZndDsg5MHU wTogMjAuMDkuMjAxMiAxNjowMjwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4m Z3Q7IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248L2ZvbnQ+ PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyA8YnI+DQomZ3Q7IEhpLDxicj4NCiZn dDsgd2VsbCwgc28gd2hhdCBpcyB0aGUgb3RoZXIgc2lkZSBzYXlpbmc/IE1heWJlIHNvbWUgY29u bmVjdGl2aXR5IDxicj4NCiZndDsgcHJvYmxlbXMgYmV0d2VlbiB0aG9zZSAyIGhvc3RzPyBmaXJl d2FsbD8gPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IFRoYW5rcyw8YnI+DQomZ3Q7IG1pY2hhbDxicj4N CjwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj5ZZXMsIGZpcmV3YWxsIGlzIG5v dCBjb25maWd1cmVkPC9mb250PjwvdHQ+PHR0Pjxmb250IHNpemU9IjIiPiBwcm9wZXJseSBieSBk ZWZhdWx0LiBJZiBJIHN0b3AgaXQsIG1pZ3JhdGlvbiBkb25lLjwvZm9udD48L3R0Pjxicj4NCjx0 dD48Zm9udCBzaXplPSIyIj5UaGFua3MuPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9 IjIiPjxicj4NCiZndDsgT24gU2VwIDIwLCAyMDEyLCBhdCAxMTo1NSAsIERtaXRyaXkgQSBQeXJ5 YWtvdiB3cm90ZTo8YnI+DQomZ3Q7IDxicj4NCiZndDsgJmd0OyBIZWxsbyw8YnI+DQomZ3Q7ICZn dDsgPGJyPg0KJmd0OyAmZ3Q7IEkgaGF2ZSB0d28gb1ZpcnQgbm9kZXMgb3ZpcnQtbm9kZS1pc28t Mi41LjAtMi4wLmZjMTcuPGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyBXaGVuIEkgdHJ5 IHRvIG1pZ3JhdGUgVk0gZnJvbSBvbmUgaG9zdCB0byBhbm90aGVyLCBJIGhhdmUgYW4gPGJyPg0K Jmd0OyBlcnJvcjogTWlncmF0aW9uIGZhaWxlZCBkdWUgdG8gRXJyb3I6IEZhdGFsIGVycm9yIGR1 cmluZyBtaWdyYXRpb24uPGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyB2ZHNtLmxvZzo8 YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM3OTc6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQz OTo6QmluZGluZ1hNTFJQQzo6PGJyPg0KJmd0OyA4NTk6OnZkczo6KHdyYXBwZXIpIGNsaWVudCBb MTkyLjE2OC4xMC4xMF06OmNhbGwgdm1NaWdyYXRlIHdpdGggPGJyPg0KJmd0OyAoeydzcmMnOiAn MTkyLjE2OC4xMC4xMycsICdkc3QnOiAnMTkyLjE2OC4xMC4xMjo1NDMyMScsICd2bUlkJzogPGJy Pg0KJmd0OyAnMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywgJ21ldGhvZCc6 ICdvbmxpbmUnfSwpIHt9IDxicj4NCiZndDsgZmxvd0lEIFsxODBhZDk3OV08YnI+DQomZ3Q7ICZn dDsgVGhyZWFkLTM3OTc6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQzOTo6QVBJOjo0NDE6 OnZkczo6PGJyPg0KJmd0OyAobWlncmF0ZSkgeydzcmMnOiAnMTkyLjE2OC4xMC4xMycsICdkc3Qn OiAnMTkyLjE2OC4xMC4xMjo1NDMyMScsIDxicj4NCiZndDsgJ3ZtSWQnOiAnMmJmM2U2ZWItNDll NC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywgJ21ldGhvZCc6ICdvbmxpbmUnfTxicj4NCiZndDsg Jmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDQxOjp2bTo6MTIy Ojp2bS5WbTo6PGJyPg0KJmd0OyAoX3NldHVwVmRzQ29ubmVjdGlvbikgdm1JZD1gMmJmM2U2ZWIt NDllNC00MmM3LTgxODgtPGJyPg0KJmd0OyBmYzJhZWVhZTJlODZgOjpEZXN0aW5hdGlvbiBzZXJ2 ZXIgaXM6IDE5Mi4xNjguMTAuMTI6NTQzMjE8YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM3OTc6OkRF QlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ0MTo6QmluZGluZ1hNTFJQQzo6PGJyPg0KJmd0OyA4 NjU6OnZkczo6KHdyYXBwZXIpIHJldHVybiB2bU1pZ3JhdGUgd2l0aCB7J3N0YXR1cyc6IHsnbWVz c2FnZSc6IDxicj4NCiZndDsgJ01pZ3JhdGlvbiBwcm9jZXNzIHN0YXJ0aW5nJywgJ2NvZGUnOiAw fX08YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2 LDQ0MTo6dm06OjEyNDo6dm0uVm06Ojxicj4NCiZndDsgKF9zZXR1cFZkc0Nvbm5lY3Rpb24pIHZt SWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgZmMyYWVlYWUyZTg2YDo6SW5p dGlhdGluZyBjb25uZWN0aW9uIHdpdGggZGVzdGluYXRpb248YnI+DQomZ3Q7ICZndDsgVGhyZWFk LTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ1Mjo6bGlidmlydHZtOjo8YnI+DQom Z3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0YXRzKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzct ODE4OC08YnI+DQomZ3Q7IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFi bGU8YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2 LDQ1Nzo6dm06OjE3MDo6dm0uVm06Ojxicj4NCiZndDsgKF9wcmVwYXJlR3Vlc3QpIHZtSWQ9YDJi ZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgZmMyYWVlYWUyZTg2YDo6bWlncmF0aW9u IFByb2Nlc3MgYmVnaW5zPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0Mjo1Niw0NzU6OnZtOjoyMTc6OnZtLlZtOjoocnVuKTxicj4NCiZndDsgdm1JZD1g MmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6bWlncmF0aW9uIHNlbWFwaG9y ZSBhY3F1aXJlZDxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAg MDk6NDI6NTYsODg4OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgNDI3Ojp2bS5WbTo6KF9zdGFydFVu ZGVybHlpbmdNaWdyYXRpb24pIDxicj4NCiZndDsgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgx ODgtZmMyYWVlYWUyZTg2YDo6c3RhcnRpbmcgbWlncmF0aW9uIHRvIDxicj4NCiZndDsgcWVtdSt0 bHM6Ly8xOTIuMTY4LjEwLjEyL3N5c3RlbTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzc5OTo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTYsODg5OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgMzI1Ojp2 bS5WbTo6KHJ1bikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0OyBmYzJh ZWVhZTJlODZgOjptaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkIHN0YXJ0ZWQ8YnI+DQomZ3Q7ICZn dDsgVGhyZWFkLTM4MDA6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDg5MDo6bGlidmlydHZt Ojo8YnI+DQomZ3Q7IDM1Mzo6dm0uVm06OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04 MTg4LTxicj4NCiZndDsgZmMyYWVlYWUyZTg2YDo6c3RhcnRpbmcgbWlncmF0aW9uIG1vbml0b3Ig dGhyZWFkPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0 Mjo1Niw5MDM6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAzNDA6OnZtLlZtOjooY2FuY2VsKSB2bUlk PWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7IGZjMmFlZWFlMmU4NmA6OmNhbmNl bGluZyBtaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zNzk4 OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAz OTA6OnZtLlZtOjooc3RvcCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0 OyBmYzJhZWVhZTJlODZgOjpzdG9wcGluZyBtaWdyYXRpb24gbW9uaXRvciB0aHJlYWQ8YnI+DQom Z3Q7ICZndDsgVGhyZWFkLTM3OTk6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDkwNDo6bGli dmlydHZtOjo8YnI+DQomZ3Q7IDMzNzo6dm0uVm06OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQt NDJjNy04MTg4LTxicj4NCiZndDsgZmMyYWVlYWUyZTg2YDo6bWlncmF0aW9uIGRvd250aW1lIHRo cmVhZCBleGl0aW5nPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpFUlJPUjo6MjAxMi0wOS0y MCAwOTo0Mjo1Niw5MDU6OnZtOjoxNzY6OnZtLlZtOjo8YnI+DQomZ3Q7IChfcmVjb3Zlcikgdm1J ZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6b3BlcmF0aW9uIDxicj4N CiZndDsgZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVjdCB0byByZW1vdGUgbGlidmlydCBVUkkgcWVt dSt0bHM6Ly8xOTIuMTY4Ljxicj4NCiZndDsgMTAuMTIvc3lzdGVtPGJyPg0KJmd0OyAmZ3Q7IFRo cmVhZC0zNzk4OjpFUlJPUjo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5Nzc6OnZtOjoyNDA6OnZtLlZt OjoocnVuKTxicj4NCiZndDsgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUy ZTg2YDo6RmFpbGVkIHRvIG1pZ3JhdGU8YnI+DQomZ3Q7ICZndDsgVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOjxicj4NCiZndDsgJmd0OyBGaWxlICZxdW90Oy91c3Ivc2hhcmUvdmRz bS92bS5weSZxdW90OywgbGluZSAyMjMsIGluIHJ1bjxicj4NCiZndDsgJmd0OyBGaWxlICZxdW90 Oy91c3Ivc2hhcmUvdmRzbS9saWJ2aXJ0dm0ucHkmcXVvdDssIGxpbmUgNDUxLCBpbiBfc3RhcnRV bmRlcmx5aW5nTWlncmF0aW9uPGJyPg0KJmd0OyAmZ3Q7IEZpbGUgJnF1b3Q7L3Vzci9zaGFyZS92 ZHNtL2xpYnZpcnR2bS5weSZxdW90OywgbGluZSA0OTEsIGluIGY8YnI+DQomZ3Q7ICZndDsgRmls ZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL2xpYnZpcnRjb25u ZWN0aW9uLnB5JnF1b3Q7LDxicj4NCiZndDsgbGluZSA4MiwgaW4gd3JhcHBlcjxicj4NCiZndDsg Jmd0OyBGaWxlICZxdW90Oy91c3IvbGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmly dC5weSZxdW90OywgbGluZSAxMDM0LCA8YnI+DQomZ3Q7IGluIG1pZ3JhdGVUb1VSSTI8YnI+DQom Z3Q7ICZndDsgbGlidmlydEVycm9yOiBvcGVyYXRpb24gZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVj dCB0byByZW1vdGUgPGJyPg0KJmd0OyBsaWJ2aXJ0IFVSSSBxZW11K3RsczovLzE5Mi4xNjguMTAu MTIvc3lzdGVtPGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzgwMjo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTcsNzkzOjpCaW5kaW5nWE1MUlBDOjo8YnI+DQomZ3Q7IDg1 OTo6dmRzOjood3JhcHBlcikgY2xpZW50IFsxOTIuMTY4LjEwLjEwXTo6Y2FsbCB2bUdldFN0YXRz IHdpdGggPGJyPg0KJmd0OyAoJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4Nics KSB7fTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzgwMjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6 NTcsNzkzOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMp IHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgZmMyYWVlYWUyZTg2YDo6 RGlzayBoZGMgc3RhdHMgbm90IGF2YWlsYWJsZTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzgwMjo6 REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsNzk0OjpCaW5kaW5nWE1MUlBDOjo8YnI+DQomZ3Q7 IDg2NTo6dmRzOjood3JhcHBlcikgcmV0dXJuIHZtR2V0U3RhdHMgd2l0aCB7J3N0YXR1cyc6IHsn bWVzc2FnZSc6IDxicj4NCiZndDsgJ0RvbmUnLCAnY29kZSc6IDB9LCAnc3RhdHNMaXN0JzogW3sn c3RhdHVzJzogJ1VwJywgJ3VzZXJuYW1lJzogPGJyPg0KJmd0OyAnVW5rbm93bicsICdtZW1Vc2Fn ZSc6ICcwJywgJ2FjcGlFbmFibGUnOiAndHJ1ZScsICdwaWQnOiAnMjIwNDcnLCA8YnI+DQomZ3Q7 ICdkaXNwbGF5SXAnOiAnMTkyLjE2OC4xMC4xMycsICdkaXNwbGF5UG9ydCc6IHUnNTkxMicsICdz ZXNzaW9uJzogPGJyPg0KJmd0OyAnVW5rbm93bicsICdkaXNwbGF5U2VjdXJlUG9ydCc6IHUnNTkx MycsICd0aW1lT2Zmc2V0JzogJzAnLCAnaGFzaCc6IDxicj4NCiZndDsgJzMwMTg4NzQxNjIzMjQ3 NTMwODMnLCAncGF1c2VDb2RlJzogJ05PRVJSJywgJ2NsaWVudElwJzogJycsIDxicj4NCiZndDsg J2t2bUVuYWJsZSc6ICd0cnVlJywgJ25ldHdvcmsnOiB7dSd2bmV0Nic6IHsnbWFjQWRkcic6ICcw MDoxYTo0YTphODo8YnI+DQomZ3Q7IDBhOjA4JywgJ3J4RHJvcHBlZCc6ICcwJywgJ3J4RXJyb3Jz JzogJzAnLCAndHhEcm9wcGVkJzogJzAnLCA8YnI+DQomZ3Q7ICd0eFJhdGUnOiAnMC4wJywgJ3J4 UmF0ZSc6ICcwLjAnLCAndHhFcnJvcnMnOiAnMCcsICdzdGF0ZSc6IDxicj4NCiZndDsgJ3Vua25v d24nLCAnc3BlZWQnOiAnMTAwMCcsICduYW1lJzogdSd2bmV0Nid9fSwgJ3ZtSWQnOiA8YnI+DQom Z3Q7ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAnZGlzcGxheVR5cGUn OiAncXhsJywgPGJyPg0KJmd0OyAnY3B1VXNlcic6ICcxMy4yNycsICdkaXNrcyc6IHt1J2hkYyc6 IHsnZmx1c2hMYXRlbmN5JzogJzAnLCA8YnI+DQomZ3Q7ICdyZWFkTGF0ZW5jeSc6ICcwJywgJ3dy aXRlTGF0ZW5jeSc6ICcwJ30sIHUnaGRhJzogeydyZWFkTGF0ZW5jeSc6IDxicj4NCiZndDsgJzYx ODM4MDUnLCAnYXBwYXJlbnRzaXplJzogJzExODExMTYwMDY0JywgJ3dyaXRlTGF0ZW5jeSc6ICcw JywgPGJyPg0KJmd0OyAnaW1hZ2VJRCc6ICdkOTZkMTlmNi01YTI4LTRmZWYtODkyZi00YTA0NTQ5 ZDRlMzgnLCAnZmx1c2hMYXRlbmN5JzogPGJyPg0KJmd0OyAnMCcsICdyZWFkUmF0ZSc6ICcyNzEu ODcnLCAndHJ1ZXNpemUnOiAnMTE4MTExNjAwNjQnLCAnd3JpdGVSYXRlJzogPGJyPg0KJmd0OyAn MC4wMCd9fSwgJ21vbml0b3JSZXNwb25zZSc6ICcwJywgJ3N0YXRzQWdlJzogJzAuNzcnLCAnY3B1 SWRsZSc6IDxicj4NCiZndDsgJzg2LjczJywgJ2VsYXBzZWRUaW1lJzogJzM5NDEnLCAndm1UeXBl JzogJ2t2bScsICdjcHVTeXMnOiAnMC4wMCcsIDxicj4NCiZndDsgJ2FwcHNMaXN0JzogW10sICdn dWVzdElQcyc6ICcnLCAnbmljZSc6ICcnfV19PGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODAzOjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw4Njk6OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsg ODU5Ojp2ZHM6Oih3cmFwcGVyKSBjbGllbnQgWzE5Mi4xNjguMTAuMTBdOjpjYWxsIDxicj4NCiZn dDsgdm1HZXRNaWdyYXRpb25TdGF0dXMgd2l0aCAoJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZj MmFlZWFlMmU4NicsKSB7fTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzgwMzo6REVCVUc6OjIwMTIt MDktMjAgMDk6NDI6NTcsODcwOjpCaW5kaW5nWE1MUlBDOjo8YnI+DQomZ3Q7IDg2NTo6dmRzOjoo d3JhcHBlcikgcmV0dXJuIHZtR2V0TWlncmF0aW9uU3RhdHVzIHdpdGggeydzdGF0dXMnOiA8YnI+ DQomZ3Q7IHsnbWVzc2FnZSc6ICdGYXRhbCBlcnJvciBkdXJpbmcgbWlncmF0aW9uJywgJ2NvZGUn OiAxMn19PGJyPg0KJmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQy OjU4LDE3Mjo6X19pbml0X186Ojxicj4NCiZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6 KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci88YnI+DQomZ3Q7IDMzMjY5NGJiLTM2NGEt NDM0ZS1iMjNmLTVmZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3ggPGJyPg0KJmd0OyBp ZmxhZz1kaXJlY3QsZnVsbGJsb2NrIGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKTxicj4N CiZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1OCwyNjI6Ol9f aW5pdF9fOjo8YnI+DQomZ3Q7IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUND RVNTOiAmbHQ7ZXJyJmd0OyA9ICcxKzAgcmVjb3JkcyBpbjxicj4NCiZndDsgXG4xKzAgcmVjb3Jk cyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1MTUxMDkgcywgMTkuOSA8 YnI+DQomZ3Q7IE1CL3Ncbic7ICZsdDtyYyZndDsgPSAwPGJyPg0KJmd0OyAmZ3Q7IER1bW15LTEy NjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAwLDI3MTo6X19pbml0X186Ojxicj4NCiZndDsg MTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRl ci88YnI+DQomZ3Q7IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNmLTVmZWY5ODVkM2NiZC9tYXN0ZXJz ZC9kb21fbWQvaW5ib3ggPGJyPg0KJmd0OyBpZmxhZz1kaXJlY3QsZnVsbGJsb2NrIGNvdW50PTEg YnM9MTAyNDAwMCcgKGN3ZCBOb25lKTxicj4NCiZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0MzowMCwzNjI6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7IDEyNDk6OlN0b3Jh Z2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUNDRVNTOiAmbHQ7ZXJyJmd0OyA9ICcxKzAgcmVjb3Jk cyBpbjxicj4NCiZndDsgXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikg Y29waWVkLCAwLjA1MzAxNzEgcywgMTkuMyA8YnI+DQomZ3Q7IE1CL3Ncbic7ICZsdDtyYyZndDsg PSAwPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0yMTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDAs NjEyOjpfX2luaXRfXzo6PGJyPg0KJmd0OyAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xv ZykgJy91c3IvYmluL2RkIGlmbGFnPWRpcmVjdCBpZj0vZGV2Lzxicj4NCiZndDsgMjYxODdkMjUt YmZjYi00MGM3LTk3ZDEtNjY3NzA1YWQyMjIzL21ldGFkYXRhIGJzPTQwOTYgY291bnQ9MScgKGN3 ZCBOb25lKTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMjE6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQz OjAwLDYyOTo6X19pbml0X186Ojxicj4NCiZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6 KF9sb2cpIFNVQ0NFU1M6ICZsdDtlcnImZ3Q7ID0gJzErMCByZWNvcmRzIGluPGJyPg0KJmd0OyBc bjErMCByZWNvcmRzIG91dFxuNDA5NiBieXRlcyAoNC4xIGtCKSBjb3BpZWQsIDAuMDAwOTM3Njk4 IHMsIDQuNCA8YnI+DQomZ3Q7IE1CL3Ncbic7ICZsdDtyYyZndDsgPSAwPGJyPg0KJmd0OyAmZ3Q7 IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDE6OnRhc2s6Ojxicj4N CiZndDsgNTg4OjpUYXNrTWFuYWdlci5UYXNrOjooX3VwZGF0ZVN0YXRlKSBUYXNrPWBmZjEzNGVj Yy01NTk3LTRhODMtODFkNi08YnI+DQomZ3Q7IGU0Zjk4MDQ4NzFmZmA6Om1vdmluZyBmcm9tIHN0 YXRlIGluaXQgLSZndDsgc3RhdGUgcHJlcGFyaW5nPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA1 OjpJTkZPOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6bG9nVXRpbHM6Ojxicj4NCiZndDsgMzc6 OmRpc3BhdGNoZXI6Oih3cmFwcGVyKSBSdW4gYW5kIHByb3RlY3Q6IHJlcG9TdGF0cyhvcHRpb25z PU5vbmUpPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpJTkZPOjoyMDEyLTA5LTIwIDA5OjQz OjAxLDkwMjo6bG9nVXRpbHM6Ojxicj4NCiZndDsgMzk6OmRpc3BhdGNoZXI6Oih3cmFwcGVyKSBS dW4gYW5kIHByb3RlY3Q6IHJlcG9TdGF0cywgUmV0dXJuIDxicj4NCiZndDsgcmVzcG9uc2U6IHsn MjYxODdkMjUtYmZjYi00MGM3LTk3ZDEtNjY3NzA1YWQyMjIzJzogeydkZWxheSc6ICcwLjxicj4N CiZndDsgMDE4MDkzMTA5MTMwOScsICdsYXN0Q2hlY2snOiAxMzQ4MTM0MTgwLjgyNTg5MiwgJ2Nv ZGUnOiAwLCAndmFsaWQnOiA8YnI+DQomZ3Q7IFRydWV9LCAnOTAxMDRjM2QtODM3Yi00N2RkLThj ODItZGRhOTJlZWMzMGQ5JzogeydkZWxheSc6ICcwLjxicj4NCiZndDsgMDAwOTU1ODIwMDgzNjE4 JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQxNzUuNDkzMjc3LCAnY29kZSc6IDAsICd2YWxpZCc6IFRy dWV9fTxicj4NCiZndDsgJmd0OyBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6 MDEsOTAyOjp0YXNrOjo8YnI+DQomZ3Q7IDExNzI6OlRhc2tNYW5hZ2VyLlRhc2s6OihwcmVwYXJl KSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi08YnI+DQomZ3Q7IGU0Zjk4MDQ4NzFmZmA6 OmZpbmlzaGVkOiB7JzI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMyc6IDxicj4N CiZndDsgeydkZWxheSc6ICcwLjAxODA5MzEwOTEzMDknLCAnbGFzdENoZWNrJzogMTM0ODEzNDE4 MC44MjU4OTIsICdjb2RlJzo8YnI+DQomZ3Q7IDAsICd2YWxpZCc6IFRydWV9LCAnOTAxMDRjM2Qt ODM3Yi00N2RkLThjODItZGRhOTJlZWMzMGQ5JzogeydkZWxheSc6PGJyPg0KJmd0OyAnMC4wMDA5 NTU4MjAwODM2MTgnLCAnbGFzdENoZWNrJzogMTM0ODEzNDE3NS40OTMyNzcsICdjb2RlJzogMCwg PGJyPg0KJmd0OyAndmFsaWQnOiBUcnVlfX08YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OkRF QlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6dGFzazo6PGJyPg0KJmd0OyA1ODg6OlRhc2tN YW5hZ2VyLlRhc2s6OihfdXBkYXRlU3RhdGUpIFRhc2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2 LTxicj4NCiZndDsgZTRmOTgwNDg3MWZmYDo6bW92aW5nIGZyb20gc3RhdGUgcHJlcGFyaW5nIC0m Z3Q7IHN0YXRlIGZpbmlzaGVkPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0MzowMSw5MDM6OnJlc291cmNlTWFuYWdlcjo6PGJyPg0KJmd0OyA4MDk6OlJl c291cmNlTWFuYWdlci5Pd25lcjo6KHJlbGVhc2VBbGwpIE93bmVyLnJlbGVhc2VBbGwgcmVxdWVz dHMgPGJyPg0KJmd0OyB7fSByZXNvdXJjZXMge308YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM4MDU6 OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMzo6cmVzb3VyY2VNYW5hZ2VyOjo8YnI+DQom Z3Q7IDg0NDo6UmVzb3VyY2VNYW5hZ2VyLk93bmVyOjooY2FuY2VsQWxsKSBPd25lci5jYW5jZWxB bGwgcmVxdWVzdHMge308YnI+DQomZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5 LTIwIDA5OjQzOjAxLDkwMzo6dGFzazo6PGJyPg0KJmd0OyA5Nzg6OlRhc2tNYW5hZ2VyLlRhc2s6 OihfZGVjcmVmKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi08YnI+DQomZ3Q7IGU0Zjk4 MDQ4NzFmZmA6OnJlZiAwIGFib3J0aW5nIEZhbHNlPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2 OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzE6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAy NDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gNTQwMzM1ZjAtMjI2OS00YmM0LTxicj4N CiZndDsgYWFmNC0xMWJmNTk5MDAxM2ZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJy Pg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzE6 OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1g MmMzYWY1ZjUtPGJyPg0KJmd0OyBmODc3LTRlNmItOGEzNC0wNWJiZTc4YjNjODJgOjpEaXNrIGhk YyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0MzowMSw5MzI6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAyNDA6OnZtLlZt OjooX2dldERpc2tTdGF0cykgdm1JZD1gMGFjMGRkM2EtYWUyYS00OTYzLTxicj4NCiZndDsgYWRm MS05MTg5OTMwMzFmNmJgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAm Z3Q7IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzI6OmxpYnZpcnR2 bTo6PGJyPg0KJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMzVhNjViYjgt Y2JjYS00MDQ5LTxicj4NCiZndDsgYTQyOC0yODkxNGJjYjA5NGFgOjpEaXNrIGhkYyBzdGF0cyBu b3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0y MCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAyNDA6OnZtLlZtOjooX2dldERp c2tTdGF0cykgdm1JZD1gNGVmMzI1OGMtMDM4MC00OTE5LTk5MWYtPGJyPg0KJmd0OyBlZTdiZTdl OWY3ZmFgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7IFRocmVh ZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6PGJyPg0K Jmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMjUyZTZkNDYtZjM2Mi00NmFh LWE3ZWQtPGJyPg0KJmd0OyBkZDAwYTg2YWY2ZjBgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxh YmxlPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mzow MSw5MzM6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykg dm1JZD1gNTA5ZTYwOGMtZTY1Ny00NzNhLWIwMzEtPGJyPg0KJmd0OyBmMDgxMWRhOTZiZGVgOjpE aXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7IFRocmVhZC0zODA2OjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzQ6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJy Pg0KJmd0OyBmYzJhZWVhZTJlODZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0K Jmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAyLDM3MTo6X19p bml0X186Ojxicj4NCiZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpICdkZCBp Zj0vcmhldi9kYXRhLWNlbnRlci88YnI+DQomZ3Q7IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNmLTVm ZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3ggPGJyPg0KJmd0OyBpZmxhZz1kaXJlY3Qs ZnVsbGJsb2NrIGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKTxicj4NCiZndDsgJmd0OyBE dW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMiw0NjI6Ol9faW5pdF9fOjo8YnI+ DQomZ3Q7IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUNDRVNTOiAmbHQ7ZXJy Jmd0OyA9ICcxKzAgcmVjb3JkcyBpbjxicj4NCiZndDsgXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQw MDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1MjUxODMgcywgMTkuNSA8YnI+DQomZ3Q7IE1C L3Ncbic7ICZsdDtyYyZndDsgPSAwPGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAtIC08 YnI+DQomZ3Q7ICZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX188YnI+DQomZ3Q7ICZndDsgVXNlcnMgbWFpbGluZyBsaXN0PGJyPg0KJmd0OyAmZ3Q7IFVz ZXJzQG92aXJ0Lm9yZzxicj4NCiZndDsgJmd0OyA8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQu b3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1h bi9saXN0aW5mby91c2VyczwvYT48YnI+DQomZ3Q7IDxicj4NCjwvZm9udD48L3R0PjwvYm9keT48 L2h0bWw+ --0__=C9BBF0ECDFA4F6D68f9e8a93df938690918cC9BBF0ECDFA4F6D6--

On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.2012 16:02:11:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:02 Тема: Re: [Users] Fatal error during migration
Hi, well, so what is the other side saying? Maybe some connectivity problems between those 2 hosts? firewall?
Thanks, michal
Yes, firewall is not configured properly by default. If I stop it, migration done. Thanks. The default is supposed to be:
# oVirt default firewall configuration. Automatically generated by vdsm bootstrap script. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # libvirt tls -A INPUT -p tcp --dport 16514 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # Reject any other input traffic -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT did you change it manually or is the default missing anything? thanks, michal
On Sep 20, 2012, at 11:55 , Dmitriy A Pyryakov wrote:
Hello,
I have two oVirt nodes ovirt-node-iso-2.5.0-2.0.fc17.
When I try to migrate VM from one host to another, I have an error: Migration failed due to Error: Fatal error during migration.
vdsm.log: Thread-3797::DEBUG::2012-09-20 09:42:56,439::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmMigrate with ({'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'},) {} flowID [180ad979] Thread-3797::DEBUG::2012-09-20 09:42:56,439::API::441::vds:: (migrate) {'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::122::vm.Vm:: (_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Destination server is: 192.168.10.12:54321 Thread-3797::DEBUG::2012-09-20 09:42:56,441::BindingXMLRPC:: 865::vds::(wrapper) return vmMigrate with {'status': {'message': 'Migration process starting', 'code': 0}} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::124::vm.Vm:: (_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Initiating connection with destination Thread-3798::DEBUG::2012-09-20 09:42:56,452::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Thread-3798::DEBUG::2012-09-20 09:42:56,457::vm::170::vm.Vm:: (_prepareGuest) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration Process begins Thread-3798::DEBUG::2012-09-20 09:42:56,475::vm::217::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration semaphore acquired Thread-3798::DEBUG::2012-09-20 09:42:56,888::libvirtvm:: 427::vm.Vm::(_startUnderlyingMigration) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration to qemu+tls://192.168.10.12/system Thread-3799::DEBUG::2012-09-20 09:42:56,889::libvirtvm:: 325::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration downtime thread started Thread-3800::DEBUG::2012-09-20 09:42:56,890::libvirtvm:: 353::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::starting migration monitor thread Thread-3798::DEBUG::2012-09-20 09:42:56,903::libvirtvm:: 340::vm.Vm::(cancel) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::canceling migration downtime thread Thread-3798::DEBUG::2012-09-20 09:42:56,904::libvirtvm:: 390::vm.Vm::(stop) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::stopping migration monitor thread Thread-3799::DEBUG::2012-09-20 09:42:56,904::libvirtvm:: 337::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration downtime thread exiting Thread-3798::ERROR::2012-09-20 09:42:56,905::vm::176::vm.Vm:: (_recover) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168. 10.12/system Thread-3798::ERROR::2012-09-20 09:42:56,977::vm::240::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Failed to migrate Traceback (most recent call last): File "/usr/share/vdsm/vm.py", line 223, in run File "/usr/share/vdsm/libvirtvm.py", line 451, in _startUnderlyingMigration File "/usr/share/vdsm/libvirtvm.py", line 491, in f File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", line 82, in wrapper File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1034, in migrateToURI2 libvirtError: operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168.10.12/system
Thread-3802::DEBUG::2012-09-20 09:42:57,793::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmGetStats with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3802::DEBUG::2012-09-20 09:42:57,793::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Thread-3802::DEBUG::2012-09-20 09:42:57,794::BindingXMLRPC:: 865::vds::(wrapper) return vmGetStats with {'status': {'message': 'Done', 'code': 0}, 'statsList': [{'status': 'Up', 'username': 'Unknown', 'memUsage': '0', 'acpiEnable': 'true', 'pid': '22047', 'displayIp': '192.168.10.13', 'displayPort': u'5912', 'session': 'Unknown', 'displaySecurePort': u'5913', 'timeOffset': '0', 'hash': '3018874162324753083', 'pauseCode': 'NOERR', 'clientIp': '', 'kvmEnable': 'true', 'network': {u'vnet6': {'macAddr': '00:1a:4a:a8: 0a:08', 'rxDropped': '0', 'rxErrors': '0', 'txDropped': '0', 'txRate': '0.0', 'rxRate': '0.0', 'txErrors': '0', 'state': 'unknown', 'speed': '1000', 'name': u'vnet6'}}, 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'displayType': 'qxl', 'cpuUser': '13.27', 'disks': {u'hdc': {'flushLatency': '0', 'readLatency': '0', 'writeLatency': '0'}, u'hda': {'readLatency': '6183805', 'apparentsize': '11811160064', 'writeLatency': '0', 'imageID': 'd96d19f6-5a28-4fef-892f-4a04549d4e38', 'flushLatency': '0', 'readRate': '271.87', 'truesize': '11811160064', 'writeRate': '0.00'}}, 'monitorResponse': '0', 'statsAge': '0.77', 'cpuIdle': '86.73', 'elapsedTime': '3941', 'vmType': 'kvm', 'cpuSys': '0.00', 'appsList': [], 'guestIPs': '', 'nice': ''}]} Thread-3803::DEBUG::2012-09-20 09:42:57,869::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmGetMigrationStatus with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3803::DEBUG::2012-09-20 09:42:57,870::BindingXMLRPC:: 865::vds::(wrapper) return vmGetMigrationStatus with {'status': {'message': 'Fatal error during migration', 'code': 12}} Dummy-1264::DEBUG::2012-09-20 09:42:58,172::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:42:58,262::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0515109 s, 19.9 MB/s\n'; <rc> = 0 Dummy-1264::DEBUG::2012-09-20 09:43:00,271::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:00,362::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0530171 s, 19.3 MB/s\n'; <rc> = 0 Thread-21::DEBUG::2012-09-20 09:43:00,612::__init__:: 1249::Storage.Misc.excCmd::(_log) '/usr/bin/dd iflag=direct if=/dev/ 26187d25-bfcb-40c7-97d1-667705ad2223/metadata bs=4096 count=1' (cwd None) Thread-21::DEBUG::2012-09-20 09:43:00,629::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n4096 bytes (4.1 kB) copied, 0.000937698 s, 4.4 MB/s\n'; <rc> = 0 Thread-3805::DEBUG::2012-09-20 09:43:01,901::task:: 588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::moving from state init -> state preparing Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils:: 37::dispatcher::(wrapper) Run and protect: repoStats(options=None) Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils:: 39::dispatcher::(wrapper) Run and protect: repoStats, Return response: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0. 0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0. 000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task:: 1172::TaskManager.Task::(prepare) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::finished: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task:: 588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::moving from state preparing -> state finished Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager:: 809::ResourceManager.Owner::(releaseAll) Owner.releaseAll requests {} resources {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager:: 844::ResourceManager.Owner::(cancelAll) Owner.cancelAll requests {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::task:: 978::TaskManager.Task::(_decref) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::ref 0 aborting False Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`540335f0-2269-4bc4- aaf4-11bf5990013f`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2c3af5f5- f877-4e6b-8a34-05bbe78b3c82`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`0ac0dd3a-ae2a-4963- adf1-918993031f6b`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`35a65bb8-cbca-4049- a428-28914bcb094a`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`4ef3258c-0380-4919-991f- ee7be7e9f7fa`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`252e6d46-f362-46aa-a7ed- dd00a86af6f0`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`509e608c-e657-473a-b031- f0811da96bde`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,934::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Dummy-1264::DEBUG::2012-09-20 09:43:02,371::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:02,462::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0525183 s, 19.5 MB/s\n'; <rc> = 0
- - _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

--0__=C9BBF0ECDFABE82D8f9e8a93df938690918cC9BBF0ECDFABE82D Content-type: text/plain; charset=KOI8-R Content-transfer-encoding: base64 TWljaGFsIFNrcml2YW5layA8bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tPiDOwdDJ08HOzyAy MC4wOS4yMDEyDQoxNjoxMzoxNjoNCg0KPiDv1DogTWljaGFsIFNrcml2YW5layA8bWljaGFsLnNr cml2YW5la0ByZWRoYXQuY29tPg0KPiDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgPERQeXJ5YWtv dkBla2IuYmVlbGluZS5ydT4NCj4g68/QydE6IHVzZXJzQG92aXJ0Lm9yZw0KPiDkwdTBOiAyMC4w OS4yMDEyIDE2OjEzDQo+IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdy YXRpb24NCj4NCj4NCj4gT24gU2VwIDIwLCAyMDEyLCBhdCAxMjowNyAsIERtaXRyaXkgQSBQeXJ5 YWtvdiB3cm90ZToNCj4NCj4gPiBNaWNoYWwgU2tyaXZhbmVrIDxtaWNoYWwuc2tyaXZhbmVrQHJl ZGhhdC5jb20+IM7B0MnTwc7PDQoyMC4wOS4yMDEyMTY6MDI6MTE6DQo+ID4NCj4gPiA+IO/UOiBN aWNoYWwgU2tyaXZhbmVrIDxtaWNoYWwuc2tyaXZhbmVrQHJlZGhhdC5jb20+DQo+ID4gPiDrz83V OiBEbWl0cml5IEEgUHlyeWFrb3YgPERQeXJ5YWtvdkBla2IuYmVlbGluZS5ydT4NCj4gPiA+IOvP 0MnROiB1c2Vyc0BvdmlydC5vcmcNCj4gPiA+IOTB1ME6IDIwLjA5LjIwMTIgMTY6MDINCj4gPiA+ IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb24NCj4gPiA+DQo+ ID4gPiBIaSwNCj4gPiA+IHdlbGwsIHNvIHdoYXQgaXMgdGhlIG90aGVyIHNpZGUgc2F5aW5nPyBN YXliZSBzb21lIGNvbm5lY3Rpdml0eQ0KPiA+ID4gcHJvYmxlbXMgYmV0d2VlbiB0aG9zZSAyIGhv c3RzPyBmaXJld2FsbD8NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBtaWNoYWwNCj4gPg0K PiA+IFllcywgZmlyZXdhbGwgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkgYnkgZGVmYXVsdC4g SWYgSSBzdG9wIGl0LA0KPiBtaWdyYXRpb24gZG9uZS4NCj4gPiBUaGFua3MuDQo+IFRoZSBkZWZh dWx0IGlzIHN1cHBvc2VkIHRvIGJlOg0KPg0KPiAjIG9WaXJ0IGRlZmF1bHQgZmlyZXdhbGwgY29u ZmlndXJhdGlvbi4gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkNCj4gdmRzbSBib290c3RyYXAg c2NyaXB0Lg0KPiAqZmlsdGVyDQo+IDpJTlBVVCBBQ0NFUFQgWzA6MF0NCj4gOkZPUldBUkQgQUND RVBUIFswOjBdDQo+IDpPVVRQVVQgQUNDRVBUIFswOjBdDQo+IC1BIElOUFVUIC1tIHN0YXRlIC0t c3RhdGUgRVNUQUJMSVNIRUQsUkVMQVRFRCAtaiBBQ0NFUFQNCj4gLUEgSU5QVVQgLXAgaWNtcCAt aiBBQ0NFUFQNCj4gLUEgSU5QVVQgLWkgbG8gLWogQUNDRVBUDQo+ICMgdmRzbQ0KPiAtQSBJTlBV VCAtcCB0Y3AgLS1kcG9ydCA1NDMyMSAtaiBBQ0NFUFQNCj4gIyBsaWJ2aXJ0IHRscw0KPiAtQSBJ TlBVVCAtcCB0Y3AgLS1kcG9ydCAxNjUxNCAtaiBBQ0NFUFQNCj4gIyBTU0gNCj4gLUEgSU5QVVQg LXAgdGNwIC0tZHBvcnQgMjIgLWogQUNDRVBUDQo+ICMgZ3Vlc3QgY29uc29sZXMNCj4gLUEgSU5Q VVQgLXAgdGNwIC1tIG11bHRpcG9ydCAtLWRwb3J0cyA1NjM0OjYxNjYgLWogQUNDRVBUDQo+ICMg bWlncmF0aW9uDQo+IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNDkxNTI6 NDkyMTYgLWogQUNDRVBUDQo+ICMgc25tcA0KPiAtQSBJTlBVVCAtcCB1ZHAgLS1kcG9ydCAxNjEg LWogQUNDRVBUDQo+ICMgUmVqZWN0IGFueSBvdGhlciBpbnB1dCB0cmFmZmljDQo+IC1BIElOUFVU IC1qIFJFSkVDVCAtLXJlamVjdC13aXRoIGljbXAtaG9zdC1wcm9oaWJpdGVkDQo+IC1BIEZPUldB UkQgLW0gcGh5c2RldiAhIC0tcGh5c2Rldi1pcy1icmlkZ2VkIC1qIFJFSkVDVCAtLXJlamVjdC13 aXRoDQo+IGljbXAtaG9zdC1wcm9oaWJpdGVkDQo+IENPTU1JVA0KDQpteSBkZWZhdWx0IGlzOg0K DQojIGNhdCAvZXRjL3N5c2NvbmZpZy9pcHRhYmxlcw0KIyBvVmlydCBhdXRvbWF0aWNhbGx5IGdl bmVyYXRlZCBmaXJld2FsbCBjb25maWd1cmF0aW9uDQoqZmlsdGVyDQo6SU5QVVQgQUNDRVBUIFsw OjBdDQo6Rk9SV0FSRCBBQ0NFUFQgWzA6MF0NCjpPVVRQVVQgQUNDRVBUIFswOjBdDQotQSBJTlBV VCAtbSBzdGF0ZSAtLXN0YXRlIEVTVEFCTElTSEVELFJFTEFURUQgLWogQUNDRVBUDQotQSBJTlBV VCAtcCBpY21wIC1qIEFDQ0VQVA0KLUEgSU5QVVQgLWkgbG8gLWogQUNDRVBUDQojdmRzbQ0KLUEg SU5QVVQgLXAgdGNwIC0tZHBvcnQgNTQzMjEgLWogQUNDRVBUDQojIFNTSA0KLUEgSU5QVVQgLXAg dGNwIC0tZHBvcnQgMjIgLWogQUNDRVBUDQojIGd1ZXN0IGNvbnNvbGVzDQotQSBJTlBVVCAtcCB0 Y3AgLW0gbXVsdGlwb3J0IC0tZHBvcnRzIDU2MzQ6NjE2NiAtaiBBQ0NFUFQNCiMgbWlncmF0aW9u DQotQSBJTlBVVCAtcCB0Y3AgLW0gbXVsdGlwb3J0IC0tZHBvcnRzIDQ5MTUyOjQ5MjE2IC1qIEFD Q0VQVA0KIyBzbm1wDQotQSBJTlBVVCAtcCB1ZHAgLS1kcG9ydCAxNjEgLWogQUNDRVBUDQojDQot QSBJTlBVVCAtaiBSRUpFQ1QgLS1yZWplY3Qtd2l0aCBpY21wLWhvc3QtcHJvaGliaXRlZA0KLUEg Rk9SV0FSRCAtbSBwaHlzZGV2ICEgLS1waHlzZGV2LWlzLWJyaWRnZWQgLWogUkVKRUNUIC0tcmVq ZWN0LXdpdGgNCmljbXAtaG9zdC1wcm9oaWJpdGVkDQpDT01NSVQNCg0KPg0KPiBkaWQgeW91IGNo YW5nZSBpdCBtYW51YWxseSBvciBpcyB0aGUgZGVmYXVsdCBtaXNzaW5nIGFueXRoaW5nPw0KDQpk ZWZhdWx0IG1pc3NpbmcgImxpYnZpcnQgdGxzIiBmaWVsZC4NCg0KPiB0aGFua3MsDQo+IG1pY2hh bA0KPiA+ID4gT24gU2VwIDIwLCAyMDEyLCBhdCAxMTo1NSAsIERtaXRyaXkgQSBQeXJ5YWtvdiB3 cm90ZToNCj4gPiA+DQo+ID4gPiA+IEhlbGxvLA0KPiA+ID4gPg0KPiA+ID4gPiBJIGhhdmUgdHdv IG9WaXJ0IG5vZGVzIG92aXJ0LW5vZGUtaXNvLTIuNS4wLTIuMC5mYzE3Lg0KPiA+ID4gPg0KPiA+ ID4gPiBXaGVuIEkgdHJ5IHRvIG1pZ3JhdGUgVk0gZnJvbSBvbmUgaG9zdCB0byBhbm90aGVyLCBJ IGhhdmUgYW4NCj4gPiA+IGVycm9yOiBNaWdyYXRpb24gZmFpbGVkIGR1ZSB0byBFcnJvcjogRmF0 YWwgZXJyb3IgZHVyaW5nIG1pZ3JhdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4gdmRzbS5sb2c6DQo+ ID4gPiA+IFRocmVhZC0zNzk3OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0Mzk6OkJpbmRp bmdYTUxSUEM6Og0KPiA+ID4gODU5Ojp2ZHM6Oih3cmFwcGVyKSBjbGllbnQgWzE5Mi4xNjguMTAu MTBdOjpjYWxsIHZtTWlncmF0ZSB3aXRoDQo+ID4gPiAoeydzcmMnOiAnMTkyLjE2OC4xMC4xMycs ICdkc3QnOiAnMTkyLjE2OC4xMC4xMjo1NDMyMScsICd2bUlkJzoNCj4gPiA+ICcyYmYzZTZlYi00 OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAnbWV0aG9kJzogJ29ubGluZSd9LCkge30NCj4g PiA+IGZsb3dJRCBbMTgwYWQ5NzldDQo+ID4gPiA+IFRocmVhZC0zNzk3OjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0Mjo1Niw0Mzk6OkFQSTo6NDQxOjp2ZHM6Og0KPiA+ID4gKG1pZ3JhdGUpIHsnc3Jj JzogJzE5Mi4xNjguMTAuMTMnLCAnZHN0JzogJzE5Mi4xNjguMTAuMTI6NTQzMjEnLA0KPiA+ID4g J3ZtSWQnOiAnMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywgJ21ldGhvZCc6 ICdvbmxpbmUnfQ0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6 NTYsNDQxOjp2bTo6MTIyOjp2bS5WbTo6DQo+ID4gPiAoX3NldHVwVmRzQ29ubmVjdGlvbikgdm1J ZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ID4gPiBmYzJhZWVhZTJlODZgOjpEZXN0aW5h dGlvbiBzZXJ2ZXIgaXM6IDE5Mi4xNjguMTAuMTI6NTQzMjENCj4gPiA+ID4gVGhyZWFkLTM3OTc6 OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ0MTo6QmluZGluZ1hNTFJQQzo6DQo+ID4gPiA4 NjU6OnZkczo6KHdyYXBwZXIpIHJldHVybiB2bU1pZ3JhdGUgd2l0aCB7J3N0YXR1cyc6IHsnbWVz c2FnZSc6DQo+ID4gPiAnTWlncmF0aW9uIHByb2Nlc3Mgc3RhcnRpbmcnLCAnY29kZSc6IDB9fQ0K PiA+ID4gPiBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDQxOjp2bTo6 MTI0Ojp2bS5WbTo6DQo+ID4gPiAoX3NldHVwVmRzQ29ubmVjdGlvbikgdm1JZD1gMmJmM2U2ZWIt NDllNC00MmM3LTgxODgtDQo+ID4gPiBmYzJhZWVhZTJlODZgOjpJbml0aWF0aW5nIGNvbm5lY3Rp b24gd2l0aCBkZXN0aW5hdGlvbg0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDkt MjAgMDk6NDI6NTYsNDUyOjpsaWJ2aXJ0dm06Og0KPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNr U3RhdHMpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiA+ID4gZmMyYWVlYWUyZTg2 YDo6RGlzayBoZGMgc3RhdHMgbm90IGF2YWlsYWJsZQ0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDU3Ojp2bTo6MTcwOjp2bS5WbTo6DQo+ID4gPiAoX3By ZXBhcmVHdWVzdCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ID4gPiBmYzJhZWVh ZTJlODZgOjptaWdyYXRpb24gUHJvY2VzcyBiZWdpbnMNCj4gPiA+ID4gVGhyZWFkLTM3OTg6OkRF QlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ3NTo6dm06OjIxNzo6dm0uVm06OihydW4pDQo+ID4g PiB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjptaWdyYXRpb24g c2VtYXBob3JlDQphY3F1aXJlZA0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDkt MjAgMDk6NDI6NTYsODg4OjpsaWJ2aXJ0dm06Og0KPiA+ID4gNDI3Ojp2bS5WbTo6KF9zdGFydFVu ZGVybHlpbmdNaWdyYXRpb24pDQo+ID4gPiB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1m YzJhZWVhZTJlODZgOjpzdGFydGluZyBtaWdyYXRpb24gdG8NCj4gPiA+IHFlbXUrdGxzOi8vMTky LjE2OC4xMC4xMi9zeXN0ZW0NCj4gPiA+ID4gVGhyZWFkLTM3OTk6OkRFQlVHOjoyMDEyLTA5LTIw IDA5OjQyOjU2LDg4OTo6bGlidmlydHZtOjoNCj4gPiA+IDMyNTo6dm0uVm06OihydW4pIHZtSWQ9 YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiA+ID4gZmMyYWVlYWUyZTg2YDo6bWlncmF0aW9u IGRvd250aW1lIHRocmVhZCBzdGFydGVkDQo+ID4gPiA+IFRocmVhZC0zODAwOjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0Mjo1Niw4OTA6OmxpYnZpcnR2bTo6DQo+ID4gPiAzNTM6OnZtLlZtOjoocnVu KSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+IGZjMmFlZWFlMmU4NmA6OnN0 YXJ0aW5nIG1pZ3JhdGlvbiBtb25pdG9yIHRocmVhZA0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTAzOjpsaWJ2aXJ0dm06Og0KPiA+ID4gMzQwOjp2bS5W bTo6KGNhbmNlbCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ID4gPiBmYzJhZWVh ZTJlODZgOjpjYW5jZWxpbmcgbWlncmF0aW9uIGRvd250aW1lIHRocmVhZA0KPiA+ID4gPiBUaHJl YWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTA0OjpsaWJ2aXJ0dm06Og0KPiA+ ID4gMzkwOjp2bS5WbTo6KHN0b3ApIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiA+ ID4gZmMyYWVlYWUyZTg2YDo6c3RvcHBpbmcgbWlncmF0aW9uIG1vbml0b3IgdGhyZWFkDQo+ID4g PiA+IFRocmVhZC0zNzk5OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6OmxpYnZpcnR2 bTo6DQo+ID4gPiAzMzc6OnZtLlZtOjoocnVuKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4 OC0NCj4gPiA+IGZjMmFlZWFlMmU4NmA6Om1pZ3JhdGlvbiBkb3dudGltZSB0aHJlYWQgZXhpdGlu Zw0KPiA+ID4gPiBUaHJlYWQtMzc5ODo6RVJST1I6OjIwMTItMDktMjAgMDk6NDI6NTYsOTA1Ojp2 bTo6MTc2Ojp2bS5WbTo6DQo+ID4gPiAoX3JlY292ZXIpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJj Ny04MTg4LWZjMmFlZWFlMmU4NmA6Om9wZXJhdGlvbg0KPiA+ID4gZmFpbGVkOiBGYWlsZWQgdG8g Y29ubmVjdCB0byByZW1vdGUgbGlidmlydCBVUkkgcWVtdSt0bHM6Ly8xOTIuMTY4Lg0KPiA+ID4g MTAuMTIvc3lzdGVtDQo+ID4gPiA+IFRocmVhZC0zNzk4OjpFUlJPUjo6MjAxMi0wOS0yMCAwOTo0 Mjo1Niw5Nzc6OnZtOjoyNDA6OnZtLlZtOjoocnVuKQ0KPiA+ID4gdm1JZD1gMmJmM2U2ZWItNDll NC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6RmFpbGVkIHRvIG1pZ3JhdGUNCj4gPiA+ID4gVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPiA+ID4gPiBGaWxlICIvdXNyL3NoYXJl L3Zkc20vdm0ucHkiLCBsaW5lIDIyMywgaW4gcnVuDQo+ID4gPiA+IEZpbGUgIi91c3Ivc2hhcmUv dmRzbS9saWJ2aXJ0dm0ucHkiLCBsaW5lIDQ1MSwgaW4NCj4gX3N0YXJ0VW5kZXJseWluZ01pZ3Jh dGlvbg0KPiA+ID4gPiBGaWxlICIvdXNyL3NoYXJlL3Zkc20vbGlidmlydHZtLnB5IiwgbGluZSA0 OTEsIGluIGYNCj4gPiA+ID4gRmlsZSAiL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv dmRzbS9saWJ2aXJ0Y29ubmVjdGlvbi5weSIsDQo+ID4gPiBsaW5lIDgyLCBpbiB3cmFwcGVyDQo+ ID4gPiA+IEZpbGUgIi91c3IvbGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmlydC5w eSIsIGxpbmUgMTAzNCwNCj4gPiA+IGluIG1pZ3JhdGVUb1VSSTINCj4gPiA+ID4gbGlidmlydEVy cm9yOiBvcGVyYXRpb24gZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVjdCB0byByZW1vdGUNCj4gPiA+ IGxpYnZpcnQgVVJJIHFlbXUrdGxzOi8vMTkyLjE2OC4xMC4xMi9zeXN0ZW0NCj4gPiA+ID4NCj4g PiA+ID4gVGhyZWFkLTM4MDI6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU3LDc5Mzo6QmluZGlu Z1hNTFJQQzo6DQo+ID4gPiA4NTk6OnZkczo6KHdyYXBwZXIpIGNsaWVudCBbMTkyLjE2OC4xMC4x MF06OmNhbGwgdm1HZXRTdGF0cyB3aXRoDQo+ID4gPiAoJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4 LWZjMmFlZWFlMmU4NicsKSB7fQ0KPiA+ID4gPiBUaHJlYWQtMzgwMjo6REVCVUc6OjIwMTItMDkt MjAgMDk6NDI6NTcsNzkzOjpsaWJ2aXJ0dm06Og0KPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNr U3RhdHMpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiA+ID4gZmMyYWVlYWUyZTg2 YDo6RGlzayBoZGMgc3RhdHMgbm90IGF2YWlsYWJsZQ0KPiA+ID4gPiBUaHJlYWQtMzgwMjo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTcsNzk0OjpCaW5kaW5nWE1MUlBDOjoNCj4gPiA+IDg2NTo6 dmRzOjood3JhcHBlcikgcmV0dXJuIHZtR2V0U3RhdHMgd2l0aCB7J3N0YXR1cyc6IHsnbWVzc2Fn ZSc6DQo+ID4gPiAnRG9uZScsICdjb2RlJzogMH0sICdzdGF0c0xpc3QnOiBbeydzdGF0dXMnOiAn VXAnLCAndXNlcm5hbWUnOg0KPiA+ID4gJ1Vua25vd24nLCAnbWVtVXNhZ2UnOiAnMCcsICdhY3Bp RW5hYmxlJzogJ3RydWUnLCAncGlkJzogJzIyMDQ3JywNCj4gPiA+ICdkaXNwbGF5SXAnOiAnMTky LjE2OC4xMC4xMycsICdkaXNwbGF5UG9ydCc6IHUnNTkxMicsICdzZXNzaW9uJzoNCj4gPiA+ICdV bmtub3duJywgJ2Rpc3BsYXlTZWN1cmVQb3J0JzogdSc1OTEzJywgJ3RpbWVPZmZzZXQnOiAnMCcs ICdoYXNoJzoNCj4gPiA+ICczMDE4ODc0MTYyMzI0NzUzMDgzJywgJ3BhdXNlQ29kZSc6ICdOT0VS UicsICdjbGllbnRJcCc6ICcnLA0KPiA+ID4gJ2t2bUVuYWJsZSc6ICd0cnVlJywgJ25ldHdvcmsn OiB7dSd2bmV0Nic6IHsnbWFjQWRkcic6ICcwMDoxYTo0YTphODoNCj4gPiA+IDBhOjA4JywgJ3J4 RHJvcHBlZCc6ICcwJywgJ3J4RXJyb3JzJzogJzAnLCAndHhEcm9wcGVkJzogJzAnLA0KPiA+ID4g J3R4UmF0ZSc6ICcwLjAnLCAncnhSYXRlJzogJzAuMCcsICd0eEVycm9ycyc6ICcwJywgJ3N0YXRl JzoNCj4gPiA+ICd1bmtub3duJywgJ3NwZWVkJzogJzEwMDAnLCAnbmFtZSc6IHUndm5ldDYnfX0s ICd2bUlkJzoNCj4gPiA+ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAn ZGlzcGxheVR5cGUnOiAncXhsJywNCj4gPiA+ICdjcHVVc2VyJzogJzEzLjI3JywgJ2Rpc2tzJzog e3UnaGRjJzogeydmbHVzaExhdGVuY3knOiAnMCcsDQo+ID4gPiAncmVhZExhdGVuY3knOiAnMCcs ICd3cml0ZUxhdGVuY3knOiAnMCd9LCB1J2hkYSc6IHsncmVhZExhdGVuY3knOg0KPiA+ID4gJzYx ODM4MDUnLCAnYXBwYXJlbnRzaXplJzogJzExODExMTYwMDY0JywgJ3dyaXRlTGF0ZW5jeSc6ICcw JywNCj4gPiA+ICdpbWFnZUlEJzogJ2Q5NmQxOWY2LTVhMjgtNGZlZi04OTJmLTRhMDQ1NDlkNGUz OCcsICdmbHVzaExhdGVuY3knOg0KPiA+ID4gJzAnLCAncmVhZFJhdGUnOiAnMjcxLjg3JywgJ3Ry dWVzaXplJzogJzExODExMTYwMDY0JywgJ3dyaXRlUmF0ZSc6DQo+ID4gPiAnMC4wMCd9fSwgJ21v bml0b3JSZXNwb25zZSc6ICcwJywgJ3N0YXRzQWdlJzogJzAuNzcnLCAnY3B1SWRsZSc6DQo+ID4g PiAnODYuNzMnLCAnZWxhcHNlZFRpbWUnOiAnMzk0MScsICd2bVR5cGUnOiAna3ZtJywgJ2NwdVN5 cyc6ICcwLjAwJywNCj4gPiA+ICdhcHBzTGlzdCc6IFtdLCAnZ3Vlc3RJUHMnOiAnJywgJ25pY2Un OiAnJ31dfQ0KPiA+ID4gPiBUaHJlYWQtMzgwMzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcs ODY5OjpCaW5kaW5nWE1MUlBDOjoNCj4gPiA+IDg1OTo6dmRzOjood3JhcHBlcikgY2xpZW50IFsx OTIuMTY4LjEwLjEwXTo6Y2FsbA0KPiA+ID4gdm1HZXRNaWdyYXRpb25TdGF0dXMgd2l0aCAoJzJi ZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NicsKQ0Ke30NCj4gPiA+ID4gVGhyZWFk LTM4MDM6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU3LDg3MDo6QmluZGluZ1hNTFJQQzo6DQo+ ID4gPiA4NjU6OnZkczo6KHdyYXBwZXIpIHJldHVybiB2bUdldE1pZ3JhdGlvblN0YXR1cyB3aXRo IHsnc3RhdHVzJzoNCj4gPiA+IHsnbWVzc2FnZSc6ICdGYXRhbCBlcnJvciBkdXJpbmcgbWlncmF0 aW9uJywgJ2NvZGUnOiAxMn19DQo+ID4gPiA+IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIw IDA5OjQyOjU4LDE3Mjo6X19pbml0X186Og0KPiA+ID4gMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0Nt ZDo6KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci8NCj4gPiA+IDMzMjY5NGJiLTM2NGEt NDM0ZS1iMjNmLTVmZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3gNCj4gPiA+IGlmbGFn PWRpcmVjdCxmdWxsYmxvY2sgY291bnQ9MSBicz0xMDI0MDAwJyAoY3dkIE5vbmUpDQo+ID4gPiA+ IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU4LDI2Mjo6X19pbml0X186Og0K PiA+ID4gMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6IDxlcnI+ID0g JzErMCByZWNvcmRzIGluDQo+ID4gPiBcbjErMCByZWNvcmRzIG91dFxuMTAyNDAwMCBieXRlcyAo MS4wIE1CKSBjb3BpZWQsIDAuMDUxNTEwOSBzLCAxOS45DQo+ID4gPiBNQi9zXG4nOyA8cmM+ID0g MA0KPiA+ID4gPiBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMCwyNzE6Ol9f aW5pdF9fOjoNCj4gPiA+IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSAnZGQgaWY9 L3JoZXYvZGF0YS1jZW50ZXIvDQo+ID4gPiAzMzI2OTRiYi0zNjRhLTQzNGUtYjIzZi01ZmVmOTg1 ZDNjYmQvbWFzdGVyc2QvZG9tX21kL2luYm94DQo+ID4gPiBpZmxhZz1kaXJlY3QsZnVsbGJsb2Nr IGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKQ0KPiA+ID4gPiBEdW1teS0xMjY0OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0MzowMCwzNjI6Ol9faW5pdF9fOjoNCj4gPiA+IDEyNDk6OlN0b3Jh Z2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUNDRVNTOiA8ZXJyPiA9ICcxKzAgcmVjb3JkcyBpbg0K PiA+ID4gXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAw LjA1MzAxNzEgcywgMTkuMw0KPiA+ID4gTUIvc1xuJzsgPHJjPiA9IDANCj4gPiA+ID4gVGhyZWFk LTIxOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMCw2MTI6Ol9faW5pdF9fOjoNCj4gPiA+IDEy NDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSAnL3Vzci9iaW4vZGQgaWZsYWc9ZGlyZWN0 IGlmPS9kZXYvDQo+ID4gPiAyNjE4N2QyNS1iZmNiLTQwYzctOTdkMS02Njc3MDVhZDIyMjMvbWV0 YWRhdGEgYnM9NDA5NiBjb3VudD0xJyAoY3dkDQpOb25lKQ0KPiA+ID4gPiBUaHJlYWQtMjE6OkRF QlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAwLDYyOTo6X19pbml0X186Og0KPiA+ID4gMTI0OTo6U3Rv cmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6IDxlcnI+ID0gJzErMCByZWNvcmRzIGlu DQo+ID4gPiBcbjErMCByZWNvcmRzIG91dFxuNDA5NiBieXRlcyAoNC4xIGtCKSBjb3BpZWQsIDAu MDAwOTM3Njk4IHMsIDQuNA0KPiA+ID4gTUIvc1xuJzsgPHJjPiA9IDANCj4gPiA+ID4gVGhyZWFk LTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMTo6dGFzazo6DQo+ID4gPiA1ODg6 OlRhc2tNYW5hZ2VyLlRhc2s6OihfdXBkYXRlU3RhdGUpIFRhc2s9YGZmMTM0ZWNjLTU1OTctNGE4 My04MWQ2LQ0KPiA+ID4gZTRmOTgwNDg3MWZmYDo6bW92aW5nIGZyb20gc3RhdGUgaW5pdCAtPiBz dGF0ZSBwcmVwYXJpbmcNCj4gPiA+ID4gVGhyZWFkLTM4MDU6OklORk86OjIwMTItMDktMjAgMDk6 NDM6MDEsOTAyOjpsb2dVdGlsczo6DQo+ID4gPiAzNzo6ZGlzcGF0Y2hlcjo6KHdyYXBwZXIpIFJ1 biBhbmQgcHJvdGVjdDogcmVwb1N0YXRzKG9wdGlvbnM9Tm9uZSkNCj4gPiA+ID4gVGhyZWFkLTM4 MDU6OklORk86OjIwMTItMDktMjAgMDk6NDM6MDEsOTAyOjpsb2dVdGlsczo6DQo+ID4gPiAzOTo6 ZGlzcGF0Y2hlcjo6KHdyYXBwZXIpIFJ1biBhbmQgcHJvdGVjdDogcmVwb1N0YXRzLCBSZXR1cm4N Cj4gPiA+IHJlc3BvbnNlOiB7JzI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMyc6 IHsnZGVsYXknOiAnMC4NCj4gPiA+IDAxODA5MzEwOTEzMDknLCAnbGFzdENoZWNrJzogMTM0ODEz NDE4MC44MjU4OTIsICdjb2RlJzogMCwgJ3ZhbGlkJzoNCj4gPiA+IFRydWV9LCAnOTAxMDRjM2Qt ODM3Yi00N2RkLThjODItZGRhOTJlZWMzMGQ5JzogeydkZWxheSc6ICcwLg0KPiA+ID4gMDAwOTU1 ODIwMDgzNjE4JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQxNzUuNDkzMjc3LCAnY29kZSc6IDAsDQo+ ICd2YWxpZCc6IFRydWV9fQ0KPiA+ID4gPiBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAg MDk6NDM6MDEsOTAyOjp0YXNrOjoNCj4gPiA+IDExNzI6OlRhc2tNYW5hZ2VyLlRhc2s6OihwcmVw YXJlKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gPiA+IGU0Zjk4MDQ4NzFmZmA6 OmZpbmlzaGVkOiB7JzI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMyc6DQo+ID4g PiB7J2RlbGF5JzogJzAuMDE4MDkzMTA5MTMwOScsICdsYXN0Q2hlY2snOiAxMzQ4MTM0MTgwLjgy NTg5MiwgJ2NvZGUnOg0KPiA+ID4gMCwgJ3ZhbGlkJzogVHJ1ZX0sICc5MDEwNGMzZC04MzdiLTQ3 ZGQtOGM4Mi1kZGE5MmVlYzMwZDknOiB7J2RlbGF5JzoNCj4gPiA+ICcwLjAwMDk1NTgyMDA4MzYx OCcsICdsYXN0Q2hlY2snOiAxMzQ4MTM0MTc1LjQ5MzI3NywgJ2NvZGUnOiAwLA0KPiA+ID4gJ3Zh bGlkJzogVHJ1ZX19DQo+ID4gPiA+IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0 MzowMSw5MDI6OnRhc2s6Og0KPiA+ID4gNTg4OjpUYXNrTWFuYWdlci5UYXNrOjooX3VwZGF0ZVN0 YXRlKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gPiA+IGU0Zjk4MDQ4NzFmZmA6 Om1vdmluZyBmcm9tIHN0YXRlIHByZXBhcmluZyAtPiBzdGF0ZSBmaW5pc2hlZA0KPiA+ID4gPiBU aHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTAzOjpyZXNvdXJjZU1hbmFn ZXI6Og0KPiA+ID4gODA5OjpSZXNvdXJjZU1hbmFnZXIuT3duZXI6OihyZWxlYXNlQWxsKSBPd25l ci5yZWxlYXNlQWxsIHJlcXVlc3RzDQo+ID4gPiB7fSByZXNvdXJjZXMge30NCj4gPiA+ID4gVGhy ZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMzo6cmVzb3VyY2VNYW5hZ2Vy OjoNCj4gPiA+IDg0NDo6UmVzb3VyY2VNYW5hZ2VyLk93bmVyOjooY2FuY2VsQWxsKSBPd25lci5j YW5jZWxBbGwgcmVxdWVzdHMge30NCj4gPiA+ID4gVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5 LTIwIDA5OjQzOjAxLDkwMzo6dGFzazo6DQo+ID4gPiA5Nzg6OlRhc2tNYW5hZ2VyLlRhc2s6Oihf ZGVjcmVmKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gPiA+IGU0Zjk4MDQ4NzFm ZmA6OnJlZiAwIGFib3J0aW5nIEZhbHNlDQo+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0MzowMSw5MzE6OmxpYnZpcnR2bTo6DQo+ID4gPiAyNDA6OnZtLlZtOjooX2dl dERpc2tTdGF0cykgdm1JZD1gNTQwMzM1ZjAtMjI2OS00YmM0LQ0KPiA+ID4gYWFmNC0xMWJmNTk5 MDAxM2ZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4gPiA+IFRocmVhZC0zODA2 OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzE6OmxpYnZpcnR2bTo6DQo+ID4gPiAyNDA6 OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmMzYWY1ZjUtDQo+ID4gPiBmODc3LTRlNmIt OGEzNC0wNWJiZTc4YjNjODJgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4gPiA+ IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzI6OmxpYnZpcnR2bTo6 DQo+ID4gPiAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMGFjMGRkM2EtYWUyYS00 OTYzLQ0KPiA+ID4gYWRmMS05MTg5OTMwMzFmNmJgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxh YmxlDQo+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzI6 OmxpYnZpcnR2bTo6DQo+ID4gPiAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMzVh NjViYjgtY2JjYS00MDQ5LQ0KPiA+ID4gYTQyOC0yODkxNGJjYjA5NGFgOjpEaXNrIGhkYyBzdGF0 cyBub3QgYXZhaWxhYmxlDQo+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0 cykgdm1JZD1gNGVmMzI1OGMtMDM4MC00OTE5LTk5MWYtDQo+ID4gPiBlZTdiZTdlOWY3ZmFgOjpE aXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiAyNDA6OnZtLlZtOjoo X2dldERpc2tTdGF0cykgdm1JZD1gMjUyZTZkNDYtZjM2Mi00NmFhLWE3ZWQtDQo+ID4gPiBkZDAw YTg2YWY2ZjBgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4gPiA+IFRocmVhZC0z ODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiAy NDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gNTA5ZTYwOGMtZTY1Ny00NzNhLWIwMzEt DQo+ID4gPiBmMDgxMWRhOTZiZGVgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ID4g PiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzQ6OmxpYnZpcnR2 bTo6DQo+ID4gPiAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmJmM2U2ZWItNDll NC00MmM3LTgxODgtDQo+ID4gPiBmYzJhZWVhZTJlODZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZh aWxhYmxlDQo+ID4gPiA+IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAyLDM3 MTo6X19pbml0X186Og0KPiA+ID4gMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpICdk ZCBpZj0vcmhldi9kYXRhLWNlbnRlci8NCj4gPiA+IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNmLTVm ZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3gNCj4gPiA+IGlmbGFnPWRpcmVjdCxmdWxs YmxvY2sgY291bnQ9MSBicz0xMDI0MDAwJyAoY3dkIE5vbmUpDQo+ID4gPiA+IER1bW15LTEyNjQ6 OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAyLDQ2Mjo6X19pbml0X186Og0KPiA+ID4gMTI0OTo6 U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6IDxlcnI+ID0gJzErMCByZWNvcmRz IGluDQo+ID4gPiBcbjErMCByZWNvcmRzIG91dFxuMTAyNDAwMCBieXRlcyAoMS4wIE1CKSBjb3Bp ZWQsIDAuMDUyNTE4MyBzLCAxOS41DQo+ID4gPiBNQi9zXG4nOyA8cmM+ID0gMA0KPiA+ID4gPg0K PiA+ID4gPiAtIC0NCj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiA+ID4gVXNlcnMgbWFpbGluZyBsaXN0DQo+ID4gPiA+IFVzZXJzQG92 aXJ0Lm9yZw0KPiA+ID4gPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v dXNlcnMNCj4gPiA+DQo+ID4NCj4= --0__=C9BBF0ECDFABE82D8f9e8a93df938690918cC9BBF0ECDFABE82D Content-type: text/html; charset=KOI8-R Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48dHQ+PGZvbnQgc2l6ZT0iMiI+TWljaGFsIFNrcml2YW5layAmbHQ7 bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tJmd0OyDOwdDJ08HOzyAyMC4wOS4yMDEyIDE2OjEz OjE2Ojxicj4NCjxicj4NCiZndDsg79Q6IE1pY2hhbCBTa3JpdmFuZWsgJmx0O21pY2hhbC5za3Jp dmFuZWtAcmVkaGF0LmNvbSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ Jmd0OyDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgJmx0O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5y dSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyDrz9DJ0TogdXNl cnNAb3ZpcnQub3JnPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiZndDsg5MHU wTogMjAuMDkuMjAxMiAxNjoxMzwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4m Z3Q7IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248L2ZvbnQ+ PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsg T24gU2VwIDIwLCAyMDEyLCBhdCAxMjowNyAsIERtaXRyaXkgQSBQeXJ5YWtvdiB3cm90ZTo8YnI+ DQomZ3Q7IDxicj4NCiZndDsgJmd0OyBNaWNoYWwgU2tyaXZhbmVrICZsdDttaWNoYWwuc2tyaXZh bmVrQHJlZGhhdC5jb20mZ3Q7IM7B0MnTwc7PIDIwLjA5LjIwMTIxNjowMjoxMTo8YnI+DQomZ3Q7 ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg79Q6IE1pY2hhbCBTa3JpdmFuZWsgJmx0O21pY2hh bC5za3JpdmFuZWtAcmVkaGF0LmNvbSZndDs8YnI+DQomZ3Q7ICZndDsgJmd0OyDrz83VOiBEbWl0 cml5IEEgUHlyeWFrb3YgJmx0O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5ydSZndDs8YnI+DQomZ3Q7 ICZndDsgJmd0OyDrz9DJ0TogdXNlcnNAb3ZpcnQub3JnPGJyPg0KJmd0OyAmZ3Q7ICZndDsg5MHU wTogMjAuMDkuMjAxMiAxNjowMjxicj4NCiZndDsgJmd0OyAmZ3Q7IPTFzcE6IFJlOiBbVXNlcnNd IEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyA8YnI+DQom Z3Q7ICZndDsgJmd0OyBIaSw8YnI+DQomZ3Q7ICZndDsgJmd0OyB3ZWxsLCBzbyB3aGF0IGlzIHRo ZSBvdGhlciBzaWRlIHNheWluZz8gTWF5YmUgc29tZSBjb25uZWN0aXZpdHkgPGJyPg0KJmd0OyAm Z3Q7ICZndDsgcHJvYmxlbXMgYmV0d2VlbiB0aG9zZSAyIGhvc3RzPyBmaXJld2FsbD8gPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgVGhhbmtzLDxicj4NCiZndDsgJmd0 OyAmZ3Q7IG1pY2hhbDxicj4NCiZndDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsgWWVzLCBmaXJld2Fs bCBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSBieSBkZWZhdWx0LiBJZiBJIHN0b3AgaXQsPGJy Pg0KJmd0OyBtaWdyYXRpb24gZG9uZS48YnI+DQomZ3Q7ICZndDsgVGhhbmtzLjxicj4NCiZndDsg VGhlIGRlZmF1bHQgaXMgc3VwcG9zZWQgdG8gYmU6PGJyPg0KJmd0OyA8YnI+DQomZ3Q7ICMgb1Zp cnQgZGVmYXVsdCBmaXJld2FsbCBjb25maWd1cmF0aW9uLiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRl ZCBieSA8YnI+DQomZ3Q7IHZkc20gYm9vdHN0cmFwIHNjcmlwdC48YnI+DQomZ3Q7ICpmaWx0ZXI8 YnI+DQomZ3Q7IDpJTlBVVCBBQ0NFUFQgWzA6MF08YnI+DQomZ3Q7IDpGT1JXQVJEIEFDQ0VQVCBb MDowXTxicj4NCiZndDsgOk9VVFBVVCBBQ0NFUFQgWzA6MF08YnI+DQomZ3Q7IC1BIElOUFVUIC1t IHN0YXRlIC0tc3RhdGUgRVNUQUJMSVNIRUQsUkVMQVRFRCAtaiBBQ0NFUFQ8YnI+DQomZ3Q7IC1B IElOUFVUIC1wIGljbXAgLWogQUNDRVBUPGJyPg0KJmd0OyAtQSBJTlBVVCAtaSBsbyAtaiBBQ0NF UFQ8YnI+DQomZ3Q7ICMgdmRzbTxicj4NCiZndDsgLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgNTQz MjEgLWogQUNDRVBUPGJyPg0KJmd0OyAjIGxpYnZpcnQgdGxzPGJyPg0KJmd0OyAtQSBJTlBVVCAt cCB0Y3AgLS1kcG9ydCAxNjUxNCAtaiBBQ0NFUFQ8YnI+DQomZ3Q7ICMgU1NIPGJyPg0KJmd0OyAt QSBJTlBVVCAtcCB0Y3AgLS1kcG9ydCAyMiAtaiBBQ0NFUFQ8YnI+DQomZ3Q7ICMgZ3Vlc3QgY29u c29sZXM8YnI+DQomZ3Q7IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNTYz NDo2MTY2IC1qIEFDQ0VQVDxicj4NCiZndDsgIyBtaWdyYXRpb248YnI+DQomZ3Q7IC1BIElOUFVU IC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNDkxNTI6NDkyMTYgLWogQUNDRVBUPGJyPg0K Jmd0OyAjIHNubXA8YnI+DQomZ3Q7IC1BIElOUFVUIC1wIHVkcCAtLWRwb3J0IDE2MSAtaiBBQ0NF UFQ8YnI+DQomZ3Q7ICMgUmVqZWN0IGFueSBvdGhlciBpbnB1dCB0cmFmZmljPGJyPg0KJmd0OyAt QSBJTlBVVCAtaiBSRUpFQ1QgLS1yZWplY3Qtd2l0aCBpY21wLWhvc3QtcHJvaGliaXRlZDxicj4N CiZndDsgLUEgRk9SV0FSRCAtbSBwaHlzZGV2ICEgLS1waHlzZGV2LWlzLWJyaWRnZWQgLWogUkVK RUNUIC0tcmVqZWN0LXdpdGg8YnI+DQomZ3Q7IGljbXAtaG9zdC1wcm9oaWJpdGVkPGJyPg0KJmd0 OyBDT01NSVQ8YnI+DQo8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+bXkgZGVm YXVsdCBpczo8L2ZvbnQ+PC90dD48YnI+DQo8YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+IyBjYXQg L2V0Yy9zeXNjb25maWcvaXB0YWJsZXM8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0i MiI+IyBvVmlydCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaXJld2FsbCBjb25maWd1cmF0aW9u PC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPipmaWx0ZXI8L2ZvbnQ+PC90dD48 YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+OklOUFVUIEFDQ0VQVCBbMDowXTwvZm9udD48L3R0Pjxi cj4NCjx0dD48Zm9udCBzaXplPSIyIj46Rk9SV0FSRCBBQ0NFUFQgWzA6MF08L2ZvbnQ+PC90dD48 YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Ok9VVFBVVCBBQ0NFUFQgWzA6MF08L2ZvbnQ+PC90dD48 YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+LUEgSU5QVVQgLW0gc3RhdGUgLS1zdGF0ZSBFU1RBQkxJ U0hFRCxSRUxBVEVEIC1qIEFDQ0VQVDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIy Ij4tQSBJTlBVVCAtcCBpY21wIC1qIEFDQ0VQVDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBz aXplPSIyIj4tQSBJTlBVVCAtaSBsbyAtaiBBQ0NFUFQ8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZv bnQgc2l6ZT0iMiI+I3Zkc208L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+LUEg SU5QVVQgLXAgdGNwIC0tZHBvcnQgNTQzMjEgLWogQUNDRVBUPC9mb250PjwvdHQ+PGJyPg0KPHR0 Pjxmb250IHNpemU9IjIiPiMgU1NIPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIi Pi1BIElOUFVUIC1wIHRjcCAtLWRwb3J0IDIyIC1qIEFDQ0VQVDwvZm9udD48L3R0Pjxicj4NCjx0 dD48Zm9udCBzaXplPSIyIj4jIGd1ZXN0IGNvbnNvbGVzPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxm b250IHNpemU9IjIiPi1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNTYzNDo2 MTY2IC1qIEFDQ0VQVDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4jIG1pZ3Jh dGlvbjwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4tQSBJTlBVVCAtcCB0Y3Ag LW0gbXVsdGlwb3J0IC0tZHBvcnRzIDQ5MTUyOjQ5MjE2IC1qIEFDQ0VQVDwvZm9udD48L3R0Pjxi cj4NCjx0dD48Zm9udCBzaXplPSIyIj4jIHNubXA8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQg c2l6ZT0iMiI+LUEgSU5QVVQgLXAgdWRwIC0tZHBvcnQgMTYxIC1qIEFDQ0VQVDwvZm9udD48L3R0 Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4jPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNp emU9IjIiPi1BIElOUFVUIC1qIFJFSkVDVCAtLXJlamVjdC13aXRoIGljbXAtaG9zdC1wcm9oaWJp dGVkPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPi1BIEZPUldBUkQgLW0gcGh5 c2RldiAhIC0tcGh5c2Rldi1pcy1icmlkZ2VkIC1qIFJFSkVDVCAtLXJlamVjdC13aXRoIGljbXAt aG9zdC1wcm9oaWJpdGVkPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPkNPTU1J VDwvZm9udD48L3R0Pjxicj4NCjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4mZ3Q7IDxicj4NCiZn dDsgZGlkIHlvdSBjaGFuZ2UgaXQgbWFudWFsbHkgb3IgaXMgdGhlIGRlZmF1bHQgbWlzc2luZyBh bnl0aGluZz88YnI+DQo8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ZGVmYXVs dCBtaXNzaW5nICZxdW90O2xpYnZpcnQgdGxzJnF1b3Q7IGZpZWxkLjwvZm9udD48L3R0Pjxicj4N Cjx0dD48Zm9udCBzaXplPSIyIj48YnI+DQomZ3Q7IHRoYW5rcyw8YnI+DQomZ3Q7IG1pY2hhbDxi cj4NCiZndDsgJmd0OyAmZ3Q7IE9uIFNlcCAyMCwgMjAxMiwgYXQgMTE6NTUgLCBEbWl0cml5IEEg UHlyeWFrb3Ygd3JvdGU6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyBIZWxsbyw8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgSSBoYXZlIHR3byBvVmlydCBub2RlcyBvdmlydC1ub2RlLWlzby0yLjUuMC0yLjAuZmMx Ny48YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgV2hl biBJIHRyeSB0byBtaWdyYXRlIFZNIGZyb20gb25lIGhvc3QgdG8gYW5vdGhlciwgSSBoYXZlIGFu IDxicj4NCiZndDsgJmd0OyAmZ3Q7IGVycm9yOiBNaWdyYXRpb24gZmFpbGVkIGR1ZSB0byBFcnJv cjogRmF0YWwgZXJyb3IgZHVyaW5nIG1pZ3JhdGlvbi48YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7 IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgdmRzbS5sb2c6PGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyBUaHJlYWQtMzc5Nzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDM5OjpCaW5kaW5n WE1MUlBDOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyA4NTk6OnZkczo6KHdyYXBwZXIpIGNsaWVudCBb MTkyLjE2OC4xMC4xMF06OmNhbGwgdm1NaWdyYXRlIHdpdGggPGJyPg0KJmd0OyAmZ3Q7ICZndDsg KHsnc3JjJzogJzE5Mi4xNjguMTAuMTMnLCAnZHN0JzogJzE5Mi4xNjguMTAuMTI6NTQzMjEnLCAn dm1JZCc6IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJh ZWVhZTJlODYnLCAnbWV0aG9kJzogJ29ubGluZSd9LCkge30gPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Zmxvd0lEIFsxODBhZDk3OV08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk3OjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0Mzk6OkFQSTo6NDQxOjp2ZHM6Ojxicj4NCiZndDsg Jmd0OyAmZ3Q7IChtaWdyYXRlKSB7J3NyYyc6ICcxOTIuMTY4LjEwLjEzJywgJ2RzdCc6ICcxOTIu MTY4LjEwLjEyOjU0MzIxJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ3ZtSWQnOiAnMmJmM2U2ZWIt NDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywgJ21ldGhvZCc6ICdvbmxpbmUnfTxicj4NCiZn dDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2 LDQ0MTo6dm06OjEyMjo6dm0uVm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IChfc2V0dXBWZHNDb25u ZWN0aW9uKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0 OyBmYzJhZWVhZTJlODZgOjpEZXN0aW5hdGlvbiBzZXJ2ZXIgaXM6IDE5Mi4xNjguMTAuMTI6NTQz MjE8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk3OjpERUJVRzo6MjAxMi0wOS0y MCAwOTo0Mjo1Niw0NDE6OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDg2NTo6 dmRzOjood3JhcHBlcikgcmV0dXJuIHZtTWlncmF0ZSB3aXRoIHsnc3RhdHVzJzogeydtZXNzYWdl JzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ01pZ3JhdGlvbiBwcm9jZXNzIHN0YXJ0aW5nJywgJ2Nv ZGUnOiAwfX08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0Mjo1Niw0NDE6OnZtOjoxMjQ6OnZtLlZtOjo8YnI+DQomZ3Q7ICZndDsgJmd0 OyAoX3NldHVwVmRzQ29ubmVjdGlvbikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6SW5pdGlhdGluZyBjb25uZWN0aW9uIHdp dGggZGVzdGluYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0NTI6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAmZ3Q7ICZn dDsgMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04 MTg4LTxicj4NCiZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0YXRzIG5v dCBhdmFpbGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0Mjo1Niw0NTc6OnZtOjoxNzA6OnZtLlZtOjo8YnI+DQomZ3Q7ICZndDsg Jmd0OyAoX3ByZXBhcmVHdWVzdCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6bWlncmF0aW9uIFByb2Nlc3MgYmVnaW5zPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6 NDI6NTYsNDc1Ojp2bTo6MjE3Ojp2bS5WbTo6KHJ1bik8YnI+DQomZ3Q7ICZndDsgJmd0OyB2bUlk PWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjptaWdyYXRpb24gc2VtYXBo b3JlIGFjcXVpcmVkPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6 OjIwMTItMDktMjAgMDk6NDI6NTYsODg4OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7 IDQyNzo6dm0uVm06Oihfc3RhcnRVbmRlcmx5aW5nTWlncmF0aW9uKSA8YnI+DQomZ3Q7ICZndDsg Jmd0OyB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjpzdGFydGlu ZyBtaWdyYXRpb24gdG8gPGJyPg0KJmd0OyAmZ3Q7ICZndDsgcWVtdSt0bHM6Ly8xOTIuMTY4LjEw LjEyL3N5c3RlbTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM3OTk6OkRFQlVHOjoy MDEyLTA5LTIwIDA5OjQyOjU2LDg4OTo6bGlidmlydHZtOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAz MjU6OnZtLlZtOjoocnVuKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7 ICZndDsgJmd0OyBmYzJhZWVhZTJlODZgOjptaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkIHN0YXJ0 ZWQ8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAwOjpERUJVRzo6MjAxMi0wOS0y MCAwOTo0Mjo1Niw4OTA6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMzUzOjp2bS5W bTo6KHJ1bikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgZmMyYWVlYWUyZTg2YDo6c3RhcnRpbmcgbWlncmF0aW9uIG1vbml0b3IgdGhyZWFkPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6 NTYsOTAzOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDM0MDo6dm0uVm06OihjYW5j ZWwpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgJmd0OyAmZ3Q7IGZj MmFlZWFlMmU4NmA6OmNhbmNlbGluZyBtaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYs OTA0OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDM5MDo6dm0uVm06OihzdG9wKSB2 bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0OyBmYzJhZWVh ZTJlODZgOjpzdG9wcGluZyBtaWdyYXRpb24gbW9uaXRvciB0aHJlYWQ8YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7IFRocmVhZC0zNzk5OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6Omxp YnZpcnR2bTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMzM3Ojp2bS5WbTo6KHJ1bikgdm1JZD1gMmJm M2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6 bWlncmF0aW9uIGRvd250aW1lIHRocmVhZCBleGl0aW5nPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyBUaHJlYWQtMzc5ODo6RVJST1I6OjIwMTItMDktMjAgMDk6NDI6NTYsOTA1Ojp2bTo6MTc2Ojp2 bS5WbTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgKF9yZWNvdmVyKSB2bUlkPWAyYmYzZTZlYi00OWU0 LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjpvcGVyYXRpb24gPGJyPg0KJmd0OyAmZ3Q7ICZndDsg ZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVjdCB0byByZW1vdGUgbGlidmlydCBVUkkgcWVtdSt0bHM6 Ly8xOTIuMTY4Ljxicj4NCiZndDsgJmd0OyAmZ3Q7IDEwLjEyL3N5c3RlbTxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgVGhyZWFkLTM3OTg6OkVSUk9SOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDk3Nzo6 dm06OjI0MDo6dm0uVm06OihydW4pPGJyPg0KJmd0OyAmZ3Q7ICZndDsgdm1JZD1gMmJmM2U2ZWIt NDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6RmFpbGVkIHRvIG1pZ3JhdGU8YnI+DQomZ3Q7 ICZndDsgJmd0OyAmZ3Q7IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+DQom Z3Q7ICZndDsgJmd0OyAmZ3Q7IEZpbGUgJnF1b3Q7L3Vzci9zaGFyZS92ZHNtL3ZtLnB5JnF1b3Q7 LCBsaW5lIDIyMywgaW4gcnVuPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBGaWxlICZxdW90Oy91 c3Ivc2hhcmUvdmRzbS9saWJ2aXJ0dm0ucHkmcXVvdDssIGxpbmUgNDUxLCBpbiA8YnI+DQomZ3Q7 IF9zdGFydFVuZGVybHlpbmdNaWdyYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IEZpbGUg JnF1b3Q7L3Vzci9zaGFyZS92ZHNtL2xpYnZpcnR2bS5weSZxdW90OywgbGluZSA0OTEsIGluIGY8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IEZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3Np dGUtcGFja2FnZXMvdmRzbS9saWJ2aXJ0Y29ubmVjdGlvbi5weSZxdW90Oyw8YnI+DQomZ3Q7ICZn dDsgJmd0OyBsaW5lIDgyLCBpbiB3cmFwcGVyPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBGaWxl ICZxdW90Oy91c3IvbGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmlydC5weSZxdW90 OywgbGluZSAxMDM0LCA8YnI+DQomZ3Q7ICZndDsgJmd0OyBpbiBtaWdyYXRlVG9VUkkyPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgJmd0OyBsaWJ2aXJ0RXJyb3I6IG9wZXJhdGlvbiBmYWlsZWQ6IEZhaWxl ZCB0byBjb25uZWN0IHRvIHJlbW90ZSA8YnI+DQomZ3Q7ICZndDsgJmd0OyBsaWJ2aXJ0IFVSSSBx ZW11K3RsczovLzE5Mi4xNjguMTAuMTIvc3lzdGVtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyA8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0Mjo1Nyw3OTM6OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDg1OTo6dmRz Ojood3JhcHBlcikgY2xpZW50IFsxOTIuMTY4LjEwLjEwXTo6Y2FsbCB2bUdldFN0YXRzIHdpdGgg PGJyPg0KJmd0OyAmZ3Q7ICZndDsgKCcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJl ODYnLCkge308YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAyOjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0Mjo1Nyw3OTM6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMjQw Ojp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxi cj4NCiZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFp bGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0Mjo1Nyw3OTQ6OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDg2 NTo6dmRzOjood3JhcHBlcikgcmV0dXJuIHZtR2V0U3RhdHMgd2l0aCB7J3N0YXR1cyc6IHsnbWVz c2FnZSc6IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICdEb25lJywgJ2NvZGUnOiAwfSwgJ3N0YXRzTGlz dCc6IFt7J3N0YXR1cyc6ICdVcCcsICd1c2VybmFtZSc6IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICdV bmtub3duJywgJ21lbVVzYWdlJzogJzAnLCAnYWNwaUVuYWJsZSc6ICd0cnVlJywgJ3BpZCc6ICcy MjA0NycsIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICdkaXNwbGF5SXAnOiAnMTkyLjE2OC4xMC4xMycs ICdkaXNwbGF5UG9ydCc6IHUnNTkxMicsICdzZXNzaW9uJzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsg J1Vua25vd24nLCAnZGlzcGxheVNlY3VyZVBvcnQnOiB1JzU5MTMnLCAndGltZU9mZnNldCc6ICcw JywgJ2hhc2gnOiA8YnI+DQomZ3Q7ICZndDsgJmd0OyAnMzAxODg3NDE2MjMyNDc1MzA4MycsICdw YXVzZUNvZGUnOiAnTk9FUlInLCAnY2xpZW50SXAnOiAnJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg J2t2bUVuYWJsZSc6ICd0cnVlJywgJ25ldHdvcmsnOiB7dSd2bmV0Nic6IHsnbWFjQWRkcic6ICcw MDoxYTo0YTphODo8YnI+DQomZ3Q7ICZndDsgJmd0OyAwYTowOCcsICdyeERyb3BwZWQnOiAnMCcs ICdyeEVycm9ycyc6ICcwJywgJ3R4RHJvcHBlZCc6ICcwJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg J3R4UmF0ZSc6ICcwLjAnLCAncnhSYXRlJzogJzAuMCcsICd0eEVycm9ycyc6ICcwJywgJ3N0YXRl JzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ3Vua25vd24nLCAnc3BlZWQnOiAnMTAwMCcsICduYW1l JzogdSd2bmV0Nid9fSwgJ3ZtSWQnOiA8YnI+DQomZ3Q7ICZndDsgJmd0OyAnMmJmM2U2ZWItNDll NC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywgJ2Rpc3BsYXlUeXBlJzogJ3F4bCcsIDxicj4NCiZn dDsgJmd0OyAmZ3Q7ICdjcHVVc2VyJzogJzEzLjI3JywgJ2Rpc2tzJzoge3UnaGRjJzogeydmbHVz aExhdGVuY3knOiAnMCcsIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICdyZWFkTGF0ZW5jeSc6ICcwJywg J3dyaXRlTGF0ZW5jeSc6ICcwJ30sIHUnaGRhJzogeydyZWFkTGF0ZW5jeSc6IDxicj4NCiZndDsg Jmd0OyAmZ3Q7ICc2MTgzODA1JywgJ2FwcGFyZW50c2l6ZSc6ICcxMTgxMTE2MDA2NCcsICd3cml0 ZUxhdGVuY3knOiAnMCcsIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICdpbWFnZUlEJzogJ2Q5NmQxOWY2 LTVhMjgtNGZlZi04OTJmLTRhMDQ1NDlkNGUzOCcsICdmbHVzaExhdGVuY3knOiA8YnI+DQomZ3Q7 ICZndDsgJmd0OyAnMCcsICdyZWFkUmF0ZSc6ICcyNzEuODcnLCAndHJ1ZXNpemUnOiAnMTE4MTEx NjAwNjQnLCAnd3JpdGVSYXRlJzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJzAuMDAnfX0sICdtb25p dG9yUmVzcG9uc2UnOiAnMCcsICdzdGF0c0FnZSc6ICcwLjc3JywgJ2NwdUlkbGUnOiA8YnI+DQom Z3Q7ICZndDsgJmd0OyAnODYuNzMnLCAnZWxhcHNlZFRpbWUnOiAnMzk0MScsICd2bVR5cGUnOiAn a3ZtJywgJ2NwdVN5cyc6ICcwLjAwJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ2FwcHNMaXN0Jzog W10sICdndWVzdElQcyc6ICcnLCAnbmljZSc6ICcnfV19PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyBUaHJlYWQtMzgwMzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsODY5OjpCaW5kaW5nWE1M UlBDOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyA4NTk6OnZkczo6KHdyYXBwZXIpIGNsaWVudCBbMTky LjE2OC4xMC4xMF06OmNhbGwgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgdm1HZXRNaWdyYXRpb25TdGF0 dXMgd2l0aCAoJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NicsKSB7fTxicj4N CiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4MDM6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQy OjU3LDg3MDo6QmluZGluZ1hNTFJQQzo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgODY1Ojp2ZHM6Oih3 cmFwcGVyKSByZXR1cm4gdm1HZXRNaWdyYXRpb25TdGF0dXMgd2l0aCB7J3N0YXR1cyc6IDxicj4N CiZndDsgJmd0OyAmZ3Q7IHsnbWVzc2FnZSc6ICdGYXRhbCBlcnJvciBkdXJpbmcgbWlncmF0aW9u JywgJ2NvZGUnOiAxMn19PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0Mjo1OCwxNzI6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0 OyAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgJ2RkIGlmPS9yaGV2L2RhdGEtY2Vu dGVyLzxicj4NCiZndDsgJmd0OyAmZ3Q7IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNmLTVmZWY5ODVk M2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3ggPGJyPg0KJmd0OyAmZ3Q7ICZndDsgaWZsYWc9ZGly ZWN0LGZ1bGxibG9jayBjb3VudD0xIGJzPTEwMjQwMDAnIChjd2QgTm9uZSk8YnI+DQomZ3Q7ICZn dDsgJmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU4LDI2Mjo6 X19pbml0X186Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6 OihfbG9nKSBTVUNDRVNTOiAmbHQ7ZXJyJmd0OyA9ICcxKzAgcmVjb3JkcyBpbjxicj4NCiZndDsg Jmd0OyAmZ3Q7IFxuMSswIHJlY29yZHMgb3V0XG4xMDI0MDAwIGJ5dGVzICgxLjAgTUIpIGNvcGll ZCwgMC4wNTE1MTA5IHMsIDE5LjkgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgTUIvc1xuJzsgJmx0O3Jj Jmd0OyA9IDA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEy LTA5LTIwIDA5OjQzOjAwLDI3MTo6X19pbml0X186Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDEyNDk6 OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSAnZGQgaWY9L3JoZXYvZGF0YS1jZW50ZXIvPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgMzMyNjk0YmItMzY0YS00MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21h c3RlcnNkL2RvbV9tZC9pbmJveCA8YnI+DQomZ3Q7ICZndDsgJmd0OyBpZmxhZz1kaXJlY3QsZnVs bGJsb2NrIGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKTxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgRHVtbXktMTI2NDo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDAsMzYyOjpfX2luaXRf Xzo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cp IFNVQ0NFU1M6ICZsdDtlcnImZ3Q7ID0gJzErMCByZWNvcmRzIGluPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1 MzAxNzEgcywgMTkuMyA8YnI+DQomZ3Q7ICZndDsgJmd0OyBNQi9zXG4nOyAmbHQ7cmMmZ3Q7ID0g MDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTIxOjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0MzowMCw2MTI6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAxMjQ5OjpTdG9yYWdl Lk1pc2MuZXhjQ21kOjooX2xvZykgJy91c3IvYmluL2RkIGlmbGFnPWRpcmVjdCBpZj0vZGV2Lzxi cj4NCiZndDsgJmd0OyAmZ3Q7IDI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMy9t ZXRhZGF0YSBicz00MDk2IGNvdW50PTEnIChjd2QgTm9uZSk8YnI+DQomZ3Q7ICZndDsgJmd0OyAm Z3Q7IFRocmVhZC0yMTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDAsNjI5OjpfX2luaXRfXzo6 PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNV Q0NFU1M6ICZsdDtlcnImZ3Q7ID0gJzErMCByZWNvcmRzIGluPGJyPg0KJmd0OyAmZ3Q7ICZndDsg XG4xKzAgcmVjb3JkcyBvdXRcbjQwOTYgYnl0ZXMgKDQuMSBrQikgY29waWVkLCAwLjAwMDkzNzY5 OCBzLCA0LjQgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgTUIvc1xuJzsgJmx0O3JjJmd0OyA9IDA8YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0 MzowMSw5MDE6OnRhc2s6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDU4ODo6VGFza01hbmFnZXIuVGFz azo6KF91cGRhdGVTdGF0ZSkgVGFzaz1gZmYxMzRlY2MtNTU5Ny00YTgzLTgxZDYtPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgZTRmOTgwNDg3MWZmYDo6bW92aW5nIGZyb20gc3RhdGUgaW5pdCAtJmd0OyBz dGF0ZSBwcmVwYXJpbmc8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpJTkZP OjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6bG9nVXRpbHM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7 IDM3OjpkaXNwYXRjaGVyOjood3JhcHBlcikgUnVuIGFuZCBwcm90ZWN0OiByZXBvU3RhdHMob3B0 aW9ucz1Ob25lKTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OklORk86OjIw MTItMDktMjAgMDk6NDM6MDEsOTAyOjpsb2dVdGlsczo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMzk6 OmRpc3BhdGNoZXI6Oih3cmFwcGVyKSBSdW4gYW5kIHByb3RlY3Q6IHJlcG9TdGF0cywgUmV0dXJu IDxicj4NCiZndDsgJmd0OyAmZ3Q7IHJlc3BvbnNlOiB7JzI2MTg3ZDI1LWJmY2ItNDBjNy05N2Qx LTY2NzcwNWFkMjIyMyc6IHsnZGVsYXknOiAnMC48YnI+DQomZ3Q7ICZndDsgJmd0OyAwMTgwOTMx MDkxMzA5JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQxODAuODI1ODkyLCAnY29kZSc6IDAsICd2YWxp ZCc6IDxicj4NCiZndDsgJmd0OyAmZ3Q7IFRydWV9LCAnOTAxMDRjM2QtODM3Yi00N2RkLThjODIt ZGRhOTJlZWMzMGQ5JzogeydkZWxheSc6ICcwLjxicj4NCiZndDsgJmd0OyAmZ3Q7IDAwMDk1NTgy MDA4MzYxOCcsICdsYXN0Q2hlY2snOiAxMzQ4MTM0MTc1LjQ5MzI3NywgJ2NvZGUnOiAwLCA8YnI+ DQomZ3Q7ICd2YWxpZCc6IFRydWV9fTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4 MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6dGFzazo6PGJyPg0KJmd0OyAmZ3Q7 ICZndDsgMTE3Mjo6VGFza01hbmFnZXIuVGFzazo6KHByZXBhcmUpIFRhc2s9YGZmMTM0ZWNjLTU1 OTctNGE4My04MWQ2LTxicj4NCiZndDsgJmd0OyAmZ3Q7IGU0Zjk4MDQ4NzFmZmA6OmZpbmlzaGVk OiB7JzI2MTg3ZDI1LWJmY2ItNDBjNy05N2QxLTY2NzcwNWFkMjIyMyc6IDxicj4NCiZndDsgJmd0 OyAmZ3Q7IHsnZGVsYXknOiAnMC4wMTgwOTMxMDkxMzA5JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQx ODAuODI1ODkyLCAnY29kZSc6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgMCwgJ3ZhbGlkJzogVHJ1ZX0s ICc5MDEwNGMzZC04MzdiLTQ3ZGQtOGM4Mi1kZGE5MmVlYzMwZDknOiB7J2RlbGF5Jzo8YnI+DQom Z3Q7ICZndDsgJmd0OyAnMC4wMDA5NTU4MjAwODM2MTgnLCAnbGFzdENoZWNrJzogMTM0ODEzNDE3 NS40OTMyNzcsICdjb2RlJzogMCwgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ3ZhbGlkJzogVHJ1ZX19 PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAg MDk6NDM6MDEsOTAyOjp0YXNrOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyA1ODg6OlRhc2tNYW5hZ2Vy LlRhc2s6OihfdXBkYXRlU3RhdGUpIFRhc2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2LTxicj4N CiZndDsgJmd0OyAmZ3Q7IGU0Zjk4MDQ4NzFmZmA6Om1vdmluZyBmcm9tIHN0YXRlIHByZXBhcmlu ZyAtJmd0OyBzdGF0ZSBmaW5pc2hlZDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4 MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMzo6cmVzb3VyY2VNYW5hZ2VyOjo8YnI+ DQomZ3Q7ICZndDsgJmd0OyA4MDk6OlJlc291cmNlTWFuYWdlci5Pd25lcjo6KHJlbGVhc2VBbGwp IE93bmVyLnJlbGVhc2VBbGwgcmVxdWVzdHMgPGJyPg0KJmd0OyAmZ3Q7ICZndDsge30gcmVzb3Vy Y2VzIHt9PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTIt MDktMjAgMDk6NDM6MDEsOTAzOjpyZXNvdXJjZU1hbmFnZXI6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7 IDg0NDo6UmVzb3VyY2VNYW5hZ2VyLk93bmVyOjooY2FuY2VsQWxsKSBPd25lci5jYW5jZWxBbGwg cmVxdWVzdHMge308YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0MzowMSw5MDM6OnRhc2s6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDk3ODo6 VGFza01hbmFnZXIuVGFzazo6KF9kZWNyZWYpIFRhc2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2 LTxicj4NCiZndDsgJmd0OyAmZ3Q7IGU0Zjk4MDQ4NzFmZmA6OnJlZiAwIGFib3J0aW5nIEZhbHNl PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAg MDk6NDM6MDEsOTMxOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06 OihfZ2V0RGlza1N0YXRzKSB2bUlkPWA1NDAzMzVmMC0yMjY5LTRiYzQtPGJyPg0KJmd0OyAmZ3Q7 ICZndDsgYWFmNC0xMWJmNTk5MDAxM2ZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6 NDM6MDEsOTMxOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06Oihf Z2V0RGlza1N0YXRzKSB2bUlkPWAyYzNhZjVmNS08YnI+DQomZ3Q7ICZndDsgJmd0OyBmODc3LTRl NmItOGEzNC0wNWJiZTc4YjNjODJgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6 MDEsOTMyOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0 RGlza1N0YXRzKSB2bUlkPWAwYWMwZGQzYS1hZTJhLTQ5NjMtPGJyPg0KJmd0OyAmZ3Q7ICZndDsg YWRmMS05MTg5OTMwMzFmNmJgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEs OTMyOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlz a1N0YXRzKSB2bUlkPWAzNWE2NWJiOC1jYmNhLTQwNDktPGJyPg0KJmd0OyAmZ3Q7ICZndDsgYTQy OC0yODkxNGJjYjA5NGFgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMz OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0 YXRzKSB2bUlkPWA0ZWYzMjU4Yy0wMzgwLTQ5MTktOTkxZi08YnI+DQomZ3Q7ICZndDsgJmd0OyBl ZTdiZTdlOWY3ZmFgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7 ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjps aWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0YXRz KSB2bUlkPWAyNTJlNmQ0Ni1mMzYyLTQ2YWEtYTdlZC08YnI+DQomZ3Q7ICZndDsgJmd0OyBkZDAw YTg2YWY2ZjBgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2 aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0YXRzKSB2 bUlkPWA1MDllNjA4Yy1lNjU3LTQ3M2EtYjAzMS08YnI+DQomZ3Q7ICZndDsgJmd0OyBmMDgxMWRh OTZiZGVgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTM0OjpsaWJ2aXJ0 dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0YXRzKSB2bUlk PWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0OyBmYzJhZWVhZTJl ODZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMiwzNzE6Ol9faW5pdF9fOjo8 YnI+DQomZ3Q7ICZndDsgJmd0OyAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgJ2Rk IGlmPS9yaGV2L2RhdGEtY2VudGVyLzxicj4NCiZndDsgJmd0OyAmZ3Q7IDMzMjY5NGJiLTM2NGEt NDM0ZS1iMjNmLTVmZWY5ODVkM2NiZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3ggPGJyPg0KJmd0OyAm Z3Q7ICZndDsgaWZsYWc9ZGlyZWN0LGZ1bGxibG9jayBjb3VudD0xIGJzPTEwMjQwMDAnIChjd2Qg Tm9uZSk8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5 LTIwIDA5OjQzOjAyLDQ2Mjo6X19pbml0X186Ojxicj4NCiZndDsgJmd0OyAmZ3Q7IDEyNDk6OlN0 b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUNDRVNTOiAmbHQ7ZXJyJmd0OyA9ICcxKzAgcmVj b3JkcyBpbjxicj4NCiZndDsgJmd0OyAmZ3Q7IFxuMSswIHJlY29yZHMgb3V0XG4xMDI0MDAwIGJ5 dGVzICgxLjAgTUIpIGNvcGllZCwgMC4wNTI1MTgzIHMsIDE5LjUgPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgTUIvc1xuJzsgJmx0O3JjJmd0OyA9IDA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxicj4N CiZndDsgJmd0OyAmZ3Q7ICZndDsgLSAtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NCiZndDsgJmd0OyAm Z3Q7ICZndDsgVXNlcnMgbWFpbGluZyBsaXN0PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBVc2Vy c0BvdmlydC5vcmc8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9saXN0 cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzPC9hPjxicj4NCiZndDsgJmd0OyAmZ3Q7IDxicj4NCiZn dDsgJmd0OyA8YnI+DQomZ3Q7IDxicj4NCjwvZm9udD48L3R0PjwvYm9keT48L2h0bWw+ --0__=C9BBF0ECDFABE82D8f9e8a93df938690918cC9BBF0ECDFABE82D--

On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.2012 16:13:16:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:13 Тема: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.201216:02:11:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:02 Тема: Re: [Users] Fatal error during migration
Hi, well, so what is the other side saying? Maybe some connectivity problems between those 2 hosts? firewall?
Thanks, michal
Yes, firewall is not configured properly by default. If I stop it, migration done. Thanks. The default is supposed to be:
# oVirt default firewall configuration. Automatically generated by vdsm bootstrap script. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # libvirt tls -A INPUT -p tcp --dport 16514 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # Reject any other input traffic -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT
my default is:
# cat /etc/sysconfig/iptables # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT
did you change it manually or is the default missing anything?
default missing "libvirt tls" field. was it an upgrade of some sort? These are installed at node setup from ovirt-engine. Check the engine version and/or the IPTablesConfig in vdc_options table on engine
thanks, michal
On Sep 20, 2012, at 11:55 , Dmitriy A Pyryakov wrote:
Hello,
I have two oVirt nodes ovirt-node-iso-2.5.0-2.0.fc17.
When I try to migrate VM from one host to another, I have an error: Migration failed due to Error: Fatal error during migration.
vdsm.log: Thread-3797::DEBUG::2012-09-20 09:42:56,439::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmMigrate with ({'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'},) {} flowID [180ad979] Thread-3797::DEBUG::2012-09-20 09:42:56,439::API::441::vds:: (migrate) {'src': '192.168.10.13', 'dst': '192.168.10.12:54321', 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'method': 'online'} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::122::vm.Vm:: (_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Destination server is: 192.168.10.12:54321 Thread-3797::DEBUG::2012-09-20 09:42:56,441::BindingXMLRPC:: 865::vds::(wrapper) return vmMigrate with {'status': {'message': 'Migration process starting', 'code': 0}} Thread-3798::DEBUG::2012-09-20 09:42:56,441::vm::124::vm.Vm:: (_setupVdsConnection) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Initiating connection with destination Thread-3798::DEBUG::2012-09-20 09:42:56,452::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Thread-3798::DEBUG::2012-09-20 09:42:56,457::vm::170::vm.Vm:: (_prepareGuest) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration Process begins Thread-3798::DEBUG::2012-09-20 09:42:56,475::vm::217::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::migration semaphore acquired Thread-3798::DEBUG::2012-09-20 09:42:56,888::libvirtvm:: 427::vm.Vm::(_startUnderlyingMigration) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::starting migration to qemu+tls://192.168.10.12/system Thread-3799::DEBUG::2012-09-20 09:42:56,889::libvirtvm:: 325::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration downtime thread started Thread-3800::DEBUG::2012-09-20 09:42:56,890::libvirtvm:: 353::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::starting migration monitor thread Thread-3798::DEBUG::2012-09-20 09:42:56,903::libvirtvm:: 340::vm.Vm::(cancel) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::canceling migration downtime thread Thread-3798::DEBUG::2012-09-20 09:42:56,904::libvirtvm:: 390::vm.Vm::(stop) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::stopping migration monitor thread Thread-3799::DEBUG::2012-09-20 09:42:56,904::libvirtvm:: 337::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::migration downtime thread exiting Thread-3798::ERROR::2012-09-20 09:42:56,905::vm::176::vm.Vm:: (_recover) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168. 10.12/system Thread-3798::ERROR::2012-09-20 09:42:56,977::vm::240::vm.Vm::(run) vmId=`2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86`::Failed to migrate Traceback (most recent call last): File "/usr/share/vdsm/vm.py", line 223, in run File "/usr/share/vdsm/libvirtvm.py", line 451, in _startUnderlyingMigration File "/usr/share/vdsm/libvirtvm.py", line 491, in f File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", line 82, in wrapper File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1034, in migrateToURI2 libvirtError: operation failed: Failed to connect to remote libvirt URI qemu+tls://192.168.10.12/system
Thread-3802::DEBUG::2012-09-20 09:42:57,793::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmGetStats with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3802::DEBUG::2012-09-20 09:42:57,793::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Thread-3802::DEBUG::2012-09-20 09:42:57,794::BindingXMLRPC:: 865::vds::(wrapper) return vmGetStats with {'status': {'message': 'Done', 'code': 0}, 'statsList': [{'status': 'Up', 'username': 'Unknown', 'memUsage': '0', 'acpiEnable': 'true', 'pid': '22047', 'displayIp': '192.168.10.13', 'displayPort': u'5912', 'session': 'Unknown', 'displaySecurePort': u'5913', 'timeOffset': '0', 'hash': '3018874162324753083', 'pauseCode': 'NOERR', 'clientIp': '', 'kvmEnable': 'true', 'network': {u'vnet6': {'macAddr': '00:1a:4a:a8: 0a:08', 'rxDropped': '0', 'rxErrors': '0', 'txDropped': '0', 'txRate': '0.0', 'rxRate': '0.0', 'txErrors': '0', 'state': 'unknown', 'speed': '1000', 'name': u'vnet6'}}, 'vmId': '2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86', 'displayType': 'qxl', 'cpuUser': '13.27', 'disks': {u'hdc': {'flushLatency': '0', 'readLatency': '0', 'writeLatency': '0'}, u'hda': {'readLatency': '6183805', 'apparentsize': '11811160064', 'writeLatency': '0', 'imageID': 'd96d19f6-5a28-4fef-892f-4a04549d4e38', 'flushLatency': '0', 'readRate': '271.87', 'truesize': '11811160064', 'writeRate': '0.00'}}, 'monitorResponse': '0', 'statsAge': '0.77', 'cpuIdle': '86.73', 'elapsedTime': '3941', 'vmType': 'kvm', 'cpuSys': '0.00', 'appsList': [], 'guestIPs': '', 'nice': ''}]} Thread-3803::DEBUG::2012-09-20 09:42:57,869::BindingXMLRPC:: 859::vds::(wrapper) client [192.168.10.10]::call vmGetMigrationStatus with ('2bf3e6eb-49e4-42c7-8188-fc2aeeae2e86',) {} Thread-3803::DEBUG::2012-09-20 09:42:57,870::BindingXMLRPC:: 865::vds::(wrapper) return vmGetMigrationStatus with {'status': {'message': 'Fatal error during migration', 'code': 12}} Dummy-1264::DEBUG::2012-09-20 09:42:58,172::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:42:58,262::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0515109 s, 19.9 MB/s\n'; <rc> = 0 Dummy-1264::DEBUG::2012-09-20 09:43:00,271::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:00,362::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0530171 s, 19.3 MB/s\n'; <rc> = 0 Thread-21::DEBUG::2012-09-20 09:43:00,612::__init__:: 1249::Storage.Misc.excCmd::(_log) '/usr/bin/dd iflag=direct if=/dev/ 26187d25-bfcb-40c7-97d1-667705ad2223/metadata bs=4096 count=1' (cwd None) Thread-21::DEBUG::2012-09-20 09:43:00,629::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n4096 bytes (4.1 kB) copied, 0.000937698 s, 4.4 MB/s\n'; <rc> = 0 Thread-3805::DEBUG::2012-09-20 09:43:01,901::task:: 588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::moving from state init -> state preparing Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils:: 37::dispatcher::(wrapper) Run and protect: repoStats(options=None) Thread-3805::INFO::2012-09-20 09:43:01,902::logUtils:: 39::dispatcher::(wrapper) Run and protect: repoStats, Return response: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0. 0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0. 000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task:: 1172::TaskManager.Task::(prepare) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::finished: {'26187d25-bfcb-40c7-97d1-667705ad2223': {'delay': '0.0180931091309', 'lastCheck': 1348134180.825892, 'code': 0, 'valid': True}, '90104c3d-837b-47dd-8c82-dda92eec30d9': {'delay': '0.000955820083618', 'lastCheck': 1348134175.493277, 'code': 0, 'valid': True}} Thread-3805::DEBUG::2012-09-20 09:43:01,902::task:: 588::TaskManager.Task::(_updateState) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::moving from state preparing -> state finished Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager:: 809::ResourceManager.Owner::(releaseAll) Owner.releaseAll requests {} resources {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::resourceManager:: 844::ResourceManager.Owner::(cancelAll) Owner.cancelAll requests {} Thread-3805::DEBUG::2012-09-20 09:43:01,903::task:: 978::TaskManager.Task::(_decref) Task=`ff134ecc-5597-4a83-81d6- e4f9804871ff`::ref 0 aborting False Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`540335f0-2269-4bc4- aaf4-11bf5990013f`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,931::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2c3af5f5- f877-4e6b-8a34-05bbe78b3c82`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`0ac0dd3a-ae2a-4963- adf1-918993031f6b`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,932::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`35a65bb8-cbca-4049- a428-28914bcb094a`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`4ef3258c-0380-4919-991f- ee7be7e9f7fa`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`252e6d46-f362-46aa-a7ed- dd00a86af6f0`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,933::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`509e608c-e657-473a-b031- f0811da96bde`::Disk hdc stats not available Thread-3806::DEBUG::2012-09-20 09:43:01,934::libvirtvm:: 240::vm.Vm::(_getDiskStats) vmId=`2bf3e6eb-49e4-42c7-8188- fc2aeeae2e86`::Disk hdc stats not available Dummy-1264::DEBUG::2012-09-20 09:43:02,371::__init__:: 1249::Storage.Misc.excCmd::(_log) 'dd if=/rhev/data-center/ 332694bb-364a-434e-b23f-5fef985d3cbd/mastersd/dom_md/inbox iflag=direct,fullblock count=1 bs=1024000' (cwd None) Dummy-1264::DEBUG::2012-09-20 09:43:02,462::__init__:: 1249::Storage.Misc.excCmd::(_log) SUCCESS: <err> = '1+0 records in \n1+0 records out\n1024000 bytes (1.0 MB) copied, 0.0525183 s, 19.5 MB/s\n'; <rc> = 0
- - _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

--0__=C9BBF0ECDFAACFF88f9e8a93df938690918cC9BBF0ECDFAACFF8 Content-type: text/plain; charset=KOI8-R Content-transfer-encoding: base64 TWljaGFsIFNrcml2YW5layA8bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tPiDOwdDJ08HOzyAy MC4wOS4yMDEyDQoxNjoyMzozMToNCg0KPiDv1DogTWljaGFsIFNrcml2YW5layA8bWljaGFsLnNr cml2YW5la0ByZWRoYXQuY29tPg0KPiDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgPERQeXJ5YWtv dkBla2IuYmVlbGluZS5ydT4NCj4g68/QydE6IHVzZXJzQG92aXJ0Lm9yZw0KPiDkwdTBOiAyMC4w OS4yMDEyIDE2OjI0DQo+IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdy YXRpb24NCj4NCj4NCj4gT24gU2VwIDIwLCAyMDEyLCBhdCAxMjoxOSAsIERtaXRyaXkgQSBQeXJ5 YWtvdiB3cm90ZToNCj4NCj4gPiBNaWNoYWwgU2tyaXZhbmVrIDxtaWNoYWwuc2tyaXZhbmVrQHJl ZGhhdC5jb20+IM7B0MnTwc7PDQoyMC4wOS4yMDEyMTY6MTM6MTY6DQo+ID4NCj4gPiA+IO/UOiBN aWNoYWwgU2tyaXZhbmVrIDxtaWNoYWwuc2tyaXZhbmVrQHJlZGhhdC5jb20+DQo+ID4gPiDrz83V OiBEbWl0cml5IEEgUHlyeWFrb3YgPERQeXJ5YWtvdkBla2IuYmVlbGluZS5ydT4NCj4gPiA+IOvP 0MnROiB1c2Vyc0BvdmlydC5vcmcNCj4gPiA+IOTB1ME6IDIwLjA5LjIwMTIgMTY6MTMNCj4gPiA+ IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb24NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gT24gU2VwIDIwLCAyMDEyLCBhdCAxMjowNyAsIERtaXRyaXkgQSBQeXJ5YWtv diB3cm90ZToNCj4gPiA+DQo+ID4gPiA+IE1pY2hhbCBTa3JpdmFuZWsgPG1pY2hhbC5za3JpdmFu ZWtAcmVkaGF0LmNvbT4gzsHQydPBzs8gMjAuMDkuDQo+IDIwMTIxNjowMjoxMToNCj4gPiA+ID4N Cj4gPiA+ID4gPiDv1DogTWljaGFsIFNrcml2YW5layA8bWljaGFsLnNrcml2YW5la0ByZWRoYXQu Y29tPg0KPiA+ID4gPiA+IOvPzdU6IERtaXRyaXkgQSBQeXJ5YWtvdiA8RFB5cnlha292QGVrYi5i ZWVsaW5lLnJ1Pg0KPiA+ID4gPiA+IOvP0MnROiB1c2Vyc0BvdmlydC5vcmcNCj4gPiA+ID4gPiDk wdTBOiAyMC4wOS4yMDEyIDE2OjAyDQo+ID4gPiA+ID4g9MXNwTogUmU6IFtVc2Vyc10gRmF0YWwg ZXJyb3IgZHVyaW5nIG1pZ3JhdGlvbg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSGksDQo+ID4gPiA+ ID4gd2VsbCwgc28gd2hhdCBpcyB0aGUgb3RoZXIgc2lkZSBzYXlpbmc/IE1heWJlIHNvbWUgY29u bmVjdGl2aXR5DQo+ID4gPiA+ID4gcHJvYmxlbXMgYmV0d2VlbiB0aG9zZSAyIGhvc3RzPyBmaXJl d2FsbD8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gPiBtaWNoYWwNCj4g PiA+ID4NCj4gPiA+ID4gWWVzLCBmaXJld2FsbCBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSBi eSBkZWZhdWx0LiBJZiBJIHN0b3AgaXQsDQo+ID4gPiBtaWdyYXRpb24gZG9uZS4NCj4gPiA+ID4g VGhhbmtzLg0KPiA+ID4gVGhlIGRlZmF1bHQgaXMgc3VwcG9zZWQgdG8gYmU6DQo+ID4gPg0KPiA+ ID4gIyBvVmlydCBkZWZhdWx0IGZpcmV3YWxsIGNvbmZpZ3VyYXRpb24uIEF1dG9tYXRpY2FsbHkg Z2VuZXJhdGVkIGJ5DQo+ID4gPiB2ZHNtIGJvb3RzdHJhcCBzY3JpcHQuDQo+ID4gPiAqZmlsdGVy DQo+ID4gPiA6SU5QVVQgQUNDRVBUIFswOjBdDQo+ID4gPiA6Rk9SV0FSRCBBQ0NFUFQgWzA6MF0N Cj4gPiA+IDpPVVRQVVQgQUNDRVBUIFswOjBdDQo+ID4gPiAtQSBJTlBVVCAtbSBzdGF0ZSAtLXN0 YXRlIEVTVEFCTElTSEVELFJFTEFURUQgLWogQUNDRVBUDQo+ID4gPiAtQSBJTlBVVCAtcCBpY21w IC1qIEFDQ0VQVA0KPiA+ID4gLUEgSU5QVVQgLWkgbG8gLWogQUNDRVBUDQo+ID4gPiAjIHZkc20N Cj4gPiA+IC1BIElOUFVUIC1wIHRjcCAtLWRwb3J0IDU0MzIxIC1qIEFDQ0VQVA0KPiA+ID4gIyBs aWJ2aXJ0IHRscw0KPiA+ID4gLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgMTY1MTQgLWogQUNDRVBU DQo+ID4gPiAjIFNTSA0KPiA+ID4gLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgMjIgLWogQUNDRVBU DQo+ID4gPiAjIGd1ZXN0IGNvbnNvbGVzDQo+ID4gPiAtQSBJTlBVVCAtcCB0Y3AgLW0gbXVsdGlw b3J0IC0tZHBvcnRzIDU2MzQ6NjE2NiAtaiBBQ0NFUFQNCj4gPiA+ICMgbWlncmF0aW9uDQo+ID4g PiAtQSBJTlBVVCAtcCB0Y3AgLW0gbXVsdGlwb3J0IC0tZHBvcnRzIDQ5MTUyOjQ5MjE2IC1qIEFD Q0VQVA0KPiA+ID4gIyBzbm1wDQo+ID4gPiAtQSBJTlBVVCAtcCB1ZHAgLS1kcG9ydCAxNjEgLWog QUNDRVBUDQo+ID4gPiAjIFJlamVjdCBhbnkgb3RoZXIgaW5wdXQgdHJhZmZpYw0KPiA+ID4gLUEg SU5QVVQgLWogUkVKRUNUIC0tcmVqZWN0LXdpdGggaWNtcC1ob3N0LXByb2hpYml0ZWQNCj4gPiA+ IC1BIEZPUldBUkQgLW0gcGh5c2RldiAhIC0tcGh5c2Rldi1pcy1icmlkZ2VkIC1qIFJFSkVDVCAt LXJlamVjdC13aXRoDQo+ID4gPiBpY21wLWhvc3QtcHJvaGliaXRlZA0KPiA+ID4gQ09NTUlUDQo+ ID4NCj4gPiBteSBkZWZhdWx0IGlzOg0KPiA+DQo+ID4gIyBjYXQgL2V0Yy9zeXNjb25maWcvaXB0 YWJsZXMNCj4gPiAjIG9WaXJ0IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpcmV3YWxsIGNvbmZp Z3VyYXRpb24NCj4gPiAqZmlsdGVyDQo+ID4gOklOUFVUIEFDQ0VQVCBbMDowXQ0KPiA+IDpGT1JX QVJEIEFDQ0VQVCBbMDowXQ0KPiA+IDpPVVRQVVQgQUNDRVBUIFswOjBdDQo+ID4gLUEgSU5QVVQg LW0gc3RhdGUgLS1zdGF0ZSBFU1RBQkxJU0hFRCxSRUxBVEVEIC1qIEFDQ0VQVA0KPiA+IC1BIElO UFVUIC1wIGljbXAgLWogQUNDRVBUDQo+ID4gLUEgSU5QVVQgLWkgbG8gLWogQUNDRVBUDQo+ID4g I3Zkc20NCj4gPiAtQSBJTlBVVCAtcCB0Y3AgLS1kcG9ydCA1NDMyMSAtaiBBQ0NFUFQNCj4gPiAj IFNTSA0KPiA+IC1BIElOUFVUIC1wIHRjcCAtLWRwb3J0IDIyIC1qIEFDQ0VQVA0KPiA+ICMgZ3Vl c3QgY29uc29sZXMNCj4gPiAtQSBJTlBVVCAtcCB0Y3AgLW0gbXVsdGlwb3J0IC0tZHBvcnRzIDU2 MzQ6NjE2NiAtaiBBQ0NFUFQNCj4gPiAjIG1pZ3JhdGlvbg0KPiA+IC1BIElOUFVUIC1wIHRjcCAt bSBtdWx0aXBvcnQgLS1kcG9ydHMgNDkxNTI6NDkyMTYgLWogQUNDRVBUDQo+ID4gIyBzbm1wDQo+ ID4gLUEgSU5QVVQgLXAgdWRwIC0tZHBvcnQgMTYxIC1qIEFDQ0VQVA0KPiA+ICMNCj4gPiAtQSBJ TlBVVCAtaiBSRUpFQ1QgLS1yZWplY3Qtd2l0aCBpY21wLWhvc3QtcHJvaGliaXRlZA0KPiA+IC1B IEZPUldBUkQgLW0gcGh5c2RldiAhIC0tcGh5c2Rldi1pcy1icmlkZ2VkIC1qIFJFSkVDVCAtLXJl amVjdC0NCj4gd2l0aCBpY21wLWhvc3QtcHJvaGliaXRlZA0KPiA+IENPTU1JVA0KPiA+DQo+ID4g Pg0KPiA+ID4gZGlkIHlvdSBjaGFuZ2UgaXQgbWFudWFsbHkgb3IgaXMgdGhlIGRlZmF1bHQgbWlz c2luZyBhbnl0aGluZz8NCj4gPg0KPiA+IGRlZmF1bHQgbWlzc2luZyAibGlidmlydCB0bHMiIGZp ZWxkLg0KPiB3YXMgaXQgYW4gdXBncmFkZSBvZiBzb21lIHNvcnQ/DQpOby4NCg0KPiBUaGVzZSBh cmUgaW5zdGFsbGVkIGF0IG5vZGUgc2V0dXANCj4gZnJvbSBvdmlydC1lbmdpbmUuIENoZWNrIHRo ZSBlbmdpbmUgdmVyc2lvbiBhbmQvb3IgdGhlDQo+IElQVGFibGVzQ29uZmlnIGluIHZkY19vcHRp b25zIHRhYmxlIG9uIGVuZ2luZQ0KDQpvVmlydCBlbmdpbmUgdmVyc2lvbjogMy4xLjAtMi5mYzE3 DQoNCmVuZ2luZT0jIHNlbGVjdCAqIGZyb20gdmRjX29wdGlvbnMgd2hlcmUgb3B0aW9uX2lkPTEw MDsNCiBvcHRpb25faWQgfCAgb3B0aW9uX25hbWUgICB8DQpvcHRpb25fdmFsdWUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2ZXJzaW9uDQotLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t DQogICAgICAgMTAwIHwgSVBUYWJsZXNDb25maWcgfCAjIG9WaXJ0IGRlZmF1bHQgZmlyZXdhbGwg Y29uZmlndXJhdGlvbi4NCkF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHZkc20gYm9vdHN0cmFw IHNjcmlwdC4rfCBnZW5lcmFsDQogICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAqZmlsdGVy DQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgOklOUFVUIEFDQ0VQVCBbMDowXQ0K K3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IDpGT1JXQVJEIEFDQ0VQVCBbMDowXQ0K K3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IDpPVVRQVVQgQUNDRVBUIFswOjBdDQor fA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5QVVQgLW0gc3RhdGUgLS1zdGF0 ZSBFU1RBQkxJU0hFRCxSRUxBVEVEDQotaiBBQ0NFUFQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IC1BIElOUFVUIC1wIGlj bXAgLWogQUNDRVBUDQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5QVVQg LWkgbG8gLWogQUNDRVBUDQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgIyB2ZHNt DQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5QVVQgLXAgdGNwIC0tZHBv cnQgNTQzMjEgLWogQUNDRVBUDQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgIyBs aWJ2aXJ0IHRscw0KK3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IC1BIElOUFVUIC1w IHRjcCAtLWRwb3J0IDE2NTE0IC1qIEFDQ0VQVA0KK3wNCiAgICAgICAgICAgfCAgICAgICAgICAg ICAgICB8ICMgU1NIDQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5QVVQg LXAgdGNwIC0tZHBvcnQgMjIgLWogQUNDRVBUDQorfA0KICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgIyBndWVzdCBjb25zb2xlcw0KK3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8 IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMNCjU2MzQ6NjE2NiAtaiBBQ0NF UFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8DQogICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfCAjIG1pZ3JhdGlvbg0KK3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8 IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMNCjQ5MTUyOjQ5MjE2IC1qIEFD Q0VQVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8DQogICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfCAjIHNubXANCit8DQogICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAtQSBJ TlBVVCAtcCB1ZHAgLS1kcG9ydCAxNjEgLWogQUNDRVBUDQorfA0KICAgICAgICAgICB8ICAgICAg ICAgICAgICAgIHwgIyBSZWplY3QgYW55IG90aGVyIGlucHV0IHRyYWZmaWMNCit8DQogICAgICAg ICAgIHwgICAgICAgICAgICAgICAgfCAtQSBJTlBVVCAtaiBSRUpFQ1QgLS1yZWplY3Qtd2l0aA0K aWNtcC1ob3N0LXByb2hpYml0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr fA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgRk9SV0FSRCAtbSBwaHlzZGV2ICEg LS1waHlzZGV2LWlzLWJyaWRnZWQNCi1qIFJFSkVDVCAtLXJlamVjdC13aXRoIGljbXAtaG9zdC1w cm9oaWJpdGVkK3wNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IENPTU1JVA0KK3wNCiAg ICAgICAgICAgfCAgICAgICAgICAgICAgICB8DQp8DQoNCklQVGFibGVzQ29uZmlnIGlzIHJpZ2h0 Lg0KDQpXaGVuIEkgYWRkIG15IG5vZGVzIHRvIGVuZ2luZSwgSSBqdXN0IGFwcHJvdmUgaXQuIEkg ZG9uJ3QgaGF2ZSBhbg0KIkF1dG9tYXRpY2FsbHkgY29uZmlndXJlIGhvc3QgZmlyZXdhbGwiIG9w dGlvbi4NCg0KPiA+DQo+ID4gPiB0aGFua3MsDQo+ID4gPiBtaWNoYWwNCj4gPiA+ID4gPiBPbiBT ZXAgMjAsIDIwMTIsIGF0IDExOjU1ICwgRG1pdHJpeSBBIFB5cnlha292IHdyb3RlOg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiBIZWxsbywNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJIGhhdmUg dHdvIG9WaXJ0IG5vZGVzIG92aXJ0LW5vZGUtaXNvLTIuNS4wLTIuMC5mYzE3Lg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IFdoZW4gSSB0cnkgdG8gbWlncmF0ZSBWTSBmcm9tIG9uZSBob3N0IHRv IGFub3RoZXIsIEkgaGF2ZSBhbg0KPiA+ID4gPiA+IGVycm9yOiBNaWdyYXRpb24gZmFpbGVkIGR1 ZSB0byBFcnJvcjogRmF0YWwgZXJyb3IgZHVyaW5nDQptaWdyYXRpb24uDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gdmRzbS5sb2c6DQo+ID4gPiA+ID4gPiBUaHJlYWQtMzc5Nzo6REVCVUc6OjIw MTItMDktMjAgMDk6NDI6NTYsNDM5OjpCaW5kaW5nWE1MUlBDOjoNCj4gPiA+ID4gPiA4NTk6OnZk czo6KHdyYXBwZXIpIGNsaWVudCBbMTkyLjE2OC4xMC4xMF06OmNhbGwgdm1NaWdyYXRlIHdpdGgN Cj4gPiA+ID4gPiAoeydzcmMnOiAnMTkyLjE2OC4xMC4xMycsICdkc3QnOiAnMTkyLjE2OC4xMC4x Mjo1NDMyMScsICd2bUlkJzoNCj4gPiA+ID4gPiAnMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMy YWVlYWUyZTg2JywgJ21ldGhvZCc6ICdvbmxpbmUnfSwpIHt9DQo+ID4gPiA+ID4gZmxvd0lEIFsx ODBhZDk3OV0NCj4gPiA+ID4gPiA+IFRocmVhZC0zNzk3OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0 Mjo1Niw0Mzk6OkFQSTo6NDQxOjp2ZHM6Og0KPiA+ID4gPiA+IChtaWdyYXRlKSB7J3NyYyc6ICcx OTIuMTY4LjEwLjEzJywgJ2RzdCc6ICcxOTIuMTY4LjEwLjEyOjU0MzIxJywNCj4gPiA+ID4gPiAn dm1JZCc6ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCAnbWV0aG9kJzoN CidvbmxpbmUnfQ0KPiA+ID4gPiA+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5 OjQyOjU2LDQ0MTo6dm06OjEyMjo6dm0uVm06Og0KPiA+ID4gPiA+IChfc2V0dXBWZHNDb25uZWN0 aW9uKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+ID4gPiBmYzJhZWVhZTJl ODZgOjpEZXN0aW5hdGlvbiBzZXJ2ZXIgaXM6IDE5Mi4xNjguMTAuMTI6NTQzMjENCj4gPiA+ID4g PiA+IFRocmVhZC0zNzk3OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0NDE6OkJpbmRpbmdY TUxSUEM6Og0KPiA+ID4gPiA+IDg2NTo6dmRzOjood3JhcHBlcikgcmV0dXJuIHZtTWlncmF0ZSB3 aXRoIHsnc3RhdHVzJzogeydtZXNzYWdlJzoNCj4gPiA+ID4gPiAnTWlncmF0aW9uIHByb2Nlc3Mg c3RhcnRpbmcnLCAnY29kZSc6IDB9fQ0KPiA+ID4gPiA+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoy MDEyLTA5LTIwIDA5OjQyOjU2LDQ0MTo6dm06OjEyNDo6dm0uVm06Og0KPiA+ID4gPiA+IChfc2V0 dXBWZHNDb25uZWN0aW9uKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+ID4g PiBmYzJhZWVhZTJlODZgOjpJbml0aWF0aW5nIGNvbm5lY3Rpb24gd2l0aCBkZXN0aW5hdGlvbg0K PiA+ID4gPiA+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ1Mjo6 bGlidmlydHZtOjoNCj4gPiA+ID4gPiAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1g MmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ID4gPiA+ID4gZmMyYWVlYWUyZTg2YDo6RGlzayBo ZGMgc3RhdHMgbm90IGF2YWlsYWJsZQ0KPiA+ID4gPiA+ID4gVGhyZWFkLTM3OTg6OkRFQlVHOjoy MDEyLTA5LTIwIDA5OjQyOjU2LDQ1Nzo6dm06OjE3MDo6dm0uVm06Og0KPiA+ID4gPiA+IChfcHJl cGFyZUd1ZXN0KSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+ID4gPiBmYzJh ZWVhZTJlODZgOjptaWdyYXRpb24gUHJvY2VzcyBiZWdpbnMNCj4gPiA+ID4gPiA+IFRocmVhZC0z Nzk4OjpERUJVRzo6MjAxMi0wOS0yMA0KMDk6NDI6NTYsNDc1Ojp2bTo6MjE3Ojp2bS5WbTo6KHJ1 bikNCj4gPiA+ID4gPiB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZg OjptaWdyYXRpb24NCj4gc2VtYXBob3JlIGFjcXVpcmVkDQo+ID4gPiA+ID4gPiBUaHJlYWQtMzc5 ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsODg4OjpsaWJ2aXJ0dm06Og0KPiA+ID4gPiA+ IDQyNzo6dm0uVm06Oihfc3RhcnRVbmRlcmx5aW5nTWlncmF0aW9uKQ0KPiA+ID4gPiA+IHZtSWQ9 YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NmA6OnN0YXJ0aW5nIG1pZ3JhdGlv bg0KdG8NCj4gPiA+ID4gPiBxZW11K3RsczovLzE5Mi4xNjguMTAuMTIvc3lzdGVtDQo+ID4gPiA+ ID4gPiBUaHJlYWQtMzc5OTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsODg5OjpsaWJ2aXJ0 dm06Og0KPiA+ID4gPiA+IDMyNTo6dm0uVm06OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJj Ny04MTg4LQ0KPiA+ID4gPiA+IGZjMmFlZWFlMmU4NmA6Om1pZ3JhdGlvbiBkb3dudGltZSB0aHJl YWQgc3RhcnRlZA0KPiA+ID4gPiA+ID4gVGhyZWFkLTM4MDA6OkRFQlVHOjoyMDEyLTA5LTIwIDA5 OjQyOjU2LDg5MDo6bGlidmlydHZtOjoNCj4gPiA+ID4gPiAzNTM6OnZtLlZtOjoocnVuKSB2bUlk PWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+ID4gPiBmYzJhZWVhZTJlODZgOjpzdGFy dGluZyBtaWdyYXRpb24gbW9uaXRvciB0aHJlYWQNCj4gPiA+ID4gPiA+IFRocmVhZC0zNzk4OjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDM6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ID4gMzQw Ojp2bS5WbTo6KGNhbmNlbCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtDQo+ID4gPiA+ ID4gZmMyYWVlYWUyZTg2YDo6Y2FuY2VsaW5nIG1pZ3JhdGlvbiBkb3dudGltZSB0aHJlYWQNCj4g PiA+ID4gPiA+IFRocmVhZC0zNzk4OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6Omxp YnZpcnR2bTo6DQo+ID4gPiA+ID4gMzkwOjp2bS5WbTo6KHN0b3ApIHZtSWQ9YDJiZjNlNmViLTQ5 ZTQtNDJjNy04MTg4LQ0KPiA+ID4gPiA+IGZjMmFlZWFlMmU4NmA6OnN0b3BwaW5nIG1pZ3JhdGlv biBtb25pdG9yIHRocmVhZA0KPiA+ID4gPiA+ID4gVGhyZWFkLTM3OTk6OkRFQlVHOjoyMDEyLTA5 LTIwIDA5OjQyOjU2LDkwNDo6bGlidmlydHZtOjoNCj4gPiA+ID4gPiAzMzc6OnZtLlZtOjoocnVu KSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0NCj4gPiA+ID4gPiBmYzJhZWVhZTJlODZg OjptaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkIGV4aXRpbmcNCj4gPiA+ID4gPiA+IFRocmVhZC0z Nzk4OjpFUlJPUjo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDU6OnZtOjoxNzY6OnZtLlZtOjoNCj4g PiA+ID4gPiAoX3JlY292ZXIpIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFl MmU4NmA6Om9wZXJhdGlvbg0KDQo+ID4gPiA+ID4gZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVjdCB0 byByZW1vdGUgbGlidmlydCBVUkkgcWVtdQ0KK3RsczovLzE5Mi4xNjguDQo+ID4gPiA+ID4gMTAu MTIvc3lzdGVtDQo+ID4gPiA+ID4gPiBUaHJlYWQtMzc5ODo6RVJST1I6OjIwMTItMDktMjANCjA5 OjQyOjU2LDk3Nzo6dm06OjI0MDo6dm0uVm06OihydW4pDQo+ID4gPiA+ID4gdm1JZD1gMmJmM2U2 ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUyZTg2YDo6RmFpbGVkIHRvIG1pZ3JhdGUNCj4gPiA+ ID4gPiA+IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCj4gPiA+ID4gPiA+IEZp bGUgIi91c3Ivc2hhcmUvdmRzbS92bS5weSIsIGxpbmUgMjIzLCBpbiBydW4NCj4gPiA+ID4gPiA+ IEZpbGUgIi91c3Ivc2hhcmUvdmRzbS9saWJ2aXJ0dm0ucHkiLCBsaW5lIDQ1MSwgaW4NCj4gPiA+ IF9zdGFydFVuZGVybHlpbmdNaWdyYXRpb24NCj4gPiA+ID4gPiA+IEZpbGUgIi91c3Ivc2hhcmUv dmRzbS9saWJ2aXJ0dm0ucHkiLCBsaW5lIDQ5MSwgaW4gZg0KPiA+ID4gPiA+ID4gRmlsZQ0KIi91 c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3Zkc20vbGlidmlydGNvbm5lY3Rpb24ucHki LA0KPiA+ID4gPiA+IGxpbmUgODIsIGluIHdyYXBwZXINCj4gPiA+ID4gPiA+IEZpbGUgIi91c3Iv bGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmlydC5weSIsIGxpbmUNCjEwMzQsDQo+ ID4gPiA+ID4gaW4gbWlncmF0ZVRvVVJJMg0KPiA+ID4gPiA+ID4gbGlidmlydEVycm9yOiBvcGVy YXRpb24gZmFpbGVkOiBGYWlsZWQgdG8gY29ubmVjdCB0byByZW1vdGUNCj4gPiA+ID4gPiBsaWJ2 aXJ0IFVSSSBxZW11K3RsczovLzE5Mi4xNjguMTAuMTIvc3lzdGVtDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gVGhyZWFkLTM4MDI6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU3LDc5Mzo6Qmlu ZGluZ1hNTFJQQzo6DQo+ID4gPiA+ID4gODU5Ojp2ZHM6Oih3cmFwcGVyKSBjbGllbnQgWzE5Mi4x NjguMTAuMTBdOjpjYWxsIHZtR2V0U3RhdHMgd2l0aA0KPiA+ID4gPiA+ICgnMmJmM2U2ZWItNDll NC00MmM3LTgxODgtZmMyYWVlYWUyZTg2JywpIHt9DQo+ID4gPiA+ID4gPiBUaHJlYWQtMzgwMjo6 REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsNzkzOjpsaWJ2aXJ0dm06Og0KPiA+ID4gPiA+IDI0 MDo6dm0uVm06OihfZ2V0RGlza1N0YXRzKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC0N Cj4gPiA+ID4gPiBmYzJhZWVhZTJlODZgOjpEaXNrIGhkYyBzdGF0cyBub3QgYXZhaWxhYmxlDQo+ ID4gPiA+ID4gPiBUaHJlYWQtMzgwMjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsNzk0OjpC aW5kaW5nWE1MUlBDOjoNCj4gPiA+ID4gPiA4NjU6OnZkczo6KHdyYXBwZXIpIHJldHVybiB2bUdl dFN0YXRzIHdpdGggeydzdGF0dXMnOiB7J21lc3NhZ2UnOg0KDQo+ID4gPiA+ID4gJ0RvbmUnLCAn Y29kZSc6IDB9LCAnc3RhdHNMaXN0JzogW3snc3RhdHVzJzogJ1VwJywgJ3VzZXJuYW1lJzoNCj4g PiA+ID4gPiAnVW5rbm93bicsICdtZW1Vc2FnZSc6ICcwJywgJ2FjcGlFbmFibGUnOiAndHJ1ZScs ICdwaWQnOiAnMjIwNDcnLA0KDQo+ID4gPiA+ID4gJ2Rpc3BsYXlJcCc6ICcxOTIuMTY4LjEwLjEz JywgJ2Rpc3BsYXlQb3J0JzogdSc1OTEyJywgJ3Nlc3Npb24nOg0KPiA+ID4gPiA+ICdVbmtub3du JywgJ2Rpc3BsYXlTZWN1cmVQb3J0JzogdSc1OTEzJywgJ3RpbWVPZmZzZXQnOiAnMCcsDQonaGFz aCc6DQo+ID4gPiA+ID4gJzMwMTg4NzQxNjIzMjQ3NTMwODMnLCAncGF1c2VDb2RlJzogJ05PRVJS JywgJ2NsaWVudElwJzogJycsDQo+ID4gPiA+ID4gJ2t2bUVuYWJsZSc6ICd0cnVlJywgJ25ldHdv cmsnOiB7dSd2bmV0Nic6IHsnbWFjQWRkcic6DQonMDA6MWE6NGE6YTg6DQo+ID4gPiA+ID4gMGE6 MDgnLCAncnhEcm9wcGVkJzogJzAnLCAncnhFcnJvcnMnOiAnMCcsICd0eERyb3BwZWQnOiAnMCcs DQo+ID4gPiA+ID4gJ3R4UmF0ZSc6ICcwLjAnLCAncnhSYXRlJzogJzAuMCcsICd0eEVycm9ycyc6 ICcwJywgJ3N0YXRlJzoNCj4gPiA+ID4gPiAndW5rbm93bicsICdzcGVlZCc6ICcxMDAwJywgJ25h bWUnOiB1J3ZuZXQ2J319LCAndm1JZCc6DQo+ID4gPiA+ID4gJzJiZjNlNmViLTQ5ZTQtNDJjNy04 MTg4LWZjMmFlZWFlMmU4NicsICdkaXNwbGF5VHlwZSc6ICdxeGwnLA0KPiA+ID4gPiA+ICdjcHVV c2VyJzogJzEzLjI3JywgJ2Rpc2tzJzoge3UnaGRjJzogeydmbHVzaExhdGVuY3knOiAnMCcsDQo+ ID4gPiA+ID4gJ3JlYWRMYXRlbmN5JzogJzAnLCAnd3JpdGVMYXRlbmN5JzogJzAnfSwgdSdoZGEn OiB7J3JlYWRMYXRlbmN5JzoNCg0KPiA+ID4gPiA+ICc2MTgzODA1JywgJ2FwcGFyZW50c2l6ZSc6 ICcxMTgxMTE2MDA2NCcsICd3cml0ZUxhdGVuY3knOiAnMCcsDQo+ID4gPiA+ID4gJ2ltYWdlSUQn OiAnZDk2ZDE5ZjYtNWEyOC00ZmVmLTg5MmYtNGEwNDU0OWQ0ZTM4JywNCidmbHVzaExhdGVuY3kn Og0KPiA+ID4gPiA+ICcwJywgJ3JlYWRSYXRlJzogJzI3MS44NycsICd0cnVlc2l6ZSc6ICcxMTgx MTE2MDA2NCcsDQond3JpdGVSYXRlJzoNCj4gPiA+ID4gPiAnMC4wMCd9fSwgJ21vbml0b3JSZXNw b25zZSc6ICcwJywgJ3N0YXRzQWdlJzogJzAuNzcnLCAnY3B1SWRsZSc6DQo+ID4gPiA+ID4gJzg2 LjczJywgJ2VsYXBzZWRUaW1lJzogJzM5NDEnLCAndm1UeXBlJzogJ2t2bScsICdjcHVTeXMnOg0K JzAuMDAnLA0KPiA+ID4gPiA+ICdhcHBzTGlzdCc6IFtdLCAnZ3Vlc3RJUHMnOiAnJywgJ25pY2Un OiAnJ31dfQ0KPiA+ID4gPiA+ID4gVGhyZWFkLTM4MDM6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQy OjU3LDg2OTo6QmluZGluZ1hNTFJQQzo6DQo+ID4gPiA+ID4gODU5Ojp2ZHM6Oih3cmFwcGVyKSBj bGllbnQgWzE5Mi4xNjguMTAuMTBdOjpjYWxsDQo+ID4gPiA+ID4gdm1HZXRNaWdyYXRpb25TdGF0 dXMgd2l0aA0KKCcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODYnLCkge30NCj4g PiA+ID4gPiA+IFRocmVhZC0zODAzOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw4NzA6OkJp bmRpbmdYTUxSUEM6Og0KPiA+ID4gPiA+IDg2NTo6dmRzOjood3JhcHBlcikgcmV0dXJuIHZtR2V0 TWlncmF0aW9uU3RhdHVzIHdpdGggeydzdGF0dXMnOg0KPiA+ID4gPiA+IHsnbWVzc2FnZSc6ICdG YXRhbCBlcnJvciBkdXJpbmcgbWlncmF0aW9uJywgJ2NvZGUnOiAxMn19DQo+ID4gPiA+ID4gPiBE dW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1OCwxNzI6Ol9faW5pdF9fOjoNCj4g PiA+ID4gPiAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgJ2RkIGlmPS9yaGV2L2Rh dGEtY2VudGVyLw0KPiA+ID4gPiA+IDMzMjY5NGJiLTM2NGEtNDM0ZS1iMjNmLTVmZWY5ODVkM2Ni ZC9tYXN0ZXJzZC9kb21fbWQvaW5ib3gNCj4gPiA+ID4gPiBpZmxhZz1kaXJlY3QsZnVsbGJsb2Nr IGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKQ0KPiA+ID4gPiA+ID4gRHVtbXktMTI2NDo6 REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTgsMjYyOjpfX2luaXRfXzo6DQo+ID4gPiA+ID4gMTI0 OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6IDxlcnI+ID0gJzErMCByZWNv cmRzDQppbg0KPiA+ID4gPiA+IFxuMSswIHJlY29yZHMgb3V0XG4xMDI0MDAwIGJ5dGVzICgxLjAg TUIpIGNvcGllZCwgMC4wNTE1MTA5IHMsDQoxOS45DQo+ID4gPiA+ID4gTUIvc1xuJzsgPHJjPiA9 IDANCj4gPiA+ID4gPiA+IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAwLDI3 MTo6X19pbml0X186Og0KPiA+ID4gPiA+IDEyNDk6OlN0b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9n KSAnZGQgaWY9L3JoZXYvZGF0YS1jZW50ZXIvDQo+ID4gPiA+ID4gMzMyNjk0YmItMzY0YS00MzRl LWIyM2YtNWZlZjk4NWQzY2JkL21hc3RlcnNkL2RvbV9tZC9pbmJveA0KPiA+ID4gPiA+IGlmbGFn PWRpcmVjdCxmdWxsYmxvY2sgY291bnQ9MSBicz0xMDI0MDAwJyAoY3dkIE5vbmUpDQo+ID4gPiA+ ID4gPiBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMCwzNjI6Ol9faW5pdF9f OjoNCj4gPiA+ID4gPiAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xvZykgU1VDQ0VTUzog PGVycj4gPSAnMSswIHJlY29yZHMNCmluDQo+ID4gPiA+ID4gXG4xKzAgcmVjb3JkcyBvdXRcbjEw MjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1MzAxNzEgcywNCjE5LjMNCj4gPiA+ID4g PiBNQi9zXG4nOyA8cmM+ID0gMA0KPiA+ID4gPiA+ID4gVGhyZWFkLTIxOjpERUJVRzo6MjAxMi0w OS0yMCAwOTo0MzowMCw2MTI6Ol9faW5pdF9fOjoNCj4gPiA+ID4gPiAxMjQ5OjpTdG9yYWdlLk1p c2MuZXhjQ21kOjooX2xvZykgJy91c3IvYmluL2RkIGlmbGFnPWRpcmVjdA0KaWY9L2Rldi8NCj4g PiA+ID4gPiAyNjE4N2QyNS1iZmNiLTQwYzctOTdkMS02Njc3MDVhZDIyMjMvbWV0YWRhdGEgYnM9 NDA5Ng0KPiBjb3VudD0xJyAoY3dkIE5vbmUpDQo+ID4gPiA+ID4gPiBUaHJlYWQtMjE6OkRFQlVH OjoyMDEyLTA5LTIwIDA5OjQzOjAwLDYyOTo6X19pbml0X186Og0KPiA+ID4gPiA+IDEyNDk6OlN0 b3JhZ2UuTWlzYy5leGNDbWQ6OihfbG9nKSBTVUNDRVNTOiA8ZXJyPiA9ICcxKzAgcmVjb3Jkcw0K aW4NCj4gPiA+ID4gPiBcbjErMCByZWNvcmRzIG91dFxuNDA5NiBieXRlcyAoNC4xIGtCKSBjb3Bp ZWQsIDAuMDAwOTM3Njk4IHMsIDQuNA0KDQo+ID4gPiA+ID4gTUIvc1xuJzsgPHJjPiA9IDANCj4g PiA+ID4gPiA+IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDE6OnRh c2s6Og0KPiA+ID4gPiA+IDU4ODo6VGFza01hbmFnZXIuVGFzazo6KF91cGRhdGVTdGF0ZSkNClRh c2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2LQ0KPiA+ID4gPiA+IGU0Zjk4MDQ4NzFmZmA6Om1v dmluZyBmcm9tIHN0YXRlIGluaXQgLT4gc3RhdGUgcHJlcGFyaW5nDQo+ID4gPiA+ID4gPiBUaHJl YWQtMzgwNTo6SU5GTzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDI6OmxvZ1V0aWxzOjoNCj4gPiA+ ID4gPiAzNzo6ZGlzcGF0Y2hlcjo6KHdyYXBwZXIpIFJ1biBhbmQgcHJvdGVjdDogcmVwb1N0YXRz DQoob3B0aW9ucz1Ob25lKQ0KPiA+ID4gPiA+ID4gVGhyZWFkLTM4MDU6OklORk86OjIwMTItMDkt MjAgMDk6NDM6MDEsOTAyOjpsb2dVdGlsczo6DQo+ID4gPiA+ID4gMzk6OmRpc3BhdGNoZXI6Oih3 cmFwcGVyKSBSdW4gYW5kIHByb3RlY3Q6IHJlcG9TdGF0cywgUmV0dXJuDQo+ID4gPiA+ID4gcmVz cG9uc2U6IHsnMjYxODdkMjUtYmZjYi00MGM3LTk3ZDEtNjY3NzA1YWQyMjIzJzogeydkZWxheSc6 ICcwLg0KPiA+ID4gPiA+IDAxODA5MzEwOTEzMDknLCAnbGFzdENoZWNrJzogMTM0ODEzNDE4MC44 MjU4OTIsICdjb2RlJzogMCwNCid2YWxpZCc6DQo+ID4gPiA+ID4gVHJ1ZX0sICc5MDEwNGMzZC04 MzdiLTQ3ZGQtOGM4Mi1kZGE5MmVlYzMwZDknOiB7J2RlbGF5JzogJzAuDQo+ID4gPiA+ID4gMDAw OTU1ODIwMDgzNjE4JywgJ2xhc3RDaGVjayc6IDEzNDgxMzQxNzUuNDkzMjc3LCAnY29kZSc6IDAs DQo+ID4gPiAndmFsaWQnOiBUcnVlfX0NCj4gPiA+ID4gPiA+IFRocmVhZC0zODA1OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0MzowMSw5MDI6OnRhc2s6Og0KPiA+ID4gPiA+IDExNzI6OlRhc2tNYW5h Z2VyLlRhc2s6OihwcmVwYXJlKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gPiA+ ID4gPiBlNGY5ODA0ODcxZmZgOjpmaW5pc2hlZDogeycyNjE4N2QyNS1iZmNiLTQwYzctOTdkMS02 Njc3MDVhZDIyMjMnOg0KDQo+ID4gPiA+ID4geydkZWxheSc6ICcwLjAxODA5MzEwOTEzMDknLCAn bGFzdENoZWNrJzogMTM0ODEzNDE4MC44MjU4OTIsDQonY29kZSc6DQo+ID4gPiA+ID4gMCwgJ3Zh bGlkJzogVHJ1ZX0sICc5MDEwNGMzZC04MzdiLTQ3ZGQtOGM4Mi1kZGE5MmVlYzMwZDknOg0Keydk ZWxheSc6DQo+ID4gPiA+ID4gJzAuMDAwOTU1ODIwMDgzNjE4JywgJ2xhc3RDaGVjayc6IDEzNDgx MzQxNzUuNDkzMjc3LCAnY29kZSc6IDAsDQo+ID4gPiA+ID4gJ3ZhbGlkJzogVHJ1ZX19DQo+ID4g PiA+ID4gPiBUaHJlYWQtMzgwNTo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTAyOjp0YXNr OjoNCj4gPiA+ID4gPiA1ODg6OlRhc2tNYW5hZ2VyLlRhc2s6OihfdXBkYXRlU3RhdGUpDQpUYXNr PWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi0NCj4gPiA+ID4gPiBlNGY5ODA0ODcxZmZgOjptb3Zp bmcgZnJvbSBzdGF0ZSBwcmVwYXJpbmcgLT4gc3RhdGUgZmluaXNoZWQNCj4gPiA+ID4gPiA+IFRo cmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDM6OnJlc291cmNlTWFuYWdl cjo6DQo+ID4gPiA+ID4gODA5OjpSZXNvdXJjZU1hbmFnZXIuT3duZXI6OihyZWxlYXNlQWxsKSBP d25lci5yZWxlYXNlQWxsDQpyZXF1ZXN0cw0KPiA+ID4gPiA+IHt9IHJlc291cmNlcyB7fQ0KPiA+ ID4gPiA+ID4gVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMzo6cmVz b3VyY2VNYW5hZ2VyOjoNCj4gPiA+ID4gPiA4NDQ6OlJlc291cmNlTWFuYWdlci5Pd25lcjo6KGNh bmNlbEFsbCkgT3duZXIuY2FuY2VsQWxsIHJlcXVlc3RzDQp7fQ0KPiA+ID4gPiA+ID4gVGhyZWFk LTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMzo6dGFzazo6DQo+ID4gPiA+ID4g OTc4OjpUYXNrTWFuYWdlci5UYXNrOjooX2RlY3JlZikgVGFzaz1gZmYxMzRlY2MtNTU5Ny00YTgz LTgxZDYtDQo+ID4gPiA+ID4gZTRmOTgwNDg3MWZmYDo6cmVmIDAgYWJvcnRpbmcgRmFsc2UNCj4g PiA+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzE6Omxp YnZpcnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDU0 MDMzNWYwLTIyNjktNGJjNC0NCj4gPiA+ID4gPiBhYWY0LTExYmY1OTkwMDEzZmA6OkRpc2sgaGRj IHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAx Mi0wOS0yMCAwOTo0MzowMSw5MzE6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6 KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDJjM2FmNWY1LQ0KPiA+ID4gPiA+IGY4NzctNGU2Yi04YTM0 LTA1YmJlNzhiM2M4MmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+ IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzI6OmxpYnZpcnR2bTo6 DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDBhYzBkZDNhLWFl MmEtNDk2My0NCj4gPiA+ID4gPiBhZGYxLTkxODk5MzAzMWY2YmA6OkRpc2sgaGRjIHN0YXRzIG5v dCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0MzowMSw5MzI6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNr U3RhdHMpIHZtSWQ9YDM1YTY1YmI4LWNiY2EtNDA0OS0NCj4gPiA+ID4gPiBhNDI4LTI4OTE0YmNi MDk0YWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+IFRocmVhZC0z ODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDRlZjMyNThjLTAzODAtNDkxOS05 OTFmLQ0KPiA+ID4gPiA+IGVlN2JlN2U5ZjdmYWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFi bGUNCj4gPiA+ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5 MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZt SWQ9YDI1MmU2ZDQ2LWYzNjItNDZhYS1hN2VkLQ0KPiA+ID4gPiA+IGRkMDBhODZhZjZmMGA6OkRp c2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+IFRocmVhZC0zODA2OjpERUJV Rzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzM6OmxpYnZpcnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2 bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDUwOWU2MDhjLWU2NTctNDczYS1iMDMxLQ0KPiA+ ID4gPiA+IGYwODExZGE5NmJkZWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ ID4gPiA+IFRocmVhZC0zODA2OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MzQ6OmxpYnZp cnR2bTo6DQo+ID4gPiA+ID4gMjQwOjp2bS5WbTo6KF9nZXREaXNrU3RhdHMpIHZtSWQ9YDJiZjNl NmViLTQ5ZTQtNDJjNy04MTg4LQ0KPiA+ID4gPiA+IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0 YXRzIG5vdCBhdmFpbGFibGUNCj4gPiA+ID4gPiA+IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5 LTIwIDA5OjQzOjAyLDM3MTo6X19pbml0X186Og0KPiA+ID4gPiA+IDEyNDk6OlN0b3JhZ2UuTWlz Yy5leGNDbWQ6OihfbG9nKSAnZGQgaWY9L3JoZXYvZGF0YS1jZW50ZXIvDQo+ID4gPiA+ID4gMzMy Njk0YmItMzY0YS00MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21hc3RlcnNkL2RvbV9tZC9pbmJveA0K PiA+ID4gPiA+IGlmbGFnPWRpcmVjdCxmdWxsYmxvY2sgY291bnQ9MSBicz0xMDI0MDAwJyAoY3dk IE5vbmUpDQo+ID4gPiA+ID4gPiBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mzow Miw0NjI6Ol9faW5pdF9fOjoNCj4gPiA+ID4gPiAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjoo X2xvZykgU1VDQ0VTUzogPGVycj4gPSAnMSswIHJlY29yZHMNCmluDQo+ID4gPiA+ID4gXG4xKzAg cmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1MjUxODMgcywN CjE5LjUNCj4gPiA+ID4gPiBNQi9zXG4nOyA8cmM+ID0gMA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC0gLQ0KPiA+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiA+ID4gPiA+IFVzZXJzIG1haWxpbmcgbGlzdA0KPiA+ID4gPiA+ID4g VXNlcnNAb3ZpcnQub3JnDQo+ID4gPiA+ID4gPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxt YW4vbGlzdGluZm8vdXNlcnMNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4NCj4gPg0KPg== --0__=C9BBF0ECDFAACFF88f9e8a93df938690918cC9BBF0ECDFAACFF8 Content-type: text/html; charset=KOI8-R Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48dHQ+PGZvbnQgc2l6ZT0iMiI+TWljaGFsIFNrcml2YW5layAmbHQ7 bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tJmd0OyDOwdDJ08HOzyAyMC4wOS4yMDEyIDE2OjIz OjMxOjxicj4NCjxicj4NCiZndDsg79Q6IE1pY2hhbCBTa3JpdmFuZWsgJmx0O21pY2hhbC5za3Jp dmFuZWtAcmVkaGF0LmNvbSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ Jmd0OyDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgJmx0O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5y dSZndDs8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyDrz9DJ0TogdXNl cnNAb3ZpcnQub3JnPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiZndDsg5MHU wTogMjAuMDkuMjAxMiAxNjoyNDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4m Z3Q7IPTFzcE6IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248L2ZvbnQ+ PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Jmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsg T24gU2VwIDIwLCAyMDEyLCBhdCAxMjoxOSAsIERtaXRyaXkgQSBQeXJ5YWtvdiB3cm90ZTo8YnI+ DQomZ3Q7IDxicj4NCiZndDsgJmd0OyBNaWNoYWwgU2tyaXZhbmVrICZsdDttaWNoYWwuc2tyaXZh bmVrQHJlZGhhdC5jb20mZ3Q7IM7B0MnTwc7PIDIwLjA5LjIwMTIxNjoxMzoxNjo8YnI+DQomZ3Q7 ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg79Q6IE1pY2hhbCBTa3JpdmFuZWsgJmx0O21pY2hh bC5za3JpdmFuZWtAcmVkaGF0LmNvbSZndDs8YnI+DQomZ3Q7ICZndDsgJmd0OyDrz83VOiBEbWl0 cml5IEEgUHlyeWFrb3YgJmx0O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5ydSZndDs8YnI+DQomZ3Q7 ICZndDsgJmd0OyDrz9DJ0TogdXNlcnNAb3ZpcnQub3JnPGJyPg0KJmd0OyAmZ3Q7ICZndDsg5MHU wTogMjAuMDkuMjAxMiAxNjoxMzxicj4NCiZndDsgJmd0OyAmZ3Q7IPTFzcE6IFJlOiBbVXNlcnNd IEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyA8YnI+DQom Z3Q7ICZndDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsgJmd0OyBPbiBTZXAgMjAsIDIwMTIsIGF0IDEy OjA3ICwgRG1pdHJpeSBBIFB5cnlha292IHdyb3RlOjxicj4NCiZndDsgJmd0OyAmZ3Q7IDxicj4N CiZndDsgJmd0OyAmZ3Q7ICZndDsgTWljaGFsIFNrcml2YW5layAmbHQ7bWljaGFsLnNrcml2YW5l a0ByZWRoYXQuY29tJmd0OyDOwdDJ08HOzyAyMC4wOS48YnI+DQomZ3Q7IDIwMTIxNjowMjoxMTo8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyDv 1DogTWljaGFsIFNrcml2YW5layAmbHQ7bWljaGFsLnNrcml2YW5la0ByZWRoYXQuY29tJmd0Ozxi cj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyDrz83VOiBEbWl0cml5IEEgUHlyeWFrb3YgJmx0 O0RQeXJ5YWtvdkBla2IuYmVlbGluZS5ydSZndDs8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsg68/QydE6IHVzZXJzQG92aXJ0Lm9yZzxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyDk wdTBOiAyMC4wOS4yMDEyIDE2OjAyPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IPTFzcE6 IFJlOiBbVXNlcnNdIEZhdGFsIGVycm9yIGR1cmluZyBtaWdyYXRpb248YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IEhpLDxicj4NCiZn dDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyB3ZWxsLCBzbyB3aGF0IGlzIHRoZSBvdGhlciBzaWRlIHNh eWluZz8gTWF5YmUgc29tZSBjb25uZWN0aXZpdHkgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAm Z3Q7IHByb2JsZW1zIGJldHdlZW4gdGhvc2UgMiBob3N0cz8gZmlyZXdhbGw/IDxicj4NCiZndDsg Jmd0OyAmZ3Q7ICZndDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhhbmtz LDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBtaWNoYWw8YnI+DQomZ3Q7ICZndDsgJmd0 OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgWWVzLCBmaXJld2FsbCBpcyBub3QgY29u ZmlndXJlZCBwcm9wZXJseSBieSBkZWZhdWx0LiBJZiBJIHN0b3AgaXQsPGJyPg0KJmd0OyAmZ3Q7 ICZndDsgbWlncmF0aW9uIGRvbmUuPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaGFua3MuPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgVGhlIGRlZmF1bHQgaXMgc3VwcG9zZWQgdG8gYmU6PGJyPg0KJmd0 OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgIyBvVmlydCBkZWZhdWx0IGZpcmV3YWxs IGNvbmZpZ3VyYXRpb24uIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IDxicj4NCiZndDsgJmd0 OyAmZ3Q7IHZkc20gYm9vdHN0cmFwIHNjcmlwdC48YnI+DQomZ3Q7ICZndDsgJmd0OyAqZmlsdGVy PGJyPg0KJmd0OyAmZ3Q7ICZndDsgOklOUFVUIEFDQ0VQVCBbMDowXTxicj4NCiZndDsgJmd0OyAm Z3Q7IDpGT1JXQVJEIEFDQ0VQVCBbMDowXTxicj4NCiZndDsgJmd0OyAmZ3Q7IDpPVVRQVVQgQUND RVBUIFswOjBdPGJyPg0KJmd0OyAmZ3Q7ICZndDsgLUEgSU5QVVQgLW0gc3RhdGUgLS1zdGF0ZSBF U1RBQkxJU0hFRCxSRUxBVEVEIC1qIEFDQ0VQVDxicj4NCiZndDsgJmd0OyAmZ3Q7IC1BIElOUFVU IC1wIGljbXAgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7ICZndDsgLUEgSU5QVVQgLWkgbG8gLWog QUNDRVBUPGJyPg0KJmd0OyAmZ3Q7ICZndDsgIyB2ZHNtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgLUEg SU5QVVQgLXAgdGNwIC0tZHBvcnQgNTQzMjEgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7ICZndDsg IyBsaWJ2aXJ0IHRsczxicj4NCiZndDsgJmd0OyAmZ3Q7IC1BIElOUFVUIC1wIHRjcCAtLWRwb3J0 IDE2NTE0IC1qIEFDQ0VQVDxicj4NCiZndDsgJmd0OyAmZ3Q7ICMgU1NIPGJyPg0KJmd0OyAmZ3Q7 ICZndDsgLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgMjIgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7 ICZndDsgIyBndWVzdCBjb25zb2xlczxicj4NCiZndDsgJmd0OyAmZ3Q7IC1BIElOUFVUIC1wIHRj cCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNTYzNDo2MTY2IC1qIEFDQ0VQVDxicj4NCiZndDsgJmd0 OyAmZ3Q7ICMgbWlncmF0aW9uPGJyPg0KJmd0OyAmZ3Q7ICZndDsgLUEgSU5QVVQgLXAgdGNwIC1t IG11bHRpcG9ydCAtLWRwb3J0cyA0OTE1Mjo0OTIxNiAtaiBBQ0NFUFQ8YnI+DQomZ3Q7ICZndDsg Jmd0OyAjIHNubXA8YnI+DQomZ3Q7ICZndDsgJmd0OyAtQSBJTlBVVCAtcCB1ZHAgLS1kcG9ydCAx NjEgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7ICZndDsgIyBSZWplY3QgYW55IG90aGVyIGlucHV0 IHRyYWZmaWM8YnI+DQomZ3Q7ICZndDsgJmd0OyAtQSBJTlBVVCAtaiBSRUpFQ1QgLS1yZWplY3Qt d2l0aCBpY21wLWhvc3QtcHJvaGliaXRlZDxicj4NCiZndDsgJmd0OyAmZ3Q7IC1BIEZPUldBUkQg LW0gcGh5c2RldiAhIC0tcGh5c2Rldi1pcy1icmlkZ2VkIC1qIFJFSkVDVCAtLXJlamVjdC13aXRo PGJyPg0KJmd0OyAmZ3Q7ICZndDsgaWNtcC1ob3N0LXByb2hpYml0ZWQ8YnI+DQomZ3Q7ICZndDsg Jmd0OyBDT01NSVQ8YnI+DQomZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7IG15IGRlZmF1bHQgaXM6 PGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAjIGNhdCAvZXRjL3N5c2NvbmZpZy9pcHRh Ymxlczxicj4NCiZndDsgJmd0OyAjIG9WaXJ0IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpcmV3 YWxsIGNvbmZpZ3VyYXRpb248YnI+DQomZ3Q7ICZndDsgKmZpbHRlcjxicj4NCiZndDsgJmd0OyA6 SU5QVVQgQUNDRVBUIFswOjBdPGJyPg0KJmd0OyAmZ3Q7IDpGT1JXQVJEIEFDQ0VQVCBbMDowXTxi cj4NCiZndDsgJmd0OyA6T1VUUFVUIEFDQ0VQVCBbMDowXTxicj4NCiZndDsgJmd0OyAtQSBJTlBV VCAtbSBzdGF0ZSAtLXN0YXRlIEVTVEFCTElTSEVELFJFTEFURUQgLWogQUNDRVBUPGJyPg0KJmd0 OyAmZ3Q7IC1BIElOUFVUIC1wIGljbXAgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7IC1BIElOUFVU IC1pIGxvIC1qIEFDQ0VQVDxicj4NCiZndDsgJmd0OyAjdmRzbTxicj4NCiZndDsgJmd0OyAtQSBJ TlBVVCAtcCB0Y3AgLS1kcG9ydCA1NDMyMSAtaiBBQ0NFUFQ8YnI+DQomZ3Q7ICZndDsgIyBTU0g8 YnI+DQomZ3Q7ICZndDsgLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgMjIgLWogQUNDRVBUPGJyPg0K Jmd0OyAmZ3Q7ICMgZ3Vlc3QgY29uc29sZXM8YnI+DQomZ3Q7ICZndDsgLUEgSU5QVVQgLXAgdGNw IC1tIG11bHRpcG9ydCAtLWRwb3J0cyA1NjM0OjYxNjYgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7 ICMgbWlncmF0aW9uPGJyPg0KJmd0OyAmZ3Q7IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQg LS1kcG9ydHMgNDkxNTI6NDkyMTYgLWogQUNDRVBUPGJyPg0KJmd0OyAmZ3Q7ICMgc25tcDxicj4N CiZndDsgJmd0OyAtQSBJTlBVVCAtcCB1ZHAgLS1kcG9ydCAxNjEgLWogQUNDRVBUPGJyPg0KJmd0 OyAmZ3Q7ICM8YnI+DQomZ3Q7ICZndDsgLUEgSU5QVVQgLWogUkVKRUNUIC0tcmVqZWN0LXdpdGgg aWNtcC1ob3N0LXByb2hpYml0ZWQ8YnI+DQomZ3Q7ICZndDsgLUEgRk9SV0FSRCAtbSBwaHlzZGV2 ICEgLS1waHlzZGV2LWlzLWJyaWRnZWQgLWogUkVKRUNUIC0tcmVqZWN0LTxicj4NCiZndDsgd2l0 aCBpY21wLWhvc3QtcHJvaGliaXRlZDxicj4NCiZndDsgJmd0OyBDT01NSVQ8YnI+DQomZ3Q7ICZn dDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgZGlkIHlvdSBjaGFu Z2UgaXQgbWFudWFsbHkgb3IgaXMgdGhlIGRlZmF1bHQgbWlzc2luZyBhbnl0aGluZz88YnI+DQom Z3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7IGRlZmF1bHQgbWlzc2luZyAmcXVvdDtsaWJ2aXJ0IHRs cyZxdW90OyBmaWVsZC48YnI+DQomZ3Q7IHdhcyBpdCBhbiB1cGdyYWRlIG9mIHNvbWUgc29ydD88 L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+Tm8uPC9mb250PjwvdHQ+PGJyPg0K PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiZndDsgVGhlc2UgYXJlIGluc3RhbGxlZCBhdCBub2Rl IHNldHVwIDxicj4NCiZndDsgZnJvbSBvdmlydC1lbmdpbmUuIENoZWNrIHRoZSBlbmdpbmUgdmVy c2lvbiBhbmQvb3IgdGhlIDxicj4NCiZndDsgSVBUYWJsZXNDb25maWcgaW4gdmRjX29wdGlvbnMg dGFibGUgb24gZW5naW5lPGJyPg0KPC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIi Pm9WaXJ0IGVuZ2luZSB2ZXJzaW9uOiAzLjEuMC0yLmZjMTc8L2ZvbnQ+PC90dD48YnI+DQo8YnI+ DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ZW5naW5lPSMgc2VsZWN0ICogZnJvbSB2ZGNfb3B0aW9ucyB3 aGVyZSBvcHRpb25faWQ9MTAwOzwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4g b3B0aW9uX2lkIHwgIG9wdGlvbl9uYW1lICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9wdGlvbl92YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHZlcnNpb248L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+LS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLTwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgMTAw IHwgSVBUYWJsZXNDb25maWcgfCAjIG9WaXJ0IGRlZmF1bHQgZmlyZXdhbGwgY29uZmlndXJhdGlv bi4gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdmRzbSBib290c3RyYXAgc2NyaXB0Lit8IGdl bmVyYWw8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ICAgICAgICAgICB8ICAg ICAgICAgICAgICAgIHwgKmZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfDwvZm9udD48 L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAgIHwgICAgICAgICAgICAgICAg fCA6SU5QVVQgQUNDRVBUIFswOjBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9mb250PjwvdHQ+PGJyPg0KPHR0 Pjxmb250IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IDpGT1JXQVJEIEFD Q0VQVCBbMDowXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgK3w8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0i MiI+ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgOk9VVFBVVCBBQ0NFUFQgWzA6MF0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArfDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAg IHwgICAgICAgICAgICAgICAgfCAtQSBJTlBVVCAtbSBzdGF0ZSAtLXN0YXRlIEVTVEFCTElTSEVE LFJFTEFURUQgLWogQUNDRVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9m b250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAg ICAgICB8IC1BIElOUFVUIC1wIGljbXAgLWogQUNDRVBUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3w8L2ZvbnQ+PC90dD48YnI+ DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5Q VVQgLWkgbG8gLWogQUNDRVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArfDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBz aXplPSIyIj4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAjIHZkc20gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICt8PC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8IC1BIElOUFVUIC1wIHRjcCAtLWRwb3J0IDU0MzIxIC1q IEFDQ0VQVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg K3w8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ICAgICAgICAgICB8ICAgICAg ICAgICAgICAgIHwgIyBsaWJ2aXJ0IHRscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfDwvZm9udD48L3R0 Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAt QSBJTlBVVCAtcCB0Y3AgLS1kcG9ydCAxNjUxNCAtaiBBQ0NFUFQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxm b250IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICMgU1NIICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgK3w8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgSU5QVVQgLXAgdGNwIC0tZHBvcnQgMjIg LWogQUNDRVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArfDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAgIHwg ICAgICAgICAgICAgICAgfCAjIGd1ZXN0IGNvbnNvbGVzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9mb250 PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAgICAg ICB8IC1BIElOUFVUIC1wIHRjcCAtbSBtdWx0aXBvcnQgLS1kcG9ydHMgNTYzNDo2MTY2IC1qIEFD Q0VQVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3w8L2ZvbnQ+PC90dD48YnI+DQo8 dHQ+PGZvbnQgc2l6ZT0iMiI+ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgIyBtaWdyYXRp b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArfDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXpl PSIyIj4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAtQSBJTlBVVCAtcCB0Y3AgLW0gbXVs dGlwb3J0IC0tZHBvcnRzIDQ5MTUyOjQ5MjE2IC1qIEFDQ0VQVCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICt8PC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiAgICAgICAg ICAgfCAgICAgICAgICAgICAgICB8ICMgc25tcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3w8 L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ICAgICAgICAgICB8ICAgICAgICAg ICAgICAgIHwgLUEgSU5QVVQgLXAgdWRwIC0tZHBvcnQgMTYxIC1qIEFDQ0VQVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfDwvZm9udD48L3R0Pjxi cj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAjIFJl amVjdCBhbnkgb3RoZXIgaW5wdXQgdHJhZmZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9mb250PjwvdHQ+PGJyPg0KPHR0Pjxmb250 IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IC1BIElOUFVUIC1qIFJFSkVD VCAtLXJlamVjdC13aXRoIGljbXAtaG9zdC1wcm9oaWJpdGVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgK3w8L2ZvbnQ+PC90dD48YnI+DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+ICAg ICAgICAgICB8ICAgICAgICAgICAgICAgIHwgLUEgRk9SV0FSRCAtbSBwaHlzZGV2ICEgLS1waHlz ZGV2LWlzLWJyaWRnZWQgLWogUkVKRUNUIC0tcmVqZWN0LXdpdGggaWNtcC1ob3N0LXByb2hpYml0 ZWQrfDwvZm9udD48L3R0Pjxicj4NCjx0dD48Zm9udCBzaXplPSIyIj4gICAgICAgICAgIHwgICAg ICAgICAgICAgICAgfCBDT01NSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8PC9mb250Pjwv dHQ+PGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw8L2ZvbnQ+PC90dD48YnI+DQo8YnI+ DQo8dHQ+PGZvbnQgc2l6ZT0iMiI+SVBUYWJsZXNDb25maWcgaXMgcmlnaHQuPC9mb250PjwvdHQ+ PGJyPg0KPGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPldoZW4gSSBhZGQgbXkgbm9kZXMgdG8gZW5n aW5lLCBJIGp1c3QgYXBwcm92ZSBpdC4gSSBkb24ndCBoYXZlIGFuICZxdW90O0F1dG9tYXRpY2Fs bHkgY29uZmlndXJlIGhvc3QgZmlyZXdhbGwmcXVvdDsgb3B0aW9uLjwvZm9udD48L3R0Pjxicj4N Cjx0dD48Zm9udCBzaXplPSIyIj48YnI+DQomZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsg dGhhbmtzLDxicj4NCiZndDsgJmd0OyAmZ3Q7IG1pY2hhbDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyBPbiBTZXAgMjAsIDIwMTIsIGF0IDExOjU1ICwgRG1pdHJpeSBBIFB5cnlha292IHdy b3RlOjxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyBIZWxsbyw8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBJIGhhdmUgdHdvIG9WaXJ0IG5vZGVz IG92aXJ0LW5vZGUtaXNvLTIuNS4wLTIuMC5mYzE3Ljxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFdoZW4gSSB0cnkg dG8gbWlncmF0ZSBWTSBmcm9tIG9uZSBob3N0IHRvIGFub3RoZXIsIEkgaGF2ZSBhbiA8YnI+DQom Z3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZXJyb3I6IE1pZ3JhdGlvbiBmYWlsZWQgZHVlIHRvIEVy cm9yOiBGYXRhbCBlcnJvciBkdXJpbmcgbWlncmF0aW9uLjxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IHZkc20ubG9n Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk3OjpERUJVRzo6 MjAxMi0wOS0yMCAwOTo0Mjo1Niw0Mzk6OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyA4NTk6OnZkczo6KHdyYXBwZXIpIGNsaWVudCBbMTkyLjE2OC4xMC4xMF06 OmNhbGwgdm1NaWdyYXRlIHdpdGggPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICh7J3Ny Yyc6ICcxOTIuMTY4LjEwLjEzJywgJ2RzdCc6ICcxOTIuMTY4LjEwLjEyOjU0MzIxJywgJ3ZtSWQn OiA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4 LWZjMmFlZWFlMmU4NicsICdtZXRob2QnOiAnb25saW5lJ30sKSB7fSA8YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgZmxvd0lEIFsxODBhZDk3OV08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyBUaHJlYWQtMzc5Nzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDM5OjpB UEk6OjQ0MTo6dmRzOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgKG1pZ3JhdGUpIHsn c3JjJzogJzE5Mi4xNjguMTAuMTMnLCAnZHN0JzogJzE5Mi4xNjguMTAuMTI6NTQzMjEnLCA8YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJ3ZtSWQnOiAnMmJmM2U2ZWItNDllNC00MmM3LTgx ODgtZmMyYWVlYWUyZTg2JywgJ21ldGhvZCc6ICdvbmxpbmUnfTxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw0 NDE6OnZtOjoxMjI6OnZtLlZtOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgKF9zZXR1 cFZkc0Nvbm5lY3Rpb24pIHZtSWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsg Jmd0OyAmZ3Q7ICZndDsgJmd0OyBmYzJhZWVhZTJlODZgOjpEZXN0aW5hdGlvbiBzZXJ2ZXIgaXM6 IDE5Mi4xNjguMTAuMTI6NTQzMjE8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBU aHJlYWQtMzc5Nzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDQxOjpCaW5kaW5nWE1MUlBD Ojo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgODY1Ojp2ZHM6Oih3cmFwcGVyKSByZXR1 cm4gdm1NaWdyYXRlIHdpdGggeydzdGF0dXMnOiB7J21lc3NhZ2UnOiA8YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgJ01pZ3JhdGlvbiBwcm9jZXNzIHN0YXJ0aW5nJywgJ2NvZGUnOiAwfX08 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIw MTItMDktMjAgMDk6NDI6NTYsNDQxOjp2bTo6MTI0Ojp2bS5WbTo6PGJyPg0KJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IChfc2V0dXBWZHNDb25uZWN0aW9uKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQy YzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6SW5p dGlhdGluZyBjb25uZWN0aW9uIHdpdGggZGVzdGluYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDUy OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAyNDA6OnZtLlZtOjoo X2dldERpc2tTdGF0cykgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFp bGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTYsNDU3Ojp2bTo6MTcwOjp2bS5WbTo6PGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyAmZ3Q7IChfcHJlcGFyZUd1ZXN0KSB2bUlkPWAyYmYzZTZlYi00OWU0LTQy YzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6bWln cmF0aW9uIFByb2Nlc3MgYmVnaW5zPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsg VGhyZWFkLTM3OTg6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU2LDQ3NTo6dm06OjIxNzo6dm0u Vm06OihydW4pPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IHZtSWQ9YDJiZjNlNmViLTQ5 ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4NmA6Om1pZ3JhdGlvbiA8YnI+DQomZ3Q7IHNlbWFwaG9y ZSBhY3F1aXJlZDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4 OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw4ODg6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyAmZ3Q7IDQyNzo6dm0uVm06Oihfc3RhcnRVbmRlcmx5aW5nTWlncmF0aW9u KSA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3 LTgxODgtZmMyYWVlYWUyZTg2YDo6c3RhcnRpbmcgbWlncmF0aW9uIHRvIDxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgJmd0OyBxZW11K3RsczovLzE5Mi4xNjguMTAuMTIvc3lzdGVtPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM3OTk6OkRFQlVHOjoyMDEyLTA5LTIw IDA5OjQyOjU2LDg4OTo6bGlidmlydHZtOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsg MzI1Ojp2bS5WbTo6KHJ1bikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6Om1pZ3JhdGlvbiBkb3dudGltZSB0 aHJlYWQgc3RhcnRlZDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0z ODAwOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw4OTA6OmxpYnZpcnR2bTo6PGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDM1Mzo6dm0uVm06OihydW4pIHZtSWQ9YDJiZjNlNmViLTQ5 ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBmYzJhZWVhZTJlODZg OjpzdGFydGluZyBtaWdyYXRpb24gbW9uaXRvciB0aHJlYWQ8YnI+DQomZ3Q7ICZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTAz OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAzNDA6OnZtLlZtOjoo Y2FuY2VsKSB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0 OyAmZ3Q7ICZndDsgZmMyYWVlYWUyZTg2YDo6Y2FuY2VsaW5nIG1pZ3JhdGlvbiBkb3dudGltZSB0 aHJlYWQ8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6REVC VUc6OjIwMTItMDktMjAgMDk6NDI6NTYsOTA0OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyAzOTA6OnZtLlZtOjooc3RvcCkgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3 LTgxODgtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6OnN0b3Bw aW5nIG1pZ3JhdGlvbiBtb25pdG9yIHRocmVhZDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyAmZ3Q7IFRocmVhZC0zNzk5OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Niw5MDQ6OmxpYnZp cnR2bTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDMzNzo6dm0uVm06OihydW4pIHZt SWQ9YDJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyBmYzJhZWVhZTJlODZgOjptaWdyYXRpb24gZG93bnRpbWUgdGhyZWFkIGV4aXRpbmc8YnI+DQom Z3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzc5ODo6RVJST1I6OjIwMTItMDkt MjAgMDk6NDI6NTYsOTA1Ojp2bTo6MTc2Ojp2bS5WbTo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyAmZ3Q7IChfcmVjb3Zlcikgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgxODgtZmMyYWVlYWUy ZTg2YDo6b3BlcmF0aW9uIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBmYWlsZWQ6IEZh aWxlZCB0byBjb25uZWN0IHRvIHJlbW90ZSBsaWJ2aXJ0IFVSSSBxZW11K3RsczovLzE5Mi4xNjgu PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDEwLjEyL3N5c3RlbTxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zNzk4OjpFUlJPUjo6MjAxMi0wOS0yMCAwOTo0 Mjo1Niw5Nzc6OnZtOjoyNDA6OnZtLlZtOjoocnVuKTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyB2bUlkPWAyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJlODZgOjpGYWlsZWQg dG8gbWlncmF0ZTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyBGaWxlICZxdW90Oy91c3Ivc2hhcmUvdmRzbS92bS5weSZxdW90OywgbGluZSAyMjMsIGluIHJ1 bjxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IEZpbGUgJnF1b3Q7L3Vzci9zaGFy ZS92ZHNtL2xpYnZpcnR2bS5weSZxdW90OywgbGluZSA0NTEsIGluIDxicj4NCiZndDsgJmd0OyAm Z3Q7IF9zdGFydFVuZGVybHlpbmdNaWdyYXRpb248YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyBGaWxlICZxdW90Oy91c3Ivc2hhcmUvdmRzbS9saWJ2aXJ0dm0ucHkmcXVvdDssIGxp bmUgNDkxLCBpbiBmPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgRmlsZSAmcXVv dDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL2xpYnZpcnRjb25uZWN0aW9u LnB5JnF1b3Q7LDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBsaW5lIDgyLCBpbiB3cmFw cGVyPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgRmlsZSAmcXVvdDsvdXNyL2xp YjY0L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2xpYnZpcnQucHkmcXVvdDssIGxpbmUgMTAzNCwg PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGluIG1pZ3JhdGVUb1VSSTI8YnI+DQomZ3Q7 ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBsaWJ2aXJ0RXJyb3I6IG9wZXJhdGlvbiBmYWlsZWQ6 IEZhaWxlZCB0byBjb25uZWN0IHRvIHJlbW90ZSA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsgbGlidmlydCBVUkkgcWVtdSt0bHM6Ly8xOTIuMTY4LjEwLjEyL3N5c3RlbTxicj4NCiZndDsg Jmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAm Z3Q7IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw3OTM6OkJpbmRpbmdY TUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA4NTk6OnZkczo6KHdyYXBwZXIp IGNsaWVudCBbMTkyLjE2OC4xMC4xMF06OmNhbGwgdm1HZXRTdGF0cyB3aXRoIDxicj4NCiZndDsg Jmd0OyAmZ3Q7ICZndDsgJmd0OyAoJzJiZjNlNmViLTQ5ZTQtNDJjNy04MTg4LWZjMmFlZWFlMmU4 NicsKSB7fTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAyOjpE RUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw3OTM6OmxpYnZpcnR2bTo6PGJyPg0KJmd0OyAmZ3Q7 ICZndDsgJmd0OyAmZ3Q7IDI0MDo6dm0uVm06OihfZ2V0RGlza1N0YXRzKSB2bUlkPWAyYmYzZTZl Yi00OWU0LTQyYzctODE4OC08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZmMyYWVlYWUy ZTg2YDo6RGlzayBoZGMgc3RhdHMgbm90IGF2YWlsYWJsZTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAyOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw3OTQ6 OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA4NjU6OnZkczo6 KHdyYXBwZXIpIHJldHVybiB2bUdldFN0YXRzIHdpdGggeydzdGF0dXMnOiB7J21lc3NhZ2UnOiA8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJ0RvbmUnLCAnY29kZSc6IDB9LCAnc3RhdHNM aXN0JzogW3snc3RhdHVzJzogJ1VwJywgJ3VzZXJuYW1lJzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICdVbmtub3duJywgJ21lbVVzYWdlJzogJzAnLCAnYWNwaUVuYWJsZSc6ICd0cnVl JywgJ3BpZCc6ICcyMjA0NycsIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAnZGlzcGxh eUlwJzogJzE5Mi4xNjguMTAuMTMnLCAnZGlzcGxheVBvcnQnOiB1JzU5MTInLCAnc2Vzc2lvbic6 IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAnVW5rbm93bicsICdkaXNwbGF5U2VjdXJl UG9ydCc6IHUnNTkxMycsICd0aW1lT2Zmc2V0JzogJzAnLCAnaGFzaCc6IDxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgJmd0OyAnMzAxODg3NDE2MjMyNDc1MzA4MycsICdwYXVzZUNvZGUnOiAnTk9F UlInLCAnY2xpZW50SXAnOiAnJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICdrdm1F bmFibGUnOiAndHJ1ZScsICduZXR3b3JrJzoge3Undm5ldDYnOiB7J21hY0FkZHInOiAnMDA6MWE6 NGE6YTg6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDBhOjA4JywgJ3J4RHJvcHBlZCc6 ICcwJywgJ3J4RXJyb3JzJzogJzAnLCAndHhEcm9wcGVkJzogJzAnLCA8YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgJ3R4UmF0ZSc6ICcwLjAnLCAncnhSYXRlJzogJzAuMCcsICd0eEVycm9y cyc6ICcwJywgJ3N0YXRlJzogPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICd1bmtub3du JywgJ3NwZWVkJzogJzEwMDAnLCAnbmFtZSc6IHUndm5ldDYnfX0sICd2bUlkJzogPGJyPg0KJmd0 OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICcyYmYzZTZlYi00OWU0LTQyYzctODE4OC1mYzJhZWVhZTJl ODYnLCAnZGlzcGxheVR5cGUnOiAncXhsJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7 ICdjcHVVc2VyJzogJzEzLjI3JywgJ2Rpc2tzJzoge3UnaGRjJzogeydmbHVzaExhdGVuY3knOiAn MCcsIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAncmVhZExhdGVuY3knOiAnMCcsICd3 cml0ZUxhdGVuY3knOiAnMCd9LCB1J2hkYSc6IHsncmVhZExhdGVuY3knOiA8YnI+DQomZ3Q7ICZn dDsgJmd0OyAmZ3Q7ICZndDsgJzYxODM4MDUnLCAnYXBwYXJlbnRzaXplJzogJzExODExMTYwMDY0 JywgJ3dyaXRlTGF0ZW5jeSc6ICcwJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICdp bWFnZUlEJzogJ2Q5NmQxOWY2LTVhMjgtNGZlZi04OTJmLTRhMDQ1NDlkNGUzOCcsICdmbHVzaExh dGVuY3knOiA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJzAnLCAncmVhZFJhdGUnOiAn MjcxLjg3JywgJ3RydWVzaXplJzogJzExODExMTYwMDY0JywgJ3dyaXRlUmF0ZSc6IDxicj4NCiZn dDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAnMC4wMCd9fSwgJ21vbml0b3JSZXNwb25zZSc6ICcwJywg J3N0YXRzQWdlJzogJzAuNzcnLCAnY3B1SWRsZSc6IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAnODYuNzMnLCAnZWxhcHNlZFRpbWUnOiAnMzk0MScsICd2bVR5cGUnOiAna3ZtJywgJ2Nw dVN5cyc6ICcwLjAwJywgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICdhcHBzTGlzdCc6 IFtdLCAnZ3Vlc3RJUHMnOiAnJywgJ25pY2UnOiAnJ31dfTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IFRocmVhZC0zODAzOjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0Mjo1Nyw4Njk6 OkJpbmRpbmdYTUxSUEM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA4NTk6OnZkczo6 KHdyYXBwZXIpIGNsaWVudCBbMTkyLjE2OC4xMC4xMF06OmNhbGwgPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IHZtR2V0TWlncmF0aW9uU3RhdHVzIHdpdGggKCcyYmYzZTZlYi00OWU0LTQy YzctODE4OC1mYzJhZWVhZTJlODYnLCkge308YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyBUaHJlYWQtMzgwMzo6REVCVUc6OjIwMTItMDktMjAgMDk6NDI6NTcsODcwOjpCaW5kaW5n WE1MUlBDOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgODY1Ojp2ZHM6Oih3cmFwcGVy KSByZXR1cm4gdm1HZXRNaWdyYXRpb25TdGF0dXMgd2l0aCB7J3N0YXR1cyc6IDxicj4NCiZndDsg Jmd0OyAmZ3Q7ICZndDsgJmd0OyB7J21lc3NhZ2UnOiAnRmF0YWwgZXJyb3IgZHVyaW5nIG1pZ3Jh dGlvbicsICdjb2RlJzogMTJ9fTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IER1 bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU4LDE3Mjo6X19pbml0X186Ojxicj4N CiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAxMjQ5OjpTdG9yYWdlLk1pc2MuZXhjQ21kOjooX2xv ZykgJ2RkIGlmPS9yaGV2L2RhdGEtY2VudGVyLzxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyAzMzI2OTRiYi0zNjRhLTQzNGUtYjIzZi01ZmVmOTg1ZDNjYmQvbWFzdGVyc2QvZG9tX21kL2lu Ym94IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBpZmxhZz1kaXJlY3QsZnVsbGJsb2Nr IGNvdW50PTEgYnM9MTAyNDAwMCcgKGN3ZCBOb25lKTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7IER1bW15LTEyNjQ6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQyOjU4LDI2Mjo6X19p bml0X186Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAxMjQ5OjpTdG9yYWdlLk1pc2Mu ZXhjQ21kOjooX2xvZykgU1VDQ0VTUzogJmx0O2VyciZndDsgPSAnMSswIHJlY29yZHMgaW48YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgXG4xKzAgcmVjb3JkcyBvdXRcbjEwMjQwMDAgYnl0 ZXMgKDEuMCBNQikgY29waWVkLCAwLjA1MTUxMDkgcywgMTkuOSA8YnI+DQomZ3Q7ICZndDsgJmd0 OyAmZ3Q7ICZndDsgTUIvc1xuJzsgJmx0O3JjJmd0OyA9IDA8YnI+DQomZ3Q7ICZndDsgJmd0OyAm Z3Q7ICZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMCwyNzE6 Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5N aXNjLmV4Y0NtZDo6KF9sb2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci88YnI+DQomZ3Q7ICZn dDsgJmd0OyAmZ3Q7ICZndDsgMzMyNjk0YmItMzY0YS00MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21h c3RlcnNkL2RvbV9tZC9pbmJveCA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgaWZsYWc9 ZGlyZWN0LGZ1bGxibG9jayBjb3VudD0xIGJzPTEwMjQwMDAnIChjd2QgTm9uZSk8YnI+DQomZ3Q7 ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAw OTo0MzowMCwzNjI6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMTI0 OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6ICZsdDtlcnImZ3Q7ID0gJzEr MCByZWNvcmRzIGluPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFxuMSswIHJlY29yZHMg b3V0XG4xMDI0MDAwIGJ5dGVzICgxLjAgTUIpIGNvcGllZCwgMC4wNTMwMTcxIHMsIDE5LjMgPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IE1CL3Ncbic7ICZsdDtyYyZndDsgPSAwPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTIxOjpERUJVRzo6MjAxMi0wOS0y MCAwOTo0MzowMCw2MTI6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsg MTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpICcvdXNyL2Jpbi9kZCBpZmxhZz1kaXJl Y3QgaWY9L2Rldi88YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMjYxODdkMjUtYmZjYi00 MGM3LTk3ZDEtNjY3NzA1YWQyMjIzL21ldGFkYXRhIGJzPTQwOTYgPGJyPg0KJmd0OyBjb3VudD0x JyAoY3dkIE5vbmUpPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTIx OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMCw2Mjk6Ol9faW5pdF9fOjo8YnI+DQomZ3Q7ICZn dDsgJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9sb2cpIFNVQ0NF U1M6ICZsdDtlcnImZ3Q7ID0gJzErMCByZWNvcmRzIGluPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyAmZ3Q7IFxuMSswIHJlY29yZHMgb3V0XG40MDk2IGJ5dGVzICg0LjEga0IpIGNvcGllZCwgMC4w MDA5Mzc2OTggcywgNC40IDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBNQi9zXG4nOyAm bHQ7cmMmZ3Q7ID0gMDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0z ODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDE6OnRhc2s6Ojxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgJmd0OyA1ODg6OlRhc2tNYW5hZ2VyLlRhc2s6OihfdXBkYXRlU3RhdGUpIFRh c2s9YGZmMTM0ZWNjLTU1OTctNGE4My04MWQ2LTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyBlNGY5ODA0ODcxZmZgOjptb3ZpbmcgZnJvbSBzdGF0ZSBpbml0IC0mZ3Q7IHN0YXRlIHByZXBh cmluZzxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpJTkZP OjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkwMjo6bG9nVXRpbHM6Ojxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyAzNzo6ZGlzcGF0Y2hlcjo6KHdyYXBwZXIpIFJ1biBhbmQgcHJvdGVjdDogcmVw b1N0YXRzKG9wdGlvbnM9Tm9uZSk8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBU aHJlYWQtMzgwNTo6SU5GTzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDI6OmxvZ1V0aWxzOjo8YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMzk6OmRpc3BhdGNoZXI6Oih3cmFwcGVyKSBSdW4g YW5kIHByb3RlY3Q6IHJlcG9TdGF0cywgUmV0dXJuIDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyByZXNwb25zZTogeycyNjE4N2QyNS1iZmNiLTQwYzctOTdkMS02Njc3MDVhZDIyMjMnOiB7 J2RlbGF5JzogJzAuPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDAxODA5MzEwOTEzMDkn LCAnbGFzdENoZWNrJzogMTM0ODEzNDE4MC44MjU4OTIsICdjb2RlJzogMCwgJ3ZhbGlkJzogPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRydWV9LCAnOTAxMDRjM2QtODM3Yi00N2RkLThj ODItZGRhOTJlZWMzMGQ5JzogeydkZWxheSc6ICcwLjxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAwMDA5NTU4MjAwODM2MTgnLCAnbGFzdENoZWNrJzogMTM0ODEzNDE3NS40OTMyNzcsICdj b2RlJzogMCwgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJ3ZhbGlkJzogVHJ1ZX19PGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5 OjQzOjAxLDkwMjo6dGFzazo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDExNzI6OlRh c2tNYW5hZ2VyLlRhc2s6OihwcmVwYXJlKSBUYXNrPWBmZjEzNGVjYy01NTk3LTRhODMtODFkNi08 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZTRmOTgwNDg3MWZmYDo6ZmluaXNoZWQ6IHsn MjYxODdkMjUtYmZjYi00MGM3LTk3ZDEtNjY3NzA1YWQyMjIzJzogPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IHsnZGVsYXknOiAnMC4wMTgwOTMxMDkxMzA5JywgJ2xhc3RDaGVjayc6IDEz NDgxMzQxODAuODI1ODkyLCAnY29kZSc6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDAs ICd2YWxpZCc6IFRydWV9LCAnOTAxMDRjM2QtODM3Yi00N2RkLThjODItZGRhOTJlZWMzMGQ5Jzog eydkZWxheSc6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICcwLjAwMDk1NTgyMDA4MzYx OCcsICdsYXN0Q2hlY2snOiAxMzQ4MTM0MTc1LjQ5MzI3NywgJ2NvZGUnOiAwLCA8YnI+DQomZ3Q7 ICZndDsgJmd0OyAmZ3Q7ICZndDsgJ3ZhbGlkJzogVHJ1ZX19PGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5OjQzOjAxLDkw Mjo6dGFzazo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDU4ODo6VGFza01hbmFnZXIu VGFzazo6KF91cGRhdGVTdGF0ZSkgVGFzaz1gZmYxMzRlY2MtNTU5Ny00YTgzLTgxZDYtPGJyPg0K Jmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGU0Zjk4MDQ4NzFmZmA6Om1vdmluZyBmcm9tIHN0YXRl IHByZXBhcmluZyAtJmd0OyBzdGF0ZSBmaW5pc2hlZDxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7IFRocmVhZC0zODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDM6OnJl c291cmNlTWFuYWdlcjo6PGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IDgwOTo6UmVzb3Vy Y2VNYW5hZ2VyLk93bmVyOjoocmVsZWFzZUFsbCkgT3duZXIucmVsZWFzZUFsbCByZXF1ZXN0cyA8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsge30gcmVzb3VyY2VzIHt9PGJyPg0KJmd0OyAm Z3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgVGhyZWFkLTM4MDU6OkRFQlVHOjoyMDEyLTA5LTIwIDA5 OjQzOjAxLDkwMzo6cmVzb3VyY2VNYW5hZ2VyOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsgODQ0OjpSZXNvdXJjZU1hbmFnZXIuT3duZXI6OihjYW5jZWxBbGwpIE93bmVyLmNhbmNlbEFs bCByZXF1ZXN0cyB7fTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRocmVhZC0z ODA1OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMSw5MDM6OnRhc2s6Ojxicj4NCiZndDsgJmd0 OyAmZ3Q7ICZndDsgJmd0OyA5Nzg6OlRhc2tNYW5hZ2VyLlRhc2s6OihfZGVjcmVmKSBUYXNrPWBm ZjEzNGVjYy01NTk3LTRhODMtODFkNi08YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgZTRm OTgwNDg3MWZmYDo6cmVmIDAgYWJvcnRpbmcgRmFsc2U8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMxOjps aWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAyNDA6OnZtLlZtOjooX2dl dERpc2tTdGF0cykgdm1JZD1gNTQwMzM1ZjAtMjI2OS00YmM0LTxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyBhYWY0LTExYmY1OTkwMDEzZmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFi bGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6 OjIwMTItMDktMjAgMDk6NDM6MDEsOTMxOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmMzYWY1ZjUtPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGY4NzctNGU2Yi04YTM0LTA1YmJlNzhiM2M4MmA6 OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMyOjpsaWJ2 aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAyNDA6OnZtLlZtOjooX2dldERp c2tTdGF0cykgdm1JZD1gMGFjMGRkM2EtYWUyYS00OTYzLTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyBhZGYxLTkxODk5MzAzMWY2YmA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8 YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIw MTItMDktMjAgMDk6NDM6MDEsOTMyOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZn dDsgJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMzVhNjViYjgtY2JjYS00 MDQ5LTxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBhNDI4LTI4OTE0YmNiMDk0YWA6OkRp c2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0 dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tT dGF0cykgdm1JZD1gNGVmMzI1OGMtMDM4MC00OTE5LTk5MWYtPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7IGVlN2JlN2U5ZjdmYWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTIt MDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsg Jmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMjUyZTZkNDYtZjM2Mi00NmFh LWE3ZWQtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGRkMDBhODZhZjZmMGA6OkRpc2sg aGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDktMjAgMDk6NDM6MDEsOTMzOjpsaWJ2aXJ0dm06 Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0 cykgdm1JZD1gNTA5ZTYwOGMtZTY1Ny00NzNhLWIwMzEtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0 OyAmZ3Q7IGYwODExZGE5NmJkZWA6OkRpc2sgaGRjIHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+DQom Z3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBUaHJlYWQtMzgwNjo6REVCVUc6OjIwMTItMDkt MjAgMDk6NDM6MDEsOTM0OjpsaWJ2aXJ0dm06Ojxicj4NCiZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyAyNDA6OnZtLlZtOjooX2dldERpc2tTdGF0cykgdm1JZD1gMmJmM2U2ZWItNDllNC00MmM3LTgx ODgtPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IGZjMmFlZWFlMmU4NmA6OkRpc2sgaGRj IHN0YXRzIG5vdCBhdmFpbGFibGU8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBE dW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMiwzNzE6Ol9faW5pdF9fOjo8YnI+ DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5NaXNjLmV4Y0NtZDo6KF9s b2cpICdkZCBpZj0vcmhldi9kYXRhLWNlbnRlci88YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZn dDsgMzMyNjk0YmItMzY0YS00MzRlLWIyM2YtNWZlZjk4NWQzY2JkL21hc3RlcnNkL2RvbV9tZC9p bmJveCA8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgaWZsYWc9ZGlyZWN0LGZ1bGxibG9j ayBjb3VudD0xIGJzPTEwMjQwMDAnIChjd2QgTm9uZSk8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7 ICZndDsgJmd0OyBEdW1teS0xMjY0OjpERUJVRzo6MjAxMi0wOS0yMCAwOTo0MzowMiw0NjI6Ol9f aW5pdF9fOjo8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgMTI0OTo6U3RvcmFnZS5NaXNj LmV4Y0NtZDo6KF9sb2cpIFNVQ0NFU1M6ICZsdDtlcnImZ3Q7ID0gJzErMCByZWNvcmRzIGluPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7IFxuMSswIHJlY29yZHMgb3V0XG4xMDI0MDAwIGJ5 dGVzICgxLjAgTUIpIGNvcGllZCwgMC4wNTI1MTgzIHMsIDE5LjUgPGJyPg0KJmd0OyAmZ3Q7ICZn dDsgJmd0OyAmZ3Q7IE1CL3Ncbic7ICZsdDtyYyZndDsgPSAwPGJyPg0KJmd0OyAmZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgLSAtPGJy Pg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX188YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0 OyBVc2VycyBtYWlsaW5nIGxpc3Q8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyBV c2Vyc0BvdmlydC5vcmc8YnI+DQomZ3Q7ICZndDsgJmd0OyAmZ3Q7ICZndDsgJmd0OyA8YSBocmVm PSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMiPmh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VyczwvYT48YnI+DQomZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICZndDsgPGJyPg0KJmd0OyAmZ3Q7ICZndDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsg Jmd0OyA8YnI+DQomZ3Q7ICZndDsgPGJyPg0KJmd0OyA8YnI+DQo8L2ZvbnQ+PC90dD48L2JvZHk+ PC9odG1sPg== --0__=C9BBF0ECDFAACFF88f9e8a93df938690918cC9BBF0ECDFAACFF8--

------=_Part_2580874_305634799.1348137988889 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ----- Original Message -----
From: "Dmitriy A Pyryakov" <DPyryakov@ekb.beeline.ru> To: "Michal Skrivanek" <michal.skrivanek@redhat.com> Cc: users@ovirt.org Sent: Thursday, September 20, 2012 1:34:46 PM Subject: Re: [Users] Fatal error during migration
Michal Skrivanek <michal.skrivanek@redhat.com> =D0=BD=D0=B0=D0=BF=D0=B8= =D1=81=D0=B0=D0=BD=D0=BE 20.09.2012 16:23:31:
=D0=9E=D1=82: Michal Skrivanek <michal.skrivanek@redhat.com> =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:24 =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> =D0=BD=D0=B0=D0=BF=D0= =B8=D1=81=D0=B0=D0=BD=D0=BE 20.09.201216:13:16:
=D0=9E=D1=82: Michal Skrivanek <michal.skrivanek@redhat.com> =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <DPyryakov@ekb.beeline= .ru> =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:13 =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> =D0=BD=D0=B0=D0=BF= =D0=B8=D1=81=D0=B0=D0=BD=D0=BE 20.09. 201216:02:11:
=D0=9E=D1=82: Michal Skrivanek <michal.skrivanek@redhat.com> =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <DPyryakov@ekb.bee= line.ru> =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:02 =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error during migrat= ion
Hi, well, so what is the other side saying? Maybe some connectivity problems between those 2 hosts? firewall?
Thanks, michal
Yes, firewall is not configured properly by default. If I stop it, migration done. Thanks. The default is supposed to be:
# oVirt default firewall configuration. Automatically generated by vdsm bootstrap script. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # libvirt tls -A INPUT -p tcp --dport 16514 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # Reject any other input traffic -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT
my default is:
# cat /etc/sysconfig/iptables # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject- with icmp-host-prohibited COMMIT
did you change it manually or is the default missing anything?
default missing "libvirt tls" field. was it an upgrade of some sort? No.
These are installed at node setup from ovirt-engine. Check the engine version and/or the IPTablesConfig in vdc_options table on engine
oVirt engine version: 3.1.0-2.fc17
engine=3D# select * from vdc_options where option_id=3D100; option_id | option_name | option_value | version -----------+----------------+--------------------------------------------= -----------------------------------------------+--------- 100 | IPTablesConfig | # oVirt default firewall configuration. Automatically generated by vdsm bootstrap script.+| general | | *filter +| | | :INPUT ACCEPT [0:0] +| | | :FORWARD ACCEPT [0:0] +| | | :OUTPUT ACCEPT [0:0] +| | | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +| | | -A INPUT -p icmp -j ACCEPT +| | | -A INPUT -i lo -j ACCEPT +| | | # vdsm +| | | -A INPUT -p tcp --dport 54321 -j ACCEPT +| | | # libvirt tls +| | | -A INPUT -p tcp --dport 16514 -j ACCEPT +| | | # SSH +| | | -A INPUT -p tcp --dport 22 -j ACCEPT +| | | # guest consoles +| | | -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT +| | | # migration +| | | -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT +| | | # snmp +| | | -A INPUT -p udp --dport 161 -j ACCEPT +| | | # Reject any other input traffic +| | | -A INPUT -j REJECT --reject-with icmp-host-prohibited +| | | -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT | | --reject-with icmp-host-prohibited+| | | COMMIT +| | | |
IPTablesConfig is right.
When I add my nodes to engine, I just approve it. I don't have an "Automatically configure host firewall" option.
(Added Mike Burns)=20 Right.=20 This is the diff between ovirt node and Fedora based node.=20 In oVirt node we expect the FW to have all relevant settings.=20 Mike, do we have these ports opened in the node?=20 Was it changed?=20 ------=_Part_2580874_305634799.1348137988889 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><head><style type=3D'text/css'>p { margin: 0; }</style></head><body><= div style=3D'font-family: times new roman,new york,times,serif; font-size: = 12pt; color: #000000'><hr id=3D"zwchr"><blockquote style=3D"border-left:2px= solid rgb(16, 16, 255);margin-left:5px;padding-left:5px;color:#000;font-we= ight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Ar= ial,sans-serif;font-size:12pt;"><b>From: </b>"Dmitriy A Pyryakov" <DPyry= akov@ekb.beeline.ru><br><b>To: </b>"Michal Skrivanek" <michal.skrivan= ek@redhat.com><br><b>Cc: </b>users@ovirt.org<br><b>Sent: </b>Thursday, S= eptember 20, 2012 1:34:46 PM<br><b>Subject: </b>Re: [Users] Fatal error dur= ing migration<br><br> <p id=3D"DWT6425"><tt><font size=3D"2">Michal Skrivanek <michal.skrivane= k@redhat.com> =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=BE 20.09.201= 2 16:23:31:<br> <br> > =D0=9E=D1=82: Michal Skrivanek <michal.skrivanek@redhat.com></fo= nt></tt><br> <tt><font size=3D"2">> =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <= DPyryakov@ekb.beeline.ru></font></tt><br> <tt><font size=3D"2">> =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org</= font></tt><br> <tt><font size=3D"2">> =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:24</font>= </tt><br> <tt><font size=3D"2">> =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error= during migration</font></tt><br> <tt><font size=3D"2">> <br> > <br> > On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote:<br> > <br> > > Michal Skrivanek <michal.skrivanek@redhat.com> =D0=BD=D0=B0= =D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=BE 20.09.201216:13:16:<br> > > <br> > > > =D0=9E=D1=82: Michal Skrivanek <michal.skrivanek@redhat.c= om><br> > > > =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <DPyryakov@e= kb.beeline.ru><br> > > > =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org<br> > > > =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:13<br> > > > =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error during mig= ration<br> > > > <br> > > > <br> > > > On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:<br> > > > <br> > > > > Michal Skrivanek <michal.skrivanek@redhat.com> = =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=BE 20.09.<br> > 201216:02:11:<br> > > > > <br> > > > > > =D0=9E=D1=82: Michal Skrivanek <michal.skrivane= k@redhat.com><br> > > > > > =D0=9A=D0=BE=D0=BC=D1=83: Dmitriy A Pyryakov <D= Pyryakov@ekb.beeline.ru><br> > > > > > =D0=9A=D0=BE=D0=BF=D0=B8=D1=8F: users@ovirt.org<br=
> > > > > =D0=94=D0=B0=D1=82=D0=B0: 20.09.2012 16:02<br> > > > > > =D0=A2=D0=B5=D0=BC=D0=B0: Re: [Users] Fatal error = during migration<br> > > > > > <br> > > > > > Hi,<br> > > > > > well, so what is the other side saying? Maybe some= connectivity <br> > > > > > problems between those 2 hosts? firewall? <br> > > > > > <br> > > > > > Thanks,<br> > > > > > michal<br> > > > > <br> > > > > Yes, firewall is not configured properly by default. If= I stop it,<br> > > > migration done.<br> > > > > Thanks.<br> > > > The default is supposed to be:<br> > > > <br> > > > # oVirt default firewall configuration. Automatically genera= ted by <br> > > > vdsm bootstrap script.<br> > > > *filter<br> > > > :INPUT ACCEPT [0:0]<br> > > > :FORWARD ACCEPT [0:0]<br> > > > :OUTPUT ACCEPT [0:0]<br> > > > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br> > > > -A INPUT -p icmp -j ACCEPT<br> > > > -A INPUT -i lo -j ACCEPT<br> > > > # vdsm<br> > > > -A INPUT -p tcp --dport 54321 -j ACCEPT<br> > > > # libvirt tls<br> > > > -A INPUT -p tcp --dport 16514 -j ACCEPT<br> > > > # SSH<br> > > > -A INPUT -p tcp --dport 22 -j ACCEPT<br> > > > # guest consoles<br> > > > -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT<br=
> > > # migration<br> > > > -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT<= br> > > > # snmp<br> > > > -A INPUT -p udp --dport 161 -j ACCEPT<br> > > > # Reject any other input traffic<br> > > > -A INPUT -j REJECT --reject-with icmp-host-prohibited<br> > > > -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --rej= ect-with<br> > > > icmp-host-prohibited<br> > > > COMMIT<br> > > <br> > > my default is:<br> > > <br> > > # cat /etc/sysconfig/iptables<br> > > # oVirt automatically generated firewall configuration<br> > > *filter<br> > > :INPUT ACCEPT [0:0]<br> > > :FORWARD ACCEPT [0:0]<br> > > :OUTPUT ACCEPT [0:0]<br> > > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br> > > -A INPUT -p icmp -j ACCEPT<br> > > -A INPUT -i lo -j ACCEPT<br> > > #vdsm<br> > > -A INPUT -p tcp --dport 54321 -j ACCEPT<br> > > # SSH<br> > > -A INPUT -p tcp --dport 22 -j ACCEPT<br> > > # guest consoles<br> > > -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT<br> > > # migration<br> > > -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT<br> > > # snmp<br> > > -A INPUT -p udp --dport 161 -j ACCEPT<br> > > #<br> > > -A INPUT -j REJECT --reject-with icmp-host-prohibited<br> > > -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-<= br> > with icmp-host-prohibited<br> > > COMMIT<br> > > <br> > > > <br> > > > did you change it manually or is the default missing anythin= g?<br> > > <br> > > default missing "libvirt tls" field.<br> > was it an upgrade of some sort?</font></tt><br> <tt><font size=3D"2">No.</font></tt><br> <br> <tt><font size=3D"2">> These are installed at node setup <br> > from ovirt-engine. Check the engine version and/or the <br> > IPTablesConfig in vdc_options table on engine<br> </font></tt><br> <tt><font size=3D"2">oVirt engine version: 3.1.0-2.fc17</font></tt><br> <br> <tt><font size=3D"2">engine=3D# select * from vdc_options where option_id= =3D100;</font></tt><br> <tt><font size=3D"2"> option_id | option_name | = option_value | version= </font></tt><br> <tt><font size=3D"2">-----------+----------------+-------------------------= ------------------------------------------------------------------+--------= -</font></tt><br> <tt><font size=3D"2"> 100 | IPTablesConfig | # oVirt default firewall= configuration. Automatically generated by vdsm bootstrap script.+| general= </font></tt><br> <tt><font size=3D"2"> | | *filter = +|</font><= /tt><br> <tt><font size=3D"2"> | | :INPUT ACCEPT [0:0] = +|</font><= /tt><br> <tt><font size=3D"2"> | | :FORWARD ACCEPT [0:0] = +|</font><= /tt><br> <tt><font size=3D"2"> | | :OUTPUT ACCEPT [0:0] = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -m state --stat= e ESTABLISHED,RELATED -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p icmp -j ACCE= PT +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -i lo -j ACCEPT= +|</font><= /tt><br> <tt><font size=3D"2"> | | # vdsm = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p tcp --dport = 54321 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # libvirt tls = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p tcp --dport = 16514 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # SSH = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p tcp --dport = 22 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # guest consoles = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p tcp -m multi= port --dports 5634:6166 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # migration = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p tcp -m multi= port --dports 49152:49216 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # snmp = +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -p udp --dport = 161 -j ACCEPT +|</font><= /tt><br> <tt><font size=3D"2"> | | # Reject any other input= traffic +|</font><= /tt><br> <tt><font size=3D"2"> | | -A INPUT -j REJECT --rej= ect-with icmp-host-prohibited +|</font><= /tt><br> <tt><font size=3D"2"> | | -A FORWARD -m physdev ! = --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited+|</font><= /tt><br> <tt><font size=3D"2"> | | COMMIT = +|</font><= /tt><br> <tt><font size=3D"2"> | | = |</font><= /tt><br> <br> <tt><font size=3D"2">IPTablesConfig is right.</font></tt><br> <br> <tt><font size=3D"2">When I add my nodes to engine, I just approve it. I do= n't have an "Automatically configure host firewall" option.</font></tt><br> <tt><font size=3D"2"></font></tt><br></p></blockquote>(Added Mike Burns)<br=
<blockquote style=3D"border-left: 2px solid rgb(16, 16, 255); margin-left:= 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-sty= le: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif;= font-size: 12pt;"><p></p></blockquote>Right.<br>This is the diff between o= virt node and Fedora based node.<br>In oVirt node we expect the FW to have = all relevant settings.<br><br>Mike, do we have these ports opened in the no= de? <br>Was it changed?<br></div></body></html> ------=_Part_2580874_305634799.1348137988889--

On Thu, 2012-09-20 at 06:46 -0400, Doron Fediuck wrote:
______________________________________________________________________ From: "Dmitriy A Pyryakov" <DPyryakov@ekb.beeline.ru> To: "Michal Skrivanek" <michal.skrivanek@redhat.com> Cc: users@ovirt.org Sent: Thursday, September 20, 2012 1:34:46 PM Subject: Re: [Users] Fatal error during migration
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.2012 16:23:31:
> От: Michal Skrivanek <michal.skrivanek@redhat.com> > Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> > Копия: users@ovirt.org > Дата: 20.09.2012 16:24 > Тема: Re: [Users] Fatal error during migration > > > On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote: > > > Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.201216:13:16: > > > > > От: Michal Skrivanek <michal.skrivanek@redhat.com> > > > Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> > > > Копия: users@ovirt.org > > > Дата: 20.09.2012 16:13 > > > Тема: Re: [Users] Fatal error during migration > > > > > > > > > On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote: > > > > > > > Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09. > 201216:02:11: > > > > > > > > > От: Michal Skrivanek <michal.skrivanek@redhat.com> > > > > > Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> > > > > > Копия: users@ovirt.org > > > > > Дата: 20.09.2012 16:02 > > > > > Тема: Re: [Users] Fatal error during migration > > > > > > > > > > Hi, > > > > > well, so what is the other side saying? Maybe some connectivity > > > > > problems between those 2 hosts? firewall? > > > > > > > > > > Thanks, > > > > > michal > > > > > > > > Yes, firewall is not configured properly by default. If I stop it, > > > migration done. > > > > Thanks. > > > The default is supposed to be: > > > > > > # oVirt default firewall configuration. Automatically generated by > > > vdsm bootstrap script. > > > *filter > > > :INPUT ACCEPT [0:0] > > > :FORWARD ACCEPT [0:0] > > > :OUTPUT ACCEPT [0:0] > > > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT > > > -A INPUT -p icmp -j ACCEPT > > > -A INPUT -i lo -j ACCEPT > > > # vdsm > > > -A INPUT -p tcp --dport 54321 -j ACCEPT > > > # libvirt tls > > > -A INPUT -p tcp --dport 16514 -j ACCEPT > > > # SSH > > > -A INPUT -p tcp --dport 22 -j ACCEPT > > > # guest consoles > > > -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT > > > # migration > > > -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT > > > # snmp > > > -A INPUT -p udp --dport 161 -j ACCEPT > > > # Reject any other input traffic > > > -A INPUT -j REJECT --reject-with icmp-host-prohibited > > > -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with > > > icmp-host-prohibited > > > COMMIT > > > > my default is: > > > > # cat /etc/sysconfig/iptables > > # oVirt automatically generated firewall configuration > > *filter > > :INPUT ACCEPT [0:0] > > :FORWARD ACCEPT [0:0] > > :OUTPUT ACCEPT [0:0] > > -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT > > -A INPUT -p icmp -j ACCEPT > > -A INPUT -i lo -j ACCEPT > > #vdsm > > -A INPUT -p tcp --dport 54321 -j ACCEPT > > # SSH > > -A INPUT -p tcp --dport 22 -j ACCEPT > > # guest consoles > > -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT > > # migration > > -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT > > # snmp > > -A INPUT -p udp --dport 161 -j ACCEPT > > # > > -A INPUT -j REJECT --reject-with icmp-host-prohibited > > -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject- > with icmp-host-prohibited > > COMMIT > > > > > > > > did you change it manually or is the default missing anything? > > > > default missing "libvirt tls" field. > was it an upgrade of some sort? No.
> These are installed at node setup > from ovirt-engine. Check the engine version and/or the > IPTablesConfig in vdc_options table on engine
oVirt engine version: 3.1.0-2.fc17
engine=# select * from vdc_options where option_id=100; option_id | option_name | option_value | version -----------+----------------+-------------------------------------------------------------------------------------------+--------- 100 | IPTablesConfig | # oVirt default firewall configuration. Automatically generated by vdsm bootstrap script.+| general | | *filter +| | | :INPUT ACCEPT [0:0] +| | | :FORWARD ACCEPT [0:0] +| | | :OUTPUT ACCEPT [0:0] +| | | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +| | | -A INPUT -p icmp -j ACCEPT +| | | -A INPUT -i lo -j ACCEPT +| | | # vdsm +| | | -A INPUT -p tcp --dport 54321 -j ACCEPT +| | | # libvirt tls +| | | -A INPUT -p tcp --dport 16514 -j ACCEPT +| | | # SSH +| | | -A INPUT -p tcp --dport 22 -j ACCEPT +| | | # guest consoles +| | | -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT +| | | # migration +| | | -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT +| | | # snmp +| | | -A INPUT -p udp --dport 161 -j ACCEPT +| | | # Reject any other input traffic +| | | -A INPUT -j REJECT --reject-with icmp-host-prohibited +| | | -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited+| | | COMMIT +| | | |
IPTablesConfig is right.
When I add my nodes to engine, I just approve it. I don't have an "Automatically configure host firewall" option.
(Added Mike Burns) Right. This is the diff between ovirt node and Fedora based node. In oVirt node we expect the FW to have all relevant settings.
Mike, do we have these ports opened in the node? Was it changed?
Yes, the ports are open and no, it hasn't changed in a long time: cat > /etc/sysconfig/iptables << \EOF # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT EOF

Well,looks like 16514 is not open on node. I guess it should,tls migration is new in 3.1,isn't it? On 20 Sep 2012, at 15:25, Mike Burns <mburns@redhat.com> wrote:
On Thu, 2012-09-20 at 06:46 -0400, Doron Fediuck wrote:
______________________________________________________________________ From: "Dmitriy A Pyryakov" <DPyryakov@ekb.beeline.ru> To: "Michal Skrivanek" <michal.skrivanek@redhat.com> Cc: users@ovirt.org Sent: Thursday, September 20, 2012 1:34:46 PM Subject: Re: [Users] Fatal error during migration
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.2012 16:23:31:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:24 Тема: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.201216:13:16:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:13 Тема: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09. 201216:02:11:
> От: Michal Skrivanek <michal.skrivanek@redhat.com> > Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> > Копия: users@ovirt.org > Дата: 20.09.2012 16:02 > Тема: Re: [Users] Fatal error during migration > > Hi, > well, so what is the other side saying? Maybe some connectivity > problems between those 2 hosts? firewall? > > Thanks, > michal
Yes, firewall is not configured properly by default. If I stop it, migration done. Thanks. The default is supposed to be:
# oVirt default firewall configuration. Automatically generated by vdsm bootstrap script. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # libvirt tls -A INPUT -p tcp --dport 16514 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # Reject any other input traffic -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT
my default is:
# cat /etc/sysconfig/iptables # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject- with icmp-host-prohibited COMMIT
did you change it manually or is the default missing
anything?
default missing "libvirt tls" field. was it an upgrade of some sort? No.
These are installed at node setup from ovirt-engine. Check the engine version and/or the IPTablesConfig in vdc_options table on engine
oVirt engine version: 3.1.0-2.fc17
engine=# select * from vdc_options where option_id=100; option_id | option_name | option_value | version -----------+----------------+-------------------------------------------------------------------------------------------+--------- 100 | IPTablesConfig | # oVirt default firewall configuration. Automatically generated by vdsm bootstrap script.+| general | | *filter +| | | :INPUT ACCEPT [0:0] +| | | :FORWARD ACCEPT [0:0] +| | | :OUTPUT ACCEPT [0:0] +| | | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +| | | -A INPUT -p icmp -j ACCEPT +| | | -A INPUT -i lo -j ACCEPT +| | | # vdsm +| | | -A INPUT -p tcp --dport 54321 -j ACCEPT +| | | # libvirt tls +| | | -A INPUT -p tcp --dport 16514 -j ACCEPT +| | | # SSH +| | | -A INPUT -p tcp --dport 22 -j ACCEPT +| | | # guest consoles +| | | -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT +| | | # migration +| | | -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT +| | | # snmp +| | | -A INPUT -p udp --dport 161 -j ACCEPT +| | | # Reject any other input traffic +| | | -A INPUT -j REJECT --reject-with icmp-host-prohibited +| | | -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited+| | | COMMIT +| | | |
IPTablesConfig is right.
When I add my nodes to engine, I just approve it. I don't have an "Automatically configure host firewall" option.
(Added Mike Burns) Right. This is the diff between ovirt node and Fedora based node. In oVirt node we expect the FW to have all relevant settings.
Mike, do we have these ports opened in the node? Was it changed?
Yes, the ports are open and no, it hasn't changed in a long time:
cat > /etc/sysconfig/iptables << \EOF # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT EOF

On Fri, 2012-09-21 at 01:58 -0400, Michal Skrivanek wrote:
Well,looks like 16514 is not open on node. I guess it should,tls migration is new in 3.1,isn't it?
I'm surprised this wasn't caught earlier. I've submitted a patch to add the port to the default firewall [1]. You can run the following command to open the firewall port manually on ovirt-node. python -c 'from ovirtnode.ovirtfunctions import *; manage_firewall_port("16514","open","tcp")' To make it work across reboots, do the following: 1. Press F2 on the TUI to get a shell 2. scp the attached patch file to /tmp on ovirt-node (you need to initiate this from ovirt-node, not from your local machine) 3. on ovirt-node, run # mount -o remount,rw / 4. cd /usr/libexec 5. patch </tmp/0001*patch 6. persist /usr/libexec/ovirt-init-functions 7. Reboot When the machine comes back up, you should see that port is open. iptables -L Mike [1] http://gerrit.ovirt.org/8116
On 20 Sep 2012, at 15:25, Mike Burns <mburns@redhat.com> wrote:
On Thu, 2012-09-20 at 06:46 -0400, Doron Fediuck wrote:
______________________________________________________________________ From: "Dmitriy A Pyryakov" <DPyryakov@ekb.beeline.ru> To: "Michal Skrivanek" <michal.skrivanek@redhat.com> Cc: users@ovirt.org Sent: Thursday, September 20, 2012 1:34:46 PM Subject: Re: [Users] Fatal error during migration
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.2012 16:23:31:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:24 Тема: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:19 , Dmitriy A Pyryakov wrote:
Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09.201216:13:16:
От: Michal Skrivanek <michal.skrivanek@redhat.com> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> Копия: users@ovirt.org Дата: 20.09.2012 16:13 Тема: Re: [Users] Fatal error during migration
On Sep 20, 2012, at 12:07 , Dmitriy A Pyryakov wrote:
> Michal Skrivanek <michal.skrivanek@redhat.com> написано 20.09. 201216:02:11: > >> От: Michal Skrivanek <michal.skrivanek@redhat.com> >> Кому: Dmitriy A Pyryakov <DPyryakov@ekb.beeline.ru> >> Копия: users@ovirt.org >> Дата: 20.09.2012 16:02 >> Тема: Re: [Users] Fatal error during migration >> >> Hi, >> well, so what is the other side saying? Maybe some connectivity >> problems between those 2 hosts? firewall? >> >> Thanks, >> michal > > Yes, firewall is not configured properly by default. If I stop it, migration done. > Thanks. The default is supposed to be:
# oVirt default firewall configuration. Automatically generated by vdsm bootstrap script. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # libvirt tls -A INPUT -p tcp --dport 16514 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # Reject any other input traffic -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT
my default is:
# cat /etc/sysconfig/iptables # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject- with icmp-host-prohibited COMMIT
did you change it manually or is the default missing
anything?
default missing "libvirt tls" field. was it an upgrade of some sort? No.
These are installed at node setup from ovirt-engine. Check the engine version and/or the IPTablesConfig in vdc_options table on engine
oVirt engine version: 3.1.0-2.fc17
engine=# select * from vdc_options where option_id=100; option_id | option_name | option_value | version -----------+----------------+-------------------------------------------------------------------------------------------+--------- 100 | IPTablesConfig | # oVirt default firewall configuration. Automatically generated by vdsm bootstrap script.+| general | | *filter +| | | :INPUT ACCEPT [0:0] +| | | :FORWARD ACCEPT [0:0] +| | | :OUTPUT ACCEPT [0:0] +| | | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +| | | -A INPUT -p icmp -j ACCEPT +| | | -A INPUT -i lo -j ACCEPT +| | | # vdsm +| | | -A INPUT -p tcp --dport 54321 -j ACCEPT +| | | # libvirt tls +| | | -A INPUT -p tcp --dport 16514 -j ACCEPT +| | | # SSH +| | | -A INPUT -p tcp --dport 22 -j ACCEPT +| | | # guest consoles +| | | -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT +| | | # migration +| | | -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT +| | | # snmp +| | | -A INPUT -p udp --dport 161 -j ACCEPT +| | | # Reject any other input traffic +| | | -A INPUT -j REJECT --reject-with icmp-host-prohibited +| | | -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited+| | | COMMIT +| | | |
IPTablesConfig is right.
When I add my nodes to engine, I just approve it. I don't have an "Automatically configure host firewall" option.
(Added Mike Burns) Right. This is the diff between ovirt node and Fedora based node. In oVirt node we expect the FW to have all relevant settings.
Mike, do we have these ports opened in the node? Was it changed?
Yes, the ports are open and no, it hasn't changed in a long time:
cat > /etc/sysconfig/iptables << \EOF # oVirt automatically generated firewall configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #vdsm -A INPUT -p tcp --dport 54321 -j ACCEPT # SSH -A INPUT -p tcp --dport 22 -j ACCEPT # guest consoles -A INPUT -p tcp -m multiport --dports 5634:6166 -j ACCEPT # migration -A INPUT -p tcp -m multiport --dports 49152:49216 -j ACCEPT # snmp -A INPUT -p udp --dport 161 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m physdev ! --physdev-is-bridged -j REJECT --reject-with icmp-host-prohibited COMMIT EOF
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
participants (5)
-
Dmitriy A Pyryakov
-
Doron Fediuck
-
Michal Skrivanek
-
Michal Skrivanek
-
Mike Burns