tx · 5W8me79ju9vr22gKggeGKTHUvDDc2gnGH7wsLsZTbiku

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.05300000 Waves

2023.08.09 19:57 [2703331] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "5W8me79ju9vr22gKggeGKTHUvDDc2gnGH7wsLsZTbiku", "fee": 5300000, "feeAssetId": null, "timestamp": 1691600258575, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "65x9HktEpBzMjA45ynuehoBimtSosPj2nDM9UHgXVrAqi9JEYhqaVNv4FaYGr6WDU5no12ruZV1yuuakcb36Qkpf" ], "script": "base64:BgLBAQgCEgMKAQgSAwoBCBIECgIICBIFCgMIGBgSBQoDCAEIEgQKAggBEgYKBAEICAESBQoDAQgIEg8KDQgICAgICAgICAgICAgSAwoBCBIDCgEIEgUKAwgIARIGCgQIAQgIEg0KCwgIAQQRGBgYAQEYEgkKBwgIAQQIARgSDQoLCAgBBBgYGBgYARgSBQoDCAQBEgsKCQgIAQEBAQEBBBIJCgcIAQEBAQEBEgASABIAEgASABIAEgASABIDCgEIEgMKAQiBAQAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAA9DQVBfRkVFX05PX0xPQU4CCWNhcE5vTG9hbgAMQ0FQX0ZFRV9MT0FOAgdjYXBMb2FuABRTVE9QTE9TU19GRUVfTk9fTE9BTgIOc3RvcExvc3NOb0xvYW4ADVNUT1BMT1NTX0xPQU4CDHN0b3BMb3NzTG9hbgAITE9BTl9GRUUCBGxvYW4AC05PX0xPQU5fRkVFAgZub0xvYW4ABk5PX0ZFRQIFbm9GZWUABlNDQUxFOACAwtcvAAdTQ0FMRTEwAIDIr6AlAAdTQ0FMRTE2CQC2AgEAgICE/qbe4REACkZFRV9TQ0FMRTYAwIQ9ABRrU0ZQb29sQUFzc2V0QmFsYW5jZQIPQV9hc3NldF9iYWxhbmNlABRrU0ZQb29sQkFzc2V0QmFsYW5jZQIPQl9hc3NldF9iYWxhbmNlAA9rU0ZQb29sQUFzc2V0SWQCCkFfYXNzZXRfaWQAD2tTRlBvb2xCQXNzZXRJZAIKQl9hc3NldF9pZAAOa1NGUG9vbFNoYXJlSWQCDnNoYXJlX2Fzc2V0X2lkABJrU0ZQb29sU2hhcmVTdXBwbHkCEnNoYXJlX2Fzc2V0X3N1cHBseQAKa1NGUG9vbEZlZQIKY29tbWlzc2lvbgANa1VzZXJQb3NpdGlvbgINX3VzZXJQb3NpdGlvbgARa1VzZXJQb3NpdGlvblBvb2wCEV91c2VyUG9zaXRpb25Qb29sABFrVXNlckJvcnJvd0Ftb3VudAIZX3VzZXJQb3NpdGlvbkJvcnJvd0Ftb3VudAASa1VzZXJCb3Jyb3dBc3NldElkAhpfdXNlclBvc2l0aW9uQm9ycm93QXNzZXRJZAAQa1VzZXJQb3NpdGlvbk51bQITX3VzZXJQb3NpdGlvbk51bWJlcgAVa1VzZXJQb3NpdGlvbkludGVyZXN0AhVfdXNlclBvc2l0aW9uSW50ZXJlc3QACmtQb29sVG90YWwCCl9wb29sVG90YWwADmtQb29sVG90YWxMb2FuAg5fcG9vbFRvdGFsTG9hbgARa1Bvb2xJbnRlcmVzdExvYW4CEV9wb29sSW50ZXJlc3RMb2FuABNrUG9vbEludGVyZXN0Tm9Mb2FuAhNfcG9vbEludGVyZXN0Tm9Mb2FuAA5rUG9vbENhbkJvcnJvdwIOX3Bvb2xDYW5Cb3Jyb3cAFWtBeGx5SW5GZWVXaXRob3V0TG9hbgIOX2F4bHlGZWVOb0xvYW4AEmtBeGx5SW5GZWVXaXRoTG9hbgIQX2F4bHlGZWVXaXRoTG9hbgARa0F4bHlOb0xvYW5DYXBGZWUCEV9heGx5RmVlQ2FwTm9Mb2FuABNrQXhseVdpdGhMb2FuQ2FwRmVlAhNfYXhseUZlZUNhcFdpdGhMb2FuABZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlAhhfYXhseUZlZVN0b3Bsb3NzV2l0aExvYW4AFGtBeGx5U3RvcExvc3NMb2FuRmVlAhZfYXhseUZlZVN0b3Bsb3NzTm9Mb2FuAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ACmtTaGFyZVBvb2wCDF9wb29sU2hhcmVJZAAOa1Bvb2xDYXBDaGFuZ2UCDl9wb29sQ2FwQ2hhbmdlAA9rVG9rZW5MYXN0UHJpY2UCCmxhc3RfcHJpY2UADmtQcmljZUluT3JhY2xlAgdfdHdhcDVCAAdrQWN0aXZlAgZhY3RpdmUADGtBY3RpdmVVc2VycwILYWN0aXZlVXNlcnMAC2tBY3RpdmVTRldYAgdfYWN0aXZlAAtrUG9vbEFjdGl2ZQILX2FjdGl2ZVBvb2wADWtVc2VyU3RvcExvc3MCCV9zdG9wTG9zcwAJa01vbmV5Qm94Ag5heGx5X21vbmV5X2JveAAOa1NGRmFybWluZ0FkZHICE3N3b3BmaV9mYXJtaW5nX2FkZHIADGtMZW5kU2VydmljZQIRbGVuZF9zZXJ2aWNlX2FkZHIAD2tPcGVyYXRvckNhbGxQSwISYWRtaW5fY2FsbF9wdWJfa2V5AAxrUHJpY2VPcmFjbGUCDHByaWNlX29yYWNsZQALa0V4Q29udHJhY3QCEWV4Y2hhbmdlX2NvbnRyYWN0AA9rV3hTd2FwQ29udHJhY3QCEHd4X3N3YXBfY29udHJhY3QAB2tTd29wSWQCB3N3b3BfaWQABWtXeElkAgV3eF9pZAAPa0dyb3VwMUFkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkAD2tHcm91cDFBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AA9rR3JvdXAyQWRtaW4xUEsCFWdyb3VwMl9hZG1pbjFfcHViX2tleQAPa0dyb3VwMkFkbWluMlBLAhVncm91cDJfYWRtaW4yX3B1Yl9rZXkACG1vbmV5Qm94CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCWtNb25leUJveAIYTm8gYXhseSBtb25leUJveCBhZGRyZXNzAApleENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFC2tFeENvbnRyYWN0AhxObyBleGNoYW5nZSBjb250cmFjdCBhZGRyZXNzAA9wcmljZU9yYWNsZUFkZHIJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa1ByaWNlT3JhY2xlAhdObyBwcmljZSBvcmFjbGUgYWRkcmVzcwAOd3hTd2FwQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa1d4U3dhcENvbnRyYWN0AhJObyB3eCBzd2FwIGFkZHJlc3MABlNXT1BJRAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUHa1N3b3BJZAIKTm8gc3dvcCBpZAAEV1hJRAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUFa1d4SWQCCE5vIHd4IGlkAA5ncm91cDFBZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMUFkbWluMVBLAhlDYW4ndCBnZXQga0dyb3VwMUFkbWluMVBLAA5ncm91cDFBZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMUFkbWluMlBLAhlDYW4ndCBnZXQga0dyb3VwMUFkbWluMlBLAA5ncm91cDJBZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMkFkbWluMVBLAhlDYW4ndCBnZXQga0dyb3VwMkFkbWluMVBLAA5ncm91cDJBZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa0dyb3VwMkFkbWluMlBLAhlDYW4ndCBnZXQga0dyb3VwMkFkbWluMVBLAApvcGVyYXRvclBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rT3BlcmF0b3JDYWxsUEsCFENhbid0IGdldCBvcGVyYXRvclBLAQ91bmtub3duUG9vbFR5cGUACQACAQIPV3JvbmcgcG9vbCB0eXBlAQ5nZXRMZW5kU3J2QWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0xlbmRTZXJ2aWNlAhtDYW4ndCBnZXQgbGVuZCBzZXJ2aWNlIGFkZHIBDmlzT3BlcmF0b3JDYWxsAQFpAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQgFAWkPY2FsbGVyUHVibGljS2V5BQR1bml0CQACAQIkT25seSBvcGVyYXRvciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQtpc0FkbWluQ2FsbAEBaQMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CAUBaQ9jYWxsZXJQdWJsaWNLZXkGCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAihPbmx5IGFkbWluIGdyb3VwMSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzTGFuZENhbGwBAWkDCQAAAggFAWkGY2FsbGVyCQEOZ2V0TGVuZFNydkFkZHIABQR1bml0CQACAQIpT25seSBsYW5kIGNvbnRyYWN0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCGlzQWN0aXZlAAMJAAACCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGBgUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBEGlzQWN0aXZlRm9yVXNlcnMAAwMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUHa0FjdGl2ZQYJAAACCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDGtBY3RpdmVVc2VycwYGBwUEdW5pdAkAAgECKURBcHAgaXMgaW5hY3RpdmUgZm9yIHVzZXJzIGF0IHRoaXMgbW9tZW50AQxpc1Bvb2xBY3RpdmUCBHBvb2wEdHlwZQQKV1hTRkFjdGl2ZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFBHR5cGUFC2tBY3RpdmVTRldYBgQKcG9vbEFjdGl2ZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFBHBvb2wFC2tQb29sQWN0aXZlBgMDBQpXWFNGQWN0aXZlBQpwb29sQWN0aXZlBwYHAQ5hY2NvdW50QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQR0aGlzBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgERZ2V0U0ZQb29sQmFsYW5jZXMBCHBvb2xBZGRyCQCUCgIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEFBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEEgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRRrU0ZQb29sQkFzc2V0QmFsYW5jZQIeQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBiYWxhbmNlARFnZXRXWFBvb2xCYWxhbmNlcwMIcG9vbEFkZHIDYUlkA2JJZAkAlAoCCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQNhSWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAPwHBAUIcG9vbEFkZHICHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUDYklkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBD2dldFBvb2xCYWxhbmNlcwQIcG9vbEFkZHIEdHlwZQNhSWQDYklkAwkAAAIFBHR5cGUFB1NGX1BPT0wJARFnZXRTRlBvb2xCYWxhbmNlcwEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJARFnZXRXWFBvb2xCYWxhbmNlcwMFCHBvb2xBZGRyBQNhSWQFA2JJZAkBD3Vua25vd25Qb29sVHlwZQABDWdldFNGUG9vbERhdGEBCHBvb2xBZGRyBAskdDA3OTEyNzk2MQkBEWdldFNGUG9vbEJhbGFuY2VzAQUIcG9vbEFkZHIDCQAAAgULJHQwNzkxMjc5NjEFCyR0MDc5MTI3OTYxBARiYWxCCAULJHQwNzkxMjc5NjECXzIEBGJhbEEIBQskdDA3OTEyNzk2MQJfMQkAlwoFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFD2tTRlBvb2xBQXNzZXRJZAIZQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBpZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQkFzc2V0SWQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQFBGJhbEEFBGJhbEIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUOa1NGUG9vbFNoYXJlSWQCGENhbid0IGdldCBzaGFyZSBhc3NldCBpZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgENZ2V0V1hQb29sRGF0YQEIcG9vbEFkZHIEA2NmZwoAAUAJAPwHBAUIcG9vbEFkZHICHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQNjZmcFA2NmZwQDYUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwAEAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIZQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBpZAQDYklkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwAFAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIZQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBpZAQHc2hhcmVJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcAAwMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGkNhbid0IGdldCBwb29sIExQIGFzc2V0IGlkBAskdDA4NjU4ODcxNwkBEWdldFdYUG9vbEJhbGFuY2VzAwUIcG9vbEFkZHIFA2FJZAUDYklkAwkAAAIFCyR0MDg2NTg4NzE3BQskdDA4NjU4ODcxNwQEYmFsQggFCyR0MDg2NTg4NzE3Al8yBARiYWxBCAULJHQwODY1ODg3MTcCXzEJAJcKBQUDYUlkBQNiSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC2dldFBvb2xEYXRhAghwb29sQWRkcgR0eXBlAwkAAAIFBHR5cGUFB1NGX1BPT0wJAQ1nZXRTRlBvb2xEYXRhAQUIcG9vbEFkZHIDCQAAAgUEdHlwZQUHV1hfUE9PTAkBDWdldFdYUG9vbERhdGEBBQhwb29sQWRkcgkBD3Vua25vd25Qb29sVHlwZQABDmdldFNoYXJlU3VwcGx5Awhwb29sQWRkcgR0eXBlB3NoYXJlSWQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRJrU0ZQb29sU2hhcmVTdXBwbHkCHENhbid0IGdldCBzaGFyZSBhc3NldCBzdXBwbHkDCQAAAgUEdHlwZQUHV1hfUE9PTAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFB3NoYXJlSWQCDVdyb25nIFNoYXJlSWQIcXVhbnRpdHkJAQ91bmtub3duUG9vbFR5cGUAARFnZXRQb29sVG90YWxTaGFyZQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFCmtQb29sVG90YWwAAAEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuAAABGGdldE5ld1VzZXJQb3NpdGlvbk51bWJlcgEEdXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtAAAAAQEKZ2V0QXhseUZlZQIEcG9vbAdmZWVUeXBlAwkAAAIFB2ZlZVR5cGUFDENBUF9GRUVfTE9BTgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrQXhseVdpdGhMb2FuQ2FwRmVlAwkAAAIFB2ZlZVR5cGUFD0NBUF9GRUVfTk9fTE9BTgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrQXhseU5vTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQhMT0FOX0ZFRQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRJrQXhseUluRmVlV2l0aExvYW4DCQAAAgUHZmVlVHlwZQULTk9fTE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAwkAAAIFB2ZlZVR5cGUFBk5PX0ZFRQAACQACAQIOV3JvbmcgZmVlIHR5cGUBEGdldFNGRmFybWluZ0FkZHIACQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDmtTRkZhcm1pbmdBZGRyAh1DYW4ndCBnZXQgc3dvcGZpIGZhcm1pbmcgYWRkcgEQZ2V0V1hGYXJtaW5nQWRkcgEIcG9vbEFkZHIECWZDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgITJXNfX2ZhY3RvcnlDb250cmFjdAIiQ2FuJ3QgZ2V0IFdYIGZhY3RvcnkgY29udHJhY3QgYWRkcgQKZmFjdHJveUNmZwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJZkNvbnRyYWN0AhElc19fZmFjdG9yeUNvbmZpZwIYQ2FuJ3QgZ2V0IFdYIGZhY3RvcnkgY2ZnAgJfXwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUKZmFjdHJveUNmZwABAQxhc3NldElkVG9TdHIBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJANgEAQUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDACBVdBVkVTCQACAQIMTm90IEFzc2V0IGlkAQ5hc3NldElkRnJvbVN0cgEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARBnZXRBc3NldERlY2ltYWxzAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTAAgEByRtYXRjaDAJAOwHAQkA2QQBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CGRlY2ltYWxzCQACAQIQQ2FuJ3QgZmluZCBhc3NldAERZ2V0QXNzZXRQcmVjaXRpb24BB2Fzc2V0SWQJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQdhc3NldElkAAAAAAUERE9XTgEOZ2V0QXNzZXRzUHJpY2UBCGFzc2V0SWRzCgEJZ2V0UHJpY2VzAgFhB2Fzc2V0SWQECmFzc2V0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlAP///////////wEJAM0IAgUBYQUKYXNzZXRQcmljZQoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDWdldFNoYXJlUHJpY2UBB3NoYXJlSWQEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFB3NoYXJlSWQFCmtTaGFyZVBvb2wCIENhbid0IGZpbmQgcG9vbCBhZGRyIGJ5IHNoYXJlIGlkBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAxMTcwNjExNzcxCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA2FJZAgFDSR0MDExNzA2MTE3NzECXzEEA2JJZAgFDSR0MDExNzA2MTE3NzECXzIECGFCYWxhbmNlCAUNJHQwMTE3MDYxMTc3MQJfMwQIYkJhbGFuY2UIBQ0kdDAxMTcwNjExNzcxAl80BAZwcmljZXMJAQ5nZXRBc3NldHNQcmljZQEJAMwIAgUDYUlkCQDMCAIFA2JJZAUDbmlsBAdkUHJpY2VBCQCRAwIFBnByaWNlcwAABAdkUHJpY2VCCQCRAwIFBnByaWNlcwABAwMJAGYCAAAFB2RQcmljZUEGCQBmAgAABQdkUHJpY2VCAP///////////wEEC3NoYXJlU3VwcGx5CQEOZ2V0U2hhcmVTdXBwbHkDBQhwb29sQWRkcgUFcFR5cGUFB3NoYXJlSWQECkFQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNhSWQAAAAABQRET1dOBApCUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYklkAAAAAAUERE9XTgQOc2hhcmVQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQdzaGFyZUlkAAAAAAUERE9XTgQDc3VtCQBkAgkAawMFCGFCYWxhbmNlBQdkUHJpY2VBBQpBUHJlY2lzaW9uCQBrAwUIYkJhbGFuY2UFB2RQcmljZUIFCkJQcmVjaXNpb24JAGsDBQNzdW0FDnNoYXJlUHJlY2lzaW9uBQtzaGFyZVN1cHBseQEOZ2V0U2hhcmVQcmljZXMBCHNoYXJlSWRzCgEJZ2V0UHJpY2VzAgFhB3NoYXJlSWQJAM0IAgUBYQkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkCgACJGwFCHNoYXJlSWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlnZXRQcmljZXMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAEOZ2V0Q3Vyc0VudHJpZXMEA2FJZANiSWQHc2hhcmVJZAh3QW1vdW50cwQMYXNzZXRzUHJpY2VzCQEOZ2V0QXNzZXRzUHJpY2UBCQDMCAIFA2FJZAkAzAgCBQNiSWQFA25pbAQKc2hhcmVQcmljZQkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkBAZwcmljZXMJAM4IAgkAzAgCCQCkAwEJAJEDAgUMYXNzZXRzUHJpY2VzAAAJAMwIAgkApAMBCQCRAwIFDGFzc2V0c1ByaWNlcwABCQDMCAIJAKQDAQUKc2hhcmVQcmljZQUDbmlsBQh3QW1vdW50cwkAzAgCCQELU3RyaW5nRW50cnkCBQ9rVG9rZW5MYXN0UHJpY2UJALkJAgUGcHJpY2VzAgEsBQNuaWwBGGNhbGNSZXBsZW5pc2hCeVR3b1Rva2VucwgFcFR5cGUIcG9vbEFkZHIEcG10QQNhSWQEcG10QgNiSWQEYmFsQQRiYWxCAwkAAAIFBXBUeXBlBQdTRl9QT09MBARyZXBsCgABQAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICIGNhbGNMUFJlcGxlbmlzaFR3b1Rva2Vuc1JFQURPTkxZCQDMCAIJAMwIAgkApAMBBQRwbXRBCQDMCAIJAKQDAQUEcG10QgUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUEcmVwbAUEcmVwbAkAlwoFCgABQAkAkQMCBQRyZXBsAAMDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQRyZXBsAAQDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQRyZXBsAAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQEMYXNzZXRJZFRvU3RyAQkAkQMCBQRyZXBsAAIKAAFACQCRAwIFBHJlcGwAAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDEzMzE1MTM1NjUJAJQKAgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkAzAgCBQRwbXRCBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fAwkAAAIFDSR0MDEzMzE1MTM1NjUFDSR0MDEzMzE1MTM1NjUECmV2YWxQdXRJbkIIBQ0kdDAxMzMxNTEzNTY1Al8yBApldmFsUHV0SW5BCAUNJHQwMTMzMTUxMzU2NQJfMQQFbHBJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAEEBWxwSW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgABAwkAZgIFBWxwSW5CBQVscEluQQQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCXCgUFBHBtdEEFA3BtdAkAZQIFBHBtdEIFA3BtdAUDYklkBQVscEluQgQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCXCgUFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUDYUlkBQVscEluQQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYIcG9vbEFkZHIFcFR5cGUEcG10QQNhSWQEcG10QgNiSWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNhSWQFBHBtdEEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2JJZAUEcG10QgUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEXcmVwbGVuaXNoT25lVG9rZW5CeVR5cGUECHBvb2xBZGRyBXBUeXBlA3BtdAVwbXRJZAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFBXBtdElkBQNwbXQFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgkAzAgCCQDMCAICATAJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsBQNuaWwFCHBheW1lbnRzAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEHc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUHc2hhcmVJZAUGYW1vdW50BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgVzdGFrZQUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTUyMjQxNTU3NAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAQ91bmtub3duUG9vbFR5cGUABAhmYXJtQWRkcggFDSR0MDE1MjI0MTU1NzQCXzEEBWZOYW1lCAUNJHQwMTUyMjQxNTU3NAJfMgQGcGFyYW1zCAUNJHQwMTUyMjQxNTU3NAJfMwQDaW52CQD8BwQFCGZhcm1BZGRyBQVmTmFtZQUGcGFyYW1zBQNuaWwDCQAAAgUDaW52BQNpbnYFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERY2FsY0Ftb3VudFRvUGF5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAbgQFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBQdDRUlMSU5HBA0kdDAxNTk5NjE2MzAyAwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBuBAUMYW1udEdldE5vRmVlBQRiYWxCCQBlAgUEYmFsQQUMYW1udEdldE5vRmVlBQdDRUlMSU5HCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEEJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE1OTk2MTYzMDICXzEECmFzc2V0VG9QYXkIBQ0kdDAxNTk5NjE2MzAyAl8yCQCUCgIFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5AQ1nZXRXWFN3YXBGZWVzAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQJZkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIEDnBvb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQScHJvdG9jb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEByRtYXRjaDAJAPwHBAUJZkNvbnRyYWN0AhJnZXRTd2FwRmVlUkVBRE9OTFkJAMwIAgkApQgBBQhwb29sQWRkcgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQEZmVlcwUHJG1hdGNoMAkAlAoCCAUEZmVlcwJfMQgFBGZlZXMCXzIJAJQKAgUOcG9vbEZlZURlZmF1bHQFEnByb3RvY29sRmVlRGVmYXVsdAERY2FsY0Ftb3VudFRvUGF5V1gHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BA0kdDAxNzA0MjE3MDgxCQENZ2V0V1hTd2FwRmVlcwEFBHBvb2wEBHBGZWUIBQ0kdDAxNzA0MjE3MDgxAl8xBAVwckZlZQgFDSR0MDE3MDQyMTcwODECXzIECGZlZVNjYWxlCQC2AgEAgMLXLwQNJHQwMTcxMjExNzQyOQMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEIJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBRBhbW91bnRUb2tlblRvR2V0BQRiYWxBCQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTcxMjExNzQyOQJfMQQKYXNzZXRUb1BheQgFDSR0MDE3MTIxMTc0MjkCXzIEEmFtb3VudFRvUGF5V2l0aEZlZQkAoAMBCQC9AgQJALYCAQULYW1vdW50VG9QYXkFCGZlZVNjYWxlCQC4AgIFCGZlZVNjYWxlCQC2AgEJAGQCBQVwckZlZQUEcEZlZQUHQ0VJTElORwkAlAoCBQphc3NldFRvUGF5BRJhbW91bnRUb1BheVdpdGhGZWUBEGV4Y2hhbmdlRGlyZWN0bHkIBXBUeXBlBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0AwkAAAIFBXBUeXBlBQdTRl9QT09MBA0kdDAxNzc3NjE3ODk4CQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDE3Nzc2MTc4OTgCXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTc3NzYxNzg5OAJfMgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCCQCkAwEFEGFtb3VudFRva2VuVG9HZXQFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BQthbW91bnRUb1BheQUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxODA5ODE4MjIwCQERY2FsY0Ftb3VudFRvUGF5V1gHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDE4MDk4MTgyMjACXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTgwOTgxODIyMAJfMgkA/AcEBQ53eFN3YXBDb250cmFjdAIEc3dhcAkAzAgCBRBhbW91bnRUb2tlblRvR2V0CQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAkBD3Vua25vd25Qb29sVHlwZQABGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAhwb29sQWRkcgVwVHlwZQdzaGFyZUlkD3VzZXJDYW5XaXRoZHJhdwQNJHQwMTg1MDcxODk3MQMJAAACBQVwVHlwZQUHU0ZfUE9PTAQDaW52CgABQAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICEHdpdGhkcmF3UkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDaW52BQNpbnYJAJQKAgoAAUAJAJEDAgUDaW52AAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQNpbnYAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEA2ludgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgITZXZhbHVhdGVHZXRSRUFET05MWQkAzAgCBQdzaGFyZUlkCQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNpbnYFA2ludgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNpbnYAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQAEB2Ftb3VudEEIBQ0kdDAxODUwNzE4OTcxAl8xBAdhbW91bnRCCAUNJHQwMTg1MDcxODk3MQJfMgkAlAoCBQdhbW91bnRBBQdhbW91bnRCAQtjbGFpbUZhcm1lZAIFcFR5cGUEcG9vbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDE5MzM5MTk0MTgJAQ1nZXRXWFBvb2xEYXRhAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQDYUlkCAUNJHQwMTkzMzkxOTQxOAJfMQQDYklkCAUNJHQwMTkzMzkxOTQxOAJfMgQEYUJhbAgFDSR0MDE5MzM5MTk0MTgCXzMEBGJCYWwIBQ0kdDAxOTMzOTE5NDE4Al80BARscElkCAUNJHQwMTkzMzkxOTQxOAJfNQQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgdjbGFpbVd4CQDMCAIFBGxwSWQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUEV1hJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABD3JlcGxlbmlzaEJ5VHlwZQoFcFR5cGUEcG9vbAdmZWVUeXBlBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgRMUElkBA9scEJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUETFBJZAMJAAACBQ9scEJhbGFuY2VCZWZvcmUFD2xwQmFsYW5jZUJlZm9yZQQIcG9vbEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEDSR0MDIwMDE2MjA0MzIDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcEDSR0MDIwMDgyMjAxOTgJARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBQVwVHlwZQUIcG9vbEFkZHIFBHBtdEEFA2FJZAUEcG10QgUDYklkBQRiYWxBBQRiYWxCBAZwbXRJbkEIBQ0kdDAyMDA4MjIwMTk4Al8xBAZwbXRJbkIIBQ0kdDAyMDA4MjIwMTk4Al8yBAZjaGFuZ2UIBQ0kdDAyMDA4MjIwMTk4Al8zBAhjaGFuZ2VJZAgFDSR0MDIwMDgyMjAxOTgCXzQEA2ludgkBGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYFCHBvb2xBZGRyBQVwVHlwZQUGcG10SW5BBQNhSWQFBnBtdEluQgUDYklkAwkAAAIFA2ludgUDaW52CQCUCgIFBmNoYW5nZQUIY2hhbmdlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUEcG10QQAACQCUCgIFBHBtdEEFA2FJZAMJAGYCBQRwbXRCAAAJAJQKAgUEcG10QgUDYklkCQACAQIQcG10cyBtdXN0IGJlID4gMAQGY2hhbmdlCAUNJHQwMjAwMTYyMDQzMgJfMQQIY2hhbmdlSWQIBQ0kdDAyMDAxNjIwNDMyAl8yBANpbnYDCQBmAgUGY2hhbmdlAAAJARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQFCHBvb2xBZGRyBQVwVHlwZQUGY2hhbmdlBQhjaGFuZ2VJZAUDbmlsAwkAAAIFA2ludgUDaW52BA5scEJhbGFuY2VBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkBAt0b3RhbFN0YWtlZAkAZQIFDmxwQmFsYW5jZUFmdGVyBQ9scEJhbGFuY2VCZWZvcmUEDWF4bHlGZWVBbW91bnQJAGsDBQt0b3RhbFN0YWtlZAkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2BBF1c2VyU2hhcmVGb3JTdGFrZQkAZQIFC3RvdGFsU3Rha2VkBQ1heGx5RmVlQW1vdW50AwkAZwIAAAURdXNlclNoYXJlRm9yU3Rha2UJAAIBAihhbW91bnQgb2Ygc3Rha2VkIHNoYXJldG9rZW5zIG11c3QgYmUgPiAwBAVpbnZMUAkBB3N0YWtlTFAEBQRwb29sBQVwVHlwZQUETFBJZAURdXNlclNoYXJlRm9yU3Rha2UDCQAAAgUFaW52TFAFBWludkxQCQCUCgIFEXVzZXJTaGFyZUZvclN0YWtlBQ1heGx5RmVlQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARByZXBsZW5pc2hFbnRyaWVzCARwb29sBHVzZXIMc3Rha2VkQW1vdW50DWF4bHlGZWVBbW91bnQGcG9zTnVtB3NoYXJlSWQEdHlwZQh3aXRoTG9hbgQLdG90YWxBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wED3RvdGFsQW1vdW50TG9hbgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBA0kdDAyMTI4OTIxNTI3AwUId2l0aExvYW4JAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkAZAIFD3RvdGFsQW1vdW50TG9hbgUMc3Rha2VkQW1vdW50CQCUCgIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgUPdG90YWxBbW91bnRMb2FuBA9jdXJQb29sSW50ZXJlc3QIBQ0kdDAyMTI4OTIxNTI3Al8xBBN0b3RhbFN0YWtlZFdpdGhMb2FuCAUNJHQwMjEyODkyMTUyNwJfMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgUTdG90YWxTdGFrZWRXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sBQRwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBDmV4Y2hhbmdlS2VlcGVyCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgRzd2FwCQDMCAIFCWFtb3VudHNJbgkAzAgCBQlhZGRyZXNzZXMJAMwIAgUPYXNzZXRzVG9SZWNlaXZlCQDMCAIFC2VzdFJlY2VpdmVkCQDMCAIFEXNsaXBwYWdlVG9sZXJhbmNlCQDMCAIFC21pblJlY2VpdmVkCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVB1enpsZQYHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgpwdXp6bGVTd2FwCQDMCAIFCXJvdXRlc1N0cgkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlU3dvcEZpCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldApleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0Agpzd29wZmlTd2FwCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgUSbWluQW1vdW50VG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQpjYXBpdGFsaXplBARwb29sBXBUeXBlB3Rva2VuSWQLdG9rZW5BbW91bnQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQNJHQwMjM4ODEyMzk0NwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANBSWQIBQ0kdDAyMzg4MTIzOTQ3Al8xBANCSWQIBQ0kdDAyMzg4MTIzOTQ3Al8yBARiYWxBCAUNJHQwMjM4ODEyMzk0NwJfMwQEYmFsQggFDSR0MDIzODgxMjM5NDcCXzQEB3NoYXJlSWQIBQ0kdDAyMzg4MTIzOTQ3Al81AwMJAQIhPQIFB3Rva2VuSWQFA0FJZAkBAiE9AgUHdG9rZW5JZAUDQklkBwkAAgECC1dyb25nIGFzc2V0BBB0b3RhbFNoYXJlQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQLbG9hblBlcmNlbnQJAGsDBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4FBlNDQUxFOAUQdG90YWxTaGFyZUFtb3VudAQQdG9rZW5zRm9yRmVlTG9hbgkAawMFC3Rva2VuQW1vdW50BQtsb2FuUGVyY2VudAUGU0NBTEU4BBJ0b2tlbnNGb3JGZWVOb0xvYW4JAGUCBQt0b2tlbkFtb3VudAUQdG9rZW5zRm9yRmVlTG9hbgQLYXhseUZlZUxvYW4JAGsDBRB0b2tlbnNGb3JGZWVMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFEnRva2Vuc0ZvckZlZU5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYEB2F4bHlGZWUJAGQCBQtheGx5RmVlTG9hbgUNYXhseUZlZU5vTG9hbgQNJHQwMjQ1ODcyNDY4NwMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgkAZQIFC3Rva2VuQW1vdW50BQdheGx5RmVlAAAJAJQKAgAACQBlAgULdG9rZW5BbW91bnQFB2F4bHlGZWUEBHBtdEEIBQ0kdDAyNDU4NzI0Njg3Al8xBARwbXRCCAUNJHQwMjQ1ODcyNDY4NwJfMgQNJHQwMjQ2OTAyNDc5NAkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQZOT19GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAxzdGFrZWRBbW91bnQIBQ0kdDAyNDY5MDI0Nzk0Al8xBAJuZggFDSR0MDI0NjkwMjQ3OTQCXzIEE2N1clBvb2xJbnRlcmVzdExvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgAABBVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuAAAECnN0YWtlZExvYW4JAGsDBQxzdGFrZWRBbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEDHN0YWtlZE5vTG9hbgkAZQIFDHN0YWtlZEFtb3VudAUKc3Rha2VkTG9hbgQPbmV3SW50ZXJlc3RMb2FuAwkAZgIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUTY3VyUG9vbEludGVyZXN0TG9hbgkAawMFCnN0YWtlZExvYW4FB1NDQUxFMTAFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABBFuZXdJbnRlcmVzdE5vTG9hbgMJAGYCCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4FB1NDQUxFMTAJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuBQ9uZXdJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgURbmV3SW50ZXJlc3ROb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZAIFEHRvdGFsU2hhcmVBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgkAZAIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUKc3Rha2VkTG9hbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUHYXhseUZlZQkA2QQBBQd0b2tlbklkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkBQNuaWwBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQEdXNlcgRwb29sBXBvc0lkCGJvcnJvd2VkBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxwb29sSW50ZXJlc3QDBQhib3Jyb3dlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuCQBkAgUHcEFtb3VudAkAawMFB3BBbW91bnQJAGUCBQxwb29sSW50ZXJlc3QFDHVzZXJJbnRlcmVzdAUHU0NBTEUxMAEPY2FsY1N0b3BMb3NzRmVlBARwb29sCmlzQm9ycm93ZWQIc3RvcExvc3MKbHBXaXRoZHJhdwQHZmVlVHlwZQMFCmlzQm9ycm93ZWQFDVNUT1BMT1NTX0xPQU4FFFNUT1BMT1NTX0ZFRV9OT19MT0FOAwUIc3RvcExvc3MJAGsDBQpscFdpdGhkcmF3CQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYAAAEOd2l0aGRyYXdUb1VzZXIEBHVzZXIEcG9vbAVwb3NJZAhzdG9wTG9zcwQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQKaXNCb3Jyb3dlZAkAZgIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAAAAAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkBQppc0JvcnJvd2VkBA5wb29sVG90YWxTaGFyZQkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQScG9vbFRvdGFsU2hhcmVMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wECHVzZXJBZGRyCQEHQWRkcmVzcwEJANkEAQUEdXNlcgQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMjczMjUyNzM5NwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAZpZEFTdHIIBQ0kdDAyNzMyNTI3Mzk3Al8xBAZpZEJTdHIIBQ0kdDAyNzMyNTI3Mzk3Al8yBARiYWxBCAUNJHQwMjczMjUyNzM5NwJfMwQEYmFsQggFDSR0MDI3MzI1MjczOTcCXzQEB3NoYXJlSWQIBQ0kdDAyNzMyNTI3Mzk3Al81BA0kdDAyNzQwMDI3NDY3CQCUCgIJAQ5hc3NldElkRnJvbVN0cgEFBmlkQVN0cgkBDmFzc2V0SWRGcm9tU3RyAQUGaWRCU3RyBANpZEEIBQ0kdDAyNzQwMDI3NDY3Al8xBANpZEIIBQ0kdDAyNzQwMDI3NDY3Al8yBAtzdG9wTG9zc0ZlZQkBD2NhbGNTdG9wTG9zc0ZlZQQFBHBvb2wFCmlzQm9ycm93ZWQFCHN0b3BMb3NzBQ91c2VyQ2FuV2l0aGRyYXcEC2NCYWxBQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQNpZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUDaWRCAwkAAAIFC2NCYWxCQmVmb3JlBQtjQmFsQkJlZm9yZQQDaW52AwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICA2dldAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQADCQAAAgUDaW52BQNpbnYECmNCYWxBQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQpjQmFsQUFmdGVyBQpjQmFsQUFmdGVyBApjQmFsQkFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgUKY0JhbEJBZnRlcgUKY0JhbEJBZnRlcgQNJHQwMjgxNjIyODI1MQkAlAoCCQBlAgUKY0JhbEFBZnRlcgULY0JhbEFCZWZvcmUJAGUCBQpjQmFsQkFmdGVyBQtjQmFsQkJlZm9yZQQNdG9rZW5zQW1vdW50QQgFDSR0MDI4MTYyMjgyNTECXzEEDXRva2Vuc0Ftb3VudEIIBQ0kdDAyODE2MjI4MjUxAl8yBA0kdDAyODI1NDI5NDkwAwUKaXNCb3Jyb3dlZAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBARkZWJ0CgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUEZGVidAUEZGVidAQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFBmlkQVN0cgkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFBmlkQlN0cgkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEIHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QgAABAVleEludgMJAGYCBQ1hbW91bnRUb0dldEV4AAAJARBleGNoYW5nZURpcmVjdGx5CAUFcFR5cGUFBHBvb2wFBmlkQVN0cgUGaWRCU3RyCQBlAgUEYmFsQQUNdG9rZW5zQW1vdW50QQkAZQIFBGJhbEIFDXRva2Vuc0Ftb3VudEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0BQNuaWwDCQAAAgUFZXhJbnYFBWV4SW52BA9jQmFsQUFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQ9jQmFsQUFmdGVyUmVwYXkFD2NCYWxBQWZ0ZXJSZXBheQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgUPY0JhbEJBZnRlclJlcGF5BQ9jQmFsQkFmdGVyUmVwYXkEC2Nsb3NlRGJ0SW52AwkAZgIFBGRlYnQAAAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAghyZXBheUZvcgkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQULYm9ycm93QXNzZXQFBGRlYnQFA25pbAAAAwkAAAIFC2Nsb3NlRGJ0SW52BQtjbG9zZURidEludgMJAAACBQtib3Jyb3dBc3NldAUGaWRBU3RyCQCUCgIJAGUCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQUEZGVidAkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAJQKAgkAZQIFD2NCYWxBQWZ0ZXJSZXBheQULY0JhbEFCZWZvcmUJAGUCCQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQUEZGVidAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQ10b2tlbnNBbW91bnRBBQ10b2tlbnNBbW91bnRCBAd0b1VzZXJBCAUNJHQwMjgyNTQyOTQ5MAJfMQQHdG9Vc2VyQggFDSR0MDI4MjU0Mjk0OTACXzIEFHBvb2xUb3RhbExvYW5FbnRyaWVzAwUKaXNCb3Jyb3dlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgkAZQIJAGUCBRJwb29sVG90YWxTaGFyZUxvYW4FD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUFA25pbAUDbmlsBAdlbnRyaWVzCQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyUG9zaXRpb25Qb29sCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJAGUCBQ5wb29sVG90YWxTaGFyZQUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUHdG9Vc2VyQQUDaWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQd0b1VzZXJCBQNpZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3N0b3BMb3NzRmVlCQDZBAEFB3NoYXJlSWQFA25pbAUUcG9vbFRvdGFsTG9hbkVudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFBmlkQVN0cgUGaWRCU3RyBQdzaGFyZUlkBQNuaWwJAJQKAgUHZW50cmllcwkAzAgCBQd0b1VzZXJBCQDMCAIFB3RvVXNlckIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMcGFyc2VSZXF1ZXN0AQlyZXF1ZXN0SWQEB3JlcXVlc3QJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkCQCsAgICE05vIHJlcXVlc3Qgd2l0aCBpZCAFCXJlcXVlc3RJZAIBLAQEdXNlcgkAkQMCBQdyZXF1ZXN0AAAEBHBvb2wJAJEDAgUHcmVxdWVzdAABBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAACBANBSWQJAJEDAgUHcmVxdWVzdAADBARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAEBANCSWQJAJEDAgUHcmVxdWVzdAAFBARiYWxBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAGBARiYWxCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAHBAdzaGFyZUlkCQCRAwIFB3JlcXVlc3QACAQHYndBc3NldAkAkQMCBQdyZXF1ZXN0AAkECGJ3QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAKCQCdCgsFBHVzZXIFBHBvb2wFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBQdid0Fzc2V0BQhid0Ftb3VudAEQY2FsY0JvcnJvd0Ftb3VudAYEcG10QQRwbXRCA2FJZANiSWQIbGV2ZXJhZ2UIYm9ycm93SWQDAwkBAiE9AgUIYm9ycm93SWQFA2FJZAkBAiE9AgUIYm9ycm93SWQFA2JJZAcJAAIBAhJXcm9uZyBib3Jyb3cgYXNzZXQEB2RQcmljZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQNhSWQFDmtQcmljZUluT3JhY2xlBAdkUHJpY2VCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYklkBQ5rUHJpY2VJbk9yYWNsZQQGZGVjUHJBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYUlkAAAAAAUERE9XTgQGZGVjUHJCCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYklkAAAAAAUERE9XTgQMcGF5ZEluRG9sbGFyCQBkAgkAawMFB2RQcmljZUEFBHBtdEEFBmRlY1ByQQkAawMFB2RQcmljZUIFBHBtdEIFBmRlY1ByQgQNJHQwMzE0NzIzMTU2OQMJAAACBQhib3Jyb3dJZAUDYUlkCQCUCgIFB2RQcmljZUEFBmRlY1ByQQkAlAoCBQdkUHJpY2VCBQZkZWNQckIEC2JvcnJvd1ByaWNlCAUNJHQwMzE0NzIzMTU2OQJfMQQLYm9ycm93RGVjUHIIBQ0kdDAzMTQ3MjMxNTY5Al8yCQBrAwkAawMFDHBheWRJbkRvbGxhcgkAZQIFCGxldmVyYWdlAGQAZAULYm9ycm93RGVjUHIFC2JvcnJvd1ByaWNlARJwYXJzZVJlcGxlbmlzaFBtdHMDBHBtdHMDQUlkA0JJZAMJAAACCQCQAwEFBHBtdHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQUlkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBBAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAQdhc3NldElkBQNCSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEIJAJQKAggJAJEDAgUEcG10cwAABmFtb3VudAgJAJEDAgUEcG10cwABBmFtb3VudAMJAAACCQCQAwEFBHBtdHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0FJZAkAlAoCCAkAkQMCBQRwbXRzAAAGYW1vdW50AAADCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNCSWQJAJQKAgAACAkAkQMCBQRwbXRzAAAGYW1vdW50CQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQBD2NhbGNQcmljZUltcGFjdAQEYmFsQQRiYWxCB25ld0JhbEEHbmV3QmFsQgQDcHJpCQBoAgkAZQIFBlNDQUxFOAkAawMJAGsDBQRiYWxCBQZTQ0FMRTgFBGJhbEEFBlNDQUxFOAkAawMFB25ld0JhbEIFBlNDQUxFOAUHbmV3QmFsQQBkAwkAZgIAAAUDcHJpCQBoAgUDcHJpAP///////////wEFA3ByaQERY2xhaW1BbmRDaGVja0FtbnQFBHBvb2wFcFR5cGUFY2xhaW0GYW1vdW50BmNoYW5nZQQNJHQwMzI1NjkzMjgyOAMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQVwVHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBXBUeXBlBQdTRl9QT09MBQZTV09QSUQDCQAAAgUFcFR5cGUFB1dYX1BPT0wFBFdYSUQJAQ91bmtub3duUG9vbFR5cGUACQCUCgIFBmFtb3VudAUMY2xhaW1lZEFzc2V0BAtjbGFpbUFtb3VudAgFDSR0MDMyNTY5MzI4MjgCXzEECmNsYWltQXNzZXQIBQ0kdDAzMjU2OTMyODI4Al8yBANiYWwJAQ5hY2NvdW50QmFsYW5jZQEFCmNsYWltQXNzZXQDAwkAZgIFBmFtb3VudAkAZAIFC2NsYWltQW1vdW50BQZjaGFuZ2UGCQBmAgUGYW1vdW50BQNiYWwJAAIBAhlUbyBiaWcgYW1vdW50IHRvIGV4Y2hhbmdlCQCUCgIFC2NsYWltQW1vdW50BQpjbGFpbUFzc2V0HQFpARNnZXRQb29sSW5mb1JFQURPTkxZAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDMzMjI1MzMzMTUJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzMyMjUzMzMxNQJfMQQDQklkCAUNJHQwMzMyMjUzMzMxNQJfMgQEYmFsQQgFDSR0MDMzMjI1MzMzMTUCXzMEBGJhbEIIBQ0kdDAzMzIyNTMzMzE1Al80BAdzaGFyZUlkCAUNJHQwMzMyMjUzMzMxNQJfNQQLc2hhcmVTdXBwbHkJAQ5nZXRTaGFyZVN1cHBseQMFCHBvb2xBZGRyBQVwVHlwZQUHc2hhcmVJZAkAlAoCBQNuaWwJAJgKBgUDQUlkBQNCSWQFB3NoYXJlSWQFBGJhbEEFBGJhbEIFC3NoYXJlU3VwcGx5AWkBGmdldFNoYXJlQXNzZXRQcmljZVJFQURPTkxZAQdzaGFyZUlkBAtzaGFyZVByaWNlcwkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkCQCUCgIFA25pbAULc2hhcmVQcmljZXMBaQEiZ2V0VXNlclBvc2l0aW9uU2hhcmVBbW91bnRSRUFET05MWQIEdXNlcgZwb3NOdW0EBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sAhBVbmtub3duIHBvc2l0aW9uBAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQZwb3NOdW0JAGYCBQxib3Jyb3dBbW91bnQAAAkAlAoCBQNuaWwFD3VzZXJDYW5XaXRoZHJhdwFpARdnZXRVc2VyUG9zaXRpb25SRUFET05MWQMEdXNlcgVwb29scwZwb3NOdW0KAQd1c2VyUG9zAgFhBHBvb2wEDSR0MDM0MTg4MzQyNTgFAWEECXdBbW91bnRzQQgFDSR0MDM0MTg4MzQyNTgCXzEECXdBbW91bnRzQggFDSR0MDM0MTg4MzQyNTgCXzIEBWRlYnRzCAUNJHQwMzQxODgzNDI1OAJfMwQLZXFXQW1vdW50c0EIBQ0kdDAzNDE4ODM0MjU4Al80BAtlcVdBbW91bnRzQggFDSR0MDM0MTg4MzQyNTgCXzUEBWluZGV4CAUNJHQwMzQxODgzNDI1OAJfNgMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAUNa1VzZXJQb3NpdGlvbgkAmAoGCQDNCAIFCXdBbW91bnRzQQAACQDNCAIFCXdBbW91bnRzQgAACQDNCAIFBWRlYnRzAAAJAM0IAgULZXFXQW1vdW50c0EAAAkAzQgCBQtlcVdBbW91bnRzQgAACQBkAgUFaW5kZXgAAQQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDM0NTM3MzQ2MjcJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzQ1MzczNDYyNwJfMQQDQklkCAUNJHQwMzQ1MzczNDYyNwJfMgQEYmFsQQgFDSR0MDM0NTM3MzQ2MjcCXzMEBGJhbEIIBQ0kdDAzNDUzNzM0NjI3Al80BAdzaGFyZUlkCAUNJHQwMzQ1MzczNDYyNwJfNQQMYm9ycm93QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFEWtVc2VyQm9ycm93QW1vdW50AAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wJAJEDAgUGcG9zTnVtBQVpbmRleAkAZgIFDGJvcnJvd0Ftb3VudAAABA0kdDAzNDg0MzM0OTYzCQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwQId0Ftb3VudEEIBQ0kdDAzNDg0MzM0OTYzAl8xBAh3QW1vdW50QggFDSR0MDM0ODQzMzQ5NjMCXzIDCQBmAgUMYm9ycm93QW1vdW50AAAEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4CQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUEZGVidAUEZGVidAQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFA0FJZAkAZgIFBGRlYnQFCHdBbW91bnRBBwkAZQIFBGRlYnQFCHdBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUDQklkCQBmAgUEZGVidAUId0Ftb3VudEIHCQBlAgUEZGVidAUId0Ftb3VudEIAAAQLYW1vdW50VG9QYXkDCQBmAgUNYW1vdW50VG9HZXRFeAAAAwkAAAIFBXBUeXBlBQdTRl9QT09MBAJleAkBEWNhbGNBbW91bnRUb1BheVNGBwUEcG9vbAUDQUlkBQNCSWQFBGJhbEEFBGJhbEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0CAUCZXgCXzIDCQAAAgUFcFR5cGUFB1dYX1BPT0wEAmV4CQERY2FsY0Ftb3VudFRvUGF5V1gHBQRwb29sBQNBSWQFA0JJZAUEYmFsQQUEYmFsQgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQIBQJleAJfMgkBD3Vua25vd25Qb29sVHlwZQAAAAQNJHQwMzU4NzUzNjA5NAMJAAACBQtib3Jyb3dBc3NldAUDQUlkCQCUCgIJAGUCCQBkAgUId0Ftb3VudEEFDWFtb3VudFRvR2V0RXgFBGRlYnQJAGUCBQh3QW1vdW50QgULYW1vdW50VG9QYXkJAJQKAgkAZQIFCHdBbW91bnRBBQthbW91bnRUb1BheQkAZQIJAGQCBQh3QW1vdW50QgUNYW1vdW50VG9HZXRFeAUEZGVidAQKZXFXQW1vdW50QQgFDSR0MDM1ODc1MzYwOTQCXzEECmVxV0Ftb3VudEIIBQ0kdDAzNTg3NTM2MDk0Al8yCQCYCgYJAM0IAgUJd0Ftb3VudHNBBQh3QW1vdW50QQkAzQgCBQl3QW1vdW50c0IFCHdBbW91bnRCCQDNCAIFBWRlYnRzBQRkZWJ0CQDNCAIFC2VxV0Ftb3VudHNBBQplcVdBbW91bnRBCQDNCAIFC2VxV0Ftb3VudHNCBQplcVdBbW91bnRCCQBkAgUFaW5kZXgAAQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAmAoGCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgUFZGVidHMJAM0IAgUJd0Ftb3VudHNBBQh3QW1vdW50QQkAzQgCBQl3QW1vdW50c0IFCHdBbW91bnRCCQBkAgUFaW5kZXgAAQQNJHQwMzYzNDkzNjQ2MAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJgKBgUDbmlsBQNuaWwFA25pbAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXNlclBvcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAl3QW1vdW50c0EIBQ0kdDAzNjM0OTM2NDYwAl8xBAl3QW1vdW50c0IIBQ0kdDAzNjM0OTM2NDYwAl8yBAVkZWJ0cwgFDSR0MDM2MzQ5MzY0NjACXzMEC2VxV0Ftb3VudHNBCAUNJHQwMzYzNDkzNjQ2MAJfNAQLZXFXQW1vdW50c0IIBQ0kdDAzNjM0OTM2NDYwAl81CQCUCgIFA25pbAkAlwoFBQl3QW1vdW50c0EFCXdBbW91bnRzQgUFZGVidHMFC2VxV0Ftb3VudHNBBQtlcVdBbW91bnRzQgFpAQlyZXBsZW5pc2gDBHBvb2wIbGV2ZXJhZ2UIYm9ycm93SWQJAQt2YWx1ZU9yRWxzZQIJARBpc0FjdGl2ZUZvclVzZXJzAAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQRwb29sBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDADAwkBASEBCQERQGV4dHJOYXRpdmUoMTA1MSkCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FuQm9ycm93CQBmAgUIbGV2ZXJhZ2UAZAcJAAIBAh1Zb3UgY2FuJ3QgYm9ycm93IGluIHRoaXMgcG9vbAQNJHQwMzcwNTgzNzE0OAkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzNzA1ODM3MTQ4Al8xBANCSWQIBQ0kdDAzNzA1ODM3MTQ4Al8yBARiYWxBCAUNJHQwMzcwNTgzNzE0OAJfMwQEYmFsQggFDSR0MDM3MDU4MzcxNDgCXzQEB3NoYXJlSWQIBQ0kdDAzNzA1ODM3MTQ4Al81AwMJAQIhPQIFCGJvcnJvd0lkBQNBSWQJAQIhPQIFCGJvcnJvd0lkBQNCSWQHCQACAQISV3JvbmcgYm9ycm93IGFzc2V0BA0kdDAzNzIyOTM3Mjg4CQEScGFyc2VSZXBsZW5pc2hQbXRzAwgFAWkIcGF5bWVudHMFA0FJZAUDQklkBARwbXRBCAUNJHQwMzcyMjkzNzI4OAJfMQQEcG10QggFDSR0MDM3MjI5MzcyODgCXzIEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAluZXdQb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBQR1c2VyAwkAZgIFCGxldmVyYWdlAGQEDGJvcnJvd0Ftb3VudAkBEGNhbGNCb3Jyb3dBbW91bnQGBQRwbXRBBQRwbXRCBQNBSWQFA0JJZAUIbGV2ZXJhZ2UFCGJvcnJvd0lkBAdyZXF1ZXN0CQC5CQIJAMwIAgUEdXNlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQNBSWQJAMwIAgkApAMBBQRwbXRCCQDMCAIFA0JJZAkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgkApAMBBQxib3Jyb3dBbW91bnQFA25pbAIBLAQMbmV3UmVxdWVzdElkCgABQAkA/AcEBQR0aGlzAhBjcmVhdGVOZXdSZXF1ZXN0CQDMCAIFB3JlcXVlc3QFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQxuZXdSZXF1ZXN0SWQFDG5ld1JlcXVlc3RJZAQEYXJncwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQluZXdQb3NOdW0JAMwIAgUHc2hhcmVJZAkAzAgCBQhib3Jyb3dJZAkAzAgCBQxib3Jyb3dBbW91bnQJAMwIAgkApQgBBQR0aGlzCQDMCAICEXJlcGxlbmlzaEZyb21MYW5kCQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52BAp1c2VyU3Rha2VkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQluZXdQb3NOdW0FDWtVc2VyUG9zaXRpb24EDSR0MDM4Mjc3MzgzNzEJAQ9nZXRQb29sQmFsYW5jZXMECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFA0FJZAUDQklkAwkAAAIFDSR0MDM4Mjc3MzgzNzEFDSR0MDM4Mjc3MzgzNzEEB25ld0JhbEIIBQ0kdDAzODI3NzM4MzcxAl8yBAduZXdCYWxBCAUNJHQwMzgyNzczODM3MQJfMQQIcHJJbXBhY3QJAQ9jYWxjUHJpY2VJbXBhY3QEBQRiYWxBBQRiYWxCBQduZXdCYWxBBQduZXdCYWxCBA0kdDAzODQ0MTM4NTU2CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFCnVzZXJTdGFrZWQECHdBbW91bnRBCAUNJHQwMzg0NDEzODU1NgJfMQQId0Ftb3VudEIIBQ0kdDAzODQ0MTM4NTU2Al8yCQCUCgIFA25pbAkAzAgCBQhwckltcGFjdAkAzAgCBQh3QW1vdW50QQkAzAgCBQh3QW1vdW50QgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAzODYwOTM4NzI0CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFC05PX0xPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAMJAAACBQ0kdDAzODYwOTM4NzI0BQ0kdDAzODYwOTM4NzI0BAdheGx5RmVlCAUNJHQwMzg2MDkzODcyNAJfMgQKdXNlclN0YWtlZAgFDSR0MDM4NjA5Mzg3MjQCXzEEDSR0MDM4NzMwMzg4MjQJAQ9nZXRQb29sQmFsYW5jZXMECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFA0FJZAUDQklkAwkAAAIFDSR0MDM4NzMwMzg4MjQFDSR0MDM4NzMwMzg4MjQEB25ld0JhbEIIBQ0kdDAzODczMDM4ODI0Al8yBAduZXdCYWxBCAUNJHQwMzg3MzAzODgyNAJfMQQIcHJJbXBhY3QJAQ9jYWxjUHJpY2VJbXBhY3QEBQRiYWxBBQRiYWxCBQduZXdCYWxBBQduZXdCYWxCBA0kdDAzODg5NDM5MDA5CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFCnVzZXJTdGFrZWQECHdBbW91bnRBCAUNJHQwMzg4OTQzOTAwOQJfMQQId0Ftb3VudEIIBQ0kdDAzODg5NDM5MDA5Al8yCQCUCgIJAM4IAgkBEHJlcGxlbmlzaEVudHJpZXMIBQRwb29sBQR1c2VyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQluZXdQb3NOdW0FB3NoYXJlSWQFBXBUeXBlBwkBDmdldEN1cnNFbnRyaWVzBAUDQUlkBQNCSWQFB3NoYXJlSWQJAMwIAgkApAMBBQh3QW1vdW50QQkAzAgCCQCkAwEFCHdBbW91bnRCBQNuaWwJAMwIAgUIcHJJbXBhY3QJAMwIAgUId0Ftb3VudEEJAMwIAgUId0Ftb3VudEIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwIEcG9vbAVwb3NJZAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBHBvb2wFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50CQEOd2l0aGRyYXdUb1VzZXIECQClCAEIBQFpBmNhbGxlcgUEcG9vbAkApAMBBQVwb3NJZAcBaQEUY3JlYXRlVXBkYXRlU3RvcExvc3MEBXBvc0lkBnBvb2xJZAdhc3NldElkBXByaWNlCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEEHRva2VuT3JhY2xlUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQZwb29sSWQCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBnBvb2xJZAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZwb29sSWQCAV8JAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQACAQIaVGhlcmUgYXJlIG5vIHVzZXIgcG9zaXRpb24DCQBnAgAABQVwcmljZQkAAgECHFByaWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUFcHJpY2UFEHRva2VuT3JhY2xlUHJpY2UJAAIBAitQcmljZSBtdXN0IGJlIGxlc3MgdGhhbiBjdXJyZW50IHRva2VuIHByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFBXByaWNlBQNuaWwBaQEOZGVsZXRlU3RvcExvc3MDBXBvc0lkBnBvb2xJZAdhc3NldElkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUGcG9vbElkAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQZwb29sSWQFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MJAAIBAghObyBlbnRyeQkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFA25pbAFpAQRpbml0DQxtb25leUJveEFkZHINc2ZGYXJtaW5nQWRkcghsZW5kQWRkcg9wcmljZU9yYWNsZUFkZHIQa2VlcGVyRXhDb250cmFjdA53eFN3YXBDb250cmFjdAtzd29wQXNzZXRJZAl3eEFzc2V0SWQOb3BlcmF0b3JQdWJLZXkSZ3JvdXAxQWRtaW4xUHViS2V5Emdyb3VwMUFkbWluMlB1YktleRJncm91cDJBZG1pbjFQdWJLZXkSZ3JvdXAyQWRtaW4yUHViS2V5CQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkDCQEJaXNEZWZpbmVkAQkAoggBBQ9rT3BlcmF0b3JDYWxsUEsJAAIBAg5BbHJlYWR5IGluaXRlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUMbW9uZXlCb3hBZGRyCQACAQIjbW9uZXlCb3hBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFDXNmRmFybWluZ0FkZHIJAAIBAiRzZkZhcm1pbmdBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCGxlbmRBZGRyCQACAQIfbGVuZEFkZHIgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUPcHJpY2VPcmFjbGVBZGRyCQACAQImcHJpY2VPcmFjbGVBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFEGtlZXBlckV4Q29udHJhY3QJAAIBAidrZWVwZXJFeENvbnRyYWN0IGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQDsBwEJANkEAQULc3dvcEFzc2V0SWQJAAIBAiNzd29wQXNzZXRJZCBpcyBub3QgY29ycmVjdCBhc3NldCBpZAMJAQEhAQkBCWlzRGVmaW5lZAEJAOwHAQkA2QQBBQl3eEFzc2V0SWQJAAIBAiNzd29wQXNzZXRJZCBpcyBub3QgY29ycmVjdCBhc3NldCBpZAMJAQIhPQIJAMgBAQkA2QQBBQ5vcGVyYXRvclB1YktleQAgCQACAQIdb3BlcmF0b3JQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAxQWRtaW4xUHViS2V5ACAJAAIBAiFncm91cDFBZG1pbjFQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAxQWRtaW4yUHViS2V5ACAJAAIBAiFncm91cDFBZG1pbjJQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAyQWRtaW4xUHViS2V5ACAJAAIBAiFncm91cDJBZG1pbjFQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAyQWRtaW4yUHViS2V5ACAJAAIBAiFncm91cDJBZG1pbjJQdWJLZXkgaXMgbm90IGNvcnJlY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa01vbmV5Qm94BQxtb25leUJveEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUOa1NGRmFybWluZ0FkZHIFDXNmRmFybWluZ0FkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa0xlbmRTZXJ2aWNlBQhsZW5kQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQxrUHJpY2VPcmFjbGUFD3ByaWNlT3JhY2xlQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQtrRXhDb250cmFjdAUQa2VlcGVyRXhDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rV3hTd2FwQ29udHJhY3QFDnd4U3dhcENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFB2tTd29wSWQFC3N3b3BBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtXeElkBQl3eEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa09wZXJhdG9yQ2FsbFBLBQ5vcGVyYXRvclB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4xUEsFEmdyb3VwMUFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4yUEsFEmdyb3VwMUFkbWluMlB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4xUEsFEmdyb3VwMkFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4yUEsFEmdyb3VwMkFkbWluMlB1YktleQUDbmlsAWkBEGNyZWF0ZU5ld1JlcXVlc3QBBnBhcmFtcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAxuZXdSZXF1ZXN0SWQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtSZXF1ZXN0SXRlcgAAAAEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQUMbmV3UmVxdWVzdElkBQprUmVxdWVzdElkBQZwYXJhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtSZXF1ZXN0SXRlcgUMbmV3UmVxdWVzdElkBQNuaWwFDG5ld1JlcXVlc3RJZAFpARFyZXBsZW5pc2hGcm9tTGFuZAEJcmVxdWVzdElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEDSR0MDQzODQ4NDM5NTIJAQxwYXJzZVJlcXVlc3QBBQlyZXF1ZXN0SWQEBHVzZXIIBQ0kdDA0Mzg0ODQzOTUyAl8xBARwb29sCAUNJHQwNDM4NDg0Mzk1MgJfMgQEcG10QQgFDSR0MDQzODQ4NDM5NTICXzMEA0FJZAgFDSR0MDQzODQ4NDM5NTICXzQEBHBtdEIIBQ0kdDA0Mzg0ODQzOTUyAl81BANCSWQIBQ0kdDA0Mzg0ODQzOTUyAl82BARiYWxBCAUNJHQwNDM4NDg0Mzk1MgJfNwQEYmFsQggFDSR0MDQzODQ4NDM5NTICXzgEB3NoYXJlSWQIBQ0kdDA0Mzg0ODQzOTUyAl85BAdid0Fzc2V0CAUNJHQwNDM4NDg0Mzk1MgNfMTAECGJ3QW1vdW50CAUNJHQwNDM4NDg0Mzk1MgNfMTEDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhJXcm9uZyBwYXltZW50IHNpemUDAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUHYndBc3NldAYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQhid0Ftb3VudAkAAgECDVdyb25nIHBheW1lbnQEDSR0MDQ0MTQyNDQyNDIDCQAAAgUDQUlkBQdid0Fzc2V0CQCUCgIJAGQCBQRwbXRBBQhid0Ftb3VudAUEcG10QgkAlAoCBQRwbXRBCQBkAgUEcG10QgUIYndBbW91bnQEB3BtdEFsbEEIBQ0kdDA0NDE0MjQ0MjQyAl8xBAdwbXRBbGxCCAUNJHQwNDQxNDI0NDI0MgJfMgQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAgxVbmtub3duIHBvb2wEDSR0MDQ0MzI0NDQ0MzkJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUITE9BTl9GRUUFB3BtdEFsbEEFA0FJZAUHcG10QWxsQgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwNDQzMjQ0NDQzOQJfMQQHYXhseUZlZQgFDSR0MDQ0MzI0NDQ0MzkCXzIEBnBvc051bQkBGGdldE5ld1VzZXJQb3NpdGlvbk51bWJlcgEFBHVzZXIEDWJvcnJvd0VudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQFCGJ3QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUSa1VzZXJCb3Jyb3dBc3NldElkBQdid0Fzc2V0BQNuaWwEB2VudHJpZXMJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUGcG9zTnVtBQdzaGFyZUlkBQVwVHlwZQYEDSR0MDQ0Nzk5NDQ5MTQJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDA0NDc5OTQ0OTE0Al8xBAh3QW1vdW50QggFDSR0MDQ0Nzk5NDQ5MTQCXzIJAJQKAgkAzQgCCQDOCAIJAM4IAgUHZW50cmllcwkBDmdldEN1cnNFbnRyaWVzBAUDQUlkBQNCSWQFB3NoYXJlSWQJAMwIAgkApAMBBQh3QW1vdW50QQkAzAgCCQCkAwEFCHdBbW91bnRCBQNuaWwFDWJvcnJvd0VudHJpZXMJAQtEZWxldGVFbnRyeQEJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkBQp1c2VyU3Rha2VkAWkBCWxpcXVpZGF0ZQMEdXNlcgVwb3NJZA9saXF1aWRhdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc0xhbmRDYWxsAQUBaQQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkBRFrVXNlclBvc2l0aW9uUG9vbAILbm8gcG9zaXRpb24EBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDA0NTQzNTQ1NTI1CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDQ1NDM1NDU1MjUCXzEEA0JJZAgFDSR0MDQ1NDM1NDU1MjUCXzIEBGJhbEEIBQ0kdDA0NTQzNTQ1NTI1Al8zBARiYWxCCAUNJHQwNDU0MzU0NTUyNQJfNAQHc2hhcmVJZAgFDSR0MDQ1NDM1NDU1MjUCXzUEBmFtb3VudAkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQ9saXF1aWRhdGVBbW91bnQEDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQVwb3NJZAkAZgIFDGJvcnJvd0Ftb3VudAAAAwkAZgIFD2xpcXVpZGF0ZUFtb3VudAUPdXNlckNhbldpdGhkcmF3CQACAQInWW91IGNhbid0IGxpcXVpZGF0ZSBtb3JlIHRoYW4gdXNlciBoYXZlAwkAAAIFDGJvcnJvd0Ftb3VudAAACQACAQIrWW91IGNhbid0IGxpcXVpZGF0ZSBwb3NpdGlvbiB3aXRob3V0IGJvcnJvdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAUPbGlxdWlkYXRlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAGUCBQ91c2VyQ2FuV2l0aGRyYXcFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBaQEIc3RvcExvc3MEBHVzZXIFcG9zSWQEcG9vbAdhc3NldElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBBB0b2tlbk9yYWNsZVByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUEDXN0b3BMb3NzUHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQCAV8FBHBvb2wCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MCCE5vIGVudHJ5AwkAZgIFEHRva2VuT3JhY2xlUHJpY2UFDXN0b3BMb3NzUHJpY2UJAAIBAiNUb2tlbiBwcmljZSBncmVhdGVyIHN0b3AgbG9zcyBwcmljZQQDcmVzCQEOd2l0aGRyYXdUb1VzZXIEBQR1c2VyBQRwb29sCQCkAwEFBXBvc0lkBgkAlAoCCQDNCAIIBQNyZXMCXzEJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwgFA3JlcwJfMgFpARJjYXBpdGFsaXplRXhLZWVwZXILBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAEDSR0MDQ3Njc0NDc3NzMJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQUQYW1vdW50VG9FeGNoYW5nZQUGY2hhbmdlBA1jbGFpbWVkQW1vdW50CAUNJHQwNDc2NzQ0Nzc3MwJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwNDc2NzQ0Nzc3MwJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VLZWVwZXIKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJYW1vdW50c0luBQlhZGRyZXNzZXMFD2Fzc2V0c1RvUmVjZWl2ZQULZXN0UmVjZWl2ZWQFEXNsaXBwYWdlVG9sZXJhbmNlBQttaW5SZWNlaXZlZAUHb3B0aW9ucwQJbmV3Q2hhbmdlCQBlAgkAZAIFDWNsYWltZWRBbW91bnQFBmNoYW5nZQUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBnAgUJbmV3Q2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UFCW5ld0NoYW5nZQUDbmlsCQACAQIPTmVnYXRpdmUgY2hhbmdlCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhQdXp6bGUHBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0Jcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAQNJHQwNDg1NzM0ODY3MgkBEWNsYWltQW5kQ2hlY2tBbW50BQUEcG9vbAUFcFR5cGUFBWNsYWltBRBhbW91bnRUb0V4Y2hhbmdlBQZjaGFuZ2UEDWNsYWltZWRBbW91bnQIBQ0kdDA0ODU3MzQ4NjcyAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0ODU3MzQ4NjcyAl8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVB1enpsZQYFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQUHb3B0aW9ucwQJbmV3Q2hhbmdlCQBlAgkAZAIFDWNsYWltZWRBbW91bnQFBmNoYW5nZQUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBnAgUJbmV3Q2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UFCW5ld0NoYW5nZQUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQVwVHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFN3b3BGaQsEcG9vbAl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQpleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAQNJHQwNDk1MTc0OTYxNgkBEWNsYWltQW5kQ2hlY2tBbW50BQUEcG9vbAUFcFR5cGUFBWNsYWltBRBhbW91bnRUb0V4Y2hhbmdlBQZjaGFuZ2UEDWNsYWltZWRBbW91bnQIBQ0kdDA0OTUxNzQ5NjE2Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0OTUxNzQ5NjE2Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVN3b3BGaQoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQpleGNoYW5nZXJzBQ5leGNoYW5nZXJzVHlwZQUFYXJnczEFBWFyZ3MyBRFyb3V0aW5nQXNzZXRzS2V5cwUSbWluQW1vdW50VG9SZWNlaXZlBQdvcHRpb25zBAluZXdDaGFuZ2UJAGUCCQBkAgUNY2xhaW1lZEFtb3VudAUGY2hhbmdlBRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGcCBQluZXdDaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQUJbmV3Q2hhbmdlBQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBXBUeXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQEOY2FwaXRhbGl6ZU5vRXgDBHBvb2wFY2xhaW0RYW1vdW50RnJvbUJhbGFuY2UJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc09wZXJhdG9yQ2FsbAEFAWkEBXBUeXBlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sBA0kdDA1MDIxMzUwMzA4CQERY2xhaW1BbmRDaGVja0FtbnQFBQRwb29sBQVwVHlwZQUFY2xhaW0FEWFtb3VudEZyb21CYWxhbmNlAAAEDWNsYWltZWRBbW91bnQIBQ0kdDA1MDIxMzUwMzA4Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA1MDIxMzUwMzA4Al8yCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBXBUeXBlCQEMYXNzZXRJZFRvU3RyAQUMY2xhaW1lZEFzc2V0CQBkAgUNY2xhaW1lZEFtb3VudAURYW1vdW50RnJvbUJhbGFuY2UBaQELaW5pdE5ld1Bvb2wJBHR5cGUIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuDGNhcEZlZU5vTG9hbg5jYXBGZWVXaXRoTG9hbhFzdG9wbG9zc0ZlZU5vTG9hbhNzdG9wbG9zc0ZlZVdpdGhMb2FuCWNhbkJvcnJvdwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMDCQECIT0CBQR0eXBlBQdTRl9QT09MCQECIT0CBQR0eXBlBQdXWF9QT09MBwkAAgECCldyb25nIHR5cGUEDSR0MDUwNzM0NTA4MjgJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQhwb29sQWRkcgUEdHlwZQQDYUlkCAUNJHQwNTA3MzQ1MDgyOAJfMQQDYklkCAUNJHQwNTA3MzQ1MDgyOAJfMgQEYUJhbAgFDSR0MDUwNzM0NTA4MjgCXzMEBGJCYWwIBQ0kdDA1MDczNDUwODI4Al80BAdzaGFyZUlkCAUNJHQwNTA3MzQ1MDgyOAJfNQMJAGYCAAAFC2luRmVlTm9Mb2FuCQACAQIiaW5GZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCWluRmVlTG9hbgkAAgECIGluRmVlTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUMY2FwRmVlTm9Mb2FuCQACAQIjY2FwRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQ5jYXBGZWVXaXRoTG9hbgkAAgECJWNhcEZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABRFzdG9wbG9zc0ZlZU5vTG9hbgkAAgECKHN0b3Bsb3NzRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABRNzdG9wbG9zc0ZlZVdpdGhMb2FuCQACAQIqc3RvcGxvc3NGZWVXaXRoTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRVrQXhseUluRmVlV2l0aG91dExvYW4FC2luRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRJrQXhseUluRmVlV2l0aExvYW4FCWluRmVlTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa0F4bHlOb0xvYW5DYXBGZWUFDGNhcEZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa0F4bHlXaXRoTG9hbkNhcEZlZQUOY2FwRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUFEXN0b3Bsb3NzRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRRrQXhseVN0b3BMb3NzTG9hbkZlZQUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa1Bvb2xJbnRlcmVzdExvYW4AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAUIcG9vbEFkZHIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUIcG9vbEFkZHIFDmtQb29sQ2FuQm9ycm93BQljYW5Cb3Jyb3cFA25pbAFpAQ51cGRhdGVQb29sRmVlcwcIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuDGNhcEZlZU5vTG9hbg5jYXBGZWVXaXRoTG9hbhFzdG9wbG9zc0ZlZU5vTG9hbhNzdG9wbG9zc0ZlZVdpdGhMb2FuCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQhwb29sQWRkcgkAAgEJAKwCAgIaQ2FuJ3QgZmluZCBwb29sIHdpdGggYWRkciAFCHBvb2xBZGRyAwkAZgIAAAULaW5GZWVOb0xvYW4JAAIBAiJpbkZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUJaW5GZWVMb2FuCQACAQIgaW5GZWVMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQxjYXBGZWVOb0xvYW4JAAIBAiNjYXBGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDmNhcEZlZVdpdGhMb2FuCQACAQIlY2FwRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFEXN0b3Bsb3NzRmVlTm9Mb2FuCQACAQIoc3RvcGxvc3NGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAAIBAipzdG9wbG9zc0ZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuBQNuaWwBaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgkAAgECE2RBcHAgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQACAQIVZEFwcCBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwUDbmlsAWkBEGFjdGl2YXRlRm9yVXNlcnMACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIdZEFwcCBhbHJlYWR5IGFjdGl2ZSBmb3IgdXNlcnMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGtBY3RpdmVVc2VycwYFA25pbAFpARBzaHV0ZG93bkZvclVzZXJzAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIfZEFwcCBhbHJlYWR5IHNodXRkb3duIGZvciB1c2VycwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa0FjdGl2ZVVzZXJzBwUDbmlsAWkBCmFjdGl2YXRlU0YACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECFVNXT1BGSSBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAYFA25pbAFpAQpzaHV0ZG93blNGAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECF1NXT1BGSSBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBwUDbmlsAWkBCmFjdGl2YXRlV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECEVdYIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgUDbmlsAWkBCnNodXRkb3duV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQITV1ggYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAcFA25pbAFpAQxhY3RpdmF0ZVBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUGCQACAQITUG9vbCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYFA25pbAFpAQxzaHV0ZG93blBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYJAAIBAhVQb29sIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUHBQNuaWwAu303DA==", "height": 2703331, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4opCmweNFJvfGjV1kBC5K5Kgyr2up5W19rX3J8B4rERv Next: CUiARNrn5WceECGMy34NycbZ3AfeBxHLYWXWzM8bYR5u Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "capNoLoan"
99
1010 let d = "capLoan"
1111
1212 let e = "stopLossNoLoan"
1313
1414 let f = "stopLossLoan"
1515
1616 let g = "loan"
1717
1818 let h = "noLoan"
1919
2020 let i = "noFee"
2121
2222 let j = 100000000
2323
2424 let k = 10000000000
2525
2626 let l = toBigInt(10000000000000000)
2727
2828 let m = 1000000
2929
3030 let n = "A_asset_balance"
3131
3232 let o = "B_asset_balance"
3333
3434 let p = "A_asset_id"
3535
3636 let q = "B_asset_id"
3737
3838 let r = "share_asset_id"
3939
4040 let s = "share_asset_supply"
4141
4242 let t = "commission"
4343
4444 let u = "_userPosition"
4545
4646 let v = "_userPositionPool"
4747
4848 let w = "_userPositionBorrowAmount"
4949
5050 let x = "_userPositionBorrowAssetId"
5151
5252 let y = "_userPositionNumber"
5353
5454 let z = "_userPositionInterest"
5555
5656 let A = "_poolTotal"
5757
5858 let B = "_poolTotalLoan"
5959
6060 let C = "_poolInterestLoan"
6161
6262 let D = "_poolInterestNoLoan"
6363
6464 let E = "_poolCanBorrow"
6565
6666 let F = "_axlyFeeNoLoan"
6767
6868 let G = "_axlyFeeWithLoan"
6969
7070 let H = "_axlyFeeCapNoLoan"
7171
7272 let I = "_axlyFeeCapWithLoan"
7373
7474 let J = "_axlyFeeStoplossWithLoan"
7575
7676 let K = "_axlyFeeStoplossNoLoan"
7777
7878 let L = "_request_id"
7979
8080 let M = "requests_iter"
8181
8282 let N = "pool_"
8383
8484 let O = "_poolShareId"
8585
8686 let P = "_poolCapChange"
8787
8888 let Q = "last_price"
8989
9090 let R = "_twap5B"
9191
9292 let S = "active"
9393
9494 let T = "activeUsers"
9595
9696 let U = "_active"
9797
9898 let V = "_activePool"
9999
100100 let W = "_stopLoss"
101101
102102 let X = "axly_money_box"
103103
104104 let Y = "swopfi_farming_addr"
105105
106106 let Z = "lend_service_addr"
107107
108108 let aa = "admin_call_pub_key"
109109
110110 let ab = "price_oracle"
111111
112112 let ac = "exchange_contract"
113113
114114 let ad = "wx_swap_contract"
115115
116116 let ae = "swop_id"
117117
118118 let af = "wx_id"
119119
120120 let ag = "group1_admin1_pub_key"
121121
122122 let ah = "group1_admin2_pub_key"
123123
124124 let ai = "group2_admin1_pub_key"
125125
126126 let aj = "group2_admin2_pub_key"
127127
128128 let ak = Address(fromBase58String(valueOrErrorMessage(getString(this, X), "No axly moneyBox address")))
129129
130130 let al = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "No exchange contract address")))
131131
132132 let am = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "No price oracle address")))
133133
134134 let an = Address(fromBase58String(valueOrErrorMessage(getString(this, ad), "No wx swap address")))
135135
136136 let ao = fromBase58String(valueOrErrorMessage(getString(this, ae), "No swop id"))
137137
138138 let ap = fromBase58String(valueOrErrorMessage(getString(this, af), "No wx id"))
139139
140140 let aq = fromBase58String(valueOrErrorMessage(getString(this, ag), "Can't get kGroup1Admin1PK"))
141141
142142 let ar = fromBase58String(valueOrErrorMessage(getString(this, ah), "Can't get kGroup1Admin2PK"))
143143
144144 let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "Can't get kGroup2Admin1PK"))
145145
146146 let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "Can't get kGroup2Admin1PK"))
147147
148148 let au = fromBase58String(valueOrErrorMessage(getString(this, aa), "Can't get operatorPK"))
149149
150150 func av () = throw("Wrong pool type")
151151
152152
153153 func aw () = Address(fromBase58String(valueOrErrorMessage(getString(this, Z), "Can't get lend service addr")))
154154
155155
156156 func ax (ay) = if ((ay.callerPublicKey == ay.callerPublicKey))
157157 then unit
158158 else throw("Only operator can call this function")
159159
160160
161161 func az (ay) = if (if ((ay.callerPublicKey == ay.callerPublicKey))
162162 then true
163163 else (ay.callerPublicKey == ay.callerPublicKey))
164164 then unit
165165 else throw("Only admin group1 can call this function")
166166
167167
168168 func aA (ay) = if ((ay.caller == this))
169169 then unit
170170 else throw("Only contract itself can call this function")
171171
172172
173173 func aB (ay) = if ((ay.caller == aw()))
174174 then unit
175175 else throw("Only land contract can call this function")
176176
177177
178178 func aC () = if ((valueOrElse(getBoolean(this, S), true) == true))
179179 then unit
180180 else throw("DApp is inactive at this moment")
181181
182182
183183 func aD () = if (if (valueOrElse(getBoolean(this, S), true))
184184 then (valueOrElse(getBoolean(this, T), true) == true)
185185 else false)
186186 then unit
187187 else throw("DApp is inactive for users at this moment")
188188
189189
190190 func aE (aF,aG) = {
191191 let aH = valueOrElse(getBoolean(this, (aG + U)), true)
192192 let aI = valueOrElse(getBoolean(this, (aF + V)), true)
193193 if (if (aH)
194194 then aI
195195 else false)
196196 then true
197197 else false
198198 }
199199
200200
201201 func aJ (aK) = {
202202 let aL = aK
203203 if ($isInstanceOf(aL, "ByteVector"))
204204 then {
205205 let aM = aL
206206 assetBalance(this, aM)
207207 }
208208 else if ($isInstanceOf(aL, "Unit"))
209209 then {
210210 let aN = aL
211211 wavesBalance(this).available
212212 }
213213 else throw("Match error")
214214 }
215215
216216
217217 func aO (aP) = $Tuple2(valueOrErrorMessage(getInteger(aP, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aP, o), "Can't get pool B asset balance"))
218218
219219
220220 func aQ (aP,aR,aS) = $Tuple2({
221221 let aT = invoke(aP, "getAccBalanceWrapperREADONLY", [aR], nil)
222222 if ($isInstanceOf(aT, "Int"))
223223 then aT
224224 else throw(($getType(aT) + " couldn't be cast to Int"))
225225 }, {
226226 let aT = invoke(aP, "getAccBalanceWrapperREADONLY", [aS], nil)
227227 if ($isInstanceOf(aT, "Int"))
228228 then aT
229229 else throw(($getType(aT) + " couldn't be cast to Int"))
230230 })
231231
232232
233233 func aU (aP,aG,aR,aS) = if ((aG == a))
234234 then aO(aP)
235235 else if ((aG == b))
236236 then aQ(aP, aR, aS)
237237 else av()
238238
239239
240240 func aV (aP) = {
241241 let aW = aO(aP)
242242 if ((aW == aW))
243243 then {
244244 let aX = aW._2
245245 let aY = aW._1
246246 $Tuple5(valueOrErrorMessage(getString(aP, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(aP, q), "Can't get pool B asset id"), aY, aX, valueOrErrorMessage(getString(aP, r), "Can't get share asset id"))
247247 }
248248 else throw("Strict value is not equal to itself.")
249249 }
250250
251251
252252 func aZ (aP) = {
253253 let ba = {
254254 let aT = invoke(aP, "getPoolConfigWrapperREADONLY", nil, nil)
255255 if ($isInstanceOf(aT, "List[Any]"))
256256 then aT
257257 else throw(($getType(aT) + " couldn't be cast to List[Any]"))
258258 }
259259 if ((ba == ba))
260260 then {
261261 let aR = valueOrErrorMessage({
262262 let aT = ba[4]
263263 if ($isInstanceOf(aT, "String"))
264264 then aT
265265 else unit
266266 }, "Can't get pool A asset id")
267267 let aS = valueOrErrorMessage({
268268 let aT = ba[5]
269269 if ($isInstanceOf(aT, "String"))
270270 then aT
271271 else unit
272272 }, "Can't get pool B asset id")
273273 let bb = valueOrErrorMessage({
274274 let aT = ba[3]
275275 if ($isInstanceOf(aT, "String"))
276276 then aT
277277 else unit
278278 }, "Can't get pool LP asset id")
279279 let bc = aQ(aP, aR, aS)
280280 if ((bc == bc))
281281 then {
282282 let aX = bc._2
283283 let aY = bc._1
284284 $Tuple5(aR, aS, aY, aX, bb)
285285 }
286286 else throw("Strict value is not equal to itself.")
287287 }
288288 else throw("Strict value is not equal to itself.")
289289 }
290290
291291
292292 func bd (aP,aG) = if ((aG == a))
293293 then aV(aP)
294294 else if ((aG == b))
295295 then aZ(aP)
296296 else av()
297297
298298
299299 func be (aP,aG,bb) = if ((aG == a))
300300 then valueOrErrorMessage(getInteger(aP, s), "Can't get share asset supply")
301301 else if ((aG == b))
302302 then valueOrErrorMessage(assetInfo(fromBase58String(bb)), "Wrong ShareId").quantity
303303 else av()
304304
305305
306306 func bf (aF) = valueOrElse(getInteger(this, (aF + A)), 0)
307307
308308
309309 func bg (aF) = valueOrElse(getInteger(this, (aF + B)), 0)
310310
311311
312312 func bh (bi) = (valueOrElse(getInteger(this, (bi + y)), 0) + 1)
313313
314314
315315 func bj (aF,bk) = if ((bk == d))
316316 then getIntegerValue(this, (aF + I))
317317 else if ((bk == c))
318318 then getIntegerValue(this, (aF + H))
319319 else if ((bk == g))
320320 then getIntegerValue(this, (aF + G))
321321 else if ((bk == h))
322322 then getIntegerValue(this, (aF + F))
323323 else if ((bk == i))
324324 then 0
325325 else throw("Wrong fee type")
326326
327327
328328 func bl () = Address(fromBase58String(valueOrErrorMessage(getString(this, Y), "Can't get swopfi farming addr")))
329329
330330
331331 func bm (aP) = {
332332 let bn = Address(fromBase58String(valueOrErrorMessage(getString(aP, "%s__factoryContract"), "Can't get WX factory contract addr")))
333333 let bo = split(valueOrErrorMessage(getString(bn, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
334334 Address(fromBase58String(bo[1]))
335335 }
336336
337337
338338 func bp (aK) = {
339339 let aL = aK
340340 if ($isInstanceOf(aL, "ByteVector"))
341341 then {
342342 let aM = aL
343343 toBase58String(aM)
344344 }
345345 else if ($isInstanceOf(aL, "Unit"))
346346 then {
347347 let aN = aL
348348 "WAVES"
349349 }
350350 else throw("Not Asset id")
351351 }
352352
353353
354354 func bq (aK) = if ((aK == "WAVES"))
355355 then unit
356356 else fromBase58String(aK)
357357
358358
359359 func br (aK) = if ((aK == "WAVES"))
360360 then 8
361361 else {
362362 let aL = assetInfo(fromBase58String(aK))
363363 if ($isInstanceOf(aL, "Asset"))
364364 then {
365365 let bs = aL
366366 bs.decimals
367367 }
368368 else throw("Can't find asset")
369369 }
370370
371371
372372 func bt (aK) = pow(10, 0, br(aK), 0, 0, DOWN)
373373
374374
375375 func bu (bv) = {
376376 func bw (bx,aK) = {
377377 let by = valueOrElse(getInteger(am, (aK + R)), -1)
378378 (bx :+ by)
379379 }
380380
381381 let bz = bv
382382 let bA = size(bz)
383383 let bB = nil
384384 func bC (bD,bE) = if ((bE >= bA))
385385 then bD
386386 else bw(bD, bz[bE])
387387
388388 func bF (bD,bE) = if ((bE >= bA))
389389 then bD
390390 else throw("List size exceeds 50")
391391
392392 bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
393393 }
394394
395395
396396 func bG (bb) = {
397397 let aF = valueOrErrorMessage(getString(this, (bb + O)), "Can't find pool addr by share id")
398398 let aP = Address(fromBase58String(aF))
399399 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
400400 let bI = bd(aP, bH)
401401 let aR = bI._1
402402 let aS = bI._2
403403 let bJ = bI._3
404404 let bK = bI._4
405405 let bL = bu([aR, aS])
406406 let bM = bL[0]
407407 let bN = bL[1]
408408 if (if ((0 > bM))
409409 then true
410410 else (0 > bN))
411411 then -1
412412 else {
413413 let bO = be(aP, bH, bb)
414414 let bP = pow(10, 0, br(aR), 0, 0, DOWN)
415415 let bQ = pow(10, 0, br(aS), 0, 0, DOWN)
416416 let bR = pow(10, 0, br(bb), 0, 0, DOWN)
417417 let bS = (fraction(bJ, bM, bP) + fraction(bK, bN, bQ))
418418 fraction(bS, bR, bO)
419419 }
420420 }
421421
422422
423423 func bT (bU) = {
424424 func bw (bx,bb) = (bx :+ bG(bb))
425425
426426 let bz = bU
427427 let bA = size(bz)
428428 let bB = nil
429429 func bC (bD,bE) = if ((bE >= bA))
430430 then bD
431431 else bw(bD, bz[bE])
432432
433433 func bF (bD,bE) = if ((bE >= bA))
434434 then bD
435435 else throw("List size exceeds 20")
436436
437437 bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
438438 }
439439
440440
441441 func bV (aR,aS,bb,bW) = {
442442 let bX = bu([aR, aS])
443443 let bY = bG(bb)
444444 let bL = ([toString(bX[0]), toString(bX[1]), toString(bY)] ++ bW)
445445 [StringEntry(Q, makeString(bL, ","))]
446446 }
447447
448448
449449 func bZ (bH,aP,ca,aR,cb,aS,aY,aX) = if ((bH == a))
450450 then {
451451 let cc = {
452452 let aT = invoke(aP, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(ca), toString(cb)]], nil)
453453 if ($isInstanceOf(aT, "List[Any]"))
454454 then aT
455455 else throw(($getType(aT) + " couldn't be cast to List[Any]"))
456456 }
457457 if ((cc == cc))
458458 then $Tuple5({
459459 let aT = cc[3]
460460 if ($isInstanceOf(aT, "Int"))
461461 then aT
462462 else throw(($getType(aT) + " couldn't be cast to Int"))
463463 }, {
464464 let aT = cc[4]
465465 if ($isInstanceOf(aT, "Int"))
466466 then aT
467467 else throw(($getType(aT) + " couldn't be cast to Int"))
468468 }, {
469469 let aT = cc[1]
470470 if ($isInstanceOf(aT, "Int"))
471471 then aT
472472 else throw(($getType(aT) + " couldn't be cast to Int"))
473473 }, bp(cc[2]), {
474474 let aT = cc[0]
475475 if ($isInstanceOf(aT, "Int"))
476476 then aT
477477 else throw(($getType(aT) + " couldn't be cast to Int"))
478478 })
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 else if ((bH == b))
482482 then {
483483 let cd = $Tuple2(split({
484484 let aT = invoke(aP, "evaluatePutByAmountAssetREADONLY", [ca], nil)
485485 if ($isInstanceOf(aT, "String"))
486486 then aT
487487 else throw(($getType(aT) + " couldn't be cast to String"))
488488 }, "__"), split({
489489 let aT = invoke(aP, "evaluatePutByPriceAssetREADONLY", [cb], nil)
490490 if ($isInstanceOf(aT, "String"))
491491 then aT
492492 else throw(($getType(aT) + " couldn't be cast to String"))
493493 }, "__"))
494494 if ((cd == cd))
495495 then {
496496 let ce = cd._2
497497 let cf = cd._1
498498 let cg = parseIntValue(cf[1])
499499 let ch = parseIntValue(ce[1])
500500 if ((ch > cg))
501501 then {
502502 let ci = parseIntValue(cf[8])
503503 $Tuple5(ca, ci, (cb - ci), aS, ch)
504504 }
505505 else {
506506 let ci = parseIntValue(ce[7])
507507 $Tuple5(ci, cb, (ca - ci), aR, cg)
508508 }
509509 }
510510 else throw("Strict value is not equal to itself.")
511511 }
512512 else av()
513513
514514
515515 func cj (aP,bH,ca,aR,cb,aS) = {
516516 let ck = [AttachedPayment(bq(aR), ca), AttachedPayment(bq(aS), cb)]
517517 if ((bH == a))
518518 then invoke(aP, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], ck)
519519 else if ((bH == b))
520520 then invoke(aP, "put", [1000000, false], ck)
521521 else av()
522522 }
523523
524524
525525 func cl (aP,bH,ci,cm) = {
526526 let ck = [AttachedPayment(bq(cm), ci)]
527527 if ((bH == a))
528528 then invoke(aP, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], ck)
529529 else if ((bH == b))
530530 then invoke(aP, "putOneTkn", [0, false], ck)
531531 else av()
532532 }
533533
534534
535535 func cn (aF,bH,bb,co) = {
536536 let ck = [AttachedPayment(fromBase58String(bb), co)]
537537 if ((bH == a))
538538 then invoke(bl(), "lockShareTokens", [aF, 0], ck)
539539 else if ((bH == b))
540540 then invoke(bm(addressFromStringValue(aF)), "stake", nil, ck)
541541 else av()
542542 }
543543
544544
545545 func cp (aF,bH,bb,co) = {
546546 let cq = if ((bH == a))
547547 then $Tuple3(bl(), "withdrawShareTokens", [aF, co])
548548 else if ((bH == b))
549549 then $Tuple3(bm(Address(fromBase58String(aF))), "unstake", [bb, co])
550550 else av()
551551 let cr = cq._1
552552 let cs = cq._2
553553 let ct = cq._3
554554 let cu = invoke(cr, cs, ct, nil)
555555 if ((cu == cu))
556556 then co
557557 else throw("Strict value is not equal to itself.")
558558 }
559559
560560
561561 func cv (aF,cw,cx,aY,aX,cy,cz) = {
562562 let aP = Address(fromBase58String(aF))
563563 let cA = 1000000
564564 let cB = getIntegerValue(aP, t)
565565 let cC = fraction(cy, cA, (cA - cB), CEILING)
566566 let cD = if ((cz == cw))
567567 then {
568568 let cE = fraction(cC, aX, (aY - cC), CEILING)
569569 $Tuple2(cE, cx)
570570 }
571571 else {
572572 let cE = fraction(cC, aY, (aX - cC), CEILING)
573573 $Tuple2(cE, cw)
574574 }
575575 let cE = cD._1
576576 let cF = cD._2
577577 $Tuple2(cF, cE)
578578 }
579579
580580
581581 func cG (aF) = {
582582 let aP = addressFromStringValue(aF)
583583 let bn = addressFromStringValue(valueOrErrorMessage(getString(aP, "%s__factoryContract"), "Can't get WX factory contract addr"))
584584 let cH = value(getInteger(an, "%s__poolFee"))
585585 let cI = value(getInteger(an, "%s__protocolFee"))
586586 let aL = invoke(bn, "getSwapFeeREADONLY", [toString(aP)], nil)
587587 if ($isInstanceOf(aL, "(Int, Int)"))
588588 then {
589589 let cJ = aL
590590 $Tuple2(cJ._1, cJ._2)
591591 }
592592 else $Tuple2(cH, cI)
593593 }
594594
595595
596596 func cK (aF,cw,cx,aY,aX,cy,cz) = {
597597 let cL = cG(aF)
598598 let cM = cL._1
599599 let cN = cL._2
600600 let cO = toBigInt(100000000)
601601 let cP = if ((cz == cw))
602602 then {
603603 let cE = fraction(cy, aX, (aY - cy))
604604 $Tuple2(cE, cx)
605605 }
606606 else {
607607 let cE = fraction(cy, aY, (aX - cy))
608608 $Tuple2(cE, cw)
609609 }
610610 let cE = cP._1
611611 let cF = cP._2
612612 let cQ = toInt(fraction(toBigInt(cE), cO, (cO - toBigInt((cN + cM))), CEILING))
613613 $Tuple2(cF, cQ)
614614 }
615615
616616
617617 func cR (bH,aF,cw,cx,aY,aX,cy,cz) = if ((bH == a))
618618 then {
619619 let cS = cv(aF, cw, cx, aY, aX, cy, cz)
620620 let cF = cS._1
621621 let cE = cS._2
622622 invoke(addressFromStringValue(aF), "callFunction", ["exchange", [toString(cy)]], [AttachedPayment(bq(cF), cE)])
623623 }
624624 else if ((bH == b))
625625 then {
626626 let cT = cK(aF, cw, cx, aY, aX, cy, cz)
627627 let cF = cT._1
628628 let cE = cT._2
629629 invoke(an, "swap", [cy, cz, toString(this)], [AttachedPayment(bq(cF), cE)])
630630 }
631631 else av()
632632
633633
634634 func cU (aP,bH,bb,cV) = {
635635 let cW = if ((bH == a))
636636 then {
637637 let cu = {
638638 let aT = invoke(aP, "callFunction", ["withdrawREADONLY", [toString(cV)]], nil)
639639 if ($isInstanceOf(aT, "List[Any]"))
640640 then aT
641641 else throw(($getType(aT) + " couldn't be cast to List[Any]"))
642642 }
643643 if ((cu == cu))
644644 then $Tuple2({
645645 let aT = cu[0]
646646 if ($isInstanceOf(aT, "Int"))
647647 then aT
648648 else throw(($getType(aT) + " couldn't be cast to Int"))
649649 }, {
650650 let aT = cu[1]
651651 if ($isInstanceOf(aT, "Int"))
652652 then aT
653653 else throw(($getType(aT) + " couldn't be cast to Int"))
654654 })
655655 else throw("Strict value is not equal to itself.")
656656 }
657657 else if ((bH == b))
658658 then {
659659 let cu = split({
660660 let aT = invoke(aP, "evaluateGetREADONLY", [bb, cV], nil)
661661 if ($isInstanceOf(aT, "String"))
662662 then aT
663663 else throw(($getType(aT) + " couldn't be cast to String"))
664664 }, "__")
665665 if ((cu == cu))
666666 then $Tuple2(parseIntValue(cu[1]), parseIntValue(cu[2]))
667667 else throw("Strict value is not equal to itself.")
668668 }
669669 else av()
670670 let cX = cW._1
671671 let cY = cW._2
672672 $Tuple2(cX, cY)
673673 }
674674
675675
676676 func cZ (bH,aF) = if ((bH == a))
677677 then {
678678 let da = aJ(ao)
679679 if ((da == da))
680680 then {
681681 let cu = invoke(bl(), "claim", [aF], nil)
682682 if ((cu == cu))
683683 then {
684684 let db = aJ(ao)
685685 $Tuple2((db - da), ao)
686686 }
687687 else throw("Strict value is not equal to itself.")
688688 }
689689 else throw("Strict value is not equal to itself.")
690690 }
691691 else if ((bH == b))
692692 then {
693693 let dc = aZ(addressFromStringValue(aF))
694694 let aR = dc._1
695695 let aS = dc._2
696696 let dd = dc._3
697697 let de = dc._4
698698 let df = dc._5
699699 let da = aJ(ap)
700700 if ((da == da))
701701 then {
702702 let cu = invoke(bm(addressFromStringValue(aF)), "claimWx", [df], nil)
703703 if ((cu == cu))
704704 then {
705705 let db = aJ(ap)
706706 $Tuple2((db - da), ap)
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else av()
713713
714714
715715 func dg (bH,aF,bk,ca,aR,cb,aS,aY,aX,dh) = {
716716 let di = aJ(fromBase58String(dh))
717717 if ((di == di))
718718 then {
719719 let aP = addressFromStringValue(aF)
720720 let dj = if (if ((ca > 0))
721721 then (cb > 0)
722722 else false)
723723 then {
724724 let dk = bZ(bH, aP, ca, aR, cb, aS, aY, aX)
725725 let dl = dk._1
726726 let dm = dk._2
727727 let dn = dk._3
728728 let do = dk._4
729729 let cu = cj(aP, bH, dl, aR, dm, aS)
730730 if ((cu == cu))
731731 then $Tuple2(dn, do)
732732 else throw("Strict value is not equal to itself.")
733733 }
734734 else if ((ca > 0))
735735 then $Tuple2(ca, aR)
736736 else if ((cb > 0))
737737 then $Tuple2(cb, aS)
738738 else throw("pmts must be > 0")
739739 let dn = dj._1
740740 let do = dj._2
741741 let cu = if ((dn > 0))
742742 then cl(aP, bH, dn, do)
743743 else nil
744744 if ((cu == cu))
745745 then {
746746 let dp = aJ(fromBase58String(dh))
747747 let dq = (dp - di)
748748 let dr = fraction(dq, bj(aF, bk), m)
749749 let ds = (dq - dr)
750750 if ((0 >= ds))
751751 then throw("amount of staked sharetokens must be > 0")
752752 else {
753753 let dt = cn(aF, bH, dh, ds)
754754 if ((dt == dt))
755755 then $Tuple2(ds, dr)
756756 else throw("Strict value is not equal to itself.")
757757 }
758758 }
759759 else throw("Strict value is not equal to itself.")
760760 }
761761 else throw("Strict value is not equal to itself.")
762762 }
763763
764764
765765 func du (aF,bi,dv,dr,dw,bb,aG,dx) = {
766766 let dy = bf(aF)
767767 let dz = bg(aF)
768768 let dA = if (dx)
769769 then $Tuple2(getIntegerValue(this, (aF + C)), (dz + dv))
770770 else $Tuple2(getIntegerValue(this, (aF + D)), dz)
771771 let dB = dA._1
772772 let dC = dA._2
773773 [IntegerEntry((aF + A), (dy + dv)), IntegerEntry((aF + B), dC), IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + u), dv), IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + z), dB), StringEntry((((bi + "_") + toString(dw)) + v), aF), IntegerEntry((bi + y), dw), ScriptTransfer(ak, dr, fromBase58String(bb))]
774774 }
775775
776776
777777 func dD (dE,dF,dG,dH,dI,dJ,dK,dL,dM,dN) = {
778778 let dO = aJ(bq(dE))
779779 if ((dO == dO))
780780 then {
781781 let cu = invoke(al, "swap", [dH, dI, dJ, dK, dL, dM, dN], [AttachedPayment(dG, dF)])
782782 if ((cu == cu))
783783 then (aJ(bq(dE)) - dO)
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790 func dP (dE,dF,dG,dQ,dR,dN) = {
791791 let dO = aJ(bq(dE))
792792 if ((dO == dO))
793793 then {
794794 let cu = invoke(al, "puzzleSwap", [dQ, dR, dN], [AttachedPayment(dG, dF)])
795795 if ((cu == cu))
796796 then (aJ(bq(dE)) - dO)
797797 else throw("Strict value is not equal to itself.")
798798 }
799799 else throw("Strict value is not equal to itself.")
800800 }
801801
802802
803803 func dS (dE,dF,dG,dT,dU,dV,dW,dX,dY,dN) = {
804804 let dO = aJ(bq(dE))
805805 if ((dO == dO))
806806 then {
807807 let cu = invoke(al, "swopfiSwap", [dT, dU, dV, dW, dX, dY, dN], [AttachedPayment(dG, dF)])
808808 if ((cu == cu))
809809 then (aJ(bq(dE)) - dO)
810810 else throw("Strict value is not equal to itself.")
811811 }
812812 else throw("Strict value is not equal to itself.")
813813 }
814814
815815
816816 func dZ (aF,bH,ea,eb) = {
817817 let aP = Address(fromBase58String(aF))
818818 let ec = bd(aP, bH)
819819 let ed = ec._1
820820 let ee = ec._2
821821 let aY = ec._3
822822 let aX = ec._4
823823 let bb = ec._5
824824 if (if ((ea != ed))
825825 then (ea != ee)
826826 else false)
827827 then throw("Wrong asset")
828828 else {
829829 let ef = bf(aF)
830830 let eg = bg(aF)
831831 let eh = fraction(eg, j, ef)
832832 let ei = fraction(eb, eh, j)
833833 let ej = (eb - ei)
834834 let ek = fraction(ei, bj(aF, d), m)
835835 let el = fraction(ej, bj(aF, c), m)
836836 let em = (ek + el)
837837 let en = if ((ea == ed))
838838 then $Tuple2((eb - em), 0)
839839 else $Tuple2(0, (eb - em))
840840 let ca = en._1
841841 let cb = en._2
842842 let eo = dg(bH, aF, i, ca, ed, cb, ee, aY, aX, bb)
843843 let dv = eo._1
844844 let ep = eo._2
845845 let eq = valueOrElse(getInteger(this, (aF + C)), 0)
846846 let er = valueOrElse(getInteger(this, (aF + D)), 0)
847847 let es = fraction(dv, eh, j)
848848 let et = (dv - es)
849849 let eu = if ((eg > 0))
850850 then (eq + fraction(es, k, eg))
851851 else 0
852852 let ev = if (((ef - eg) > 0))
853853 then (er + fraction(et, k, (ef - eg)))
854854 else 0
855855 ([IntegerEntry((aF + C), eu), IntegerEntry((aF + D), ev), IntegerEntry((aF + A), (ef + dv)), IntegerEntry((aF + B), (eg + es)), ScriptTransfer(ak, em, fromBase58String(ea))] ++ bV(ed, ee, bb, nil))
856856 }
857857 }
858858
859859
860860 func ew (bi,aF,ex,ey) = {
861861 let ez = valueOrErrorMessage(getInteger(this, (((((aF + "_") + bi) + "_") + ex) + u)), "Unknown position")
862862 let eA = getIntegerValue(this, (((((aF + "_") + bi) + "_") + ex) + z))
863863 let eB = if (ey)
864864 then getIntegerValue(this, (aF + C))
865865 else getIntegerValue(this, (aF + D))
866866 (ez + fraction(ez, (eB - eA), k))
867867 }
868868
869869
870870 func eC (aF,eD,eE,eF) = {
871871 let bk = if (eD)
872872 then f
873873 else e
874874 if (eE)
875875 then fraction(eF, bj(aF, bk), m)
876876 else 0
877877 }
878878
879879
880880 func eG (bi,aF,ex,eE) = {
881881 let ez = valueOrErrorMessage(getInteger(this, (((((aF + "_") + bi) + "_") + ex) + u)), "Unknown position")
882882 let eD = (valueOrElse(getInteger(this, (((((aF + "_") + bi) + "_") + ex) + w)), 0) > 0)
883883 let cV = ew(bi, aF, ex, eD)
884884 let eH = bf(aF)
885885 let eI = bg(aF)
886886 let eJ = Address(fromBase58String(bi))
887887 let aP = Address(fromBase58String(aF))
888888 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Unknown pool")
889889 let eK = bd(aP, bH)
890890 let eL = eK._1
891891 let eM = eK._2
892892 let aY = eK._3
893893 let aX = eK._4
894894 let bb = eK._5
895895 let eN = $Tuple2(bq(eL), bq(eM))
896896 let eO = eN._1
897897 let eP = eN._2
898898 let eQ = eC(aF, eD, eE, cV)
899899 let eR = aJ(eO)
900900 if ((eR == eR))
901901 then {
902902 let eS = aJ(eP)
903903 if ((eS == eS))
904904 then {
905905 let cu = if ((bH == a))
906906 then {
907907 let cu = cp(aF, bH, bb, eQ)
908908 if ((cu == cu))
909909 then invoke(aP, "callFunction", ["withdraw", [toString(cV)]], nil)
910910 else throw("Strict value is not equal to itself.")
911911 }
912912 else if ((bH == b))
913913 then {
914914 let cu = cp(aF, bH, bb, (cV + eQ))
915915 if ((cu == cu))
916916 then invoke(aP, "get", nil, [AttachedPayment(bq(bb), cV)])
917917 else throw("Strict value is not equal to itself.")
918918 }
919919 else av()
920920 if ((cu == cu))
921921 then {
922922 let eT = aJ(eO)
923923 if ((eT == eT))
924924 then {
925925 let eU = aJ(eP)
926926 if ((eU == eU))
927927 then {
928928 let eV = $Tuple2((eT - eR), (eU - eS))
929929 let eW = eV._1
930930 let eX = eV._2
931931 let eY = if (eD)
932932 then {
933933 let eZ = getStringValue(this, (((((aF + "_") + bi) + "_") + ex) + x))
934934 let fa = {
935935 let aT = invoke(aw(), "getAssetDebt", [false, ((bi + "_") + ex), eZ], nil)
936936 if ($isInstanceOf(aT, "Int"))
937937 then aT
938938 else throw(($getType(aT) + " couldn't be cast to Int"))
939939 }
940940 if ((fa == fa))
941941 then {
942942 let fb = if (if ((eZ == eL))
943943 then (fa > eW)
944944 else false)
945945 then (fa - eW)
946946 else if (if ((eZ == eM))
947947 then (fa > eX)
948948 else false)
949949 then (fa - eX)
950950 else 0
951951 let fc = if ((fb > 0))
952952 then cR(bH, aF, eL, eM, (aY - eW), (aX - eX), fb, eZ)
953953 else nil
954954 if ((fc == fc))
955955 then {
956956 let fd = aJ(eO)
957957 if ((fd == fd))
958958 then {
959959 let fe = aJ(eP)
960960 if ((fe == fe))
961961 then {
962962 let ff = if ((fa > 0))
963963 then invoke(aw(), "repayFor", [((bi + "_") + ex)], [AttachedPayment(bq(eZ), fa)])
964964 else 0
965965 if ((ff == ff))
966966 then if ((eZ == eL))
967967 then $Tuple2(((fd - eR) - fa), (fe - eS))
968968 else $Tuple2((fd - eR), ((fe - eS) - fa))
969969 else throw("Strict value is not equal to itself.")
970970 }
971971 else throw("Strict value is not equal to itself.")
972972 }
973973 else throw("Strict value is not equal to itself.")
974974 }
975975 else throw("Strict value is not equal to itself.")
976976 }
977977 else throw("Strict value is not equal to itself.")
978978 }
979979 else $Tuple2(eW, eX)
980980 let fg = eY._1
981981 let fh = eY._2
982982 let fi = if (eD)
983983 then [IntegerEntry((aF + B), ((eI - cV) - eQ))]
984984 else nil
985985 let fj = (([DeleteEntry((((((aF + "_") + bi) + "_") + ex) + u)), DeleteEntry((((bi + "_") + ex) + v)), DeleteEntry((((((aF + "_") + bi) + "_") + ex) + w)), DeleteEntry((((((aF + "_") + bi) + "_") + ex) + x)), DeleteEntry((((((aF + "_") + bi) + "_") + ex) + z)), IntegerEntry((aF + A), ((eH - cV) - eQ)), ScriptTransfer(eJ, fg, eO), ScriptTransfer(eJ, fh, eP), ScriptTransfer(ak, eQ, fromBase58String(bb))] ++ fi) ++ bV(eL, eM, bb, nil))
986986 $Tuple2(fj, [fg, fh])
987987 }
988988 else throw("Strict value is not equal to itself.")
989989 }
990990 else throw("Strict value is not equal to itself.")
991991 }
992992 else throw("Strict value is not equal to itself.")
993993 }
994994 else throw("Strict value is not equal to itself.")
995995 }
996996 else throw("Strict value is not equal to itself.")
997997 }
998998
999999
10001000 func fk (fl) = {
10011001 let fm = split(valueOrErrorMessage(getString(this, (fl + L)), ("No request with id " + fl)), ",")
10021002 let bi = fm[0]
10031003 let aF = fm[1]
10041004 let ca = parseIntValue(fm[2])
10051005 let ed = fm[3]
10061006 let cb = parseIntValue(fm[4])
10071007 let ee = fm[5]
10081008 let aY = parseIntValue(fm[6])
10091009 let aX = parseIntValue(fm[7])
10101010 let bb = fm[8]
10111011 let fn = fm[9]
10121012 let fo = parseIntValue(fm[10])
10131013 $Tuple11(bi, aF, ca, ed, cb, ee, aY, aX, bb, fn, fo)
10141014 }
10151015
10161016
10171017 func fp (ca,cb,aR,aS,fq,fr) = if (if ((fr != aR))
10181018 then (fr != aS)
10191019 else false)
10201020 then throw("Wrong borrow asset")
10211021 else {
10221022 let bM = getIntegerValue(am, (aR + R))
10231023 let bN = getIntegerValue(am, (aS + R))
10241024 let fs = pow(10, 0, br(aR), 0, 0, DOWN)
10251025 let ft = pow(10, 0, br(aS), 0, 0, DOWN)
10261026 let fu = (fraction(bM, ca, fs) + fraction(bN, cb, ft))
10271027 let fv = if ((fr == aR))
10281028 then $Tuple2(bM, fs)
10291029 else $Tuple2(bN, ft)
10301030 let fw = fv._1
10311031 let fx = fv._2
10321032 fraction(fraction(fu, (fq - 100), 100), fx, fw)
10331033 }
10341034
10351035
10361036 func fy (fz,ed,ee) = if ((size(fz) == 2))
10371037 then if ((bp(fz[0].assetId) != ed))
10381038 then throw("Wrong payment asset A")
10391039 else if ((bp(fz[1].assetId) != ee))
10401040 then throw("Wrong payment asset B")
10411041 else $Tuple2(fz[0].amount, fz[1].amount)
10421042 else if ((size(fz) == 1))
10431043 then if ((bp(fz[0].assetId) == ed))
10441044 then $Tuple2(fz[0].amount, 0)
10451045 else if ((bp(fz[0].assetId) == ee))
10461046 then $Tuple2(0, fz[0].amount)
10471047 else throw("Wrong payment")
10481048 else throw("One or two payments expected")
10491049
10501050
10511051 func fA (aY,aX,fB,fC) = {
10521052 let fD = ((j - fraction(fraction(aX, j, aY), j, fraction(fC, j, fB))) * 100)
10531053 if ((0 > fD))
10541054 then (fD * -1)
10551055 else fD
10561056 }
10571057
10581058
10591059 func fE (aF,bH,fF,co,dn) = {
10601060 let fG = if (fF)
10611061 then cZ(bH, aF)
10621062 else {
10631063 let fH = if ((bH == a))
10641064 then ao
10651065 else if ((bH == b))
10661066 then ap
10671067 else av()
10681068 $Tuple2(co, fH)
10691069 }
10701070 let fI = fG._1
10711071 let fJ = fG._2
10721072 let fK = aJ(fJ)
10731073 if (if ((co > (fI + dn)))
10741074 then true
10751075 else (co > fK))
10761076 then throw("To big amount to exchange")
10771077 else $Tuple2(fI, fJ)
10781078 }
10791079
10801080
10811081 @Callable(ay)
10821082 func getPoolInfoREADONLY (aF) = {
10831083 let aP = addressFromStringValue(aF)
10841084 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
10851085 let fL = bd(Address(fromBase58String(aF)), bH)
10861086 let ed = fL._1
10871087 let ee = fL._2
10881088 let aY = fL._3
10891089 let aX = fL._4
10901090 let bb = fL._5
10911091 let bO = be(aP, bH, bb)
10921092 $Tuple2(nil, $Tuple6(ed, ee, bb, aY, aX, bO))
10931093 }
10941094
10951095
10961096
10971097 @Callable(ay)
10981098 func getShareAssetPriceREADONLY (bb) = {
10991099 let fM = bG(bb)
11001100 $Tuple2(nil, fM)
11011101 }
11021102
11031103
11041104
11051105 @Callable(ay)
11061106 func getUserPositionShareAmountREADONLY (bi,dw) = {
11071107 let aF = valueOrErrorMessage(getString(this, (((bi + "_") + dw) + v)), "Unknown position")
11081108 let fN = getIntegerValue(this, (((((aF + "_") + bi) + "_") + dw) + w))
11091109 let cV = ew(bi, aF, dw, (fN > 0))
11101110 $Tuple2(nil, cV)
11111111 }
11121112
11131113
11141114
11151115 @Callable(ay)
11161116 func getUserPositionREADONLY (bi,fO,dw) = {
11171117 func fP (bx,aF) = {
11181118 let fQ = bx
11191119 let fR = fQ._1
11201120 let fS = fQ._2
11211121 let fT = fQ._3
11221122 let fU = fQ._4
11231123 let fV = fQ._5
11241124 let fW = fQ._6
11251125 if (!(isDefined(getInteger(this, (((((aF + "_") + bi) + "_") + dw[fW]) + u)))))
11261126 then $Tuple6((fR :+ 0), (fS :+ 0), (fT :+ 0), (fU :+ 0), (fV :+ 0), (fW + 1))
11271127 else {
11281128 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
11291129 let fX = bd(Address(fromBase58String(aF)), bH)
11301130 let ed = fX._1
11311131 let ee = fX._2
11321132 let aY = fX._3
11331133 let aX = fX._4
11341134 let bb = fX._5
11351135 let fN = valueOrElse(getInteger(this, (((((aF + "_") + bi) + "_") + dw[fW]) + w)), 0)
11361136 let cV = ew(bi, aF, dw[fW], (fN > 0))
11371137 let fY = cU(Address(fromBase58String(aF)), bH, bb, cV)
11381138 let fZ = fY._1
11391139 let ga = fY._2
11401140 if ((fN > 0))
11411141 then {
11421142 let eZ = getStringValue(this, (((((aF + "_") + bi) + "_") + dw[fW]) + x))
11431143 let fa = {
11441144 let aT = invoke(aw(), "getAssetDebt", [false, ((bi + "_") + dw[fW]), eZ], nil)
11451145 if ($isInstanceOf(aT, "Int"))
11461146 then aT
11471147 else throw(($getType(aT) + " couldn't be cast to Int"))
11481148 }
11491149 if ((fa == fa))
11501150 then {
11511151 let fb = if (if ((eZ == ed))
11521152 then (fa > fZ)
11531153 else false)
11541154 then (fa - fZ)
11551155 else if (if ((eZ == ee))
11561156 then (fa > ga)
11571157 else false)
11581158 then (fa - ga)
11591159 else 0
11601160 let cE = if ((fb > 0))
11611161 then if ((bH == a))
11621162 then {
11631163 let gb = cv(aF, ed, ee, aY, aX, fb, eZ)
11641164 gb._2
11651165 }
11661166 else if ((bH == b))
11671167 then {
11681168 let gb = cK(aF, ed, ee, aY, aX, fb, eZ)
11691169 gb._2
11701170 }
11711171 else av()
11721172 else 0
11731173 let gc = if ((eZ == ed))
11741174 then $Tuple2(((fZ + fb) - fa), (ga - cE))
11751175 else $Tuple2((fZ - cE), ((ga + fb) - fa))
11761176 let gd = gc._1
11771177 let ge = gc._2
11781178 $Tuple6((fR :+ fZ), (fS :+ ga), (fT :+ fa), (fU :+ gd), (fV :+ ge), (fW + 1))
11791179 }
11801180 else throw("Strict value is not equal to itself.")
11811181 }
11821182 else $Tuple6((fR :+ fZ), (fS :+ ga), fT, (fR :+ fZ), (fS :+ ga), (fW + 1))
11831183 }
11841184 }
11851185
11861186 let gf = {
11871187 let bz = fO
11881188 let bA = size(bz)
11891189 let bB = $Tuple6(nil, nil, nil, nil, nil, 0)
11901190 func bC (bD,bE) = if ((bE >= bA))
11911191 then bD
11921192 else fP(bD, bz[bE])
11931193
11941194 func bF (bD,bE) = if ((bE >= bA))
11951195 then bD
11961196 else throw("List size exceeds 20")
11971197
11981198 bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
11991199 }
12001200 let fR = gf._1
12011201 let fS = gf._2
12021202 let fT = gf._3
12031203 let fU = gf._4
12041204 let fV = gf._5
12051205 $Tuple2(nil, $Tuple5(fR, fS, fT, fU, fV))
12061206 }
12071207
12081208
12091209
12101210 @Callable(ay)
12111211 func replenish (aF,fq,fr) = valueOrElse(aD(), {
12121212 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
12131213 if (!(aE(aF, bH)))
12141214 then throw("Pool not active at this moment")
12151215 else if (if ((100 > fq))
12161216 then true
12171217 else (fq > 300))
12181218 then throw("Leverage can't be <100 and >300")
12191219 else if (if (!(getBooleanValue(this, (aF + E))))
12201220 then (fq > 100)
12211221 else false)
12221222 then throw("You can't borrow in this pool")
12231223 else {
12241224 let gg = bd(Address(fromBase58String(aF)), bH)
12251225 let ed = gg._1
12261226 let ee = gg._2
12271227 let aY = gg._3
12281228 let aX = gg._4
12291229 let bb = gg._5
12301230 if (if ((fr != ed))
12311231 then (fr != ee)
12321232 else false)
12331233 then throw("Wrong borrow asset")
12341234 else {
12351235 let gh = fy(ay.payments, ed, ee)
12361236 let ca = gh._1
12371237 let cb = gh._2
12381238 let bi = toString(ay.caller)
12391239 let gi = bh(bi)
12401240 if ((fq > 100))
12411241 then {
12421242 let fN = fp(ca, cb, ed, ee, fq, fr)
12431243 let fm = makeString([bi, aF, toString(ca), ed, toString(cb), ee, toString(aY), toString(aX), bb, fr, toString(fN)], ",")
12441244 let gj = {
12451245 let aT = invoke(this, "createNewRequest", [fm], nil)
12461246 if ($isInstanceOf(aT, "Int"))
12471247 then aT
12481248 else throw(($getType(aT) + " couldn't be cast to Int"))
12491249 }
12501250 if ((gj == gj))
12511251 then {
12521252 let gk = [((bi + "_") + toString(gi)), bb, fr, fN, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gj, "Can't create new request"))]
12531253 let cu = reentrantInvoke(aw(), "flashPosition", gk, nil)
12541254 if ((cu == cu))
12551255 then {
12561256 let gl = getIntegerValue(this, (((((aF + "_") + bi) + "_") + toString(gi)) + u))
12571257 let gm = aU(Address(fromBase58String(aF)), bH, ed, ee)
12581258 if ((gm == gm))
12591259 then {
12601260 let fC = gm._2
12611261 let fB = gm._1
12621262 let gn = fA(aY, aX, fB, fC)
12631263 let go = cU(Address(fromBase58String(aF)), bH, bb, gl)
12641264 let fZ = go._1
12651265 let ga = go._2
12661266 $Tuple2(nil, [gn, fZ, ga])
12671267 }
12681268 else throw("Strict value is not equal to itself.")
12691269 }
12701270 else throw("Strict value is not equal to itself.")
12711271 }
12721272 else throw("Strict value is not equal to itself.")
12731273 }
12741274 else {
12751275 let gp = dg(bH, aF, h, ca, ed, cb, ee, aY, aX, bb)
12761276 if ((gp == gp))
12771277 then {
12781278 let em = gp._2
12791279 let gl = gp._1
12801280 let gq = aU(Address(fromBase58String(aF)), bH, ed, ee)
12811281 if ((gq == gq))
12821282 then {
12831283 let fC = gq._2
12841284 let fB = gq._1
12851285 let gn = fA(aY, aX, fB, fC)
12861286 let gr = cU(Address(fromBase58String(aF)), bH, bb, gl)
12871287 let fZ = gr._1
12881288 let ga = gr._2
12891289 $Tuple2((du(aF, bi, gl, em, gi, bb, bH, false) ++ bV(ed, ee, bb, [toString(fZ), toString(ga)])), [gn, fZ, ga])
12901290 }
12911291 else throw("Strict value is not equal to itself.")
12921292 }
12931293 else throw("Strict value is not equal to itself.")
12941294 }
12951295 }
12961296 }
12971297 })
12981298
12991299
13001300
13011301 @Callable(ay)
13021302 func withdraw (aF,ex) = valueOrElse(aD(), {
13031303 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
13041304 if (!(aE(aF, bH)))
13051305 then throw("Pool not active at this moment")
13061306 else eG(toString(ay.caller), aF, toString(ex), false)
13071307 })
13081308
13091309
13101310
13111311 @Callable(ay)
13121312 func createUpdateStopLoss (ex,gs,aK,gt) = valueOrElse(aD(), {
13131313 let gu = getIntegerValue(am, (aK + R))
13141314 let bH = valueOrErrorMessage(getString(this, (N + gs)), "Pool is not inited")
13151315 if (!(aE(gs, bH)))
13161316 then throw("Pool not active at this moment")
13171317 else if (!(isDefined(getInteger(this, (((((gs + "_") + toString(ay.caller)) + "_") + toString(ex)) + u)))))
13181318 then throw("There are no user position")
13191319 else if ((0 >= gt))
13201320 then throw("Price must be greater than 0")
13211321 else if ((gt > gu))
13221322 then throw("Price must be less than current token price")
13231323 else [IntegerEntry((((((((toString(ay.caller) + "_") + toString(ex)) + "_") + gs) + "_") + aK) + W), gt)]
13241324 })
13251325
13261326
13271327
13281328 @Callable(ay)
13291329 func deleteStopLoss (ex,gs,aK) = valueOrElse(aD(), {
13301330 let bH = valueOrErrorMessage(getString(this, (N + gs)), "Pool is not inited")
13311331 if (!(aE(gs, bH)))
13321332 then throw("Pool not active at this moment")
13331333 else if (!(isDefined(getInteger(this, (((((((toString(ay.caller) + "_") + toString(ex)) + "_") + gs) + "_") + aK) + W)))))
13341334 then throw("No entry")
13351335 else [DeleteEntry((((((((toString(ay.caller) + "_") + toString(ex)) + "_") + gs) + "_") + aK) + W))]
13361336 })
13371337
13381338
13391339
13401340 @Callable(ay)
13411341 func init (gv,gw,gx,am,gy,an,gz,gA,gB,gC,gD,gE,gF) = valueOrElse(aA(ay), if (isDefined(getString(aa)))
13421342 then throw("Already inited")
13431343 else if (!(isDefined(addressFromString(gv))))
13441344 then throw("moneyBoxAddr is not correct address")
13451345 else if (!(isDefined(addressFromString(gw))))
13461346 then throw("sfFarmingAddr is not correct address")
13471347 else if (!(isDefined(addressFromString(gx))))
13481348 then throw("lendAddr is not correct address")
13491349 else if (!(isDefined(addressFromString(am))))
13501350 then throw("priceOracleAddr is not correct address")
13511351 else if (!(isDefined(addressFromString(gy))))
13521352 then throw("keeperExContract is not correct address")
13531353 else if (!(isDefined(assetInfo(fromBase58String(gz)))))
13541354 then throw("swopAssetId is not correct asset id")
13551355 else if (!(isDefined(assetInfo(fromBase58String(gA)))))
13561356 then throw("swopAssetId is not correct asset id")
13571357 else if ((size(fromBase58String(gB)) != 32))
13581358 then throw("operatorPubKey is not correct")
13591359 else if ((size(fromBase58String(gC)) != 32))
13601360 then throw("group1Admin1PubKey is not correct")
13611361 else if ((size(fromBase58String(gD)) != 32))
13621362 then throw("group1Admin2PubKey is not correct")
13631363 else if ((size(fromBase58String(gE)) != 32))
13641364 then throw("group2Admin1PubKey is not correct")
13651365 else if ((size(fromBase58String(gF)) != 32))
13661366 then throw("group2Admin2PubKey is not correct")
13671367 else [StringEntry(X, gv), StringEntry(Y, gw), StringEntry(Z, gx), StringEntry(ab, am), StringEntry(ac, gy), StringEntry(ad, an), StringEntry(ae, gz), StringEntry(af, gA), StringEntry(aa, gB), StringEntry(ag, gC), StringEntry(ah, gD), StringEntry(ai, gE), StringEntry(aj, gF)])
13681368
13691369
13701370
13711371 @Callable(ay)
13721372 func createNewRequest (ct) = valueOrElse(aA(ay), {
13731373 let gj = (valueOrElse(getInteger(this, M), 0) + 1)
13741374 $Tuple2([StringEntry((toString(gj) + L), ct), IntegerEntry(M, gj)], gj)
13751375 })
13761376
13771377
13781378
13791379 @Callable(ay)
13801380 func replenishFromLand (fl) = valueOrElse(aC(), valueOrElse(aB(ay), {
13811381 let gG = fk(fl)
13821382 let bi = gG._1
13831383 let aF = gG._2
13841384 let ca = gG._3
13851385 let ed = gG._4
13861386 let cb = gG._5
13871387 let ee = gG._6
13881388 let aY = gG._7
13891389 let aX = gG._8
13901390 let bb = gG._9
13911391 let fn = gG._10
13921392 let fo = gG._11
13931393 if ((size(ay.payments) != 1))
13941394 then throw("Wrong payment size")
13951395 else if (if ((bp(ay.payments[0].assetId) != fn))
13961396 then true
13971397 else (ay.payments[0].amount != fo))
13981398 then throw("Wrong payment")
13991399 else {
14001400 let gH = if ((ed == fn))
14011401 then $Tuple2((ca + fo), cb)
14021402 else $Tuple2(ca, (cb + fo))
14031403 let gI = gH._1
14041404 let gJ = gH._2
14051405 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Unknown pool")
14061406 let gK = dg(bH, aF, g, gI, ed, gJ, ee, aY, aX, bb)
14071407 let gl = gK._1
14081408 let em = gK._2
14091409 let dw = bh(bi)
14101410 let gL = [IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + w), fo), StringEntry((((((aF + "_") + bi) + "_") + toString(dw)) + x), fn)]
14111411 let fj = du(aF, bi, gl, em, dw, bb, bH, true)
14121412 let gM = cU(Address(fromBase58String(aF)), bH, bb, gl)
14131413 let fZ = gM._1
14141414 let ga = gM._2
14151415 $Tuple2((((fj ++ bV(ed, ee, bb, [toString(fZ), toString(ga)])) ++ gL) :+ DeleteEntry((fl + L))), gl)
14161416 }
14171417 }))
14181418
14191419
14201420
14211421 @Callable(ay)
14221422 func liquidate (bi,ex,gN) = valueOrElse(aC(), valueOrElse(aB(ay), {
14231423 let aF = valueOrErrorMessage(getString(this, (((bi + "_") + ex) + v)), "no position")
14241424 let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
14251425 let gO = bd(Address(fromBase58String(aF)), bH)
14261426 let ed = gO._1
14271427 let ee = gO._2
14281428 let aY = gO._3
14291429 let aX = gO._4
14301430 let bb = gO._5
14311431 let co = cp(aF, bH, bb, gN)
14321432 let fN = getIntegerValue(this, (((((aF + "_") + bi) + "_") + ex) + w))
14331433 let eZ = getStringValue(this, (((((aF + "_") + bi) + "_") + ex) + x))
14341434 let cV = ew(bi, aF, ex, (fN > 0))
14351435 if ((gN > cV))
14361436 then throw("You can't liquidate more than user have")
14371437 else if ((fN == 0))
14381438 then throw("You can't liquidate position without borrow")
14391439 else [IntegerEntry((((((aF + "_") + bi) + "_") + ex) + z), getIntegerValue(this, (aF + C))), IntegerEntry((aF + B), (bg(aF) - gN)), IntegerEntry((aF + A), (bf(aF) - gN)), IntegerEntry((((((aF + "_") + bi) + "_") + ex) + u), (cV - gN)), ScriptTransfer(ay.caller, co, fromBase58String(bb))]
14401440 }))
14411441
14421442
14431443
14441444 @Callable(ay)
14451445 func stopLoss (bi,ex,aF,aK) = valueOrElse(aC(), valueOrElse(ax(ay), {
14461446 let gu = getIntegerValue(am, (aK + R))
14471447 let gP = valueOrErrorMessage(getInteger(this, (((((((bi + "_") + toString(ex)) + "_") + aF) + "_") + aK) + W)), "No entry")
14481448 if ((gu > gP))
14491449 then throw("Token price greater stop loss price")
14501450 else {
14511451 let gQ = eG(bi, aF, toString(ex), true)
14521452 $Tuple2((gQ._1 :+ DeleteEntry((((((((bi + "_") + toString(ex)) + "_") + aF) + "_") + aK) + W))), gQ._2)
14531453 }
14541454 }))
14551455
14561456
14571457
14581458 @Callable(ay)
14591459 func capitalizeExKeeper (aF,gR,gS,fF,dH,dI,dJ,dK,dL,dM,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
14601460 let bH = getStringValue(this, (N + aF))
14611461 let dn = valueOrElse(getInteger(this, (aF + P)), 0)
14621462 let gT = fE(aF, bH, fF, gS, dn)
14631463 let gU = gT._1
14641464 let fH = gT._2
14651465 let gV = dD(gR, gS, fH, dH, dI, dJ, dK, dL, dM, dN)
14661466 let gW = ((gU + dn) - gS)
14671467 let gX = if ((gW >= 0))
14681468 then [IntegerEntry((aF + P), gW)]
14691469 else throw("Negative change")
14701470 (dZ(aF, bH, gR, gV) ++ gX)
14711471 }))
14721472
14731473
14741474
14751475 @Callable(ay)
14761476 func capitalizeExPuzzle (aF,gR,gS,fF,dQ,dR,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
14771477 let bH = getStringValue(this, (N + aF))
14781478 let dn = valueOrElse(getInteger(this, (aF + P)), 0)
14791479 let gY = fE(aF, bH, fF, gS, dn)
14801480 let gU = gY._1
14811481 let fH = gY._2
14821482 let gV = dP(gR, gS, fH, dQ, dR, dN)
14831483 let gW = ((gU + dn) - gS)
14841484 let gX = if ((gW >= 0))
14851485 then [IntegerEntry((aF + P), gW)]
14861486 else nil
14871487 (dZ(aF, bH, gR, gV) ++ gX)
14881488 }))
14891489
14901490
14911491
14921492 @Callable(ay)
14931493 func capitalizeExSwopFi (aF,gR,gS,fF,dT,dU,dV,dW,dX,dY,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
14941494 let bH = getStringValue(this, (N + aF))
14951495 let dn = valueOrElse(getInteger(this, (aF + P)), 0)
14961496 let gZ = fE(aF, bH, fF, gS, dn)
14971497 let gU = gZ._1
14981498 let fH = gZ._2
14991499 let gV = dS(gR, gS, fH, dT, dU, dV, dW, dX, dY, dN)
15001500 let gW = ((gU + dn) - gS)
15011501 let gX = if ((gW >= 0))
15021502 then [IntegerEntry((aF + P), gW)]
15031503 else nil
15041504 (dZ(aF, bH, gR, gV) ++ gX)
15051505 }))
15061506
15071507
15081508
15091509 @Callable(ay)
15101510 func capitalizeNoEx (aF,fF,ha) = valueOrElse(aC(), valueOrElse(ax(ay), {
15111511 let bH = getStringValue(this, (N + aF))
15121512 let hb = fE(aF, bH, fF, ha, 0)
15131513 let gU = hb._1
15141514 let fH = hb._2
15151515 dZ(aF, bH, bp(fH), (gU + ha))
15161516 }))
15171517
15181518
15191519
15201520 @Callable(ay)
15211521 func initNewPool (aG,aP,hc,hd,he,hf,hg,hh,hi) = valueOrElse(aC(), valueOrElse(az(ay), if (if ((aG != a))
15221522 then (aG != b)
15231523 else false)
15241524 then throw("Wrong type")
15251525 else {
15261526 let hj = bd(Address(fromBase58String(aP)), aG)
15271527 let aR = hj._1
15281528 let aS = hj._2
15291529 let dd = hj._3
15301530 let de = hj._4
15311531 let bb = hj._5
15321532 if ((0 > hc))
15331533 then throw("inFeeNoLoan must be greater than 0")
15341534 else if ((0 > hd))
15351535 then throw("inFeeLoan must be greater than 0")
15361536 else if ((0 > he))
15371537 then throw("capFeeNoLoan must be greater than 0")
15381538 else if ((0 > hf))
15391539 then throw("capFeeWithLoan must be greater than 0")
15401540 else if ((0 > hg))
15411541 then throw("stoplossFeeNoLoan must be greater than 0")
15421542 else if ((0 > hh))
15431543 then throw("stoplossFeeWithLoan must be greater than 0")
15441544 else [IntegerEntry((aP + F), hc), IntegerEntry((aP + G), hd), IntegerEntry((aP + H), he), IntegerEntry((aP + I), hf), IntegerEntry((aP + J), hg), IntegerEntry((aP + K), hh), IntegerEntry((aP + C), 0), IntegerEntry((aP + D), 0), StringEntry((N + aP), aG), StringEntry((bb + O), aP), BooleanEntry((aP + E), hi)]
15451545 }))
15461546
15471547
15481548
15491549 @Callable(ay)
15501550 func updatePoolFees (aP,hc,hd,he,hf,hg,hh) = valueOrElse(aC(), valueOrElse(az(ay), if (!(isDefined(getString(this, (N + aP)))))
15511551 then throw(("Can't find pool with addr " + aP))
15521552 else if ((0 > hc))
15531553 then throw("inFeeNoLoan must be greater than 0")
15541554 else if ((0 > hd))
15551555 then throw("inFeeLoan must be greater than 0")
15561556 else if ((0 > he))
15571557 then throw("capFeeNoLoan must be greater than 0")
15581558 else if ((0 > hf))
15591559 then throw("capFeeWithLoan must be greater than 0")
15601560 else if ((0 > hg))
15611561 then throw("stoplossFeeNoLoan must be greater than 0")
15621562 else if ((0 > hh))
15631563 then throw("stoplossFeeWithLoan must be greater than 0")
15641564 else [IntegerEntry((aP + F), hc), IntegerEntry((aP + G), hd), IntegerEntry((aP + H), he), IntegerEntry((aP + I), hf), IntegerEntry((aP + J), hg), IntegerEntry((aP + K), hh)]))
15651565
15661566
15671567
15681568 @Callable(ay)
15691569 func activate () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, S), true))
15701570 then throw("dApp already active")
15711571 else [BooleanEntry(S, true)])
15721572
15731573
15741574
15751575 @Callable(ay)
15761576 func shutdown () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, S), true)))
15771577 then throw("dApp already shutdown")
15781578 else [BooleanEntry(S, false)])
15791579
15801580
15811581
15821582 @Callable(ay)
15831583 func activateForUsers () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, T), true))
15841584 then throw("dApp already active for users")
15851585 else [BooleanEntry(T, true)])
15861586
15871587
15881588
15891589 @Callable(ay)
15901590 func shutdownForUsers () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, T), true)))
15911591 then throw("dApp already shutdown for users")
15921592 else [BooleanEntry(T, false)])
15931593
15941594
15951595
15961596 @Callable(ay)
15971597 func activateSF () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, (a + U)), true))
15981598 then throw("SWOPFI already active")
15991599 else [BooleanEntry((a + U), true)])
16001600
16011601
16021602
16031603 @Callable(ay)
16041604 func shutdownSF () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, (a + U)), true)))
16051605 then throw("SWOPFI already shutdown")
16061606 else [BooleanEntry((a + U), false)])
16071607
16081608
16091609
16101610 @Callable(ay)
16111611 func activateWX () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, (b + U)), true))
16121612 then throw("WX already active")
16131613 else [BooleanEntry((b + U), true)])
16141614
16151615
16161616
16171617 @Callable(ay)
16181618 func shutdownWX () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, (b + U)), true)))
16191619 then throw("WX already shutdown")
16201620 else [BooleanEntry((b + U), false)])
16211621
16221622
16231623
16241624 @Callable(ay)
16251625 func activatePool (aF) = valueOrElse(az(ay), if (!(isDefined(getString(this, (N + aF)))))
16261626 then throw("Unknown pool")
16271627 else if (valueOrElse(getBoolean(this, (aF + V)), true))
16281628 then throw("Pool already active")
16291629 else [BooleanEntry((aF + V), true)])
16301630
16311631
16321632
16331633 @Callable(ay)
16341634 func shutdownPool (aF) = valueOrElse(az(ay), if (!(isDefined(getString(this, (N + aF)))))
16351635 then throw("Unknown pool")
16361636 else if (!(valueOrElse(getBoolean(this, (aF + V)), true)))
16371637 then throw("Pool already shutdown")
16381638 else [BooleanEntry((aF + V), false)])
16391639
16401640

github/deemru/w8io/169f3d6 
132.98 ms