@scalekit-sdk/node 2.4.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/actions.d.ts +169 -0
- package/lib/actions.js +286 -0
- package/lib/actions.js.map +1 -0
- package/lib/connected-accounts.d.ts +149 -0
- package/lib/connected-accounts.js +213 -0
- package/lib/connected-accounts.js.map +1 -0
- package/lib/core.d.ts +5 -3
- package/lib/core.js +35 -13
- package/lib/core.js.map +1 -1
- package/lib/m2mclient.d.ts +122 -0
- package/lib/m2mclient.js +172 -0
- package/lib/m2mclient.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +2 -1
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/clients/clients_pb.d.ts +2597 -0
- package/lib/pkg/grpc/scalekit/v1/clients/clients_pb.js +546 -0
- package/lib/pkg/grpc/scalekit/v1/clients/clients_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +798 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +233 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.d.ts +78 -0
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +17 -2
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.d.ts +70 -0
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +18 -2
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +13 -0
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.d.ts +8 -0
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +504 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +118 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
- package/lib/role.d.ts +47 -1
- package/lib/role.js +65 -0
- package/lib/role.js.map +1 -1
- package/lib/scalekit.d.ts +8 -0
- package/lib/scalekit.js +8 -0
- package/lib/scalekit.js.map +1 -1
- package/lib/token.d.ts +34 -2
- package/lib/token.js +30 -0
- package/lib/token.js.map +1 -1
- package/lib/tools.d.ts +96 -0
- package/lib/tools.js +108 -0
- package/lib/tools.js.map +1 -0
- package/lib/user.d.ts +54 -1
- package/lib/user.js +85 -0
- package/lib/user.js.map +1 -1
- package/package.json +2 -2
|
@@ -16,7 +16,7 @@ const options_pb_1 = require("../options/options_pb");
|
|
|
16
16
|
/**
|
|
17
17
|
* Describes the file scalekit/v1/users/users.proto.
|
|
18
18
|
*/
|
|
19
|
-
exports.file_scalekit_v1_users_users = (0, codegenv2_1.fileDesc)("Ch1zY2FsZWtpdC92MS91c2Vycy91c2Vycy5wcm90bxIRc2NhbGVraXQudjEudXNlcnMi9AwKBFVzZXIScQoCaWQYASABKAlCZZJBYjJIVW5pcXVlIHN5c3RlbS1nZW5lcmF0ZWQgaWRlbnRpZmllciBmb3IgdGhlIHVzZXIuIEltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giEqABCg5lbnZpcm9ubWVudF9pZBgCIAEoCUKHAZJBcjJYSWRlbnRpZmllciBvZiB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhlIHVzZXIgd2FzIGNyZWF0ZWQuIFN5c3RlbS1hc3NpZ25lZCBhbmQgcmVhZC1vbmx5LkoWImVudl85ODc2enl4dzU0MzJ2dXRzIuBBA/rS5JMCCRIHUFJFVklFVxKQAQoLY3JlYXRlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl+SQVkyV1RpbWVzdGFtcCB3aGVuIHRoZSB1c2VyIGFjY291bnQgd2FzIGluaXRpYWxseSBjcmVhdGVkLiBBdXRvbWF0aWNhbGx5IHNldCBieSB0aGUgc2VydmVyLuBBAxKVAQoLdXBkYXRlX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQmSSQV4yXFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBtb2RpZmljYXRpb24gdG8gdGhlIHVzZXIgYWNjb3VudC4gQXV0b21hdGljYWxseSB1cGRhdGVkIGJ5IHRoZSBzZXJ2ZXIu4EEDEpEBCgVlbWFpbBgFIAEoCUKBAZJBdzJhUHJpbWFyeSBlbWFpbCBhZGRyZXNzIGZvciB0aGUgdXNlci4gTXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRoZSBlbnZpcm9ubWVudCBhbmQgdmFsaWQgcGVyIFJGQyA1MzIyLkoSInVzZXJAZXhhbXBsZS5jb20iukgEcgJgARKWAQoLZXh0ZXJuYWxfaWQYBiABKAlCfJJBeTJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uShIiZXh0XzEyMzQ1YTY3Yjg5YyJIAIgBARKcAQoLbWVtYmVyc2hpcHMYByADKAsyKy5zY2FsZWtpdC52MS5jb21tb25zLk9yZ2FuaXphdGlvbk1lbWJlcnNoaXBCWpJBVzJVTGlzdCBvZiBvcmdhbml6YXRpb24gbWVtYmVyc2hpcHMuIEF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGJhc2VkIG9uIGdyb3VwIGFzc2lnbm1lbnRzLhKPAQoMdXNlcl9wcm9maWxlGAggASgLMiAuc2NhbGVraXQudjEuY29tbW9ucy5Vc2VyUHJvZmlsZUJXkkFUMlJVc2VyJ3MgcGVyc29uYWwgaW5mb3JtYXRpb24gaW5jbHVkaW5nIG5hbWUsIGFkZHJlc3MsIGFuZCBvdGhlciBwcm9maWxlIGF0dHJpYnV0ZXMuEvYBCghtZXRhZGF0YRgJIAMoCzIlLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIuTWV0YWRhdGFFbnRyeUK8AZJBnwEyZEN1c3RvbSBrZXktdmFsdWUgcGFpcnMgZm9yIHN0b3JpbmcgYWRkaXRpb25hbCB1c2VyIGNvbnRleHQuIEtleXMgKDMtMjUgY2hhcnMpLCB2YWx1ZXMgKDEtMjU2IGNoYXJzKS5KN3siZGVwYXJ0bWVudCI6ICJlbmdpbmVlcmluZyIsICJsb2NhdGlvbiI6ICJueWMtb2ZmaWNlIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpIBCg9sYXN0X2xvZ2luX3RpbWUYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl2SQVcyVVRpbWVzdGFtcCBvZiB0aGUgdXNlcidzIG1vc3QgcmVjZW50IHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24uIFVwZGF0ZWQgYXV0b21hdGljYWxseS7gQQMaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg4KDF9leHRlcm5hbF9pZCL6AQoeQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXBSZXF1ZXN0EhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIzCgR1c2VyGAIgASgLMh0uc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlVXNlckIGukgDyAEBEnAKFXNlbmRfaW52aXRhdGlvbl9lbWFpbBgDIAEoCEJMkkFJMkFJZiB0cnVlLCBzZW5kcyBhbiBhY3RpdmF0aW9uIGVtYWlsIHRvIHRoZSB1c2VyLiBEZWZhdWx0cyB0byB0cnVlLkoEdHJ1ZUgAiAEBQhgKFl9zZW5kX2ludml0YXRpb25fZW1haWwiSAofQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXBSZXNwb25zZRIlCgR1c2VyGAEgASgLMhcuc2NhbGVraXQudjEudXNlcnMuVXNlciKNBQoKVXBkYXRlVXNlchKWAQoLZXh0ZXJuYWxfaWQYBiABKAlCfJJBeTJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uShIiZXh0XzEyMzQ1YTY3Yjg5YyJIAIgBARKTAQoMdXNlcl9wcm9maWxlGAggASgLMiQuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclByb2ZpbGVCV5JBVDJSVXNlcidzIHBlcnNvbmFsIGluZm9ybWF0aW9uIGluY2x1ZGluZyBuYW1lLCBhZGRyZXNzLCBhbmQgb3RoZXIgcHJvZmlsZSBhdHRyaWJ1dGVzLhL8AQoIbWV0YWRhdGEYCSADKAsyKy5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyLk1ldGFkYXRhRW50cnlCvAGSQZ8BMmRDdXN0b20ga2V5LXZhbHVlIHBhaXJzIGZvciBzdG9yaW5nIGFkZGl0aW9uYWwgdXNlciBjb250ZXh0LiBLZXlzICgzLTI1IGNoYXJzKSwgdmFsdWVzICgxLTI1NiBjaGFycykuSjd7ImRlcGFydG1lbnQiOiAiZW5naW5lZXJpbmciLCAibG9jYXRpb24iOiAibnljLW9mZmljZSJ9ukgWmgETEBQiBnIEEAMYGSoHcgUQARiAAhovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2V4dGVybmFsX2lkSgQIARAGSgQIBxAISgQIChALIpUEChFVcGRhdGVVc2VyUmVxdWVzdBKIAQoCaWQYASABKAlCepJBaDJOU3lzdGVtLWdlbmVyYXRlZCB1c2VyIElELiBNdXN0IHN0YXJ0IHdpdGggJ3Vzcl8nIGFuZCBiZSAxOS0yNSBjaGFyYWN0ZXJzIGxvbmcuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQExgZOgR1c3JfSAASjgEKC2V4dGVybmFsX2lkGAIgASgJQneSQXQyY1lvdXIgYXBwbGljYXRpb24ncyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBvcmdhbml6YXRpb24sIHVzZWQgdG8gbGluayBTY2FsZWtpdCB3aXRoIHlvdXIgc3lzdGVtLkoNImV4dF83ODkweHl6IkgAEtUBCgR1c2VyGAMgASgLMh0uc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlckKnAZJBnQEycVVzZXIgZmllbGRzIHRvIHVwZGF0ZS4gT25seSBzcGVjaWZpZWQgZmllbGRzIHdpbGwgYmUgbW9kaWZpZWQuIFJlcXVpcmVkIGZpZWxkcyBtdXN0IGJlIHByb3ZpZGVkIGlmIGJlaW5nIGNoYW5nZWQuSih7ImZpcnN0TmFtZSI6ICJKb2huIiwgImxhc3ROYW1lIjogIkRvZSJ9ukgDyAEBQgwKCmlkZW50aXRpZXMiOwoSVXBkYXRlVXNlclJlc3BvbnNlEiUKBHVzZXIYASABKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyIoMCCg5HZXRVc2VyUmVxdWVzdBJSCgJpZBgBIAEoCUJEkkEyMhhTeXN0ZW0tZ2VuZXJhdGVkIHVzZXIgSURKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChABGCA6BHVzcl9IABKOAQoLZXh0ZXJuYWxfaWQYAiABKAlCd5JBdDJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uSg0iZXh0Xzc4OTB4eXoiSABCDAoKaWRlbnRpdGllcyI4Cg9HZXRVc2VyUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIiwAEKFkdldEN1cnJlbnRVc2VyUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXISfwoSY3VycmVudF9zZXNzaW9uX2lkGAIgASgJQmOSQWAyRVRoZSBJRCBvZiB0aGUgY3VycmVudCBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXV0aGVudGljYXRlZCB1c2VyLkoXInNlc3NfMTIzNGFiY2Q1Njc4ZWZnaCIiFwoVR2V0Q3VycmVudFVzZXJSZXF1ZXN0Is8EChxMaXN0T3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0ErkBCg9vcmdhbml6YXRpb25faWQYASABKAlCnwGSQYwBMnJVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3JnYW5pemF0aW9uIGZvciB3aGljaCB0byBsaXN0IHVzZXJzLiBNdXN0IHN0YXJ0IHdpdGggJ29yZ18nIGFuZCBiZSAxLTMyIGNoYXJhY3RlcnMgbG9uZy5KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChABGCA6BG9yZ18SnwEKCXBhZ2Vfc2l6ZRgCIAEoDUKLAZJBfzJ5TWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIGluIGEgc2luZ2xlIHJlc3BvbnNlLiBWYWxpZCByYW5nZTogMS0xMDAuIFNlcnZlciBtYXkgcmV0dXJuIGZld2VyIHVzZXJzIHRoYW4gc3BlY2lmaWVkLkoCNTC6SAYqBBhkKAAS0AEKCnBhZ2VfdG9rZW4YAyABKAlCuwGSQbcBMoABUGFnaW5hdGlvbiB0b2tlbiBmcm9tIGEgcHJldmlvdXMgTGlzdFVzZXJSZXNwb25zZS4gVXNlZCB0byByZXRyaWV2ZSB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIExlYXZlIGVtcHR5IGZvciB0aGUgZmlyc3QgcmVxdWVzdC5KMiJleUp3WVdkbElqb2dNaXdnSW14aGMzUmZhV1FpT2lBaWRYTnlYekV5TXpRMUluMD0iIvQECh1MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZRKrAQoPbmV4dF9wYWdlX3Rva2VuGAEgASgJQpEBkkGNATJXT3BhcXVlIHRva2VuIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gRW1wdHkgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMuSjIiZXlKd1lXZGxJam9nTWl3Z0lteGhjM1JmYVdRaU9pQWlkWE55WHpFeU16UTFJbjA9IhJtCgp0b3RhbF9zaXplGAIgASgNQlmSQVYyTlRvdGFsIG51bWJlciBvZiB1c2VycyBtYXRjaGluZyB0aGUgcmVxdWVzdCBjcml0ZXJpYSwgcmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uLkoEMTA0MhKLAQoFdXNlcnMYAyADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQmOSQWAyXkxpc3Qgb2YgdXNlciBvYmplY3RzIGZvciB0aGUgY3VycmVudCBwYWdlLiBNYXkgY29udGFpbiBmZXdlciBlbnRyaWVzIHRoYW4gcmVxdWVzdGVkIHBhZ2Vfc2l6ZS4SpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU09wYXF1ZSB0b2tlbiBmb3IgcmV0cmlldmluZyB0aGUgcHJldmlvdXMgcGFnZSBvZiByZXN1bHRzLiBFbXB0eSBmb3IgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLSBAoXRGVsZXRlTWVtYmVyc2hpcFJlcXVlc3QSlwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJ+kkFsMlJVbmlxdWUgb3JnYW5pemF0aW9uIGlkZW50aWZpZXIuIE11c3Qgc3RhcnQgd2l0aCAnb3JnXycgYW5kIGJlIDEtMzIgY2hhcmFjdGVycyBsb25nShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfEn0KAmlkGAIgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJ9CgtleHRlcm5hbF9pZBgDIAEoCUJmkkFjMlJFeHRlcm5hbCBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIGNvbm5lY3RlZCBkaXJlY3Rvcmllcy4gTXVzdCBtYXRjaCBleGlzdGluZyByZWNvcmRzSg0iZXh0Xzc4OTB4eXoiSAAShAEKB2Nhc2NhZGUYBSABKAhCbpJBXDJTSWYgdHJ1ZSwgaWYgdXNlciBoYXMgbm8gbWVtYmVyc2hpcHMgbGVmdCB0aGUgdXNlciBpcyBhbHNvIGRlbGV0ZWQuIGRlZmF1bHRzIHRvIHRydWVKBWZhbHNl+tLkkwIJEgdQUkVWSUVXSAGIAQFCDAoKaWRlbnRpdGllc0IKCghfY2FzY2FkZSLnBQoXQ3JlYXRlTWVtYmVyc2hpcFJlcXVlc3QSpwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUKNAZJBezJhVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBvcmdhbml6YXRpb24uIE11c3Qgc3RhcnQgd2l0aCAnb3JnXycgYW5kIGJlIDEtMzIgY2hhcmFjdGVycyBsb25nLkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpIDHIKEAEYIDoEb3JnXxKDAQoKbWVtYmVyc2hpcBgCIAEoCzIjLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXBCSpJBQTI/TWVtYmVyc2hpcCBkZXRhaWxzIHRvIGNyZWF0ZS4gUmVxdWlyZWQgZmllbGRzIG11c3QgYmUgcHJvdmlkZWQuukgDyAEBEn0KAmlkGAMgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABKCAQoLZXh0ZXJuYWxfaWQYBCABKAlCa5JBaDJXRXh0ZXJuYWwgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBjb25uZWN0ZWQgZGlyZWN0b3JpZXMuIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgc3lzdGVtSg0iZXh0Xzc4OTB4eXoiSAAScAoVc2VuZF9pbnZpdGF0aW9uX2VtYWlsGAUgASgIQkySQUkyQUlmIHRydWUsIHNlbmRzIGFuIGFjdGl2YXRpb24gZW1haWwgdG8gdGhlIHVzZXIuIERlZmF1bHRzIHRvIHRydWUuSgR0cnVlSAGIAQFCDAoKaWRlbnRpdGllc0IYChZfc2VuZF9pbnZpdGF0aW9uX2VtYWlsIkEKGENyZWF0ZU1lbWJlcnNoaXBSZXNwb25zZRIlCgR1c2VyGAEgASgLMhcuc2NhbGVraXQudjEudXNlcnMuVXNlciKFAgoQTGlzdFVzZXJzUmVxdWVzdBJqCglwYWdlX3NpemUYASABKA1CV5JBVDJOTWF4aW11bSBudW1iZXIgb2Ygb3JnYW5pemF0aW9ucyB0byByZXR1cm4gcGVyIHBhZ2UuIE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgMTAwSgIzMBKEAQoKcGFnZV90b2tlbhgCIAEoCUJwkkFtMltQYWdpbmF0aW9uIHRva2VuIGZyb20gdGhlIHByZXZpb3VzIHJlc3BvbnNlLiBVc2UgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZSBvZiBvcmdhbml6YXRpb25zSg4iPHBhZ2VfdG9rZW4+IiKQBAoRTGlzdFVzZXJzUmVzcG9uc2USOwoFdXNlcnMYASADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQhOSQRAyDkxpc3Qgb2YgdXNlcnMuEqQBCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAlCigGSQYYBMlBUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzLkoyImV5SndZV2RsSWpvZ01pd2dJbXhoYzNSZmFXUWlPaUFpZFhOeVh6RXlNelExSW4wPSISbQoKdG90YWxfc2l6ZRgDIAEoDUJZkkFWMk5Ub3RhbCBudW1iZXIgb2YgdXNlcnMgbWF0Y2hpbmcgdGhlIHJlcXVlc3QgY3JpdGVyaWEsIHJlZ2FyZGxlc3Mgb2YgcGFnaW5hdGlvbi5KBDEwNDISpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU1Rva2VuIGZvciByZXRyaWV2aW5nIHRoZSBwcmV2aW91cyBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLHAwoSU2VhcmNoVXNlcnNSZXF1ZXN0EqMBCgVxdWVyeRgBIAEoCUKTAZJBgwEyb1NlYXJjaCB0ZXJtIHRvIG1hdGNoIGFnYWluc3QgdXNlciBlbWFpbCwgSURzLCBvciBleHRlcm5hbCBJRHMuIE11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzLiBDYXNlIGluc2Vuc2l0aXZlLkoQam9obkBleGFtcGxlLmNvbbpICcgBAXIEEAMYZBJuCglwYWdlX3NpemUYAiABKA1CW5JBUTJLTWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIHBlciBwYWdlLiBWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzAuSgIzMLpIBCoCGB4SmgEKCnBhZ2VfdG9rZW4YAyABKAlChQGSQYEBMmFUb2tlbiBmcm9tIGEgcHJldmlvdXMgcmVzcG9uc2UgZm9yIHBhZ2luYXRpb24uIFByb3ZpZGUgdGhpcyB0byByZXRyaWV2ZSB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuShxleUp3WVdkbElqb3lMQ0pzYVcxcGRDSTZNekI5IpsEChNTZWFyY2hVc2Vyc1Jlc3BvbnNlEqQBCg9uZXh0X3BhZ2VfdG9rZW4YASABKAlCigGSQYYBMlBUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzLkoyImV5SndZV2RsSWpvZ01pd2dJbXhoYzNSZmFXUWlPaUFpZFhOeVh6RXlNelExSW4wPSISbQoKdG90YWxfc2l6ZRgCIAEoDUJZkkFWMk5Ub3RhbCBudW1iZXIgb2YgdXNlcnMgbWF0Y2hpbmcgdGhlIHJlcXVlc3QgY3JpdGVyaWEsIHJlZ2FyZGxlc3Mgb2YgcGFnaW5hdGlvbi5KBDEwNDISRAoFdXNlcnMYAyADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQhySQRkyF0xpc3Qgb2YgbWF0Y2hpbmcgdXNlcnMuEqcBCg9wcmV2X3BhZ2VfdG9rZW4YBCABKAlCjQGSQYkBMlNUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgcHJldmlvdXMgcGFnZSBvZiByZXN1bHRzLiBFbXB0eSBpZiB0aGlzIGlzIHRoZSBmaXJzdCBwYWdlLkoyImV5SndZV2RsSWpvZ01Dd2dJbVpwY25OMFgybGtJam9nSW5WemNsODVPRGMyTlNKOSIinwIKEURlbGV0ZVVzZXJSZXF1ZXN0En0KAmlkGAEgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJ9CgtleHRlcm5hbF9pZBgCIAEoCUJmkkFjMlJFeHRlcm5hbCBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIGNvbm5lY3RlZCBkaXJlY3Rvcmllcy4gTXVzdCBtYXRjaCBleGlzdGluZyByZWNvcmRzSg0iZXh0Xzc4OTB4eXoiSABCDAoKaWRlbnRpdGllcyLuBAoXVXBkYXRlTWVtYmVyc2hpcFJlcXVlc3QSuwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUKhAZJBjgEydFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb24gY29udGFpbmluZyB0aGUgbWVtYmVyc2hpcC4gTXVzdCBzdGFydCB3aXRoICdvcmdfJyBhbmQgYmUgMS0zMiBjaGFyYWN0ZXJzIGxvbmcuShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfEogBCgJpZBgCIAEoCUJ6kkFoMk5TeXN0ZW0tZ2VuZXJhdGVkIHVzZXIgSUQuIE11c3Qgc3RhcnQgd2l0aCAndXNyXycgYW5kIGJlIDE5LTI1IGNoYXJhY3RlcnMgbG9uZy5KFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJeCgtleHRlcm5hbF9pZBgDIAEoCUJHkkFEMjNZb3VyIGFwcGxpY2F0aW9uJ3MgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgdXNlci5KDSJleHRfNzg5MHh5eiJIABKbAQoKbWVtYmVyc2hpcBgFIAEoCzIjLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZU1lbWJlcnNoaXBCYpJBWTJETWVtYmVyc2hpcCBmaWVsZHMgdG8gdXBkYXRlLiBPbmx5IHNwZWNpZmllZCBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5KEXsicm9sZSI6ICJhZG1pbiJ9ukgDyAEBQgwKCmlkZW50aXRpZXMi3gMKEFVwZGF0ZU1lbWJlcnNoaXASdgoFcm9sZXMYBCADKAsyGS5zY2FsZWtpdC52MS5jb21tb25zLlJvbGVCTJJBSTIyUm9sZSB0byBhc3NpZ24gdG8gdGhlIHVzZXIgd2l0aGluIHRoZSBvcmdhbml6YXRpb25KE1t7Im5hbWUiOiAiYWRtaW4ifV0SggIKCG1ldGFkYXRhGAcgAygLMjEuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlTWVtYmVyc2hpcC5NZXRhZGF0YUVudHJ5QrwBkkGfATJkQ3VzdG9tIGtleS12YWx1ZSBwYWlycyBmb3Igc3RvcmluZyBhZGRpdGlvbmFsIHVzZXIgY29udGV4dC4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko3eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgImxvY2F0aW9uIjogIm55Yy1vZmZpY2UifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIARACSgQIAhADSgQIAxAESgQIBRAGSgQIBhAHIokFChBDcmVhdGVNZW1iZXJzaGlwEnYKBXJvbGVzGAQgAygLMhkuc2NhbGVraXQudjEuY29tbW9ucy5Sb2xlQkySQUkyMlJvbGUgdG8gYXNzaWduIHRvIHRoZSB1c2VyIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uShNbeyJuYW1lIjogImFkbWluIn1dEoICCghtZXRhZGF0YRgHIAMoCzIxLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXAuTWV0YWRhdGFFbnRyeUK8AZJBnwEyZEN1c3RvbSBrZXktdmFsdWUgcGFpcnMgZm9yIHN0b3JpbmcgYWRkaXRpb25hbCB1c2VyIGNvbnRleHQuIEtleXMgKDMtMjUgY2hhcnMpLCB2YWx1ZXMgKDEtMjU2IGNoYXJzKS5KN3siZGVwYXJ0bWVudCI6ICJlbmdpbmVlcmluZyIsICJsb2NhdGlvbiI6ICJueWMtb2ZmaWNlIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpYBCg1pbnZpdGVyX2VtYWlsGAggASgJQnqSQWsyUUVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgd2hvIGludml0ZWQgdGhpcyBtZW1iZXIuIE11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLkoWImpvaG4uZG9lQGV4YW1wbGUuY29tIrpICXIHEAUY/gFgAUgAiAEBGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIQCg5faW52aXRlcl9lbWFpbEoECAEQAkoECAIQA0oECAMQBEoECAUQBkoECAYQByJBChhVcGRhdGVNZW1iZXJzaGlwUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIiiwUKHlNlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBK1AQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQpsBkkGFATJrVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG9yZ2FuaXphdGlvbiB0byBzZWFyY2ggd2l0aGluLiBNdXN0IHN0YXJ0IHdpdGggJ29yZ18nIGFuZCBiZSAxLTMyIGNoYXJhY3RlcnMgbG9uZy5KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SA/IAQFyChABGCA6BG9yZ18SowEKBXF1ZXJ5GAIgASgJQpMBkkGDATJvU2VhcmNoIHRlcm0gdG8gbWF0Y2ggYWdhaW5zdCB1c2VyIGVtYWlsLCBJRHMsIG9yIGV4dGVybmFsIElEcy4gTXVzdCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMuIENhc2UgaW5zZW5zaXRpdmUuShBqb2huQGV4YW1wbGUuY29tukgJyAEBcgQQAxhkEm4KCXBhZ2Vfc2l6ZRgDIAEoDUJbkkFRMktNYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byByZXR1cm4gcGVyIHBhZ2UuIFZhbHVlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMC5KAjMwukgEKgIYHhKaAQoKcGFnZV90b2tlbhgEIAEoCUKFAZJBgQEyYVRva2VuIGZyb20gYSBwcmV2aW91cyByZXNwb25zZSBmb3IgcGFnaW5hdGlvbi4gUHJvdmlkZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy5KHGV5SndZV2RsSWpveUxDSnNhVzFwZENJNk16QjkipwQKH1NlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2USpAEKD25leHRfcGFnZV90b2tlbhgBIAEoCUKKAZJBhgEyUFRva2VuIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gRW1wdHkgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMuSjIiZXlKd1lXZGxJam9nTWl3Z0lteGhjM1JmYVdRaU9pQWlkWE55WHpFeU16UTFJbjA9IhJtCgp0b3RhbF9zaXplGAIgASgNQlmSQVYyTlRvdGFsIG51bWJlciBvZiB1c2VycyBtYXRjaGluZyB0aGUgcmVxdWVzdCBjcml0ZXJpYSwgcmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uLkoEMTA0MhJECgV1c2VycxgDIAMoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXJCHJJBGTIXTGlzdCBvZiBtYXRjaGluZyB1c2Vycy4SpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU1Rva2VuIGZvciByZXRyaWV2aW5nIHRoZSBwcmV2aW91cyBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLDBwoKQ3JlYXRlVXNlchKRAQoFZW1haWwYBSABKAlCgQGSQXcyYVByaW1hcnkgZW1haWwgYWRkcmVzcyBmb3IgdGhlIHVzZXIuIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW52aXJvbm1lbnQgYW5kIHZhbGlkIHBlciBSRkMgNTMyMi5KEiJ1c2VyQGV4YW1wbGUuY29tIrpIBHICYAESlgEKC2V4dGVybmFsX2lkGAYgASgJQnySQXkyY1lvdXIgYXBwbGljYXRpb24ncyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBvcmdhbml6YXRpb24sIHVzZWQgdG8gbGluayBTY2FsZWtpdCB3aXRoIHlvdXIgc3lzdGVtLkoSImV4dF8xMjM0NWE2N2I4OWMiSACIAQESkwEKCm1lbWJlcnNoaXAYByABKAsyIy5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVNZW1iZXJzaGlwQlqSQVcyVUxpc3Qgb2Ygb3JnYW5pemF0aW9uIG1lbWJlcnNoaXBzLiBBdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBiYXNlZCBvbiBncm91cCBhc3NpZ25tZW50cy4SkwEKDHVzZXJfcHJvZmlsZRgIIAEoCzIkLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJQcm9maWxlQleSQVQyUlVzZXIncyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgbmFtZSwgYWRkcmVzcywgYW5kIG90aGVyIHByb2ZpbGUgYXR0cmlidXRlcy4S/AEKCG1ldGFkYXRhGAkgAygLMisuc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlVXNlci5NZXRhZGF0YUVudHJ5QrwBkkGfATJkQ3VzdG9tIGtleS12YWx1ZSBwYWlycyBmb3Igc3RvcmluZyBhZGRpdGlvbmFsIHVzZXIgY29udGV4dC4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko3eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgImxvY2F0aW9uIjogIm55Yy1vZmZpY2UifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg4KDF9leHRlcm5hbF9pZEoECAEQAkoECAIQA0oECAMQBEoECAQQBUoECAoQCyKWDwoRQ3JlYXRlVXNlclByb2ZpbGUSUwoKZ2l2ZW5fbmFtZRgCIAEoCUI/kkE0MipVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyNTUgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGP8BElQKC2ZhbWlseV9uYW1lGAMgASgJQj+SQTQyK1VzZXIncyBmYW1pbHkgbmFtZS4gTWF4aW11bSAyNTUgY2hhcmFjdGVycy5KBSJEb2UiukgFcgMY/wEScAoEbmFtZRgEIAEoCUJikkFfMklGdWxsIG5hbWUgaW4gZGlzcGxheSBmb3JtYXQuIFR5cGljYWxseSBjb21iaW5lcyBmaXJzdF9uYW1lIGFuZCBsYXN0X25hbWUuShIiSm9obiBNaWNoYWVsIERvZSIScQoGbG9jYWxlGAUgASgJQmGSQV4yU1VzZXIncyBsb2NhbGl6YXRpb24gcHJlZmVyZW5jZSBpbiBCQ1AtNDcgZm9ybWF0LiBEZWZhdWx0cyB0byBvcmdhbml6YXRpb24gc2V0dGluZ3MuSgciZW4tVVMiEn0KDHBob25lX251bWJlchgHIAEoCUJnkkFkMlJQaG9uZSBudW1iZXIgaW4gRS4xNjQgaW50ZXJuYXRpb25hbCBmb3JtYXQuIFJlcXVpcmVkIGZvciBTTVMtYmFzZWQgYXV0aGVudGljYXRpb24uSg4iKzE0MTU1NTUyNjcxIhKBAgoIbWV0YWRhdGEYCCADKAsyMi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyUHJvZmlsZS5NZXRhZGF0YUVudHJ5QroBkkGdATJeU3lzdGVtLW1hbmFnZWQga2V5LXZhbHVlIHBhaXJzIGZvciBpbnRlcm5hbCB0cmFja2luZy4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko7eyJhY2NvdW50X3N0YXR1cyI6ICJhY3RpdmUiLCAic2lnbnVwX3NvdXJjZSI6ICJtb2JpbGVfYXBwIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpACChFjdXN0b21fYXR0cmlidXRlcxgJIAMoCzI6LnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJQcm9maWxlLkN1c3RvbUF0dHJpYnV0ZXNFbnRyeUK4AZJBmwEyWkN1c3RvbSBhdHRyaWJ1dGVzIGZvciBleHRlbmRlZCB1c2VyIHByb2ZpbGUgZGF0YS4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko9eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgInNlY3VyaXR5X2NsZWFyYW5jZSI6ICJsZXZlbDIifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAISbAoScHJlZmVycmVkX3VzZXJuYW1lGAogASgJQlCSQUUyL1VzZXIncyBwcmVmZXJyZWQgdXNlcm5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuShIiSm9obiBNaWNoYWVsIERvZSK6SAVyAxiABBJxCgdwaWN0dXJlGAsgASgJQluSQVAyLFVSTCB0byB0aGUgdXNlcidzIHByb2ZpbGUgcGljdHVyZSBvciBhdmF0YXIuSiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9hdmF0YXIuanBnIrpIBXIDGIAQSACIAQESOQoGZ2VuZGVyGAwgASgJQiSSQSEyF1VzZXIncyBnZW5kZXIgaWRlbnRpdHkuSgYibWFsZSJIAYgBARKZAQoGZ3JvdXBzGA0gAygJQogBkkFwMlFMaXN0IG9mIGdyb3VwIG5hbWVzIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIEVhY2ggZ3JvdXAgbmFtZSBtdXN0IGJlIDEtMjUwIGNoYXJhY3RlcnNKG1siZW5naW5lZXJpbmciLCAibWFuYWdlcnMiXbpIEpIBDwgAEDIYASIHcgUQARj6ARKJAQoKZmlyc3RfbmFtZRgVIAEoCUJ1GAGSQVkyT1tERVBSRUNBVEVEXSBVc2UgZ2l2ZW5fbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGMgB+tLkkwIJEgdQUkVWSUVXEokBCglsYXN0X25hbWUYFiABKAlCdhgBkkFaMlFbREVQUkVDQVRFRF0gVXNlIGZhbWlseV9uYW1lIGluc3RlYWQuIFVzZXIncyBmYW1pbHkgbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBSJEb2UiukgFcgMYyAH60uSTAgkSB1BSRVZJRVcaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUN1c3RvbUF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9waWN0dXJlQgkKB19nZW5kZXJKBAgBEAJKBAgGEAcivCcKEVVwZGF0ZVVzZXJQcm9maWxlEtoBCgpnaXZlbl9uYW1lGAIgASgJQsABkkG0ATKpAVVwZGF0ZXMgdGhlIHVzZXIncyBnaXZlbiBuYW1lIChmaXJzdCBuYW1lKS4gVXNlIHRoaXMgZmllbGQgdG8gbW9kaWZ5IGhvdyB0aGUgdXNlcidzIGZpcnN0IG5hbWUgYXBwZWFycyBpbiB0aGUgc3lzdGVtIGFuZCB1c2VyIGludGVyZmFjZXMuIE1heGltdW0gMjU1IGNoYXJhY3RlcnMgYWxsb3dlZC5KBiJKb2huIrpIBXIDGP8BSACIAQES2AEKC2ZhbWlseV9uYW1lGAMgASgJQr0BkkGxATKnAVVwZGF0ZXMgdGhlIHVzZXIncyBmYW1pbHkgbmFtZSAobGFzdCBuYW1lIG9yIHN1cm5hbWUpLiBVc2UgdGhpcyBmaWVsZCB0byBtb2RpZnkgaG93IHRoZSB1c2VyJ3MgbGFzdCBuYW1lIGFwcGVhcnMgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBNYXhpbXVtIDI1NSBjaGFyYWN0ZXJzIGFsbG93ZWQuSgUiRG9lIrpIBXIDGP8BSAGIAQESqAIKBG5hbWUYBCABKAlClAKSQZACMoECVXBkYXRlcyB0aGUgdXNlcidzIGNvbXBsZXRlIGRpc3BsYXkgbmFtZS4gVXNlIHRoaXMgZmllbGQgd2hlbiB5b3Ugd2FudCB0byBzZXQgdGhlIGZ1bGwgbmFtZSBhcyBhIHNpbmdsZSBzdHJpbmcgcmF0aGVyIHRoYW4gdXNpbmcgc2VwYXJhdGUgZ2l2ZW4gYW5kIGZhbWlseSBuYW1lcy4gVGhpcyBuYW1lIGFwcGVhcnMgaW4gdXNlciBpbnRlcmZhY2VzLCByZXBvcnRzLCBhbmQgYW55d2hlcmUgYSBmb3JtYXR0ZWQgZGlzcGxheSBuYW1lIGlzIG5lZWRlZC5KCiJKb2huIERvZSJIAogBARKPAwoGbG9jYWxlGAUgASgJQvkCkkH1AjLpAlVwZGF0ZXMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBzZXR0aW5ncyB1c2luZyBCQ1AtNDcgZm9ybWF0IGNvZGVzLiBVc2UgdGhpcyBmaWVsZCB0byBjdXN0b21pemUgdGhlIHVzZXIncyBleHBlcmllbmNlIHdpdGggbG9jYWxpemVkIGNvbnRlbnQsIGRhdGUgZm9ybWF0cywgbnVtYmVyIGZvcm1hdHRpbmcsIGFuZCBVSSBsYW5ndWFnZS4gV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBpbmhlcml0cyB0aGUgb3JnYW5pemF0aW9uJ3MgZGVmYXVsdCBsb2NhbGUgc2V0dGluZ3MuIENvbW1vbiB2YWx1ZXMgaW5jbHVkZSBgZW4tVVNgLCBgZW4tR0JgLCBgZnItRlJgLCBgZGUtREVgLCBhbmQgYGVzLUVTYC5KByJlbi1VUyJIA4gBARKkAwoMcGhvbmVfbnVtYmVyGAcgASgJQogDkkGEAzLxAlVwZGF0ZXMgdGhlIHVzZXIncyBwaG9uZSBudW1iZXIgaW4gRS4xNjQgaW50ZXJuYXRpb25hbCBmb3JtYXQuIFVzZSB0aGlzIGZpZWxkIHRvIGVuYWJsZSBTTVMtYmFzZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcywgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiwgb3IgcGhvbmUtYmFzZWQgYWNjb3VudCByZWNvdmVyeS4gVGhlIHBob25lIG51bWJlciBtdXN0IGluY2x1ZGUgdGhlIGNvdW50cnkgY29kZSBhbmQgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBFLjE2NCBzdGFuZGFyZHMgKGUuZy4sIGArMWAgZm9yIFVTIG51bWJlcnMpLiBUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIHdoZW4gZW5hYmxpbmcgU01TIGF1dGhlbnRpY2F0aW9uIGZlYXR1cmVzLkoOIisxNDE1NTU1MjY3MSJIBIgBARLHBAoIbWV0YWRhdGEYCCADKAsyMi5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyUHJvZmlsZS5NZXRhZGF0YUVudHJ5QoAEkkHjAzKjA1VwZGF0ZXMgc3lzdGVtLW1hbmFnZWQga2V5LXZhbHVlIHBhaXJzIGZvciBpbnRlcm5hbCB0cmFja2luZyBhbmQgb3BlcmF0aW9uYWwgZGF0YS4gVXNlIHRoaXMgZmllbGQgdG8gc3RvcmUgc3lzdGVtLWdlbmVyYXRlZCBtZXRhZGF0YSBsaWtlIGFjY291bnQgc3RhdHVzLCBzaWdudXAgc291cmNlLCBsYXN0IGFjdGl2aXR5IHRyYWNraW5nLCBvciBpbnRlZ3JhdGlvbi1zcGVjaWZpYyBpZGVudGlmaWVycy4gVGhlc2UgZmllbGRzIGFyZSB0eXBpY2FsbHkgbWFuYWdlZCBieSBhdXRvbWF0ZWQgcHJvY2Vzc2VzIHJhdGhlciB0aGFuIGRpcmVjdCB1c2VyIGlucHV0LiBLZXlzIG11c3QgYmUgMy0yNSBjaGFyYWN0ZXJzLCB2YWx1ZXMgbXVzdCBiZSAxLTI1NiBjaGFyYWN0ZXJzLCB3aXRoIGEgbWF4aW11bSBvZiAyMCBrZXktdmFsdWUgcGFpcnMuSjt7ImFjY291bnRfc3RhdHVzIjogImFjdGl2ZSIsICJzaWdudXBfc291cmNlIjogIm1vYmlsZV9hcHAifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIStQUKEWN1c3RvbV9hdHRyaWJ1dGVzGAkgAygLMjouc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclByb2ZpbGUuQ3VzdG9tQXR0cmlidXRlc0VudHJ5Qt0EkkHABDL+A1VwZGF0ZXMgY3VzdG9tIGF0dHJpYnV0ZXMgZm9yIGV4dGVuZGVkIHVzZXIgcHJvZmlsZSBkYXRhIGFuZCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gVXNlIHRoaXMgZmllbGQgdG8gc3RvcmUgYnVzaW5lc3Mtc3BlY2lmaWMgdXNlciBkYXRhIGxpa2UgZGVwYXJ0bWVudCwgam9iIHRpdGxlLCBzZWN1cml0eSBjbGVhcmFuY2VzLCBwcm9qZWN0IGFzc2lnbm1lbnRzLCBvciBhbnkgb3RoZXIgb3JnYW5pemF0aW9uYWwgYXR0cmlidXRlcyB5b3VyIGFwcGxpY2F0aW9uIHJlcXVpcmVzLiBVbmxpa2Ugc3lzdGVtIG1ldGFkYXRhLCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSB0eXBpY2FsbHkgbWFuYWdlZCBieSBhZG1pbmlzdHJhdG9ycyBvciBhcHBsaWNhdGlvbnMgYW5kIGFyZSB2aXNpYmxlIHRvIGVuZCB1c2Vycy4gS2V5cyBtdXN0IGJlIDMtMjUgY2hhcmFjdGVycywgdmFsdWVzIG11c3QgYmUgMS0yNTYgY2hhcmFjdGVycywgd2l0aCBhIG1heGltdW0gb2YgMjAga2V5LXZhbHVlIHBhaXJzLko9eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgInNlY3VyaXR5X2NsZWFyYW5jZSI6ICJsZXZlbDIifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAISfwoKZmlyc3RfbmFtZRgVIAEoCUJmGAGSQVkyT1tERVBSRUNBVEVEXSBVc2UgZ2l2ZW5fbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGMgBSAWIAQESfwoJbGFzdF9uYW1lGBYgASgJQmcYAZJBWjJRW0RFUFJFQ0FURURdIFVzZSBmYW1pbHlfbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZmFtaWx5IG5hbWUuIE1heGltdW0gMjAwIGNoYXJhY3RlcnMuSgUiRG9lIrpIBXIDGMgBSAaIAQEShAMKEnByZWZlcnJlZF91c2VybmFtZRgKIAEoCULiApJB1gIyvwJVcGRhdGVzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHVzZXJuYW1lIGZvciBkaXNwbGF5IGFuZCBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy4gVXNlIHRoaXMgZmllbGQgdG8gc2V0IGEgY3VzdG9tIHVzZXJuYW1lIHRoYXQgdGhlIHVzZXIgcHJlZmVycyB0byBiZSBrbm93biBieSwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIHRoZWlyIGVtYWlsIG9yIGZvcm1hbCBuYW1lLiBUaGlzIHVzZXJuYW1lIGFwcGVhcnMgaW4gdXNlciBpbnRlcmZhY2VzLCBtZW50aW9ucywgYW5kIGluZm9ybWFsIGNvbW11bmljYXRpb25zLiBNYXhpbXVtIDUxMiBjaGFyYWN0ZXJzIGFsbG93ZWQuShIiSm9obiBNaWNoYWVsIERvZSK6SAVyAxiABEgHiAEBEqkDCgdwaWN0dXJlGAsgASgJQpIDkkGGAzLhAlVwZGF0ZXMgdGhlIFVSTCB0byB0aGUgdXNlcidzIHByb2ZpbGUgcGljdHVyZSBvciBhdmF0YXIgaW1hZ2UuIFVzZSB0aGlzIGZpZWxkIHRvIHNldCBvciBjaGFuZ2UgdGhlIHVzZXIncyBwcm9maWxlIHBob3RvIHRoYXQgYXBwZWFycyBpbiB1c2VyIGludGVyZmFjZXMsIGRpcmVjdG9yeSBsaXN0aW5ncywgYW5kIGNvbGxhYm9yYXRpdmUgZmVhdHVyZXMuIFRoZSBVUkwgc2hvdWxkIHBvaW50IHRvIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbWFnZSBmaWxlLiBTdXBwb3J0ZWQgZm9ybWF0cyB0eXBpY2FsbHkgaW5jbHVkZSBKUEVHLCBQTkcsIGFuZCBHSUYuIE1heGltdW0gVVJMIGxlbmd0aCBpcyAyMDQ4IGNoYXJhY3RlcnMuSiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9hdmF0YXIuanBnIrpIBXIDGIAQSAiIAQES9gIKBmdlbmRlchgMIAEoCULgApJB3AIy0QJVcGRhdGVzIHRoZSB1c2VyJ3MgZ2VuZGVyIGlkZW50aXR5IGluZm9ybWF0aW9uLiBVc2UgdGhpcyBmaWVsZCB0byBzdG9yZSB0aGUgdXNlcidzIGdlbmRlciBpZGVudGl0eSBmb3IgcGVyc29uYWxpemF0aW9uLCBjb21wbGlhbmNlLCBvciByZXBvcnRpbmcgcHVycG9zZXMuIFRoaXMgZmllbGQgc3VwcG9ydHMgYW55IHN0cmluZyB2YWx1ZSB0byBhY2NvbW1vZGF0ZSBkaXZlcnNlIGdlbmRlciBpZGVudGl0aWVzIGFuZCBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGFwcHJvcHJpYXRlIHByaXZhY3kgY29uc2lkZXJhdGlvbnMgYWNjb3JkaW5nIHRvIHlvdXIgb3JnYW5pemF0aW9uJ3MgcG9saWNpZXMuSgYibWFsZSJICYgBARLVAwoGZ3JvdXBzGA0gAygJQsQDkkGrAzKLA1VwZGF0ZXMgdGhlIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhlIHVzZXIgYmVsb25ncyB0byB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbi4gVXNlIHRoaXMgZmllbGQgdG8gbWFuYWdlIHRoZSB1c2VyJ3MgZ3JvdXAgbWVtYmVyc2hpcHMgZm9yIHJvbGUtYmFzZWQgYWNjZXNzIGNvbnRyb2wsIHRlYW0gYXNzaWdubWVudHMsIG9yIG9yZ2FuaXphdGlvbmFsIHN0cnVjdHVyZS4gR3JvdXBzIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgcGVybWlzc2lvbiBtYW5hZ2VtZW50IGFuZCBjb2xsYWJvcmF0aXZlIGFjY2Vzcy4gRWFjaCBncm91cCBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgbGlzdCwgMS0yNTAgY2hhcmFjdGVycyBsb25nLCB3aXRoIGEgbWF4aW11bSBvZiA1MCBncm91cHMgcGVyIHVzZXIuShtbImVuZ2luZWVyaW5nIiwgIm1hbmFnZXJzIl26SBKSAQ8IABAyGAEiB3IFEAEY+gEaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUN1c3RvbUF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19naXZlbl9uYW1lQg4KDF9mYW1pbHlfbmFtZUIHCgVfbmFtZUIJCgdfbG9jYWxlQg8KDV9waG9uZV9udW1iZXJCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUIVChNfcHJlZmVycmVkX3VzZXJuYW1lQgoKCF9waWN0dXJlQgkKB19nZW5kZXJKBAgBEAJKBAgGEAcinQcKBkludml0ZRJcCg9vcmdhbml6YXRpb25faWQYASABKAlCQ5JBQDItVGhlIG9yZ2FuaXphdGlvbiB0byB3aGljaCB0aGUgaW52aXRlIGJlbG9uZ3MuSg8ib3JnXzk4NzY1NDMyMSISdwoHdXNlcl9pZBgCIAEoCUJmkkFjMlNVc2VyIElEIHRvIHdob20gdGhlIGludml0ZSBpcyBzZW50LiBNYXkgYmUgZW1wdHkgaWYgdGhlIHVzZXIgaGFzIG5vdCBzaWduZWQgdXAgeWV0LkoMInVzcl8xMjM0NTYiEnEKDWludml0ZXJfZW1haWwYAyABKAlCVZJBUjI7SWRlbnRpZmllciBvZiB0aGUgdXNlciBvciBzeXN0ZW0gdGhhdCBpbml0aWF0ZWQgdGhlIGludml0ZS5KEyJhZG1pbkBleGFtcGxlLmNvbSJIAIgBARJwCgZzdGF0dXMYBCABKAlCYJJBXTJJQ3VycmVudCBzdGF0dXMgb2YgdGhlIGludml0ZSAoZS5nLiwgcGVuZGluZywgYWNjZXB0ZWQsIGV4cGlyZWQsIHJldm9rZWQpLkoQInBlbmRpbmdfaW52aXRlIhJ+CgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJOkkFLMjFUaW1lc3RhbXAgd2hlbiB0aGUgaW52aXRlIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQuShYiMjAyNS0wNy0xMFQwODowMDowMFoiEnIKCmV4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQkKSQT8yJVRoZSB0aW1lIGF0IHdoaWNoIHRoZSBpbnZpdGUgZXhwaXJlcy5KFiIyMDI1LTEyLTMxVDIzOjU5OjU5WiIShQEKCXJlc2VudF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCVpJBUzI5VGltZXN0YW1wIHdoZW4gdGhlIGludml0ZSB3YXMgbGFzdCByZXNlbnQsIGlmIGFwcGxpY2FibGUuShYiMjAyNS0wNy0xNVQwOTozMDowMFoiEkkKDHJlc2VudF9jb3VudBgIIAEoBUIzkkEwMitOdW1iZXIgb2YgdGltZXMgdGhlIGludml0ZSBoYXMgYmVlbiByZXNlbnQuSgEyQhAKDl9pbnZpdGVyX2VtYWlsIo8DChNSZXNlbmRJbnZpdGVSZXF1ZXN0EsMBCg9vcmdhbml6YXRpb25faWQYASABKAlCqQGSQZYBMnxVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3JnYW5pemF0aW9uIGNvbnRhaW5pbmcgdGhlIHBlbmRpbmcgaW52aXRhdGlvbi4gTXVzdCBzdGFydCB3aXRoICdvcmdfJyBhbmQgYmUgMS0zMiBjaGFyYWN0ZXJzIGxvbmcuShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfErEBCgJpZBgCIAEoCUKkAZJBkQEyd1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRCBvZiB0aGUgdXNlciB3aG8gaGFzIGEgcGVuZGluZyBpbnZpdGF0aW9uLiBNdXN0IHN0YXJ0IHdpdGggJ3Vzcl8nIGFuZCBiZSAxOS0yNSBjaGFyYWN0ZXJzIGxvbmcuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQExgZOgR1c3JfItkCChRSZXNlbmRJbnZpdGVSZXNwb25zZRLAAgoGaW52aXRlGAEgASgLMhkuc2NhbGVraXQudjEudXNlcnMuSW52aXRlQpQCkkGQAjKBAVVwZGF0ZWQgaW52aXRhdGlvbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzZW50IGludml0YXRpb24gZGV0YWlscywgaW5jbHVkaW5nIG5ldyBleHBpcmF0aW9uIHRpbWUgYW5kIGluY3JlbWVudGVkIHJlc2VuZCBjb3VudGVyLkqJAXsib3JnYW5pemF0aW9uX2lkIjogIm9yZ18xMjMiLCAidXNlcl9pZCI6ICJ1c3JfNDU2IiwgInN0YXR1cyI6ICJwZW5kaW5nX2ludml0ZSIsICJleHBpcmVzX2F0IjogIjIwMjUtMTItMzFUMjM6NTk6NTlaIiwgInJlc2VudF9jb3VudCI6IDJ9ItgBChRMaXN0VXNlclJvbGVzUmVxdWVzdBJnCg9vcmdhbml6YXRpb25faWQYASABKAlCTpJBQDImVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBvcmdhbml6YXRpb25KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAhyBjoEb3JnXxJXCgd1c2VyX2lkGAIgASgJQkaSQTgyHlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlckoWInVzcl8xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgR1c3JfImoKFUxpc3RVc2VyUm9sZXNSZXNwb25zZRJRCgVyb2xlcxgBIAMoCzIZLnNjYWxla2l0LnYxLmNvbW1vbnMuUm9sZUInkkEkMiJMaXN0IG9mIHJvbGVzIGFzc2lnbmVkIHRvIHRoZSB1c2VyIr8CChZBc3NpZ25Vc2VyUm9sZXNSZXF1ZXN0EmcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJOkkFAMiZVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG9yZ2FuaXphdGlvbkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgRvcmdfElcKB3VzZXJfaWQYAiABKAlCRpJBODIeVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VyShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgIcgY6BHVzcl8SYwoFcm9sZXMYAyADKAsyJC5zY2FsZWtpdC52MS51c2Vycy5Bc3NpZ25Sb2xlUmVxdWVzdEIukkElMiNMaXN0IG9mIHJvbGVzIHRvIGFzc2lnbiB0byB0aGUgdXNlcrpIA8gBASKkAQoRQXNzaWduUm9sZVJlcXVlc3QSSgoCaWQYASABKAlCPhgBkkE5Mh5VbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvbGVKFyJyb2xlXzEyMzRhYmNkNTY3OGVmZ2giEkMKCXJvbGVfbmFtZRgCIAEoCUIwkkEkMhhVbmlxdWUgbmFtZSBmb3IgdGhlIHJvbGVKCCJ2aWV3ZXIiukgGcgQQABhkInoKF0Fzc2lnblVzZXJSb2xlc1Jlc3BvbnNlEl8KBXJvbGVzGAEgAygLMhkuc2NhbGVraXQudjEuY29tbW9ucy5Sb2xlQjWSQTIyMExpc3Qgb2YgYWxsIHJvbGVzIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgdXNlciK0AgoVUmVtb3ZlVXNlclJvbGVSZXF1ZXN0EmcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJOkkFAMiZVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG9yZ2FuaXphdGlvbkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgRvcmdfElcKB3VzZXJfaWQYAiABKAlCRpJBODIeVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VyShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgIcgY6BHVzcl8SWQoJcm9sZV9uYW1lGAMgASgJQkaSQUMyKFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm9sZSB0byByZW1vdmVKFyJyb2xlXzEyMzRhYmNkNTY3OGVmZ2giIt4BChpMaXN0VXNlclBlcm1pc3Npb25zUmVxdWVzdBJnCg9vcmdhbml6YXRpb25faWQYASABKAlCTpJBQDImVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBvcmdhbml6YXRpb25KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAhyBjoEb3JnXxJXCgd1c2VyX2lkGAIgASgJQkaSQTgyHlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlckoWInVzcl8xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgR1c3JfIvoCCgpQZXJtaXNzaW9uElEKAmlkGAEgASgJQkWSQT8yJFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGVybWlzc2lvbkoXInBlcm1fMTIzNGFiY2Q1Njc4ZWZnaCLgQQMSTAoEbmFtZRgCIAEoCUI+kkE7MilVbmlxdWUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgcGVybWlzc2lvbkoOInVzZXJzOmNyZWF0ZSISaAoLZGVzY3JpcHRpb24YAyABKAlCU5JBUDIpRGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgcGVybWlzc2lvbiBhbGxvd3NKIyJBbGxvd3MgY3JlYXRpbmcgbmV3IHVzZXIgYWNjb3VudHMiEmEKBHRhZ3MYBCADKAlCU5JBQTIhVGFncyBmb3IgY2F0ZWdvcml6aW5nIHBlcm1pc3Npb25zShxbInVzZXItbWFuYWdlbWVudCIsICJhZG1pbiJd+tLkkwIJEgdQUkVWSUVXIi4KFkdldFN1cHBvcnRIYXNoUmVzcG9uc2USFAoMc3VwcG9ydF9oYXNoGAEgASgJIoIBChtMaXN0VXNlclBlcm1pc3Npb25zUmVzcG9uc2USYwoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS51c2Vycy5QZXJtaXNzaW9uQi+SQSwyKkxpc3Qgb2YgcGVybWlzc2lvbnMgdGhlIHVzZXIgaGFzIGFjY2VzcyB0bzKXXQoLVXNlclNlcnZpY2USuAMKB0dldFVzZXISIS5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVxdWVzdBoiLnNjYWxla2l0LnYxLnVzZXJzLkdldFVzZXJSZXNwb25zZSLlApJBwQIKBVVzZXJzEghHZXQgdXNlchqOAVJldHJpZXZlcyBhbGwgZGV0YWlscyBmb3IgYSB1c2VyIGJ5IHN5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRCBvciBleHRlcm5hbCBJRC4gVGhlIHJlc3BvbnNlIGluY2x1ZGVzIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwcyBhbmQgdXNlciBtZXRhZGF0YS5KnAEKAzIwMBKUAQpqVXNlciBkZXRhaWxzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgZnVsbCB1c2VyIG9iamVjdCB3aXRoIHN5c3RlbS1nZW5lcmF0ZWQgZmllbGRzIGFuZCB0aW1lc3RhbXBzLhImCiQaIi5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVzcG9uc2WCtRgCGFSC0+STAhQSEi9hcGkvdjEvdXNlcnMve2lkfRK6AwoOR2V0Q3VycmVudFVzZXISKC5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlcXVlc3QaKS5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlc3BvbnNlItICkkGfAgoFVXNlcnMSFkdldCBhdXRoZW50aWNhdGVkIHVzZXIangFSZXRyaWV2ZXMgZGV0YWlscyBmb3IgdGhlIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkIHVzZXIuIFJldHVybnMgdGhlIHNhbWUgdXNlciBvYmplY3QgYXMgR2V0VXNlciBidXQgdXNlcyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgSUQgZnJvbSB0aGUgc2Vzc2lvbiBjb250ZXh0LkpdCgMyMDASVgosQ3VycmVudCB1c2VyIGRldGFpbHMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4SJgokGiIuc2NhbGVraXQudjEudXNlcnMuR2V0VXNlclJlc3BvbnNlgrUYAhgQ+tLkkwIJEgdQUkVWSUVXgtPkkwIUEhIvYXBpL3YxL3VzZXJzOnRoaXMS4QIKDkdldFN1cHBvcnRIYXNoEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gikuc2NhbGVraXQudjEudXNlcnMuR2V0U3VwcG9ydEhhc2hSZXNwb25zZSKLApJB3wEKBVVzZXJzEhBHZXQgc3VwcG9ydCBoYXNoGmZSZXRyaWV2ZXMgdGhlIHN1cHBvcnQgZW1haWwgaGFzaCBmb3IgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIsIHVzZWQgZm9yIHRoZSBTY2FsZWtpdCBzdXBwb3J0IHN5c3RlbS5KXAoDMjAwElUKJFN1cHBvcnQgaGFzaCByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LhItCisaKS5zY2FsZWtpdC52MS51c2Vycy5HZXRTdXBwb3J0SGFzaFJlc3BvbnNlgrUYAhhQgtPkkwIcEhovYXBpL3YxL3VzZXJzL3N1cHBvcnQtaGFzaBKgBAoJTGlzdFVzZXJzEiMuc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJzUmVxdWVzdBokLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2Vyc1Jlc3BvbnNlIscDkkGoAwoFVXNlcnMSHUxpc3QgYWxsIHVzZXJzIGluIGVudmlyb25tZW50GrwCUmV0cmlldmVzIGEgcGFnaW5hdGVkIGxpc3Qgb2YgYWxsIHVzZXJzIGFjcm9zcyB5b3VyIGVudGlyZSBlbnZpcm9ubWVudC4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgdXNlcnMgcmVnYXJkbGVzcyBvZiB0aGVpciBvcmdhbml6YXRpb24gbWVtYmVyc2hpcHMuIFRoaXMgaXMgdXNlZnVsIGZvciBhZG1pbmlzdHJhdGl2ZSBwdXJwb3NlcywgdXNlciBhdWRpdHMsIG9yIHdoZW4geW91IG5lZWQgdG8gc2VlIGFsbCB1c2VycyBpbiB5b3VyIFNjYWxla2l0IGVudmlyb25tZW50LiBTdXBwb3J0cyBwYWdpbmF0aW9uIGZvciBsYXJnZSB1c2VyIGJhc2VzLkpBCgMyMDASOgoOTGlzdCBvZiB1c2Vycy4SKAomGiQuc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJzUmVzcG9uc2WCtRgCGESC0+STAg8SDS9hcGkvdjEvdXNlcnMSywMKC1NlYXJjaFVzZXJzEiUuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXF1ZXN0GiYuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXNwb25zZSLsApJBtwIKBVVzZXJzEgxTZWFyY2ggdXNlcnMahQFTZWFyY2hlcyBmb3IgdXNlcnMgaW4gdGhlIGVudmlyb25tZW50IGJ5IGVtYWlsLCB1c2VyIElELCBvciBleHRlcm5hbCBJRC4gUmV0dXJucyBhbGwgdXNlcnMgdGhhdCBtYXRjaCB0aGUgcXVlcnkuIFN1cHBvcnRzIHBhZ2luYXRpb24uSpcBCgMyMDASjwEKYVJldHVybnMgYSBsaXN0IG9mIG1hdGNoaW5nIHVzZXJzIGFuZCBhIHBhZ2UgdG9rZW4gZm9yIHBhZ2luYXRpb24gaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgcmVzdWx0cy4SKgooGiYuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXNwb25zZYK1GAIYRPrS5JMCCRIHUFJFVklFV4LT5JMCFhIUL2FwaS92MS91c2VyczpzZWFyY2gS4AQKF1NlYXJjaE9yZ2FuaXphdGlvblVzZXJzEjEuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoT3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0GjIuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSLdA5JBiAMKBVVzZXJzEhlTZWFyY2ggb3JnYW5pemF0aW9uIHVzZXJzGqUBU2VhcmNoZXMgZm9yIHVzZXJzIHdpdGhpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiBieSBlbWFpbCwgdXNlciBJRCwgb3IgZXh0ZXJuYWwgSUQuIFJldHVybnMgYWxsIHVzZXJzIGluIHRoZSBvcmdhbml6YXRpb24gdGhhdCBtYXRjaCB0aGUgcXVlcnkuIFN1cHBvcnRzIHBhZ2luYXRpb24uSrsBCgMyMDASswEKeVJldHVybnMgYSBsaXN0IG9mIG1hdGNoaW5nIHVzZXJzIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uIGFuZCBhIHBhZ2UgdG9rZW4gZm9yIHBhZ2luYXRpb24gaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgcmVzdWx0cy4SNgo0GjIuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZYK1GAIYRPrS5JMCCRIHUFJFVklFV4LT5JMCNhI0L2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzOnNlYXJjaBKWBQoKVXBkYXRlVXNlchIkLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZVVzZXJSZXF1ZXN0GiUuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclJlc3BvbnNlIroEkkGQBAoFVXNlcnMSF1VwZGF0ZSB1c2VyIGluZm9ybWF0aW9uGuECTW9kaWZpZXMgdXNlciBhY2NvdW50IGluZm9ybWF0aW9uIGluY2x1ZGluZyBwcm9maWxlIGRldGFpbHMsIG1ldGFkYXRhLCBhbmQgZXh0ZXJuYWwgSUQuIFVzZSB0aGlzIGVuZHBvaW50IHRvIHVwZGF0ZSBhIHVzZXIncyBwZXJzb25hbCBpbmZvcm1hdGlvbiwgY29udGFjdCBkZXRhaWxzLCBvciBjdXN0b20gbWV0YWRhdGEuIFlvdSBjYW4gdXBkYXRlIHRoZSB1c2VyJ3MgcHJvZmlsZSwgcGhvbmUgbnVtYmVyLCBhbmQgbWV0YWRhdGEgZmllbGRzLiBOb3RlIHRoYXQgZmllbGRzIGxpa2UgdXNlciBJRCwgZW1haWwgYWRkcmVzcywgZW52aXJvbm1lbnQgSUQsIGFuZCBjcmVhdGlvbiB0aW1lIGNhbm5vdCBiZSBtb2RpZmllZC5KiQEKAzIwMBKBAQpUVXNlciB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgbW9kaWZpZWQgdXNlciBvYmplY3Qgd2l0aCB1cGRhdGVkIHRpbWVzdGFtcHMuEikKJxolLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZVVzZXJSZXNwb25zZYK1GAIYVILT5JMCGjoEdXNlcjISL2FwaS92MS91c2Vycy97aWR9Ev0DCgpEZWxldGVVc2VyEiQuc2NhbGVraXQudjEudXNlcnMuRGVsZXRlVXNlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkisAOSQYwDCgVVc2VycxIXRGVsZXRlIHVzZXIgcGVybWFuZW50bHkasAJQZXJtYW5lbnRseSByZW1vdmVzIGEgdXNlciBmcm9tIHlvdXIgZW52aXJvbm1lbnQgYW5kIGRlbGV0ZXMgYWxsIGFzc29jaWF0ZWQgZGF0YS4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3UgbmVlZCB0byBjb21wbGV0ZWx5IHJlbW92ZSBhIHVzZXIgYWNjb3VudC4gVGhpcyBhY3Rpb24gZGVsZXRlcyB0aGUgdXNlcidzIHByb2ZpbGUsIG1lbWJlcnNoaXBzLCBhbmQgYWxsIHJlbGF0ZWQgZGF0YSBhY3Jvc3MgYWxsIG9yZ2FuaXphdGlvbnMuIFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUsIHNvIHVzZSB3aXRoIGNhdXRpb24uSjcKAzIwMBIwCi5Vc2VyIHN1Y2Nlc3NmdWxseSBkZWxldGVkLiBObyBjb250ZW50IHJldHVybmVkgrUYAhhEgtPkkwIUKhIvYXBpL3YxL3VzZXJzL3tpZH0SxAUKEENyZWF0ZU1lbWJlcnNoaXASKi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVNZW1iZXJzaGlwUmVxdWVzdBorLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXBSZXNwb25zZSLWBJJB3gMKBVVzZXJzEiFBZGQgZXhpc3RpbmcgdXNlciB0byBvcmdhbml6YXRpb24alQJBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gb3JnYW5pemF0aW9uIGFuZCBhc3NpZ25zIHRoZW0gc3BlY2lmaWMgcm9sZXMgYW5kIHBlcm1pc3Npb25zLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIHlvdSB3YW50IHRvIGdyYW50IGFuIGV4aXN0aW5nIHVzZXIgYWNjZXNzIHRvIGEgcGFydGljdWxhciBvcmdhbml6YXRpb24uIFlvdSBjYW4gc3BlY2lmeSByb2xlcywgbWV0YWRhdGEsIGFuZCBvdGhlciBtZW1iZXJzaGlwIGRldGFpbHMgZHVyaW5nIHRoZSBpbnZpdGF0aW9uIHByb2Nlc3MuSpkBCgMyMDESkQEKXlVzZXIgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoZSBvcmdhbml6YXRpb24uIFJldHVybnMgZGV0YWlscyBvZiB0aGUgdXBkYXRlZCBtZW1iZXJzaGlwIGRldGFpbHMSLwotGisuc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlTWVtYmVyc2hpcFJlc3BvbnNlgrUYHgoab3JnYW5pemF0aW9uc191c2Vyc19pbnZpdGUYVILT5JMCTDoKbWVtYmVyc2hpcCI+L2FwaS92MS9tZW1iZXJzaGlwcy9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3tpZH0SmQQKEERlbGV0ZU1lbWJlcnNoaXASKi5zY2FsZWtpdC52MS51c2Vycy5EZWxldGVNZW1iZXJzaGlwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSLAA5JB1AIKBVVzZXJzEidEZWxldGUgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXAgZm9yIHVzZXIa3AFSZW1vdmVzIGEgdXNlciBmcm9tIGFuIG9yZ2FuaXphdGlvbiBieSB1c2VyIElEIG9yIGV4dGVybmFsIElELiBJZiB0aGUgdXNlciBoYXMgbm8gbWVtYmVyc2hpcHMgbGVmdCBhbmQgY2FzY2FkZSBpcyB0cnVlLCB0aGUgdXNlciBpcyBhbHNvIGRlbGV0ZWQuIFRoaXMgYWN0aW9uIGlzIGlycmV2ZXJzaWJsZSBhbmQgbWF5IGFsc28gcmVtb3ZlIHJlbGF0ZWQgZ3JvdXAgbWVtYmVyc2hpcHMuSkMKAzIwMBI8CjpVc2VyIHN1Y2Nlc3NmdWxseSBtYXJrZWQgZm9yIGRlbGV0aW9uLiBObyBjb250ZW50IHJldHVybmVkgrUYHgoab3JnYW5pemF0aW9uc191c2Vyc19yZW1vdmUYVILT5JMCQCo+L2FwaS92MS9tZW1iZXJzaGlwcy9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3tpZH0SngQKEFVwZGF0ZU1lbWJlcnNoaXASKi5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVNZW1iZXJzaGlwUmVxdWVzdBorLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZU1lbWJlcnNoaXBSZXNwb25zZSKwA5JBswIKBVVzZXJzEidVcGRhdGUgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXAgZm9yIHVzZXIagwFVcGRhdGVzIGEgdXNlcidzIG1lbWJlcnNoaXAgZGV0YWlscyB3aXRoaW4gYW4gb3JnYW5pemF0aW9uIGJ5IHVzZXIgSUQgb3IgZXh0ZXJuYWwgSUQuIFlvdSBjYW4gdXBkYXRlIHJvbGVzIGFuZCBtZW1iZXJzaGlwIG1ldGFkYXRhLkp7CgMyMDASdApBTWVtYmVyc2hpcCB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgdXBkYXRlZCB1c2VyIG9iamVjdC4SLwotGisuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlTWVtYmVyc2hpcFJlc3BvbnNlgrUYIwofb3JnYW5pemF0aW9uc191c2Vyc19yb2xlX3VwZGF0ZRhUgtPkkwJMOgptZW1iZXJzaGlwMj4vYXBpL3YxL21lbWJlcnNoaXBzL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve2lkfRLIBgoXQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXASMS5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyQW5kTWVtYmVyc2hpcFJlcXVlc3QaMi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyQW5kTWVtYmVyc2hpcFJlc3BvbnNlIsUFkkHkBAoFVXNlcnMSH0NyZWF0ZSBuZXcgdXNlciBpbiBvcmdhbml6YXRpb24agwNDcmVhdGVzIGEgbmV3IHVzZXIgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHkgYWRkcyB0aGVtIHRvIHRoZSBzcGVjaWZpZWQgb3JnYW5pemF0aW9uLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHVzZXIgYW5kIGdyYW50IHRoZW0gYWNjZXNzIHRvIGFuIG9yZ2FuaXphdGlvbiBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFlvdSBjYW4gcHJvdmlkZSB1c2VyIHByb2ZpbGUgaW5mb3JtYXRpb24sIGFzc2lnbiByb2xlcywgYW5kIGNvbmZpZ3VyZSBtZW1iZXJzaGlwIG1ldGFkYXRhLiBUaGUgdXNlciByZWNlaXZlcyBhbiBhY3RpdmF0aW9uIGVtYWlsIHVubGVzcyB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQgaW4gdGhlIG9yZ2FuaXphdGlvbiBzZXR0aW5ncy5KswEKAzIwMRKrAQpxVXNlciBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4gUmV0dXJucyB0aGUgY3JlYXRlZCB1c2VyIG9iamVjdCwgaW5jbHVkaW5nIHN5c3RlbS1nZW5lcmF0ZWQgaWRlbnRpZmllcnMgYW5kIHRpbWVzdGFtcHMSNgo0GjIuc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXBSZXNwb25zZYK1GB4KGm9yZ2FuaXphdGlvbnNfdXNlcnNfaW52aXRlGFSC0+STAjU6BHVzZXIiLS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2VycxL9BAoVTGlzdE9yZ2FuaXphdGlvblVzZXJzEi8uc2NhbGVraXQudjEudXNlcnMuTGlzdE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBowLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlIoAEkkGnAwoFVXNlcnMSF0xpc3Qgb3JnYW5pemF0aW9uIHVzZXJzGocCUmV0cmlldmVzIGEgcGFnaW5hdGVkIGxpc3Qgb2YgYWxsIHVzZXJzIHdobyBhcmUgbWVtYmVycyBvZiB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbi4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIG9yZ2FuaXphdGlvbiwgaW5jbHVkaW5nIHRoZWlyIHJvbGVzLCBtZXRhZGF0YSwgYW5kIG1lbWJlcnNoaXAgZGV0YWlscy4gU3VwcG9ydHMgcGFnaW5hdGlvbiBmb3IgbGFyZ2UgdXNlciBsaXN0cy5KewoDMjAwEnQKPFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgdGhlIGxpc3Qgb2YgdXNlcnMgaW4gdGhlIG9yZ2FuaXphdGlvbhI0CjIaMC5zY2FsZWtpdC52MS51c2Vycy5MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZYK1GBwKGG9yZ2FuaXphdGlvbnNfdXNlcnNfcmVhZBhUgtPkkwIvEi0vYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMSrhAKDFJlc2VuZEludml0ZRImLnNjYWxla2l0LnYxLnVzZXJzLlJlc2VuZEludml0ZVJlcXVlc3QaJy5zY2FsZWtpdC52MS51c2Vycy5SZXNlbmRJbnZpdGVSZXNwb25zZSLMD5JB2g4KBVVzZXJzEhxSZXNlbmQgdXNlciBpbnZpdGF0aW9uIGVtYWlsGuEEUmVzZW5kcyBhbiBpbnZpdGF0aW9uIGVtYWlsIHRvIGEgdXNlciB3aG8gaGFzIGEgcGVuZGluZyBvciBleHBpcmVkIGludml0YXRpb24gaW4gdGhlIHNwZWNpZmllZCBvcmdhbml6YXRpb24uIElmIHRoZSBpbnZpdGF0aW9uIGhhcyBleHBpcmVkLCBhIG5ldyBpbnZpdGF0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCBzZW50LiBJZiB0aGUgaW52aXRhdGlvbiBpcyBzdGlsbCB2YWxpZCwgYSByZW1pbmRlciBlbWFpbCB3aWxsIGJlIHNlbnQgaW5zdGVhZC4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiBhIHVzZXIgaGFzbid0IHJlc3BvbmRlZCB0byB0aGVpciBpbml0aWFsIGludml0YXRpb24gYW5kIHlvdSBuZWVkIHRvIHNlbmQgdGhlbSBhIHJlbWluZGVyIG9yIHdoZW4gdGhlIG9yaWdpbmFsIGludml0YXRpb24gaGFzIGV4cGlyZWQuIFRoZSBpbnZpdGF0aW9uIGVtYWlsIGluY2x1ZGVzIGEgc2VjdXJlIG1hZ2ljIGxpbmsgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gY29tcGxldGUgdGhlaXIgYWNjb3VudCBzZXR1cCBhbmQgam9pbiB0aGUgb3JnYW5pemF0aW9uLiBFYWNoIHJlc2VuZCBvcGVyYXRpb24gaW5jcmVtZW50cyB0aGUgcmVzZW50IGNvdW50ZXIuSqcCCgMyMDASnwIK7wFTdWNjZXNzZnVsbHkgcmVzZW50IHRoZSBpbnZpdGF0aW9uIGVtYWlsLiBSZXR1cm5zIHRoZSB1cGRhdGVkIGludml0YXRpb24gb2JqZWN0IHdpdGggb3JnYW5pemF0aW9uIElELCB1c2VyIElELCBtZW1iZXJzaGlwIHN0YXR1cywgdGltZXN0YW1wcywgYW5kIHJlc2VudCBjb3VudC4gSWYgZXhwaXJlZCwgYSBuZXcgaW52aXRhdGlvbiBpcyBjcmVhdGVkOyBvdGhlcndpc2UsIHRoZSBleGlzdGluZyBvbmUgaXMgcmVzZW50LhIrCikaJy5zY2FsZWtpdC52MS51c2Vycy5SZXNlbmRJbnZpdGVSZXNwb25zZUqPAgoDNDAwEocCCt0BSW52YWxpZCByZXF1ZXN0IOKAlCBjb21tb24gY2F1c2VzIGluY2x1ZGUgdXNlciBJRCBvciBvcmdhbml6YXRpb24gSUQgaXMgaW52YWxpZCwgZnVsbC1zdGFjayBhdXRoZW50aWNhdGlvbiBpcyBkaXNhYmxlZCwgdXNlciBwcm9maWxlIGlzIG1pc3NpbmcsIGludml0ZSBhbHJlYWR5IGFjY2VwdGVkLCBvciBtaXNzaW5nIGV4cGlyeSB0aW1lIGluIHVzZXIgbWFuYWdlbWVudCBzZXR0aW5ncy4SJQojGiEuc2NhbGVraXQudjEuZXJyZGV0YWlscy5FcnJvckluZm9KnQIKAzQwNBKVAgrrAVJlc291cmNlIG5vdCBmb3VuZCDigJQgdGhlIHNwZWNpZmllZCB1c2VyLCBvcmdhbml6YXRpb24sIG1lbWJlcnNoaXAsIG9yIGludml0YXRpb24gY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgZW52aXJvbm1lbnQuIFZlcmlmeSB0aGF0IGFsbCBJRHMgYXJlIGNvcnJlY3QgYW5kIHRoYXQgdGhlIHJlc291cmNlcyBleGlzdCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXNlbmQgYW4gaW52aXRhdGlvbi4SJQojGiEuc2NhbGVraXQudjEuZXJyZGV0YWlscy5FcnJvckluZm9K8gIKAzUwMBLqAgrAAkludGVybmFsIHNlcnZlciBlcnJvciDigJQgYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBpbnZpdGF0aW9uIHJlc2VuZCByZXF1ZXN0LiBUaGlzIG1heSBiZSBkdWUgdG8gZGF0YWJhc2UgY29ubmVjdGl2aXR5IGlzc3VlcywgcHJvYmxlbXMgZ2VuZXJhdGluZyB0aGUgc2VjdXJlIG1hZ2ljIGxpbmssIGVtYWlsIGRlbGl2ZXJ5IHNlcnZpY2UgZmFpbHVyZXMsIG9yIHRyYW5zYWN0aW9uIGVycm9ycyBkdXJpbmcgaW52aXRhdGlvbiBwcm9jZXNzaW5nLiBDb250YWN0IHN1cHBvcnQgaWYgdGhlIHByb2JsZW0gcGVyc2lzdHMuEiUKIxohLnNjYWxla2l0LnYxLmVycmRldGFpbHMuRXJyb3JJbmZvgrUYHgoab3JnYW5pemF0aW9uc191c2Vyc19pbnZpdGUYVILT5JMCRjoBKjJBL2FwaS92MS9pbnZpdGVzL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve2lkfS9yZXNlbmQS3wMKDUxpc3RVc2VyUm9sZXMSJy5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclJvbGVzUmVxdWVzdBooLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUm9sZXNSZXNwb25zZSL6ApJBqwIKBVVzZXJzEg9MaXN0IHVzZXIgcm9sZXMamgFSZXRyaWV2ZXMgYWxsIHJvbGVzIGFzc2lnbmVkIHRvIGEgdXNlciB3aXRoaW4gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24uIFRoaXMgaW5jbHVkZXMgYm90aCBkaXJlY3Qgcm9sZSBhc3NpZ25tZW50cyBhbmQgaW5oZXJpdGVkIHJvbGVzIGZyb20gcm9sZSBoaWVyYXJjaHkuSnQKAzIwMBJtCj1TdWNjZXNzZnVsbHkgcmV0cmlldmVkIHRoZSBsaXN0IG9mIHJvbGVzIGFzc2lnbmVkIHRvIHRoZSB1c2VyEiwKKhooLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUm9sZXNSZXNwb25zZYK1GAIYRILT5JMCPxI9L2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3t1c2VyX2lkfS9yb2xlcxKDBAoPQXNzaWduVXNlclJvbGVzEikuc2NhbGVraXQudjEudXNlcnMuQXNzaWduVXNlclJvbGVzUmVxdWVzdBoqLnNjYWxla2l0LnYxLnVzZXJzLkFzc2lnblVzZXJSb2xlc1Jlc3BvbnNlIpgDkkGSAgoFVXNlcnMSFEFzc2lnbiByb2xlcyB0byB1c2VyGpABQXNzaWducyBvbmUgb3IgbW9yZSByb2xlcyB0byBhIHVzZXIgd2l0aGluIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uLiBUaGlzIG9wZXJhdGlvbiBhZGRzIHRvIGV4aXN0aW5nIHJvbGUgYXNzaWdubWVudHMgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIHRoZW0uSmAKAzIwMBJZCidTdWNjZXNzZnVsbHkgYXNzaWduZWQgcm9sZXMgdG8gdGhlIHVzZXISLgosGiouc2NhbGVraXQudjEudXNlcnMuQXNzaWduVXNlclJvbGVzUmVzcG9uc2WCtRgjCh9vcmdhbml6YXRpb25zX3VzZXJzX3JvbGVfdXBkYXRlGFT60uSTAgkSB1BSRVZJRVeC0+STAkY6BXJvbGVzIj0vYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve3VzZXJfaWR9L3JvbGVzEskDCg5SZW1vdmVVc2VyUm9sZRIoLnNjYWxla2l0LnYxLnVzZXJzLlJlbW92ZVVzZXJSb2xlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSL0ApJB6QEKBVVzZXJzEhVSZW1vdmUgcm9sZSBmcm9tIHVzZXIamgFSZW1vdmVzIGEgc3BlY2lmaWMgcm9sZSBhc3NpZ25tZW50IGZyb20gYSB1c2VyIHdpdGhpbiBhbiBvcmdhbml6YXRpb24uIFRoaXMgb25seSByZW1vdmVzIGRpcmVjdCByb2xlIGFzc2lnbm1lbnRzLCBub3QgaW5oZXJpdGVkIHJvbGVzIGZyb20gcm9sZSBoaWVyYXJjaHkuSiwKAzIwMBIlCiNSb2xlIHN1Y2Nlc3NmdWxseSByZW1vdmVkIGZyb20gdXNlcoK1GCMKH29yZ2FuaXphdGlvbnNfdXNlcnNfcm9sZV91cGRhdGUYVPrS5JMCCRIHUFJFVklFV4LT5JMCSypJL2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3t1c2VyX2lkfS9yb2xlcy97cm9sZV9uYW1lfRKbBAoTTGlzdFVzZXJQZXJtaXNzaW9ucxItLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUGVybWlzc2lvbnNSZXF1ZXN0Gi4uc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJQZXJtaXNzaW9uc1Jlc3BvbnNlIqQDkkHPAgoFVXNlcnMSFUxpc3QgdXNlciBwZXJtaXNzaW9ucxq0AVJldHJpZXZlcyBhbGwgcGVybWlzc2lvbnMgYSB1c2VyIGhhcyBhY2Nlc3MgdG8gd2l0aGluIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIGZyb20gZGlyZWN0IHJvbGUgYXNzaWdubWVudHMgYW5kIGluaGVyaXRlZCBwZXJtaXNzaW9ucyBmcm9tIHJvbGUgaGllcmFyY2h5Lkp4CgMyMDAScQo7U3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCB0aGUgbGlzdCBvZiBwZXJtaXNzaW9ucyBmb3IgdGhlIHVzZXISMgowGi4uc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJQZXJtaXNzaW9uc1Jlc3BvbnNlgrUYAhhEgtPkkwJFEkMvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve3VzZXJfaWR9L3Blcm1pc3Npb25zGuwDkkHoAwoFVXNlcnMS3gNDb21wcmVoZW5zaXZlIHVzZXIgbWFuYWdlbWVudCBvcGVyYXRpb25zIGluY2x1ZGluZyB1c2VyIGxpZmVjeWNsZSwgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXBzLCBhbmQgaW52aXRhdGlvbiB3b3JrZmxvd3MuIFRoaXMgc2VydmljZSBwcm92aWRlcyBlbmRwb2ludHMgZm9yIGNyZWF0aW5nLCByZXRyaWV2aW5nLCB1cGRhdGluZywgYW5kIGRlbGV0aW5nIHVzZXIgYWNjb3VudHMgYWNyb3NzIHlvdXIgU2NhbGVraXQgZW52aXJvbm1lbnQuIEl0IHN1cHBvcnRzIGJvdGggaW5kaXZpZHVhbCB1c2VyIG9wZXJhdGlvbnMgYW5kIGJ1bGsgb3BlcmF0aW9ucyBmb3IgdXNlciBhZG1pbmlzdHJhdGlvbiwgaW5jbHVkaW5nIHVzZXIgc2VhcmNoLCBwYWdpbmF0aW9uLCBhbmQgbWV0YWRhdGEgbWFuYWdlbWVudC4gVGhlIHNlcnZpY2UgYWxzbyBoYW5kbGVzIHVzZXIgaW52aXRhdGlvbnMgYW5kIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwIG1hbmFnZW1lbnQuQjFaL2dpdGh1Yi5jb20vc2NhbGVraXQtaW5jL3NjYWxla2l0L3BrZy9ncnBjL3VzZXJzYgZwcm90bzM", [validate_pb_1.file_buf_validate_validate, annotations_pb_1.file_google_api_annotations, field_behavior_pb_1.file_google_api_field_behavior, visibility_pb_1.file_google_api_visibility, wkt_1.file_google_protobuf_empty, wkt_1.file_google_protobuf_timestamp, annotations_pb_2.file_protoc_gen_openapiv2_options_annotations, commons_pb_1.file_scalekit_v1_commons_commons, options_pb_1.file_scalekit_v1_options_options]);
|
|
19
|
+
exports.file_scalekit_v1_users_users = (0, codegenv2_1.fileDesc)("Ch1zY2FsZWtpdC92MS91c2Vycy91c2Vycy5wcm90bxIRc2NhbGVraXQudjEudXNlcnMi9AwKBFVzZXIScQoCaWQYASABKAlCZZJBYjJIVW5pcXVlIHN5c3RlbS1nZW5lcmF0ZWQgaWRlbnRpZmllciBmb3IgdGhlIHVzZXIuIEltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giEqABCg5lbnZpcm9ubWVudF9pZBgCIAEoCUKHAZJBcjJYSWRlbnRpZmllciBvZiB0aGUgZW52aXJvbm1lbnQgd2hlcmUgdGhlIHVzZXIgd2FzIGNyZWF0ZWQuIFN5c3RlbS1hc3NpZ25lZCBhbmQgcmVhZC1vbmx5LkoWImVudl85ODc2enl4dzU0MzJ2dXRzIuBBA/rS5JMCCRIHUFJFVklFVxKQAQoLY3JlYXRlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl+SQVkyV1RpbWVzdGFtcCB3aGVuIHRoZSB1c2VyIGFjY291bnQgd2FzIGluaXRpYWxseSBjcmVhdGVkLiBBdXRvbWF0aWNhbGx5IHNldCBieSB0aGUgc2VydmVyLuBBAxKVAQoLdXBkYXRlX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQmSSQV4yXFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBtb2RpZmljYXRpb24gdG8gdGhlIHVzZXIgYWNjb3VudC4gQXV0b21hdGljYWxseSB1cGRhdGVkIGJ5IHRoZSBzZXJ2ZXIu4EEDEpEBCgVlbWFpbBgFIAEoCUKBAZJBdzJhUHJpbWFyeSBlbWFpbCBhZGRyZXNzIGZvciB0aGUgdXNlci4gTXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRoZSBlbnZpcm9ubWVudCBhbmQgdmFsaWQgcGVyIFJGQyA1MzIyLkoSInVzZXJAZXhhbXBsZS5jb20iukgEcgJgARKWAQoLZXh0ZXJuYWxfaWQYBiABKAlCfJJBeTJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uShIiZXh0XzEyMzQ1YTY3Yjg5YyJIAIgBARKcAQoLbWVtYmVyc2hpcHMYByADKAsyKy5zY2FsZWtpdC52MS5jb21tb25zLk9yZ2FuaXphdGlvbk1lbWJlcnNoaXBCWpJBVzJVTGlzdCBvZiBvcmdhbml6YXRpb24gbWVtYmVyc2hpcHMuIEF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGJhc2VkIG9uIGdyb3VwIGFzc2lnbm1lbnRzLhKPAQoMdXNlcl9wcm9maWxlGAggASgLMiAuc2NhbGVraXQudjEuY29tbW9ucy5Vc2VyUHJvZmlsZUJXkkFUMlJVc2VyJ3MgcGVyc29uYWwgaW5mb3JtYXRpb24gaW5jbHVkaW5nIG5hbWUsIGFkZHJlc3MsIGFuZCBvdGhlciBwcm9maWxlIGF0dHJpYnV0ZXMuEvYBCghtZXRhZGF0YRgJIAMoCzIlLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIuTWV0YWRhdGFFbnRyeUK8AZJBnwEyZEN1c3RvbSBrZXktdmFsdWUgcGFpcnMgZm9yIHN0b3JpbmcgYWRkaXRpb25hbCB1c2VyIGNvbnRleHQuIEtleXMgKDMtMjUgY2hhcnMpLCB2YWx1ZXMgKDEtMjU2IGNoYXJzKS5KN3siZGVwYXJ0bWVudCI6ICJlbmdpbmVlcmluZyIsICJsb2NhdGlvbiI6ICJueWMtb2ZmaWNlIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpIBCg9sYXN0X2xvZ2luX3RpbWUYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQl2SQVcyVVRpbWVzdGFtcCBvZiB0aGUgdXNlcidzIG1vc3QgcmVjZW50IHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24uIFVwZGF0ZWQgYXV0b21hdGljYWxseS7gQQMaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg4KDF9leHRlcm5hbF9pZCL6AQoeQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXBSZXF1ZXN0EhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIzCgR1c2VyGAIgASgLMh0uc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlVXNlckIGukgDyAEBEnAKFXNlbmRfaW52aXRhdGlvbl9lbWFpbBgDIAEoCEJMkkFJMkFJZiB0cnVlLCBzZW5kcyBhbiBhY3RpdmF0aW9uIGVtYWlsIHRvIHRoZSB1c2VyLiBEZWZhdWx0cyB0byB0cnVlLkoEdHJ1ZUgAiAEBQhgKFl9zZW5kX2ludml0YXRpb25fZW1haWwiSAofQ3JlYXRlVXNlckFuZE1lbWJlcnNoaXBSZXNwb25zZRIlCgR1c2VyGAEgASgLMhcuc2NhbGVraXQudjEudXNlcnMuVXNlciKNBQoKVXBkYXRlVXNlchKWAQoLZXh0ZXJuYWxfaWQYBiABKAlCfJJBeTJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uShIiZXh0XzEyMzQ1YTY3Yjg5YyJIAIgBARKTAQoMdXNlcl9wcm9maWxlGAggASgLMiQuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclByb2ZpbGVCV5JBVDJSVXNlcidzIHBlcnNvbmFsIGluZm9ybWF0aW9uIGluY2x1ZGluZyBuYW1lLCBhZGRyZXNzLCBhbmQgb3RoZXIgcHJvZmlsZSBhdHRyaWJ1dGVzLhL8AQoIbWV0YWRhdGEYCSADKAsyKy5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyLk1ldGFkYXRhRW50cnlCvAGSQZ8BMmRDdXN0b20ga2V5LXZhbHVlIHBhaXJzIGZvciBzdG9yaW5nIGFkZGl0aW9uYWwgdXNlciBjb250ZXh0LiBLZXlzICgzLTI1IGNoYXJzKSwgdmFsdWVzICgxLTI1NiBjaGFycykuSjd7ImRlcGFydG1lbnQiOiAiZW5naW5lZXJpbmciLCAibG9jYXRpb24iOiAibnljLW9mZmljZSJ9ukgWmgETEBQiBnIEEAMYGSoHcgUQARiAAhovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2V4dGVybmFsX2lkSgQIARAGSgQIBxAISgQIChALIpUEChFVcGRhdGVVc2VyUmVxdWVzdBKIAQoCaWQYASABKAlCepJBaDJOU3lzdGVtLWdlbmVyYXRlZCB1c2VyIElELiBNdXN0IHN0YXJ0IHdpdGggJ3Vzcl8nIGFuZCBiZSAxOS0yNSBjaGFyYWN0ZXJzIGxvbmcuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQExgZOgR1c3JfSAASjgEKC2V4dGVybmFsX2lkGAIgASgJQneSQXQyY1lvdXIgYXBwbGljYXRpb24ncyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBvcmdhbml6YXRpb24sIHVzZWQgdG8gbGluayBTY2FsZWtpdCB3aXRoIHlvdXIgc3lzdGVtLkoNImV4dF83ODkweHl6IkgAEtUBCgR1c2VyGAMgASgLMh0uc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlckKnAZJBnQEycVVzZXIgZmllbGRzIHRvIHVwZGF0ZS4gT25seSBzcGVjaWZpZWQgZmllbGRzIHdpbGwgYmUgbW9kaWZpZWQuIFJlcXVpcmVkIGZpZWxkcyBtdXN0IGJlIHByb3ZpZGVkIGlmIGJlaW5nIGNoYW5nZWQuSih7ImZpcnN0TmFtZSI6ICJKb2huIiwgImxhc3ROYW1lIjogIkRvZSJ9ukgDyAEBQgwKCmlkZW50aXRpZXMiOwoSVXBkYXRlVXNlclJlc3BvbnNlEiUKBHVzZXIYASABKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyIoMCCg5HZXRVc2VyUmVxdWVzdBJSCgJpZBgBIAEoCUJEkkEyMhhTeXN0ZW0tZ2VuZXJhdGVkIHVzZXIgSURKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChABGCA6BHVzcl9IABKOAQoLZXh0ZXJuYWxfaWQYAiABKAlCd5JBdDJjWW91ciBhcHBsaWNhdGlvbidzIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgdXNlZCB0byBsaW5rIFNjYWxla2l0IHdpdGggeW91ciBzeXN0ZW0uSg0iZXh0Xzc4OTB4eXoiSABCDAoKaWRlbnRpdGllcyI4Cg9HZXRVc2VyUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIiwAEKFkdldEN1cnJlbnRVc2VyUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXISfwoSY3VycmVudF9zZXNzaW9uX2lkGAIgASgJQmOSQWAyRVRoZSBJRCBvZiB0aGUgY3VycmVudCBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXV0aGVudGljYXRlZCB1c2VyLkoXInNlc3NfMTIzNGFiY2Q1Njc4ZWZnaCIiFwoVR2V0Q3VycmVudFVzZXJSZXF1ZXN0Is8EChxMaXN0T3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0ErkBCg9vcmdhbml6YXRpb25faWQYASABKAlCnwGSQYwBMnJVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3JnYW5pemF0aW9uIGZvciB3aGljaCB0byBsaXN0IHVzZXJzLiBNdXN0IHN0YXJ0IHdpdGggJ29yZ18nIGFuZCBiZSAxLTMyIGNoYXJhY3RlcnMgbG9uZy5KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChABGCA6BG9yZ18SnwEKCXBhZ2Vfc2l6ZRgCIAEoDUKLAZJBfzJ5TWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIGluIGEgc2luZ2xlIHJlc3BvbnNlLiBWYWxpZCByYW5nZTogMS0xMDAuIFNlcnZlciBtYXkgcmV0dXJuIGZld2VyIHVzZXJzIHRoYW4gc3BlY2lmaWVkLkoCNTC6SAYqBBhkKAAS0AEKCnBhZ2VfdG9rZW4YAyABKAlCuwGSQbcBMoABUGFnaW5hdGlvbiB0b2tlbiBmcm9tIGEgcHJldmlvdXMgTGlzdFVzZXJSZXNwb25zZS4gVXNlZCB0byByZXRyaWV2ZSB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIExlYXZlIGVtcHR5IGZvciB0aGUgZmlyc3QgcmVxdWVzdC5KMiJleUp3WVdkbElqb2dNaXdnSW14aGMzUmZhV1FpT2lBaWRYTnlYekV5TXpRMUluMD0iIvQECh1MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZRKrAQoPbmV4dF9wYWdlX3Rva2VuGAEgASgJQpEBkkGNATJXT3BhcXVlIHRva2VuIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gRW1wdHkgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMuSjIiZXlKd1lXZGxJam9nTWl3Z0lteGhjM1JmYVdRaU9pQWlkWE55WHpFeU16UTFJbjA9IhJtCgp0b3RhbF9zaXplGAIgASgNQlmSQVYyTlRvdGFsIG51bWJlciBvZiB1c2VycyBtYXRjaGluZyB0aGUgcmVxdWVzdCBjcml0ZXJpYSwgcmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uLkoEMTA0MhKLAQoFdXNlcnMYAyADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQmOSQWAyXkxpc3Qgb2YgdXNlciBvYmplY3RzIGZvciB0aGUgY3VycmVudCBwYWdlLiBNYXkgY29udGFpbiBmZXdlciBlbnRyaWVzIHRoYW4gcmVxdWVzdGVkIHBhZ2Vfc2l6ZS4SpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU09wYXF1ZSB0b2tlbiBmb3IgcmV0cmlldmluZyB0aGUgcHJldmlvdXMgcGFnZSBvZiByZXN1bHRzLiBFbXB0eSBmb3IgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLSBAoXRGVsZXRlTWVtYmVyc2hpcFJlcXVlc3QSlwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJ+kkFsMlJVbmlxdWUgb3JnYW5pemF0aW9uIGlkZW50aWZpZXIuIE11c3Qgc3RhcnQgd2l0aCAnb3JnXycgYW5kIGJlIDEtMzIgY2hhcmFjdGVycyBsb25nShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfEn0KAmlkGAIgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJ9CgtleHRlcm5hbF9pZBgDIAEoCUJmkkFjMlJFeHRlcm5hbCBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIGNvbm5lY3RlZCBkaXJlY3Rvcmllcy4gTXVzdCBtYXRjaCBleGlzdGluZyByZWNvcmRzSg0iZXh0Xzc4OTB4eXoiSAAShAEKB2Nhc2NhZGUYBSABKAhCbpJBXDJTSWYgdHJ1ZSwgaWYgdXNlciBoYXMgbm8gbWVtYmVyc2hpcHMgbGVmdCB0aGUgdXNlciBpcyBhbHNvIGRlbGV0ZWQuIGRlZmF1bHRzIHRvIHRydWVKBWZhbHNl+tLkkwIJEgdQUkVWSUVXSAGIAQFCDAoKaWRlbnRpdGllc0IKCghfY2FzY2FkZSLnBQoXQ3JlYXRlTWVtYmVyc2hpcFJlcXVlc3QSpwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUKNAZJBezJhVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBvcmdhbml6YXRpb24uIE11c3Qgc3RhcnQgd2l0aCAnb3JnXycgYW5kIGJlIDEtMzIgY2hhcmFjdGVycyBsb25nLkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpIDHIKEAEYIDoEb3JnXxKDAQoKbWVtYmVyc2hpcBgCIAEoCzIjLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXBCSpJBQTI/TWVtYmVyc2hpcCBkZXRhaWxzIHRvIGNyZWF0ZS4gUmVxdWlyZWQgZmllbGRzIG11c3QgYmUgcHJvdmlkZWQuukgDyAEBEn0KAmlkGAMgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABKCAQoLZXh0ZXJuYWxfaWQYBCABKAlCa5JBaDJXRXh0ZXJuYWwgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBjb25uZWN0ZWQgZGlyZWN0b3JpZXMuIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgc3lzdGVtSg0iZXh0Xzc4OTB4eXoiSAAScAoVc2VuZF9pbnZpdGF0aW9uX2VtYWlsGAUgASgIQkySQUkyQUlmIHRydWUsIHNlbmRzIGFuIGFjdGl2YXRpb24gZW1haWwgdG8gdGhlIHVzZXIuIERlZmF1bHRzIHRvIHRydWUuSgR0cnVlSAGIAQFCDAoKaWRlbnRpdGllc0IYChZfc2VuZF9pbnZpdGF0aW9uX2VtYWlsIkEKGENyZWF0ZU1lbWJlcnNoaXBSZXNwb25zZRIlCgR1c2VyGAEgASgLMhcuc2NhbGVraXQudjEudXNlcnMuVXNlciKFAgoQTGlzdFVzZXJzUmVxdWVzdBJqCglwYWdlX3NpemUYASABKA1CV5JBVDJOTWF4aW11bSBudW1iZXIgb2Ygb3JnYW5pemF0aW9ucyB0byByZXR1cm4gcGVyIHBhZ2UuIE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgMTAwSgIzMBKEAQoKcGFnZV90b2tlbhgCIAEoCUJwkkFtMltQYWdpbmF0aW9uIHRva2VuIGZyb20gdGhlIHByZXZpb3VzIHJlc3BvbnNlLiBVc2UgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZSBvZiBvcmdhbml6YXRpb25zSg4iPHBhZ2VfdG9rZW4+IiKQBAoRTGlzdFVzZXJzUmVzcG9uc2USOwoFdXNlcnMYASADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQhOSQRAyDkxpc3Qgb2YgdXNlcnMuEqQBCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAlCigGSQYYBMlBUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzLkoyImV5SndZV2RsSWpvZ01pd2dJbXhoYzNSZmFXUWlPaUFpZFhOeVh6RXlNelExSW4wPSISbQoKdG90YWxfc2l6ZRgDIAEoDUJZkkFWMk5Ub3RhbCBudW1iZXIgb2YgdXNlcnMgbWF0Y2hpbmcgdGhlIHJlcXVlc3QgY3JpdGVyaWEsIHJlZ2FyZGxlc3Mgb2YgcGFnaW5hdGlvbi5KBDEwNDISpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU1Rva2VuIGZvciByZXRyaWV2aW5nIHRoZSBwcmV2aW91cyBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLfAwoSU2VhcmNoVXNlcnNSZXF1ZXN0EqgBCgVxdWVyeRgBIAEoCUKYAZJBiAEyb1NlYXJjaCB0ZXJtIHRvIG1hdGNoIGFnYWluc3QgdXNlciBlbWFpbCwgSURzLCBvciBleHRlcm5hbCBJRHMuIE11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzLiBDYXNlIGluc2Vuc2l0aXZlLkoQam9obkBleGFtcGxlLmNvbXhkgAEDukgJyAEBcgQQAxhkEoABCglwYWdlX3NpemUYAiABKA1CbZJBYzJLTWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIHBlciBwYWdlLiBWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzAuSgIzMFkAAAAAAAA+QGkAAAAAAADwP7pIBCoCGB4SmgEKCnBhZ2VfdG9rZW4YAyABKAlChQGSQYEBMmFUb2tlbiBmcm9tIGEgcHJldmlvdXMgcmVzcG9uc2UgZm9yIHBhZ2luYXRpb24uIFByb3ZpZGUgdGhpcyB0byByZXRyaWV2ZSB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuShxleUp3WVdkbElqb3lMQ0pzYVcxcGRDSTZNekI5IpsEChNTZWFyY2hVc2Vyc1Jlc3BvbnNlEqQBCg9uZXh0X3BhZ2VfdG9rZW4YASABKAlCigGSQYYBMlBUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzLkoyImV5SndZV2RsSWpvZ01pd2dJbXhoYzNSZmFXUWlPaUFpZFhOeVh6RXlNelExSW4wPSISbQoKdG90YWxfc2l6ZRgCIAEoDUJZkkFWMk5Ub3RhbCBudW1iZXIgb2YgdXNlcnMgbWF0Y2hpbmcgdGhlIHJlcXVlc3QgY3JpdGVyaWEsIHJlZ2FyZGxlc3Mgb2YgcGFnaW5hdGlvbi5KBDEwNDISRAoFdXNlcnMYAyADKAsyFy5zY2FsZWtpdC52MS51c2Vycy5Vc2VyQhySQRkyF0xpc3Qgb2YgbWF0Y2hpbmcgdXNlcnMuEqcBCg9wcmV2X3BhZ2VfdG9rZW4YBCABKAlCjQGSQYkBMlNUb2tlbiBmb3IgcmV0cmlldmluZyB0aGUgcHJldmlvdXMgcGFnZSBvZiByZXN1bHRzLiBFbXB0eSBpZiB0aGlzIGlzIHRoZSBmaXJzdCBwYWdlLkoyImV5SndZV2RsSWpvZ01Dd2dJbVpwY25OMFgybGtJam9nSW5WemNsODVPRGMyTlNKOSIinwIKEURlbGV0ZVVzZXJSZXF1ZXN0En0KAmlkGAEgASgJQm+SQV0yQ1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRC4gTXVzdCBzdGFydCB3aXRoICd1c3JfJyAoMTktMjUgY2hhcmFjdGVycylKFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJ9CgtleHRlcm5hbF9pZBgCIAEoCUJmkkFjMlJFeHRlcm5hbCBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIGNvbm5lY3RlZCBkaXJlY3Rvcmllcy4gTXVzdCBtYXRjaCBleGlzdGluZyByZWNvcmRzSg0iZXh0Xzc4OTB4eXoiSABCDAoKaWRlbnRpdGllcyLuBAoXVXBkYXRlTWVtYmVyc2hpcFJlcXVlc3QSuwEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUKhAZJBjgEydFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvcmdhbml6YXRpb24gY29udGFpbmluZyB0aGUgbWVtYmVyc2hpcC4gTXVzdCBzdGFydCB3aXRoICdvcmdfJyBhbmQgYmUgMS0zMiBjaGFyYWN0ZXJzIGxvbmcuShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfEogBCgJpZBgCIAEoCUJ6kkFoMk5TeXN0ZW0tZ2VuZXJhdGVkIHVzZXIgSUQuIE11c3Qgc3RhcnQgd2l0aCAndXNyXycgYW5kIGJlIDE5LTI1IGNoYXJhY3RlcnMgbG9uZy5KFiJ1c3JfMTIzNGFiY2Q1Njc4ZWZnaCK6SAxyChATGBk6BHVzcl9IABJeCgtleHRlcm5hbF9pZBgDIAEoCUJHkkFEMjNZb3VyIGFwcGxpY2F0aW9uJ3MgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgdXNlci5KDSJleHRfNzg5MHh5eiJIABKbAQoKbWVtYmVyc2hpcBgFIAEoCzIjLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZU1lbWJlcnNoaXBCYpJBWTJETWVtYmVyc2hpcCBmaWVsZHMgdG8gdXBkYXRlLiBPbmx5IHNwZWNpZmllZCBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5KEXsicm9sZSI6ICJhZG1pbiJ9ukgDyAEBQgwKCmlkZW50aXRpZXMi3gMKEFVwZGF0ZU1lbWJlcnNoaXASdgoFcm9sZXMYBCADKAsyGS5zY2FsZWtpdC52MS5jb21tb25zLlJvbGVCTJJBSTIyUm9sZSB0byBhc3NpZ24gdG8gdGhlIHVzZXIgd2l0aGluIHRoZSBvcmdhbml6YXRpb25KE1t7Im5hbWUiOiAiYWRtaW4ifV0SggIKCG1ldGFkYXRhGAcgAygLMjEuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlTWVtYmVyc2hpcC5NZXRhZGF0YUVudHJ5QrwBkkGfATJkQ3VzdG9tIGtleS12YWx1ZSBwYWlycyBmb3Igc3RvcmluZyBhZGRpdGlvbmFsIHVzZXIgY29udGV4dC4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko3eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgImxvY2F0aW9uIjogIm55Yy1vZmZpY2UifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIARACSgQIAhADSgQIAxAESgQIBRAGSgQIBhAHIokFChBDcmVhdGVNZW1iZXJzaGlwEnYKBXJvbGVzGAQgAygLMhkuc2NhbGVraXQudjEuY29tbW9ucy5Sb2xlQkySQUkyMlJvbGUgdG8gYXNzaWduIHRvIHRoZSB1c2VyIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uShNbeyJuYW1lIjogImFkbWluIn1dEoICCghtZXRhZGF0YRgHIAMoCzIxLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXAuTWV0YWRhdGFFbnRyeUK8AZJBnwEyZEN1c3RvbSBrZXktdmFsdWUgcGFpcnMgZm9yIHN0b3JpbmcgYWRkaXRpb25hbCB1c2VyIGNvbnRleHQuIEtleXMgKDMtMjUgY2hhcnMpLCB2YWx1ZXMgKDEtMjU2IGNoYXJzKS5KN3siZGVwYXJ0bWVudCI6ICJlbmdpbmVlcmluZyIsICJsb2NhdGlvbiI6ICJueWMtb2ZmaWNlIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpYBCg1pbnZpdGVyX2VtYWlsGAggASgJQnqSQWsyUUVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgd2hvIGludml0ZWQgdGhpcyBtZW1iZXIuIE11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLkoWImpvaG4uZG9lQGV4YW1wbGUuY29tIrpICXIHEAUY/gFgAUgAiAEBGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIQCg5faW52aXRlcl9lbWFpbEoECAEQAkoECAIQA0oECAMQBEoECAUQBkoECAYQByJBChhVcGRhdGVNZW1iZXJzaGlwUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXIiowUKHlNlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBK1AQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQpsBkkGFATJrVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG9yZ2FuaXphdGlvbiB0byBzZWFyY2ggd2l0aGluLiBNdXN0IHN0YXJ0IHdpdGggJ29yZ18nIGFuZCBiZSAxLTMyIGNoYXJhY3RlcnMgbG9uZy5KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SA/IAQFyChABGCA6BG9yZ18SqAEKBXF1ZXJ5GAIgASgJQpgBkkGIATJvU2VhcmNoIHRlcm0gdG8gbWF0Y2ggYWdhaW5zdCB1c2VyIGVtYWlsLCBJRHMsIG9yIGV4dGVybmFsIElEcy4gTXVzdCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMuIENhc2UgaW5zZW5zaXRpdmUuShBqb2huQGV4YW1wbGUuY29teGSAAQO6SAnIAQFyBBADGGQSgAEKCXBhZ2Vfc2l6ZRgDIAEoDUJtkkFjMktNYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byByZXR1cm4gcGVyIHBhZ2UuIFZhbHVlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMC5KAjMwWQAAAAAAAD5AaQAAAAAAAPA/ukgEKgIYHhKaAQoKcGFnZV90b2tlbhgEIAEoCUKFAZJBgQEyYVRva2VuIGZyb20gYSBwcmV2aW91cyByZXNwb25zZSBmb3IgcGFnaW5hdGlvbi4gUHJvdmlkZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy5KHGV5SndZV2RsSWpveUxDSnNhVzFwZENJNk16QjkipwQKH1NlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2USpAEKD25leHRfcGFnZV90b2tlbhgBIAEoCUKKAZJBhgEyUFRva2VuIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gRW1wdHkgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMuSjIiZXlKd1lXZGxJam9nTWl3Z0lteGhjM1JmYVdRaU9pQWlkWE55WHpFeU16UTFJbjA9IhJtCgp0b3RhbF9zaXplGAIgASgNQlmSQVYyTlRvdGFsIG51bWJlciBvZiB1c2VycyBtYXRjaGluZyB0aGUgcmVxdWVzdCBjcml0ZXJpYSwgcmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uLkoEMTA0MhJECgV1c2VycxgDIAMoCzIXLnNjYWxla2l0LnYxLnVzZXJzLlVzZXJCHJJBGTIXTGlzdCBvZiBtYXRjaGluZyB1c2Vycy4SpwEKD3ByZXZfcGFnZV90b2tlbhgEIAEoCUKNAZJBiQEyU1Rva2VuIGZvciByZXRyaWV2aW5nIHRoZSBwcmV2aW91cyBwYWdlIG9mIHJlc3VsdHMuIEVtcHR5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHBhZ2UuSjIiZXlKd1lXZGxJam9nTUN3Z0ltWnBjbk4wWDJsa0lqb2dJblZ6Y2w4NU9EYzJOU0o5IiLDBwoKQ3JlYXRlVXNlchKRAQoFZW1haWwYBSABKAlCgQGSQXcyYVByaW1hcnkgZW1haWwgYWRkcmVzcyBmb3IgdGhlIHVzZXIuIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW52aXJvbm1lbnQgYW5kIHZhbGlkIHBlciBSRkMgNTMyMi5KEiJ1c2VyQGV4YW1wbGUuY29tIrpIBHICYAESlgEKC2V4dGVybmFsX2lkGAYgASgJQnySQXkyY1lvdXIgYXBwbGljYXRpb24ncyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBvcmdhbml6YXRpb24sIHVzZWQgdG8gbGluayBTY2FsZWtpdCB3aXRoIHlvdXIgc3lzdGVtLkoSImV4dF8xMjM0NWE2N2I4OWMiSACIAQESkwEKCm1lbWJlcnNoaXAYByABKAsyIy5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVNZW1iZXJzaGlwQlqSQVcyVUxpc3Qgb2Ygb3JnYW5pemF0aW9uIG1lbWJlcnNoaXBzLiBBdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBiYXNlZCBvbiBncm91cCBhc3NpZ25tZW50cy4SkwEKDHVzZXJfcHJvZmlsZRgIIAEoCzIkLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJQcm9maWxlQleSQVQyUlVzZXIncyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgbmFtZSwgYWRkcmVzcywgYW5kIG90aGVyIHByb2ZpbGUgYXR0cmlidXRlcy4S/AEKCG1ldGFkYXRhGAkgAygLMisuc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlVXNlci5NZXRhZGF0YUVudHJ5QrwBkkGfATJkQ3VzdG9tIGtleS12YWx1ZSBwYWlycyBmb3Igc3RvcmluZyBhZGRpdGlvbmFsIHVzZXIgY29udGV4dC4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko3eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgImxvY2F0aW9uIjogIm55Yy1vZmZpY2UifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg4KDF9leHRlcm5hbF9pZEoECAEQAkoECAIQA0oECAMQBEoECAQQBUoECAoQCyKWDwoRQ3JlYXRlVXNlclByb2ZpbGUSUwoKZ2l2ZW5fbmFtZRgCIAEoCUI/kkE0MipVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyNTUgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGP8BElQKC2ZhbWlseV9uYW1lGAMgASgJQj+SQTQyK1VzZXIncyBmYW1pbHkgbmFtZS4gTWF4aW11bSAyNTUgY2hhcmFjdGVycy5KBSJEb2UiukgFcgMY/wEScAoEbmFtZRgEIAEoCUJikkFfMklGdWxsIG5hbWUgaW4gZGlzcGxheSBmb3JtYXQuIFR5cGljYWxseSBjb21iaW5lcyBmaXJzdF9uYW1lIGFuZCBsYXN0X25hbWUuShIiSm9obiBNaWNoYWVsIERvZSIScQoGbG9jYWxlGAUgASgJQmGSQV4yU1VzZXIncyBsb2NhbGl6YXRpb24gcHJlZmVyZW5jZSBpbiBCQ1AtNDcgZm9ybWF0LiBEZWZhdWx0cyB0byBvcmdhbml6YXRpb24gc2V0dGluZ3MuSgciZW4tVVMiEn0KDHBob25lX251bWJlchgHIAEoCUJnkkFkMlJQaG9uZSBudW1iZXIgaW4gRS4xNjQgaW50ZXJuYXRpb25hbCBmb3JtYXQuIFJlcXVpcmVkIGZvciBTTVMtYmFzZWQgYXV0aGVudGljYXRpb24uSg4iKzE0MTU1NTUyNjcxIhKBAgoIbWV0YWRhdGEYCCADKAsyMi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyUHJvZmlsZS5NZXRhZGF0YUVudHJ5QroBkkGdATJeU3lzdGVtLW1hbmFnZWQga2V5LXZhbHVlIHBhaXJzIGZvciBpbnRlcm5hbCB0cmFja2luZy4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko7eyJhY2NvdW50X3N0YXR1cyI6ICJhY3RpdmUiLCAic2lnbnVwX3NvdXJjZSI6ICJtb2JpbGVfYXBwIn26SBaaARMQFCIGcgQQAxgZKgdyBRABGIACEpACChFjdXN0b21fYXR0cmlidXRlcxgJIAMoCzI6LnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJQcm9maWxlLkN1c3RvbUF0dHJpYnV0ZXNFbnRyeUK4AZJBmwEyWkN1c3RvbSBhdHRyaWJ1dGVzIGZvciBleHRlbmRlZCB1c2VyIHByb2ZpbGUgZGF0YS4gS2V5cyAoMy0yNSBjaGFycyksIHZhbHVlcyAoMS0yNTYgY2hhcnMpLko9eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgInNlY3VyaXR5X2NsZWFyYW5jZSI6ICJsZXZlbDIifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAISbAoScHJlZmVycmVkX3VzZXJuYW1lGAogASgJQlCSQUUyL1VzZXIncyBwcmVmZXJyZWQgdXNlcm5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuShIiSm9obiBNaWNoYWVsIERvZSK6SAVyAxiABBJxCgdwaWN0dXJlGAsgASgJQluSQVAyLFVSTCB0byB0aGUgdXNlcidzIHByb2ZpbGUgcGljdHVyZSBvciBhdmF0YXIuSiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9hdmF0YXIuanBnIrpIBXIDGIAQSACIAQESOQoGZ2VuZGVyGAwgASgJQiSSQSEyF1VzZXIncyBnZW5kZXIgaWRlbnRpdHkuSgYibWFsZSJIAYgBARKZAQoGZ3JvdXBzGA0gAygJQogBkkFwMlFMaXN0IG9mIGdyb3VwIG5hbWVzIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIEVhY2ggZ3JvdXAgbmFtZSBtdXN0IGJlIDEtMjUwIGNoYXJhY3RlcnNKG1siZW5naW5lZXJpbmciLCAibWFuYWdlcnMiXbpIEpIBDwgAEDIYASIHcgUQARj6ARKJAQoKZmlyc3RfbmFtZRgVIAEoCUJ1GAGSQVkyT1tERVBSRUNBVEVEXSBVc2UgZ2l2ZW5fbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGMgB+tLkkwIJEgdQUkVWSUVXEokBCglsYXN0X25hbWUYFiABKAlCdhgBkkFaMlFbREVQUkVDQVRFRF0gVXNlIGZhbWlseV9uYW1lIGluc3RlYWQuIFVzZXIncyBmYW1pbHkgbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBSJEb2UiukgFcgMYyAH60uSTAgkSB1BSRVZJRVcaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUN1c3RvbUF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9waWN0dXJlQgkKB19nZW5kZXJKBAgBEAJKBAgGEAcivCcKEVVwZGF0ZVVzZXJQcm9maWxlEtoBCgpnaXZlbl9uYW1lGAIgASgJQsABkkG0ATKpAVVwZGF0ZXMgdGhlIHVzZXIncyBnaXZlbiBuYW1lIChmaXJzdCBuYW1lKS4gVXNlIHRoaXMgZmllbGQgdG8gbW9kaWZ5IGhvdyB0aGUgdXNlcidzIGZpcnN0IG5hbWUgYXBwZWFycyBpbiB0aGUgc3lzdGVtIGFuZCB1c2VyIGludGVyZmFjZXMuIE1heGltdW0gMjU1IGNoYXJhY3RlcnMgYWxsb3dlZC5KBiJKb2huIrpIBXIDGP8BSACIAQES2AEKC2ZhbWlseV9uYW1lGAMgASgJQr0BkkGxATKnAVVwZGF0ZXMgdGhlIHVzZXIncyBmYW1pbHkgbmFtZSAobGFzdCBuYW1lIG9yIHN1cm5hbWUpLiBVc2UgdGhpcyBmaWVsZCB0byBtb2RpZnkgaG93IHRoZSB1c2VyJ3MgbGFzdCBuYW1lIGFwcGVhcnMgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBNYXhpbXVtIDI1NSBjaGFyYWN0ZXJzIGFsbG93ZWQuSgUiRG9lIrpIBXIDGP8BSAGIAQESqAIKBG5hbWUYBCABKAlClAKSQZACMoECVXBkYXRlcyB0aGUgdXNlcidzIGNvbXBsZXRlIGRpc3BsYXkgbmFtZS4gVXNlIHRoaXMgZmllbGQgd2hlbiB5b3Ugd2FudCB0byBzZXQgdGhlIGZ1bGwgbmFtZSBhcyBhIHNpbmdsZSBzdHJpbmcgcmF0aGVyIHRoYW4gdXNpbmcgc2VwYXJhdGUgZ2l2ZW4gYW5kIGZhbWlseSBuYW1lcy4gVGhpcyBuYW1lIGFwcGVhcnMgaW4gdXNlciBpbnRlcmZhY2VzLCByZXBvcnRzLCBhbmQgYW55d2hlcmUgYSBmb3JtYXR0ZWQgZGlzcGxheSBuYW1lIGlzIG5lZWRlZC5KCiJKb2huIERvZSJIAogBARKPAwoGbG9jYWxlGAUgASgJQvkCkkH1AjLpAlVwZGF0ZXMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBzZXR0aW5ncyB1c2luZyBCQ1AtNDcgZm9ybWF0IGNvZGVzLiBVc2UgdGhpcyBmaWVsZCB0byBjdXN0b21pemUgdGhlIHVzZXIncyBleHBlcmllbmNlIHdpdGggbG9jYWxpemVkIGNvbnRlbnQsIGRhdGUgZm9ybWF0cywgbnVtYmVyIGZvcm1hdHRpbmcsIGFuZCBVSSBsYW5ndWFnZS4gV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBpbmhlcml0cyB0aGUgb3JnYW5pemF0aW9uJ3MgZGVmYXVsdCBsb2NhbGUgc2V0dGluZ3MuIENvbW1vbiB2YWx1ZXMgaW5jbHVkZSBgZW4tVVNgLCBgZW4tR0JgLCBgZnItRlJgLCBgZGUtREVgLCBhbmQgYGVzLUVTYC5KByJlbi1VUyJIA4gBARKkAwoMcGhvbmVfbnVtYmVyGAcgASgJQogDkkGEAzLxAlVwZGF0ZXMgdGhlIHVzZXIncyBwaG9uZSBudW1iZXIgaW4gRS4xNjQgaW50ZXJuYXRpb25hbCBmb3JtYXQuIFVzZSB0aGlzIGZpZWxkIHRvIGVuYWJsZSBTTVMtYmFzZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcywgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiwgb3IgcGhvbmUtYmFzZWQgYWNjb3VudCByZWNvdmVyeS4gVGhlIHBob25lIG51bWJlciBtdXN0IGluY2x1ZGUgdGhlIGNvdW50cnkgY29kZSBhbmQgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBFLjE2NCBzdGFuZGFyZHMgKGUuZy4sIGArMWAgZm9yIFVTIG51bWJlcnMpLiBUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIHdoZW4gZW5hYmxpbmcgU01TIGF1dGhlbnRpY2F0aW9uIGZlYXR1cmVzLkoOIisxNDE1NTU1MjY3MSJIBIgBARLHBAoIbWV0YWRhdGEYCCADKAsyMi5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyUHJvZmlsZS5NZXRhZGF0YUVudHJ5QoAEkkHjAzKjA1VwZGF0ZXMgc3lzdGVtLW1hbmFnZWQga2V5LXZhbHVlIHBhaXJzIGZvciBpbnRlcm5hbCB0cmFja2luZyBhbmQgb3BlcmF0aW9uYWwgZGF0YS4gVXNlIHRoaXMgZmllbGQgdG8gc3RvcmUgc3lzdGVtLWdlbmVyYXRlZCBtZXRhZGF0YSBsaWtlIGFjY291bnQgc3RhdHVzLCBzaWdudXAgc291cmNlLCBsYXN0IGFjdGl2aXR5IHRyYWNraW5nLCBvciBpbnRlZ3JhdGlvbi1zcGVjaWZpYyBpZGVudGlmaWVycy4gVGhlc2UgZmllbGRzIGFyZSB0eXBpY2FsbHkgbWFuYWdlZCBieSBhdXRvbWF0ZWQgcHJvY2Vzc2VzIHJhdGhlciB0aGFuIGRpcmVjdCB1c2VyIGlucHV0LiBLZXlzIG11c3QgYmUgMy0yNSBjaGFyYWN0ZXJzLCB2YWx1ZXMgbXVzdCBiZSAxLTI1NiBjaGFyYWN0ZXJzLCB3aXRoIGEgbWF4aW11bSBvZiAyMCBrZXktdmFsdWUgcGFpcnMuSjt7ImFjY291bnRfc3RhdHVzIjogImFjdGl2ZSIsICJzaWdudXBfc291cmNlIjogIm1vYmlsZV9hcHAifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAIStQUKEWN1c3RvbV9hdHRyaWJ1dGVzGAkgAygLMjouc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclByb2ZpbGUuQ3VzdG9tQXR0cmlidXRlc0VudHJ5Qt0EkkHABDL+A1VwZGF0ZXMgY3VzdG9tIGF0dHJpYnV0ZXMgZm9yIGV4dGVuZGVkIHVzZXIgcHJvZmlsZSBkYXRhIGFuZCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gVXNlIHRoaXMgZmllbGQgdG8gc3RvcmUgYnVzaW5lc3Mtc3BlY2lmaWMgdXNlciBkYXRhIGxpa2UgZGVwYXJ0bWVudCwgam9iIHRpdGxlLCBzZWN1cml0eSBjbGVhcmFuY2VzLCBwcm9qZWN0IGFzc2lnbm1lbnRzLCBvciBhbnkgb3RoZXIgb3JnYW5pemF0aW9uYWwgYXR0cmlidXRlcyB5b3VyIGFwcGxpY2F0aW9uIHJlcXVpcmVzLiBVbmxpa2Ugc3lzdGVtIG1ldGFkYXRhLCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSB0eXBpY2FsbHkgbWFuYWdlZCBieSBhZG1pbmlzdHJhdG9ycyBvciBhcHBsaWNhdGlvbnMgYW5kIGFyZSB2aXNpYmxlIHRvIGVuZCB1c2Vycy4gS2V5cyBtdXN0IGJlIDMtMjUgY2hhcmFjdGVycywgdmFsdWVzIG11c3QgYmUgMS0yNTYgY2hhcmFjdGVycywgd2l0aCBhIG1heGltdW0gb2YgMjAga2V5LXZhbHVlIHBhaXJzLko9eyJkZXBhcnRtZW50IjogImVuZ2luZWVyaW5nIiwgInNlY3VyaXR5X2NsZWFyYW5jZSI6ICJsZXZlbDIifbpIFpoBExAUIgZyBBADGBkqB3IFEAEYgAISfwoKZmlyc3RfbmFtZRgVIAEoCUJmGAGSQVkyT1tERVBSRUNBVEVEXSBVc2UgZ2l2ZW5fbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZ2l2ZW4gbmFtZS4gTWF4aW11bSAyMDAgY2hhcmFjdGVycy5KBiJKb2huIrpIBXIDGMgBSAWIAQESfwoJbGFzdF9uYW1lGBYgASgJQmcYAZJBWjJRW0RFUFJFQ0FURURdIFVzZSBmYW1pbHlfbmFtZSBpbnN0ZWFkLiBVc2VyJ3MgZmFtaWx5IG5hbWUuIE1heGltdW0gMjAwIGNoYXJhY3RlcnMuSgUiRG9lIrpIBXIDGMgBSAaIAQEShAMKEnByZWZlcnJlZF91c2VybmFtZRgKIAEoCULiApJB1gIyvwJVcGRhdGVzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHVzZXJuYW1lIGZvciBkaXNwbGF5IGFuZCBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy4gVXNlIHRoaXMgZmllbGQgdG8gc2V0IGEgY3VzdG9tIHVzZXJuYW1lIHRoYXQgdGhlIHVzZXIgcHJlZmVycyB0byBiZSBrbm93biBieSwgd2hpY2ggbWF5IGRpZmZlciBmcm9tIHRoZWlyIGVtYWlsIG9yIGZvcm1hbCBuYW1lLiBUaGlzIHVzZXJuYW1lIGFwcGVhcnMgaW4gdXNlciBpbnRlcmZhY2VzLCBtZW50aW9ucywgYW5kIGluZm9ybWFsIGNvbW11bmljYXRpb25zLiBNYXhpbXVtIDUxMiBjaGFyYWN0ZXJzIGFsbG93ZWQuShIiSm9obiBNaWNoYWVsIERvZSK6SAVyAxiABEgHiAEBEqkDCgdwaWN0dXJlGAsgASgJQpIDkkGGAzLhAlVwZGF0ZXMgdGhlIFVSTCB0byB0aGUgdXNlcidzIHByb2ZpbGUgcGljdHVyZSBvciBhdmF0YXIgaW1hZ2UuIFVzZSB0aGlzIGZpZWxkIHRvIHNldCBvciBjaGFuZ2UgdGhlIHVzZXIncyBwcm9maWxlIHBob3RvIHRoYXQgYXBwZWFycyBpbiB1c2VyIGludGVyZmFjZXMsIGRpcmVjdG9yeSBsaXN0aW5ncywgYW5kIGNvbGxhYm9yYXRpdmUgZmVhdHVyZXMuIFRoZSBVUkwgc2hvdWxkIHBvaW50IHRvIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbWFnZSBmaWxlLiBTdXBwb3J0ZWQgZm9ybWF0cyB0eXBpY2FsbHkgaW5jbHVkZSBKUEVHLCBQTkcsIGFuZCBHSUYuIE1heGltdW0gVVJMIGxlbmd0aCBpcyAyMDQ4IGNoYXJhY3RlcnMuSiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9hdmF0YXIuanBnIrpIBXIDGIAQSAiIAQES9gIKBmdlbmRlchgMIAEoCULgApJB3AIy0QJVcGRhdGVzIHRoZSB1c2VyJ3MgZ2VuZGVyIGlkZW50aXR5IGluZm9ybWF0aW9uLiBVc2UgdGhpcyBmaWVsZCB0byBzdG9yZSB0aGUgdXNlcidzIGdlbmRlciBpZGVudGl0eSBmb3IgcGVyc29uYWxpemF0aW9uLCBjb21wbGlhbmNlLCBvciByZXBvcnRpbmcgcHVycG9zZXMuIFRoaXMgZmllbGQgc3VwcG9ydHMgYW55IHN0cmluZyB2YWx1ZSB0byBhY2NvbW1vZGF0ZSBkaXZlcnNlIGdlbmRlciBpZGVudGl0aWVzIGFuZCBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGFwcHJvcHJpYXRlIHByaXZhY3kgY29uc2lkZXJhdGlvbnMgYWNjb3JkaW5nIHRvIHlvdXIgb3JnYW5pemF0aW9uJ3MgcG9saWNpZXMuSgYibWFsZSJICYgBARLVAwoGZ3JvdXBzGA0gAygJQsQDkkGrAzKLA1VwZGF0ZXMgdGhlIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhlIHVzZXIgYmVsb25ncyB0byB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbi4gVXNlIHRoaXMgZmllbGQgdG8gbWFuYWdlIHRoZSB1c2VyJ3MgZ3JvdXAgbWVtYmVyc2hpcHMgZm9yIHJvbGUtYmFzZWQgYWNjZXNzIGNvbnRyb2wsIHRlYW0gYXNzaWdubWVudHMsIG9yIG9yZ2FuaXphdGlvbmFsIHN0cnVjdHVyZS4gR3JvdXBzIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgcGVybWlzc2lvbiBtYW5hZ2VtZW50IGFuZCBjb2xsYWJvcmF0aXZlIGFjY2Vzcy4gRWFjaCBncm91cCBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgbGlzdCwgMS0yNTAgY2hhcmFjdGVycyBsb25nLCB3aXRoIGEgbWF4aW11bSBvZiA1MCBncm91cHMgcGVyIHVzZXIuShtbImVuZ2luZWVyaW5nIiwgIm1hbmFnZXJzIl26SBKSAQ8IABAyGAEiB3IFEAEY+gEaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUN1c3RvbUF0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19naXZlbl9uYW1lQg4KDF9mYW1pbHlfbmFtZUIHCgVfbmFtZUIJCgdfbG9jYWxlQg8KDV9waG9uZV9udW1iZXJCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUIVChNfcHJlZmVycmVkX3VzZXJuYW1lQgoKCF9waWN0dXJlQgkKB19nZW5kZXJKBAgBEAJKBAgGEAcinQcKBkludml0ZRJcCg9vcmdhbml6YXRpb25faWQYASABKAlCQ5JBQDItVGhlIG9yZ2FuaXphdGlvbiB0byB3aGljaCB0aGUgaW52aXRlIGJlbG9uZ3MuSg8ib3JnXzk4NzY1NDMyMSISdwoHdXNlcl9pZBgCIAEoCUJmkkFjMlNVc2VyIElEIHRvIHdob20gdGhlIGludml0ZSBpcyBzZW50LiBNYXkgYmUgZW1wdHkgaWYgdGhlIHVzZXIgaGFzIG5vdCBzaWduZWQgdXAgeWV0LkoMInVzcl8xMjM0NTYiEnEKDWludml0ZXJfZW1haWwYAyABKAlCVZJBUjI7SWRlbnRpZmllciBvZiB0aGUgdXNlciBvciBzeXN0ZW0gdGhhdCBpbml0aWF0ZWQgdGhlIGludml0ZS5KEyJhZG1pbkBleGFtcGxlLmNvbSJIAIgBARJwCgZzdGF0dXMYBCABKAlCYJJBXTJJQ3VycmVudCBzdGF0dXMgb2YgdGhlIGludml0ZSAoZS5nLiwgcGVuZGluZywgYWNjZXB0ZWQsIGV4cGlyZWQsIHJldm9rZWQpLkoQInBlbmRpbmdfaW52aXRlIhJ+CgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJOkkFLMjFUaW1lc3RhbXAgd2hlbiB0aGUgaW52aXRlIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQuShYiMjAyNS0wNy0xMFQwODowMDowMFoiEnIKCmV4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQkKSQT8yJVRoZSB0aW1lIGF0IHdoaWNoIHRoZSBpbnZpdGUgZXhwaXJlcy5KFiIyMDI1LTEyLTMxVDIzOjU5OjU5WiIShQEKCXJlc2VudF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCVpJBUzI5VGltZXN0YW1wIHdoZW4gdGhlIGludml0ZSB3YXMgbGFzdCByZXNlbnQsIGlmIGFwcGxpY2FibGUuShYiMjAyNS0wNy0xNVQwOTozMDowMFoiEkkKDHJlc2VudF9jb3VudBgIIAEoBUIzkkEwMitOdW1iZXIgb2YgdGltZXMgdGhlIGludml0ZSBoYXMgYmVlbiByZXNlbnQuSgEyQhAKDl9pbnZpdGVyX2VtYWlsIo8DChNSZXNlbmRJbnZpdGVSZXF1ZXN0EsMBCg9vcmdhbml6YXRpb25faWQYASABKAlCqQGSQZYBMnxVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgb3JnYW5pemF0aW9uIGNvbnRhaW5pbmcgdGhlIHBlbmRpbmcgaW52aXRhdGlvbi4gTXVzdCBzdGFydCB3aXRoICdvcmdfJyBhbmQgYmUgMS0zMiBjaGFyYWN0ZXJzIGxvbmcuShYib3JnXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQARggOgRvcmdfErEBCgJpZBgCIAEoCUKkAZJBkQEyd1N5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRCBvZiB0aGUgdXNlciB3aG8gaGFzIGEgcGVuZGluZyBpbnZpdGF0aW9uLiBNdXN0IHN0YXJ0IHdpdGggJ3Vzcl8nIGFuZCBiZSAxOS0yNSBjaGFyYWN0ZXJzIGxvbmcuShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgMcgoQExgZOgR1c3JfItkCChRSZXNlbmRJbnZpdGVSZXNwb25zZRLAAgoGaW52aXRlGAEgASgLMhkuc2NhbGVraXQudjEudXNlcnMuSW52aXRlQpQCkkGQAjKBAVVwZGF0ZWQgaW52aXRhdGlvbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzZW50IGludml0YXRpb24gZGV0YWlscywgaW5jbHVkaW5nIG5ldyBleHBpcmF0aW9uIHRpbWUgYW5kIGluY3JlbWVudGVkIHJlc2VuZCBjb3VudGVyLkqJAXsib3JnYW5pemF0aW9uX2lkIjogIm9yZ18xMjMiLCAidXNlcl9pZCI6ICJ1c3JfNDU2IiwgInN0YXR1cyI6ICJwZW5kaW5nX2ludml0ZSIsICJleHBpcmVzX2F0IjogIjIwMjUtMTItMzFUMjM6NTk6NTlaIiwgInJlc2VudF9jb3VudCI6IDJ9ItgBChRMaXN0VXNlclJvbGVzUmVxdWVzdBJnCg9vcmdhbml6YXRpb25faWQYASABKAlCTpJBQDImVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBvcmdhbml6YXRpb25KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAhyBjoEb3JnXxJXCgd1c2VyX2lkGAIgASgJQkaSQTgyHlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlckoWInVzcl8xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgR1c3JfImoKFUxpc3RVc2VyUm9sZXNSZXNwb25zZRJRCgVyb2xlcxgBIAMoCzIZLnNjYWxla2l0LnYxLmNvbW1vbnMuUm9sZUInkkEkMiJMaXN0IG9mIHJvbGVzIGFzc2lnbmVkIHRvIHRoZSB1c2VyIr8CChZBc3NpZ25Vc2VyUm9sZXNSZXF1ZXN0EmcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJOkkFAMiZVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG9yZ2FuaXphdGlvbkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgRvcmdfElcKB3VzZXJfaWQYAiABKAlCRpJBODIeVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VyShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgIcgY6BHVzcl8SYwoFcm9sZXMYAyADKAsyJC5zY2FsZWtpdC52MS51c2Vycy5Bc3NpZ25Sb2xlUmVxdWVzdEIukkElMiNMaXN0IG9mIHJvbGVzIHRvIGFzc2lnbiB0byB0aGUgdXNlcrpIA8gBASKkAQoRQXNzaWduUm9sZVJlcXVlc3QSSgoCaWQYASABKAlCPhgBkkE5Mh5VbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvbGVKFyJyb2xlXzEyMzRhYmNkNTY3OGVmZ2giEkMKCXJvbGVfbmFtZRgCIAEoCUIwkkEkMhhVbmlxdWUgbmFtZSBmb3IgdGhlIHJvbGVKCCJ2aWV3ZXIiukgGcgQQABhkInoKF0Fzc2lnblVzZXJSb2xlc1Jlc3BvbnNlEl8KBXJvbGVzGAEgAygLMhkuc2NhbGVraXQudjEuY29tbW9ucy5Sb2xlQjWSQTIyMExpc3Qgb2YgYWxsIHJvbGVzIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgdXNlciK0AgoVUmVtb3ZlVXNlclJvbGVSZXF1ZXN0EmcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUJOkkFAMiZVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG9yZ2FuaXphdGlvbkoWIm9yZ18xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgRvcmdfElcKB3VzZXJfaWQYAiABKAlCRpJBODIeVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VyShYidXNyXzEyMzRhYmNkNTY3OGVmZ2giukgIcgY6BHVzcl8SWQoJcm9sZV9uYW1lGAMgASgJQkaSQUMyKFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm9sZSB0byByZW1vdmVKFyJyb2xlXzEyMzRhYmNkNTY3OGVmZ2giIt4BChpMaXN0VXNlclBlcm1pc3Npb25zUmVxdWVzdBJnCg9vcmdhbml6YXRpb25faWQYASABKAlCTpJBQDImVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBvcmdhbml6YXRpb25KFiJvcmdfMTIzNGFiY2Q1Njc4ZWZnaCK6SAhyBjoEb3JnXxJXCgd1c2VyX2lkGAIgASgJQkaSQTgyHlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlckoWInVzcl8xMjM0YWJjZDU2NzhlZmdoIrpICHIGOgR1c3JfIvoCCgpQZXJtaXNzaW9uElEKAmlkGAEgASgJQkWSQT8yJFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGVybWlzc2lvbkoXInBlcm1fMTIzNGFiY2Q1Njc4ZWZnaCLgQQMSTAoEbmFtZRgCIAEoCUI+kkE7MilVbmlxdWUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgcGVybWlzc2lvbkoOInVzZXJzOmNyZWF0ZSISaAoLZGVzY3JpcHRpb24YAyABKAlCU5JBUDIpRGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgcGVybWlzc2lvbiBhbGxvd3NKIyJBbGxvd3MgY3JlYXRpbmcgbmV3IHVzZXIgYWNjb3VudHMiEmEKBHRhZ3MYBCADKAlCU5JBQTIhVGFncyBmb3IgY2F0ZWdvcml6aW5nIHBlcm1pc3Npb25zShxbInVzZXItbWFuYWdlbWVudCIsICJhZG1pbiJd+tLkkwIJEgdQUkVWSUVXIi4KFkdldFN1cHBvcnRIYXNoUmVzcG9uc2USFAoMc3VwcG9ydF9oYXNoGAEgASgJIoIBChtMaXN0VXNlclBlcm1pc3Npb25zUmVzcG9uc2USYwoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS51c2Vycy5QZXJtaXNzaW9uQi+SQSwyKkxpc3Qgb2YgcGVybWlzc2lvbnMgdGhlIHVzZXIgaGFzIGFjY2VzcyB0bzKDYgoLVXNlclNlcnZpY2USuAMKB0dldFVzZXISIS5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVxdWVzdBoiLnNjYWxla2l0LnYxLnVzZXJzLkdldFVzZXJSZXNwb25zZSLlApJBwQIKBVVzZXJzEghHZXQgdXNlchqOAVJldHJpZXZlcyBhbGwgZGV0YWlscyBmb3IgYSB1c2VyIGJ5IHN5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRCBvciBleHRlcm5hbCBJRC4gVGhlIHJlc3BvbnNlIGluY2x1ZGVzIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwcyBhbmQgdXNlciBtZXRhZGF0YS5KnAEKAzIwMBKUAQpqVXNlciBkZXRhaWxzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgZnVsbCB1c2VyIG9iamVjdCB3aXRoIHN5c3RlbS1nZW5lcmF0ZWQgZmllbGRzIGFuZCB0aW1lc3RhbXBzLhImCiQaIi5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVzcG9uc2WCtRgCGFSC0+STAhQSEi9hcGkvdjEvdXNlcnMve2lkfRK6AwoOR2V0Q3VycmVudFVzZXISKC5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlcXVlc3QaKS5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlc3BvbnNlItICkkGfAgoFVXNlcnMSFkdldCBhdXRoZW50aWNhdGVkIHVzZXIangFSZXRyaWV2ZXMgZGV0YWlscyBmb3IgdGhlIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkIHVzZXIuIFJldHVybnMgdGhlIHNhbWUgdXNlciBvYmplY3QgYXMgR2V0VXNlciBidXQgdXNlcyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgSUQgZnJvbSB0aGUgc2Vzc2lvbiBjb250ZXh0LkpdCgMyMDASVgosQ3VycmVudCB1c2VyIGRldGFpbHMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4SJgokGiIuc2NhbGVraXQudjEudXNlcnMuR2V0VXNlclJlc3BvbnNlgrUYAhgQ+tLkkwIJEgdQUkVWSUVXgtPkkwIUEhIvYXBpL3YxL3VzZXJzOnRoaXMS8AIKDkdldFN1cHBvcnRIYXNoEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gikuc2NhbGVraXQudjEudXNlcnMuR2V0U3VwcG9ydEhhc2hSZXNwb25zZSKaApJB3wEKBVVzZXJzEhBHZXQgc3VwcG9ydCBoYXNoGmZSZXRyaWV2ZXMgdGhlIHN1cHBvcnQgZW1haWwgaGFzaCBmb3IgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIsIHVzZWQgZm9yIHRoZSBTY2FsZWtpdCBzdXBwb3J0IHN5c3RlbS5KXAoDMjAwElUKJFN1cHBvcnQgaGFzaCByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LhItCisaKS5zY2FsZWtpdC52MS51c2Vycy5HZXRTdXBwb3J0SGFzaFJlc3BvbnNlgrUYAhhQ+tLkkwIJEgdQUkVWSUVXgtPkkwIcEhovYXBpL3YxL3VzZXJzL3N1cHBvcnQtaGFzaBKgBAoJTGlzdFVzZXJzEiMuc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJzUmVxdWVzdBokLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2Vyc1Jlc3BvbnNlIscDkkGoAwoFVXNlcnMSHUxpc3QgYWxsIHVzZXJzIGluIGVudmlyb25tZW50GrwCUmV0cmlldmVzIGEgcGFnaW5hdGVkIGxpc3Qgb2YgYWxsIHVzZXJzIGFjcm9zcyB5b3VyIGVudGlyZSBlbnZpcm9ubWVudC4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdmlldyBhbGwgdXNlcnMgcmVnYXJkbGVzcyBvZiB0aGVpciBvcmdhbml6YXRpb24gbWVtYmVyc2hpcHMuIFRoaXMgaXMgdXNlZnVsIGZvciBhZG1pbmlzdHJhdGl2ZSBwdXJwb3NlcywgdXNlciBhdWRpdHMsIG9yIHdoZW4geW91IG5lZWQgdG8gc2VlIGFsbCB1c2VycyBpbiB5b3VyIFNjYWxla2l0IGVudmlyb25tZW50LiBTdXBwb3J0cyBwYWdpbmF0aW9uIGZvciBsYXJnZSB1c2VyIGJhc2VzLkpBCgMyMDASOgoOTGlzdCBvZiB1c2Vycy4SKAomGiQuc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJzUmVzcG9uc2WCtRgCGESC0+STAg8SDS9hcGkvdjEvdXNlcnMSuAUKC1NlYXJjaFVzZXJzEiUuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXF1ZXN0GiYuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXNwb25zZSLZBJJBswQKBVVzZXJzEgxTZWFyY2ggdXNlcnMarwJTZWFyY2hlcyBmb3IgdXNlcnMgYWNyb3NzIHRoZSBlbnRpcmUgZW52aXJvbm1lbnQgYnkgZW1haWwgYWRkcmVzcywgdXNlciBJRCwgb3IgZXh0ZXJuYWwgSUQuIFRoZSBxdWVyeSBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycyBhbmQgaXMgY2FzZS1pbnNlbnNpdGl2ZS4gUmV0dXJucyBhIHBhZ2luYXRlZCBsaXN0IG9mIG1hdGNoaW5nIHVzZXJzIHdpdGggdXAgdG8gMzAgcmVzdWx0cyBwZXIgcGFnZS4gVXNlIHRoZSBuZXh0X3BhZ2VfdG9rZW4gZnJvbSB0aGUgcmVzcG9uc2UgdG8gcmV0cmlldmUgc3Vic2VxdWVudCBwYWdlcy5KjAEKAzIwMBKEAQpWTWF0Y2hpbmcgdXNlcnMgcmV0dXJuZWQ7IGluY2x1ZGVzIHBhZ2luYXRpb24gY3Vyc29ycyBmb3IgbmF2aWdhdGluZyBsYXJnZSByZXN1bHQgc2V0cy4SKgooGiYuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoVXNlcnNSZXNwb25zZUpbCgM0MDASVApSQmFkIFJlcXVlc3QgLSBxdWVyeSBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycyBhbmQgbm8gbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzLoK1GAIYRILT5JMCFhIUL2FwaS92MS91c2VyczpzZWFyY2gS0AcKF1NlYXJjaE9yZ2FuaXphdGlvblVzZXJzEjEuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoT3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0GjIuc2NhbGVraXQudjEudXNlcnMuU2VhcmNoT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSLNBpJBhwYKBVVzZXJzEhlTZWFyY2ggb3JnYW5pemF0aW9uIHVzZXJzGuMCU2VhcmNoZXMgZm9yIHVzZXJzIHdpdGhpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiBieSBlbWFpbCBhZGRyZXNzLCB1c2VyIElELCBvciBleHRlcm5hbCBJRC4gVGhlIHF1ZXJ5IG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGFuZCBpcyBjYXNlLWluc2Vuc2l0aXZlLiBTY29wZXMgcmVzdWx0cyBzdHJpY3RseSB0byB0aGUgZ2l2ZW4gb3JnYW5pemF0aW9uLiBSZXR1cm5zIGEgcGFnaW5hdGVkIGxpc3Qgb2YgbWF0Y2hpbmcgdXNlcnMgd2l0aCB1cCB0byAzMCByZXN1bHRzIHBlciBwYWdlLiBVc2UgdGhlIG5leHRfcGFnZV90b2tlbiBmcm9tIHRoZSByZXNwb25zZSB0byByZXRyaWV2ZSBzdWJzZXF1ZW50IHBhZ2VzLkqwAQoDMjAwEqgBCm5NYXRjaGluZyB1c2VycyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbiByZXR1cm5lZDsgaW5jbHVkZXMgcGFnaW5hdGlvbiBjdXJzb3JzIGZvciBuYXZpZ2F0aW5nIGxhcmdlIHJlc3VsdCBzZXRzLhI2CjQaMi5zY2FsZWtpdC52MS51c2Vycy5TZWFyY2hPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlSpsBCgM0MDASkwEKkAFCYWQgUmVxdWVzdCAtIHF1ZXJ5IG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGFuZCBubyBtb3JlIHRoYW4gMTAwIGNoYXJhY3RlcnMsIGFuZCBvcmdhbml6YXRpb25faWQgbXVzdCBiZSBhIHZhbGlkIG9yZ18gcHJlZml4ZWQgaWRlbnRpZmllci5KLAoDNDA0EiUKI05vdCBGb3VuZCAtIG9yZ2FuaXphdGlvbiBub3QgZm91bmQugrUYAhhEgtPkkwI2EjQvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnM6c2VhcmNoEpYFCgpVcGRhdGVVc2VyEiQuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclJlcXVlc3QaJS5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyUmVzcG9uc2UiugSSQZAECgVVc2VycxIXVXBkYXRlIHVzZXIgaW5mb3JtYXRpb24a4QJNb2RpZmllcyB1c2VyIGFjY291bnQgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHByb2ZpbGUgZGV0YWlscywgbWV0YWRhdGEsIGFuZCBleHRlcm5hbCBJRC4gVXNlIHRoaXMgZW5kcG9pbnQgdG8gdXBkYXRlIGEgdXNlcidzIHBlcnNvbmFsIGluZm9ybWF0aW9uLCBjb250YWN0IGRldGFpbHMsIG9yIGN1c3RvbSBtZXRhZGF0YS4gWW91IGNhbiB1cGRhdGUgdGhlIHVzZXIncyBwcm9maWxlLCBwaG9uZSBudW1iZXIsIGFuZCBtZXRhZGF0YSBmaWVsZHMuIE5vdGUgdGhhdCBmaWVsZHMgbGlrZSB1c2VyIElELCBlbWFpbCBhZGRyZXNzLCBlbnZpcm9ubWVudCBJRCwgYW5kIGNyZWF0aW9uIHRpbWUgY2Fubm90IGJlIG1vZGlmaWVkLkqJAQoDMjAwEoEBClRVc2VyIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSBtb2RpZmllZCB1c2VyIG9iamVjdCB3aXRoIHVwZGF0ZWQgdGltZXN0YW1wcy4SKQonGiUuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlVXNlclJlc3BvbnNlgrUYAhhUgtPkkwIaOgR1c2VyMhIvYXBpL3YxL3VzZXJzL3tpZH0S/QMKCkRlbGV0ZVVzZXISJC5zY2FsZWtpdC52MS51c2Vycy5EZWxldGVVc2VyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSKwA5JBjAMKBVVzZXJzEhdEZWxldGUgdXNlciBwZXJtYW5lbnRseRqwAlBlcm1hbmVudGx5IHJlbW92ZXMgYSB1c2VyIGZyb20geW91ciBlbnZpcm9ubWVudCBhbmQgZGVsZXRlcyBhbGwgYXNzb2NpYXRlZCBkYXRhLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIHlvdSBuZWVkIHRvIGNvbXBsZXRlbHkgcmVtb3ZlIGEgdXNlciBhY2NvdW50LiBUaGlzIGFjdGlvbiBkZWxldGVzIHRoZSB1c2VyJ3MgcHJvZmlsZSwgbWVtYmVyc2hpcHMsIGFuZCBhbGwgcmVsYXRlZCBkYXRhIGFjcm9zcyBhbGwgb3JnYW5pemF0aW9ucy4gVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHVuZG9uZSwgc28gdXNlIHdpdGggY2F1dGlvbi5KNwoDMjAwEjAKLlVzZXIgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuIE5vIGNvbnRlbnQgcmV0dXJuZWSCtRgCGESC0+STAhQqEi9hcGkvdjEvdXNlcnMve2lkfRLEBQoQQ3JlYXRlTWVtYmVyc2hpcBIqLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXBSZXF1ZXN0Gisuc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlTWVtYmVyc2hpcFJlc3BvbnNlItYEkkHeAwoFVXNlcnMSIUFkZCBleGlzdGluZyB1c2VyIHRvIG9yZ2FuaXphdGlvbhqVAkFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBvcmdhbml6YXRpb24gYW5kIGFzc2lnbnMgdGhlbSBzcGVjaWZpYyByb2xlcyBhbmQgcGVybWlzc2lvbnMuIFVzZSB0aGlzIGVuZHBvaW50IHdoZW4geW91IHdhbnQgdG8gZ3JhbnQgYW4gZXhpc3RpbmcgdXNlciBhY2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIG9yZ2FuaXphdGlvbi4gWW91IGNhbiBzcGVjaWZ5IHJvbGVzLCBtZXRhZGF0YSwgYW5kIG90aGVyIG1lbWJlcnNoaXAgZGV0YWlscyBkdXJpbmcgdGhlIGludml0YXRpb24gcHJvY2Vzcy5KmQEKAzIwMRKRAQpeVXNlciBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIG9yZ2FuaXphdGlvbi4gUmV0dXJucyBkZXRhaWxzIG9mIHRoZSB1cGRhdGVkIG1lbWJlcnNoaXAgZGV0YWlscxIvCi0aKy5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVNZW1iZXJzaGlwUmVzcG9uc2WCtRgeChpvcmdhbml6YXRpb25zX3VzZXJzX2ludml0ZRhUgtPkkwJMOgptZW1iZXJzaGlwIj4vYXBpL3YxL21lbWJlcnNoaXBzL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve2lkfRKZBAoQRGVsZXRlTWVtYmVyc2hpcBIqLnNjYWxla2l0LnYxLnVzZXJzLkRlbGV0ZU1lbWJlcnNoaXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IsADkkHUAgoFVXNlcnMSJ0RlbGV0ZSBvcmdhbml6YXRpb24gbWVtYmVyc2hpcCBmb3IgdXNlchrcAVJlbW92ZXMgYSB1c2VyIGZyb20gYW4gb3JnYW5pemF0aW9uIGJ5IHVzZXIgSUQgb3IgZXh0ZXJuYWwgSUQuIElmIHRoZSB1c2VyIGhhcyBubyBtZW1iZXJzaGlwcyBsZWZ0IGFuZCBjYXNjYWRlIGlzIHRydWUsIHRoZSB1c2VyIGlzIGFsc28gZGVsZXRlZC4gVGhpcyBhY3Rpb24gaXMgaXJyZXZlcnNpYmxlIGFuZCBtYXkgYWxzbyByZW1vdmUgcmVsYXRlZCBncm91cCBtZW1iZXJzaGlwcy5KQwoDMjAwEjwKOlVzZXIgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBmb3IgZGVsZXRpb24uIE5vIGNvbnRlbnQgcmV0dXJuZWSCtRgeChpvcmdhbml6YXRpb25zX3VzZXJzX3JlbW92ZRhUgtPkkwJAKj4vYXBpL3YxL21lbWJlcnNoaXBzL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve2lkfRKeBAoQVXBkYXRlTWVtYmVyc2hpcBIqLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZU1lbWJlcnNoaXBSZXF1ZXN0Gisuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlTWVtYmVyc2hpcFJlc3BvbnNlIrADkkGzAgoFVXNlcnMSJ1VwZGF0ZSBvcmdhbml6YXRpb24gbWVtYmVyc2hpcCBmb3IgdXNlchqDAVVwZGF0ZXMgYSB1c2VyJ3MgbWVtYmVyc2hpcCBkZXRhaWxzIHdpdGhpbiBhbiBvcmdhbml6YXRpb24gYnkgdXNlciBJRCBvciBleHRlcm5hbCBJRC4gWW91IGNhbiB1cGRhdGUgcm9sZXMgYW5kIG1lbWJlcnNoaXAgbWV0YWRhdGEuSnsKAzIwMBJ0CkFNZW1iZXJzaGlwIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSB1cGRhdGVkIHVzZXIgb2JqZWN0LhIvCi0aKy5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVNZW1iZXJzaGlwUmVzcG9uc2WCtRgjCh9vcmdhbml6YXRpb25zX3VzZXJzX3JvbGVfdXBkYXRlGFSC0+STAkw6Cm1lbWJlcnNoaXAyPi9hcGkvdjEvbWVtYmVyc2hpcHMvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97aWR9EsgGChdDcmVhdGVVc2VyQW5kTWVtYmVyc2hpcBIxLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJBbmRNZW1iZXJzaGlwUmVxdWVzdBoyLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJBbmRNZW1iZXJzaGlwUmVzcG9uc2UixQWSQeQECgVVc2VycxIfQ3JlYXRlIG5ldyB1c2VyIGluIG9yZ2FuaXphdGlvbhqDA0NyZWF0ZXMgYSBuZXcgdXNlciBhY2NvdW50IGFuZCBpbW1lZGlhdGVseSBhZGRzIHRoZW0gdG8gdGhlIHNwZWNpZmllZCBvcmdhbml6YXRpb24uIFVzZSB0aGlzIGVuZHBvaW50IHdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgdXNlciBhbmQgZ3JhbnQgdGhlbSBhY2Nlc3MgdG8gYW4gb3JnYW5pemF0aW9uIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gWW91IGNhbiBwcm92aWRlIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbiwgYXNzaWduIHJvbGVzLCBhbmQgY29uZmlndXJlIG1lbWJlcnNoaXAgbWV0YWRhdGEuIFRoZSB1c2VyIHJlY2VpdmVzIGFuIGFjdGl2YXRpb24gZW1haWwgdW5sZXNzIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZCBpbiB0aGUgb3JnYW5pemF0aW9uIHNldHRpbmdzLkqzAQoDMjAxEqsBCnFVc2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSBjcmVhdGVkIHVzZXIgb2JqZWN0LCBpbmNsdWRpbmcgc3lzdGVtLWdlbmVyYXRlZCBpZGVudGlmaWVycyBhbmQgdGltZXN0YW1wcxI2CjQaMi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyQW5kTWVtYmVyc2hpcFJlc3BvbnNlgrUYHgoab3JnYW5pemF0aW9uc191c2Vyc19pbnZpdGUYVILT5JMCNToEdXNlciItL2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzEv0EChVMaXN0T3JnYW5pemF0aW9uVXNlcnMSLy5zY2FsZWtpdC52MS51c2Vycy5MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0GjAuc2NhbGVraXQudjEudXNlcnMuTGlzdE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2UigASSQacDCgVVc2VycxIXTGlzdCBvcmdhbml6YXRpb24gdXNlcnMahwJSZXRyaWV2ZXMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBhbGwgdXNlcnMgd2hvIGFyZSBtZW1iZXJzIG9mIHRoZSBzcGVjaWZpZWQgb3JnYW5pemF0aW9uLiBVc2UgdGhpcyBlbmRwb2ludCB0byB2aWV3IGFsbCB1c2VycyB3aXRoIGFjY2VzcyB0byBhIHBhcnRpY3VsYXIgb3JnYW5pemF0aW9uLCBpbmNsdWRpbmcgdGhlaXIgcm9sZXMsIG1ldGFkYXRhLCBhbmQgbWVtYmVyc2hpcCBkZXRhaWxzLiBTdXBwb3J0cyBwYWdpbmF0aW9uIGZvciBsYXJnZSB1c2VyIGxpc3RzLkp7CgMyMDASdAo8U3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCB0aGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnYW5pemF0aW9uEjQKMhowLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlgrUYHAoYb3JnYW5pemF0aW9uc191c2Vyc19yZWFkGFSC0+STAi8SLS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2VycxKuEAoMUmVzZW5kSW52aXRlEiYuc2NhbGVraXQudjEudXNlcnMuUmVzZW5kSW52aXRlUmVxdWVzdBonLnNjYWxla2l0LnYxLnVzZXJzLlJlc2VuZEludml0ZVJlc3BvbnNlIswPkkHaDgoFVXNlcnMSHFJlc2VuZCB1c2VyIGludml0YXRpb24gZW1haWwa4QRSZXNlbmRzIGFuIGludml0YXRpb24gZW1haWwgdG8gYSB1c2VyIHdobyBoYXMgYSBwZW5kaW5nIG9yIGV4cGlyZWQgaW52aXRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbi4gSWYgdGhlIGludml0YXRpb24gaGFzIGV4cGlyZWQsIGEgbmV3IGludml0YXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHNlbnQuIElmIHRoZSBpbnZpdGF0aW9uIGlzIHN0aWxsIHZhbGlkLCBhIHJlbWluZGVyIGVtYWlsIHdpbGwgYmUgc2VudCBpbnN0ZWFkLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIGEgdXNlciBoYXNuJ3QgcmVzcG9uZGVkIHRvIHRoZWlyIGluaXRpYWwgaW52aXRhdGlvbiBhbmQgeW91IG5lZWQgdG8gc2VuZCB0aGVtIGEgcmVtaW5kZXIgb3Igd2hlbiB0aGUgb3JpZ2luYWwgaW52aXRhdGlvbiBoYXMgZXhwaXJlZC4gVGhlIGludml0YXRpb24gZW1haWwgaW5jbHVkZXMgYSBzZWN1cmUgbWFnaWMgbGluayB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBjb21wbGV0ZSB0aGVpciBhY2NvdW50IHNldHVwIGFuZCBqb2luIHRoZSBvcmdhbml6YXRpb24uIEVhY2ggcmVzZW5kIG9wZXJhdGlvbiBpbmNyZW1lbnRzIHRoZSByZXNlbnQgY291bnRlci5KpwIKAzIwMBKfAgrvAVN1Y2Nlc3NmdWxseSByZXNlbnQgdGhlIGludml0YXRpb24gZW1haWwuIFJldHVybnMgdGhlIHVwZGF0ZWQgaW52aXRhdGlvbiBvYmplY3Qgd2l0aCBvcmdhbml6YXRpb24gSUQsIHVzZXIgSUQsIG1lbWJlcnNoaXAgc3RhdHVzLCB0aW1lc3RhbXBzLCBhbmQgcmVzZW50IGNvdW50LiBJZiBleHBpcmVkLCBhIG5ldyBpbnZpdGF0aW9uIGlzIGNyZWF0ZWQ7IG90aGVyd2lzZSwgdGhlIGV4aXN0aW5nIG9uZSBpcyByZXNlbnQuEisKKRonLnNjYWxla2l0LnYxLnVzZXJzLlJlc2VuZEludml0ZVJlc3BvbnNlSo8CCgM0MDAShwIK3QFJbnZhbGlkIHJlcXVlc3Qg4oCUIGNvbW1vbiBjYXVzZXMgaW5jbHVkZSB1c2VyIElEIG9yIG9yZ2FuaXphdGlvbiBJRCBpcyBpbnZhbGlkLCBmdWxsLXN0YWNrIGF1dGhlbnRpY2F0aW9uIGlzIGRpc2FibGVkLCB1c2VyIHByb2ZpbGUgaXMgbWlzc2luZywgaW52aXRlIGFscmVhZHkgYWNjZXB0ZWQsIG9yIG1pc3NpbmcgZXhwaXJ5IHRpbWUgaW4gdXNlciBtYW5hZ2VtZW50IHNldHRpbmdzLhIlCiMaIS5zY2FsZWtpdC52MS5lcnJkZXRhaWxzLkVycm9ySW5mb0qdAgoDNDA0EpUCCusBUmVzb3VyY2Ugbm90IGZvdW5kIOKAlCB0aGUgc3BlY2lmaWVkIHVzZXIsIG9yZ2FuaXphdGlvbiwgbWVtYmVyc2hpcCwgb3IgaW52aXRhdGlvbiBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHNwZWNpZmllZCBlbnZpcm9ubWVudC4gVmVyaWZ5IHRoYXQgYWxsIElEcyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVzb3VyY2VzIGV4aXN0IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJlc2VuZCBhbiBpbnZpdGF0aW9uLhIlCiMaIS5zY2FsZWtpdC52MS5lcnJkZXRhaWxzLkVycm9ySW5mb0ryAgoDNTAwEuoCCsACSW50ZXJuYWwgc2VydmVyIGVycm9yIOKAlCBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGludml0YXRpb24gcmVzZW5kIHJlcXVlc3QuIFRoaXMgbWF5IGJlIGR1ZSB0byBkYXRhYmFzZSBjb25uZWN0aXZpdHkgaXNzdWVzLCBwcm9ibGVtcyBnZW5lcmF0aW5nIHRoZSBzZWN1cmUgbWFnaWMgbGluaywgZW1haWwgZGVsaXZlcnkgc2VydmljZSBmYWlsdXJlcywgb3IgdHJhbnNhY3Rpb24gZXJyb3JzIGR1cmluZyBpbnZpdGF0aW9uIHByb2Nlc3NpbmcuIENvbnRhY3Qgc3VwcG9ydCBpZiB0aGUgcHJvYmxlbSBwZXJzaXN0cy4SJQojGiEuc2NhbGVraXQudjEuZXJyZGV0YWlscy5FcnJvckluZm+CtRgeChpvcmdhbml6YXRpb25zX3VzZXJzX2ludml0ZRhUgtPkkwJGOgEqMkEvYXBpL3YxL2ludml0ZXMvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97aWR9L3Jlc2VuZBLfAwoNTGlzdFVzZXJSb2xlcxInLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUm9sZXNSZXF1ZXN0Giguc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJSb2xlc1Jlc3BvbnNlIvoCkkGrAgoFVXNlcnMSD0xpc3QgdXNlciByb2xlcxqaAVJldHJpZXZlcyBhbGwgcm9sZXMgYXNzaWduZWQgdG8gYSB1c2VyIHdpdGhpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbi4gVGhpcyBpbmNsdWRlcyBib3RoIGRpcmVjdCByb2xlIGFzc2lnbm1lbnRzIGFuZCBpbmhlcml0ZWQgcm9sZXMgZnJvbSByb2xlIGhpZXJhcmNoeS5KdAoDMjAwEm0KPVN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgdGhlIGxpc3Qgb2Ygcm9sZXMgYXNzaWduZWQgdG8gdGhlIHVzZXISLAoqGiguc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJSb2xlc1Jlc3BvbnNlgrUYAhhEgtPkkwI/Ej0vYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve3VzZXJfaWR9L3JvbGVzEoMECg9Bc3NpZ25Vc2VyUm9sZXMSKS5zY2FsZWtpdC52MS51c2Vycy5Bc3NpZ25Vc2VyUm9sZXNSZXF1ZXN0Giouc2NhbGVraXQudjEudXNlcnMuQXNzaWduVXNlclJvbGVzUmVzcG9uc2UimAOSQZICCgVVc2VycxIUQXNzaWduIHJvbGVzIHRvIHVzZXIakAFBc3NpZ25zIG9uZSBvciBtb3JlIHJvbGVzIHRvIGEgdXNlciB3aXRoaW4gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24uIFRoaXMgb3BlcmF0aW9uIGFkZHMgdG8gZXhpc3Rpbmcgcm9sZSBhc3NpZ25tZW50cyByYXRoZXIgdGhhbiByZXBsYWNpbmcgdGhlbS5KYAoDMjAwElkKJ1N1Y2Nlc3NmdWxseSBhc3NpZ25lZCByb2xlcyB0byB0aGUgdXNlchIuCiwaKi5zY2FsZWtpdC52MS51c2Vycy5Bc3NpZ25Vc2VyUm9sZXNSZXNwb25zZYK1GCMKH29yZ2FuaXphdGlvbnNfdXNlcnNfcm9sZV91cGRhdGUYVPrS5JMCCRIHUFJFVklFV4LT5JMCRjoFcm9sZXMiPS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97dXNlcl9pZH0vcm9sZXMSyQMKDlJlbW92ZVVzZXJSb2xlEiguc2NhbGVraXQudjEudXNlcnMuUmVtb3ZlVXNlclJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IvQCkkHpAQoFVXNlcnMSFVJlbW92ZSByb2xlIGZyb20gdXNlchqaAVJlbW92ZXMgYSBzcGVjaWZpYyByb2xlIGFzc2lnbm1lbnQgZnJvbSBhIHVzZXIgd2l0aGluIGFuIG9yZ2FuaXphdGlvbi4gVGhpcyBvbmx5IHJlbW92ZXMgZGlyZWN0IHJvbGUgYXNzaWdubWVudHMsIG5vdCBpbmhlcml0ZWQgcm9sZXMgZnJvbSByb2xlIGhpZXJhcmNoeS5KLAoDMjAwEiUKI1JvbGUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQgZnJvbSB1c2VygrUYIwofb3JnYW5pemF0aW9uc191c2Vyc19yb2xlX3VwZGF0ZRhU+tLkkwIJEgdQUkVWSUVXgtPkkwJLKkkvYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve3VzZXJfaWR9L3JvbGVzL3tyb2xlX25hbWV9EpsEChNMaXN0VXNlclBlcm1pc3Npb25zEi0uc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJQZXJtaXNzaW9uc1JlcXVlc3QaLi5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclBlcm1pc3Npb25zUmVzcG9uc2UipAOSQc8CCgVVc2VycxIVTGlzdCB1c2VyIHBlcm1pc3Npb25zGrQBUmV0cmlldmVzIGFsbCBwZXJtaXNzaW9ucyBhIHVzZXIgaGFzIGFjY2VzcyB0byB3aXRoaW4gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24uIFRoaXMgaW5jbHVkZXMgcGVybWlzc2lvbnMgZnJvbSBkaXJlY3Qgcm9sZSBhc3NpZ25tZW50cyBhbmQgaW5oZXJpdGVkIHBlcm1pc3Npb25zIGZyb20gcm9sZSBoaWVyYXJjaHkuSngKAzIwMBJxCjtTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHRoZSBsaXN0IG9mIHBlcm1pc3Npb25zIGZvciB0aGUgdXNlchIyCjAaLi5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclBlcm1pc3Npb25zUmVzcG9uc2WCtRgCGESC0+STAkUSQy9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97dXNlcl9pZH0vcGVybWlzc2lvbnMa7AOSQegDCgVVc2VycxLeA0NvbXByZWhlbnNpdmUgdXNlciBtYW5hZ2VtZW50IG9wZXJhdGlvbnMgaW5jbHVkaW5nIHVzZXIgbGlmZWN5Y2xlLCBvcmdhbml6YXRpb24gbWVtYmVyc2hpcHMsIGFuZCBpbnZpdGF0aW9uIHdvcmtmbG93cy4gVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIGVuZHBvaW50cyBmb3IgY3JlYXRpbmcsIHJldHJpZXZpbmcsIHVwZGF0aW5nLCBhbmQgZGVsZXRpbmcgdXNlciBhY2NvdW50cyBhY3Jvc3MgeW91ciBTY2FsZWtpdCBlbnZpcm9ubWVudC4gSXQgc3VwcG9ydHMgYm90aCBpbmRpdmlkdWFsIHVzZXIgb3BlcmF0aW9ucyBhbmQgYnVsayBvcGVyYXRpb25zIGZvciB1c2VyIGFkbWluaXN0cmF0aW9uLCBpbmNsdWRpbmcgdXNlciBzZWFyY2gsIHBhZ2luYXRpb24sIGFuZCBtZXRhZGF0YSBtYW5hZ2VtZW50LiBUaGUgc2VydmljZSBhbHNvIGhhbmRsZXMgdXNlciBpbnZpdGF0aW9ucyBhbmQgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXAgbWFuYWdlbWVudC5CMVovZ2l0aHViLmNvbS9zY2FsZWtpdC1pbmMvc2NhbGVraXQvcGtnL2dycGMvdXNlcnNiBnByb3RvMw", [validate_pb_1.file_buf_validate_validate, annotations_pb_1.file_google_api_annotations, field_behavior_pb_1.file_google_api_field_behavior, visibility_pb_1.file_google_api_visibility, wkt_1.file_google_protobuf_empty, wkt_1.file_google_protobuf_timestamp, annotations_pb_2.file_protoc_gen_openapiv2_options_annotations, commons_pb_1.file_scalekit_v1_commons_commons, options_pb_1.file_scalekit_v1_options_options]);
|
|
20
20
|
/**
|
|
21
21
|
* Describes the message scalekit.v1.users.User.
|
|
22
22
|
* Use `create(UserSchema)` to create a new message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users_pb.js","sourceRoot":"","sources":["../../../../../../src/pkg/grpc/scalekit/v1/users/users_pb.ts"],"names":[],"mappings":";AAAA,iEAAiE;AACjE,gGAAgG;AAChG,oBAAoB;;;AAGpB,4DAAkF;AAClF,mEAA+E;AAC/E,uEAAiF;AACjF,6EAAuF;AACvF,qEAA+E;AAE/E,gDAAoG;AACpG,yFAAqH;AAErH,sDAAyE;AACzE,sDAAyE;AAGzE;;GAEG;AACU,QAAA,4BAA4B,GACvC,IAAA,oBAAQ,EAAC,
|
|
1
|
+
{"version":3,"file":"users_pb.js","sourceRoot":"","sources":["../../../../../../src/pkg/grpc/scalekit/v1/users/users_pb.ts"],"names":[],"mappings":"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"}
|
package/lib/role.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { MessageShape } from '@bufbuild/protobuf';
|
|
|
2
2
|
import { EmptySchema } from '@bufbuild/protobuf/wkt';
|
|
3
3
|
import GrpcConnect from './connect';
|
|
4
4
|
import CoreClient from './core';
|
|
5
|
-
import { CreateRoleResponse, UpdateRoleResponse, GetRoleResponse, ListRolesResponse, CreateOrganizationRoleResponse, UpdateOrganizationRoleResponse, GetOrganizationRoleResponse, ListOrganizationRolesResponse, GetRoleUsersCountResponse, GetOrganizationRoleUsersCountResponse, UpdateDefaultOrganizationRolesResponse, CreateRole, UpdateRole, CreateOrganizationRole } from './pkg/grpc/scalekit/v1/roles/roles_pb';
|
|
5
|
+
import { CreateRoleResponse, UpdateRoleResponse, GetRoleResponse, ListRolesResponse, CreateOrganizationRoleResponse, UpdateOrganizationRoleResponse, GetOrganizationRoleResponse, ListOrganizationRolesResponse, GetRoleUsersCountResponse, GetOrganizationRoleUsersCountResponse, UpdateDefaultOrganizationRolesResponse, UpdateDefaultRolesResponse, ListDependentRolesResponse, CreateRole, UpdateRole, CreateOrganizationRole } from './pkg/grpc/scalekit/v1/roles/roles_pb';
|
|
6
6
|
/**
|
|
7
7
|
* Client for managing roles at both environment and organization levels.
|
|
8
8
|
*
|
|
@@ -282,6 +282,52 @@ export default class RoleClient {
|
|
|
282
282
|
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Get Organization Role User Count API}
|
|
283
283
|
*/
|
|
284
284
|
getOrganizationRoleUsersCount(orgId: string, roleName: string): Promise<GetOrganizationRoleUsersCountResponse>;
|
|
285
|
+
/**
|
|
286
|
+
* Sets the default creator and/or member roles for the environment.
|
|
287
|
+
*
|
|
288
|
+
* These roles are automatically assigned to users when they are created or added as members
|
|
289
|
+
* at the environment level. Both parameters are optional — only the provided fields are updated.
|
|
290
|
+
*
|
|
291
|
+
* @param {object} options - Update options
|
|
292
|
+
* @param {string} [options.defaultCreatorRole] - Role assigned to users who create resources
|
|
293
|
+
* @param {string} [options.defaultMemberRole] - Role assigned to new environment members
|
|
294
|
+
*
|
|
295
|
+
* @returns {Promise<UpdateDefaultRolesResponse>} Updated default roles configuration
|
|
296
|
+
*
|
|
297
|
+
* @throws {ScalekitServerException} If the specified role names do not exist
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* await scalekitClient.role.updateDefaultRoles({
|
|
301
|
+
* defaultCreatorRole: 'owner',
|
|
302
|
+
* defaultMemberRole: 'member',
|
|
303
|
+
* });
|
|
304
|
+
*
|
|
305
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Update Default Roles API}
|
|
306
|
+
*/
|
|
307
|
+
updateDefaultRoles(options?: {
|
|
308
|
+
defaultCreatorRole?: string;
|
|
309
|
+
defaultMemberRole?: string;
|
|
310
|
+
}): Promise<UpdateDefaultRolesResponse>;
|
|
311
|
+
/**
|
|
312
|
+
* Lists all roles that extend (depend on) the specified role.
|
|
313
|
+
*
|
|
314
|
+
* Dependent roles are roles that use the given role as their base role and inherit its permissions.
|
|
315
|
+
* Use this to understand the impact of modifying or deleting a role.
|
|
316
|
+
*
|
|
317
|
+
* @param {string} roleName - Role to find dependents for
|
|
318
|
+
*
|
|
319
|
+
* @returns {Promise<ListDependentRolesResponse>} Array of roles that depend on the given role
|
|
320
|
+
*
|
|
321
|
+
* @throws {Error} If roleName is empty
|
|
322
|
+
* @throws {ScalekitServerException} If the role is not found
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* const response = await scalekitClient.role.listDependentRoles('base_role');
|
|
326
|
+
* response.roles.forEach(r => console.log(`${r.name} depends on base_role`));
|
|
327
|
+
*
|
|
328
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | List Dependent Roles API}
|
|
329
|
+
*/
|
|
330
|
+
listDependentRoles(roleName: string): Promise<ListDependentRolesResponse>;
|
|
285
331
|
/**
|
|
286
332
|
* Sets the default role automatically assigned to new organization members.
|
|
287
333
|
* This is the role that is by default assigned to every new user added to this organization.
|
package/lib/role.js
CHANGED
|
@@ -375,6 +375,71 @@ class RoleClient {
|
|
|
375
375
|
});
|
|
376
376
|
});
|
|
377
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* Sets the default creator and/or member roles for the environment.
|
|
380
|
+
*
|
|
381
|
+
* These roles are automatically assigned to users when they are created or added as members
|
|
382
|
+
* at the environment level. Both parameters are optional — only the provided fields are updated.
|
|
383
|
+
*
|
|
384
|
+
* @param {object} options - Update options
|
|
385
|
+
* @param {string} [options.defaultCreatorRole] - Role assigned to users who create resources
|
|
386
|
+
* @param {string} [options.defaultMemberRole] - Role assigned to new environment members
|
|
387
|
+
*
|
|
388
|
+
* @returns {Promise<UpdateDefaultRolesResponse>} Updated default roles configuration
|
|
389
|
+
*
|
|
390
|
+
* @throws {ScalekitServerException} If the specified role names do not exist
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* await scalekitClient.role.updateDefaultRoles({
|
|
394
|
+
* defaultCreatorRole: 'owner',
|
|
395
|
+
* defaultMemberRole: 'member',
|
|
396
|
+
* });
|
|
397
|
+
*
|
|
398
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Update Default Roles API}
|
|
399
|
+
*/
|
|
400
|
+
updateDefaultRoles() {
|
|
401
|
+
return __awaiter(this, arguments, void 0, function* (options = {}) {
|
|
402
|
+
if (options.defaultCreatorRole === '') {
|
|
403
|
+
throw new Error('defaultCreatorRole cannot be empty');
|
|
404
|
+
}
|
|
405
|
+
if (options.defaultMemberRole === '') {
|
|
406
|
+
throw new Error('defaultMemberRole cannot be empty');
|
|
407
|
+
}
|
|
408
|
+
return this.coreClient.connectExec(this.client.updateDefaultRoles, Object.assign(Object.assign({}, (options.defaultCreatorRole !== undefined && {
|
|
409
|
+
defaultCreatorRole: options.defaultCreatorRole,
|
|
410
|
+
})), (options.defaultMemberRole !== undefined && {
|
|
411
|
+
defaultMemberRole: options.defaultMemberRole,
|
|
412
|
+
})));
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Lists all roles that extend (depend on) the specified role.
|
|
417
|
+
*
|
|
418
|
+
* Dependent roles are roles that use the given role as their base role and inherit its permissions.
|
|
419
|
+
* Use this to understand the impact of modifying or deleting a role.
|
|
420
|
+
*
|
|
421
|
+
* @param {string} roleName - Role to find dependents for
|
|
422
|
+
*
|
|
423
|
+
* @returns {Promise<ListDependentRolesResponse>} Array of roles that depend on the given role
|
|
424
|
+
*
|
|
425
|
+
* @throws {Error} If roleName is empty
|
|
426
|
+
* @throws {ScalekitServerException} If the role is not found
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* const response = await scalekitClient.role.listDependentRoles('base_role');
|
|
430
|
+
* response.roles.forEach(r => console.log(`${r.name} depends on base_role`));
|
|
431
|
+
*
|
|
432
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | List Dependent Roles API}
|
|
433
|
+
*/
|
|
434
|
+
listDependentRoles(roleName) {
|
|
435
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
436
|
+
if (!roleName)
|
|
437
|
+
throw new Error('roleName is required');
|
|
438
|
+
return this.coreClient.connectExec(this.client.listDependentRoles, {
|
|
439
|
+
roleName,
|
|
440
|
+
});
|
|
441
|
+
});
|
|
442
|
+
}
|
|
378
443
|
/**
|
|
379
444
|
* Sets the default role automatically assigned to new organization members.
|
|
380
445
|
* This is the role that is by default assigned to every new user added to this organization.
|
package/lib/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../src/role.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,iDAA4C;AAK5C,oEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../src/role.ts"],"names":[],"mappings":"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"}
|
package/lib/scalekit.d.ts
CHANGED
|
@@ -10,6 +10,10 @@ import RoleClient from './role';
|
|
|
10
10
|
import PermissionClient from './permission';
|
|
11
11
|
import WebAuthnClient from './webauthn';
|
|
12
12
|
import TokenClient from './token';
|
|
13
|
+
import M2MClient from './m2mclient';
|
|
14
|
+
import ToolsClient from './tools';
|
|
15
|
+
import ConnectedAccountsClient from './connected-accounts';
|
|
16
|
+
import ActionsClient from './actions';
|
|
13
17
|
import { IdpInitiatedLoginClaims } from './types/auth';
|
|
14
18
|
import { AuthenticationOptions, AuthenticationResponse, AuthorizationUrlOptions, LogoutUrlOptions, RefreshTokenResponse, TokenValidationOptions } from './types/scalekit';
|
|
15
19
|
/**
|
|
@@ -57,6 +61,10 @@ export default class ScalekitClient {
|
|
|
57
61
|
readonly auth: AuthClient;
|
|
58
62
|
readonly webauthn: WebAuthnClient;
|
|
59
63
|
readonly token: TokenClient;
|
|
64
|
+
readonly m2m: M2MClient;
|
|
65
|
+
readonly tools: ToolsClient;
|
|
66
|
+
readonly connectedAccounts: ConnectedAccountsClient;
|
|
67
|
+
readonly actions: ActionsClient;
|
|
60
68
|
constructor(envUrl: string, clientId: string, clientSecret: string);
|
|
61
69
|
/**
|
|
62
70
|
* Utility method to generate the OAuth 2.0 authorization URL to initiate the SSO authentication flow.
|
package/lib/scalekit.js
CHANGED
|
@@ -63,6 +63,10 @@ const role_1 = __importDefault(require("./role"));
|
|
|
63
63
|
const permission_1 = __importDefault(require("./permission"));
|
|
64
64
|
const webauthn_1 = __importDefault(require("./webauthn"));
|
|
65
65
|
const token_1 = __importDefault(require("./token"));
|
|
66
|
+
const m2mclient_1 = __importDefault(require("./m2mclient"));
|
|
67
|
+
const tools_1 = __importDefault(require("./tools"));
|
|
68
|
+
const connected_accounts_1 = __importDefault(require("./connected-accounts"));
|
|
69
|
+
const actions_1 = __importDefault(require("./actions"));
|
|
66
70
|
const scalekit_1 = require("./types/scalekit");
|
|
67
71
|
const base_exception_1 = require("./errors/base-exception");
|
|
68
72
|
const axios_1 = require("axios");
|
|
@@ -116,6 +120,10 @@ class ScalekitClient {
|
|
|
116
120
|
this.auth = new auth_1.default(this.grpcConnect, this.coreClient);
|
|
117
121
|
this.webauthn = new webauthn_1.default(this.grpcConnect, this.coreClient);
|
|
118
122
|
this.token = new token_1.default(this.grpcConnect, this.coreClient);
|
|
123
|
+
this.m2m = new m2mclient_1.default(this.grpcConnect, this.coreClient);
|
|
124
|
+
this.tools = new tools_1.default(this.grpcConnect, this.coreClient);
|
|
125
|
+
this.connectedAccounts = new connected_accounts_1.default(this.grpcConnect, this.coreClient);
|
|
126
|
+
this.actions = new actions_1.default(this.tools, this.connectedAccounts, this.coreClient);
|
|
119
127
|
}
|
|
120
128
|
/**
|
|
121
129
|
* Utility method to generate the OAuth 2.0 authorization URL to initiate the SSO authentication flow.
|
package/lib/scalekit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalekit.js","sourceRoot":"","sources":["../src/scalekit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scalekit.js","sourceRoot":"","sources":["../src/scalekit.ts"],"names":[],"mappings":"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"}
|
package/lib/token.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { EmptySchema } from '@bufbuild/protobuf/wkt';
|
|
|
3
3
|
import type { Timestamp } from '@bufbuild/protobuf/wkt';
|
|
4
4
|
import GrpcConnect from './connect';
|
|
5
5
|
import CoreClient from './core';
|
|
6
|
-
import { CreateTokenResponse, ValidateTokenResponse, ListTokensResponse, Token } from './pkg/grpc/scalekit/v1/tokens/tokens_pb';
|
|
6
|
+
import { CreateTokenResponse, ValidateTokenResponse, ListTokensResponse, UpdateTokenResponse, Token } from './pkg/grpc/scalekit/v1/tokens/tokens_pb';
|
|
7
7
|
/**
|
|
8
8
|
* Options for creating an API token.
|
|
9
9
|
*/
|
|
@@ -19,6 +19,17 @@ export interface CreateTokenOptions {
|
|
|
19
19
|
/** Optional human-readable label (max 255 chars) */
|
|
20
20
|
description?: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Options for updating an API token.
|
|
24
|
+
*/
|
|
25
|
+
export interface UpdateTokenOptions {
|
|
26
|
+
/** Custom claims to merge into the token (set value to empty string to remove a claim) */
|
|
27
|
+
customClaims?: {
|
|
28
|
+
[key: string]: string;
|
|
29
|
+
};
|
|
30
|
+
/** Optional description replacement (empty string clears) */
|
|
31
|
+
description?: string;
|
|
32
|
+
}
|
|
22
33
|
/**
|
|
23
34
|
* Options for listing API tokens.
|
|
24
35
|
*/
|
|
@@ -183,5 +194,26 @@ export default class TokenClient {
|
|
|
183
194
|
* @see {@link https://docs.scalekit.com/apis/#tag/tokens | List Tokens API}
|
|
184
195
|
*/
|
|
185
196
|
listTokens(organizationId: string, options?: ListTokensOptions): Promise<ListTokensResponse>;
|
|
197
|
+
/**
|
|
198
|
+
* Updates the custom claims and/or description of an existing API token.
|
|
199
|
+
*
|
|
200
|
+
* When customClaims is provided, it replaces the entire existing claims map.
|
|
201
|
+
*
|
|
202
|
+
* @param {string} token - The opaque token string or token_id (apit_xxxxx)
|
|
203
|
+
* @param {UpdateTokenOptions} [options] - Fields to update
|
|
204
|
+
* @param {object} [options.customClaims] - New claims map; replaces all existing claims
|
|
205
|
+
* @param {string} [options.description] - Replacement description; empty string clears it
|
|
206
|
+
*
|
|
207
|
+
* @returns {Promise<UpdateTokenResponse>} Response containing updated token_info
|
|
208
|
+
*
|
|
209
|
+
* @throws {ScalekitServerException} If a network or server error occurs
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* const response = await scalekitClient.token.updateToken('apit_123456789', {
|
|
213
|
+
* customClaims: { env: 'production', scope: 'read' },
|
|
214
|
+
* description: 'Updated CI token'
|
|
215
|
+
* });
|
|
216
|
+
*/
|
|
217
|
+
updateToken(token: string, options?: UpdateTokenOptions): Promise<UpdateTokenResponse>;
|
|
186
218
|
}
|
|
187
|
-
export { Token, CreateTokenResponse, ValidateTokenResponse, ListTokensResponse, };
|
|
219
|
+
export { Token, CreateTokenResponse, ValidateTokenResponse, ListTokensResponse, UpdateTokenResponse, };
|
package/lib/token.js
CHANGED
|
@@ -216,6 +216,36 @@ class TokenClient {
|
|
|
216
216
|
return this.coreClient.connectExec(this.client.listTokens, Object.assign(Object.assign(Object.assign({ organizationId }, ((options === null || options === void 0 ? void 0 : options.userId) && { userId: options.userId })), ((options === null || options === void 0 ? void 0 : options.pageSize) !== undefined && { pageSize: options.pageSize })), ((options === null || options === void 0 ? void 0 : options.pageToken) && { pageToken: options.pageToken })));
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Updates the custom claims and/or description of an existing API token.
|
|
221
|
+
*
|
|
222
|
+
* When customClaims is provided, it replaces the entire existing claims map.
|
|
223
|
+
*
|
|
224
|
+
* @param {string} token - The opaque token string or token_id (apit_xxxxx)
|
|
225
|
+
* @param {UpdateTokenOptions} [options] - Fields to update
|
|
226
|
+
* @param {object} [options.customClaims] - New claims map; replaces all existing claims
|
|
227
|
+
* @param {string} [options.description] - Replacement description; empty string clears it
|
|
228
|
+
*
|
|
229
|
+
* @returns {Promise<UpdateTokenResponse>} Response containing updated token_info
|
|
230
|
+
*
|
|
231
|
+
* @throws {ScalekitServerException} If a network or server error occurs
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* const response = await scalekitClient.token.updateToken('apit_123456789', {
|
|
235
|
+
* customClaims: { env: 'production', scope: 'read' },
|
|
236
|
+
* description: 'Updated CI token'
|
|
237
|
+
* });
|
|
238
|
+
*/
|
|
239
|
+
updateToken(token, options) {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
if (!token) {
|
|
242
|
+
throw new Error('token is required');
|
|
243
|
+
}
|
|
244
|
+
return this.coreClient.connectExec(this.client.updateToken, Object.assign(Object.assign({ token }, ((options === null || options === void 0 ? void 0 : options.customClaims) && { customClaims: options.customClaims })), ((options === null || options === void 0 ? void 0 : options.description) !== undefined && {
|
|
245
|
+
description: options.description,
|
|
246
|
+
})));
|
|
247
|
+
});
|
|
248
|
+
}
|
|
219
249
|
}
|
|
220
250
|
exports.default = TokenClient;
|
|
221
251
|
//# sourceMappingURL=token.js.map
|
package/lib/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,iDAA2C;AAI3C,4DAGiC;AACjC,
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
|