@scalekit-sdk/node 2.2.2 → 2.4.0
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/auth.d.ts +6 -6
- package/lib/auth.js +6 -6
- package/lib/auth.js.map +1 -1
- package/lib/connect.js +1 -1
- package/lib/connect.js.map +1 -1
- package/lib/connection.d.ts +27 -3
- package/lib/connection.js +36 -0
- package/lib/connection.js.map +1 -1
- package/lib/constants/user.js +18 -18
- package/lib/constants/user.js.map +1 -1
- package/lib/core.d.ts +14 -6
- package/lib/core.js +15 -13
- package/lib/core.js.map +1 -1
- package/lib/directory.d.ts +27 -3
- package/lib/directory.js +37 -1
- package/lib/directory.js.map +1 -1
- package/lib/domain.d.ts +5 -5
- package/lib/domain.js +6 -6
- package/lib/domain.js.map +1 -1
- package/lib/errors/base-exception.js +80 -48
- package/lib/errors/base-exception.js.map +1 -1
- package/lib/errors/specific-exceptions.js +1 -1
- package/lib/errors/specific-exceptions.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/organization.d.ts +6 -6
- package/lib/organization.js +6 -6
- package/lib/organization.js.map +1 -1
- package/lib/passwordless.js +8 -6
- package/lib/passwordless.js.map +1 -1
- package/lib/permission.d.ts +5 -5
- package/lib/permission.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +29 -0
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +23 -17
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js.map +1 -1
- 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/roles/roles_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +1 -1
- package/lib/pkg/grpc/scalekit/v1/tokens/tokens_pb.d.ts +404 -0
- package/lib/pkg/grpc/scalekit/v1/tokens/tokens_pb.js +96 -0
- package/lib/pkg/grpc/scalekit/v1/tokens/tokens_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +22 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +8 -3
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
- package/lib/role.d.ts +22 -5
- package/lib/role.js +22 -0
- package/lib/role.js.map +1 -1
- package/lib/scalekit.d.ts +19 -0
- package/lib/scalekit.js +81 -32
- package/lib/scalekit.js.map +1 -1
- package/lib/session.d.ts +3 -3
- package/lib/session.js +7 -3
- package/lib/session.js.map +1 -1
- package/lib/token.d.ts +187 -0
- package/lib/token.js +221 -0
- package/lib/token.js.map +1 -0
- package/lib/user.d.ts +6 -9
- package/lib/user.js +11 -14
- package/lib/user.js.map +1 -1
- package/lib/webauthn.js +3 -3
- package/lib/webauthn.js.map +1 -1
- package/package.json +10 -3
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// @generated from file scalekit/v1/users/users.proto (package scalekit.v1.users, syntax proto3)
|
|
4
4
|
/* eslint-disable */
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.UserService = exports.ListUserPermissionsResponseSchema = exports.PermissionSchema = exports.ListUserPermissionsRequestSchema = exports.RemoveUserRoleRequestSchema = exports.AssignUserRolesResponseSchema = exports.AssignRoleRequestSchema = exports.AssignUserRolesRequestSchema = exports.ListUserRolesResponseSchema = exports.ListUserRolesRequestSchema = exports.ResendInviteResponseSchema = exports.ResendInviteRequestSchema = exports.InviteSchema = exports.UpdateUserProfileSchema = exports.CreateUserProfileSchema = exports.CreateUserSchema = exports.SearchOrganizationUsersResponseSchema = exports.SearchOrganizationUsersRequestSchema = exports.UpdateMembershipResponseSchema = exports.CreateMembershipSchema = exports.UpdateMembershipSchema = exports.UpdateMembershipRequestSchema = exports.DeleteUserRequestSchema = exports.SearchUsersResponseSchema = exports.SearchUsersRequestSchema = exports.ListUsersResponseSchema = exports.ListUsersRequestSchema = exports.CreateMembershipResponseSchema = exports.CreateMembershipRequestSchema = exports.DeleteMembershipRequestSchema = exports.ListOrganizationUsersResponseSchema = exports.ListOrganizationUsersRequestSchema = exports.GetCurrentUserRequestSchema = exports.GetCurrentUserResponseSchema = exports.GetUserResponseSchema = exports.GetUserRequestSchema = exports.UpdateUserResponseSchema = exports.UpdateUserRequestSchema = exports.UpdateUserSchema = exports.CreateUserAndMembershipResponseSchema = exports.CreateUserAndMembershipRequestSchema = exports.UserSchema = exports.file_scalekit_v1_users_users = void 0;
|
|
6
|
+
exports.UserService = exports.ListUserPermissionsResponseSchema = exports.GetSupportHashResponseSchema = exports.PermissionSchema = exports.ListUserPermissionsRequestSchema = exports.RemoveUserRoleRequestSchema = exports.AssignUserRolesResponseSchema = exports.AssignRoleRequestSchema = exports.AssignUserRolesRequestSchema = exports.ListUserRolesResponseSchema = exports.ListUserRolesRequestSchema = exports.ResendInviteResponseSchema = exports.ResendInviteRequestSchema = exports.InviteSchema = exports.UpdateUserProfileSchema = exports.CreateUserProfileSchema = exports.CreateUserSchema = exports.SearchOrganizationUsersResponseSchema = exports.SearchOrganizationUsersRequestSchema = exports.UpdateMembershipResponseSchema = exports.CreateMembershipSchema = exports.UpdateMembershipSchema = exports.UpdateMembershipRequestSchema = exports.DeleteUserRequestSchema = exports.SearchUsersResponseSchema = exports.SearchUsersRequestSchema = exports.ListUsersResponseSchema = exports.ListUsersRequestSchema = exports.CreateMembershipResponseSchema = exports.CreateMembershipRequestSchema = exports.DeleteMembershipRequestSchema = exports.ListOrganizationUsersResponseSchema = exports.ListOrganizationUsersRequestSchema = exports.GetCurrentUserRequestSchema = exports.GetCurrentUserResponseSchema = exports.GetUserResponseSchema = exports.GetUserRequestSchema = exports.UpdateUserResponseSchema = exports.UpdateUserRequestSchema = exports.UpdateUserSchema = exports.CreateUserAndMembershipResponseSchema = exports.CreateUserAndMembershipRequestSchema = exports.UserSchema = exports.file_scalekit_v1_users_users = void 0;
|
|
7
7
|
const codegenv2_1 = require("@bufbuild/protobuf/codegenv2");
|
|
8
8
|
const validate_pb_1 = require("../../../buf/validate/validate_pb");
|
|
9
9
|
const annotations_pb_1 = require("../../../google/api/annotations_pb");
|
|
@@ -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+tLkkwIJEgdQUkVWSUVXIoIBChtMaXN0VXNlclBlcm1pc3Npb25zUmVzcG9uc2USYwoLcGVybWlzc2lvbnMYASADKAsyHS5zY2FsZWtpdC52MS51c2Vycy5QZXJtaXNzaW9uQi+SQSwyKkxpc3Qgb2YgcGVybWlzc2lvbnMgdGhlIHVzZXIgaGFzIGFjY2VzcyB0bzLGWAoLVXNlclNlcnZpY2USuAMKB0dldFVzZXISIS5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVxdWVzdBoiLnNjYWxla2l0LnYxLnVzZXJzLkdldFVzZXJSZXNwb25zZSLlApJBwQIKBVVzZXJzEghHZXQgdXNlchqOAVJldHJpZXZlcyBhbGwgZGV0YWlscyBmb3IgYSB1c2VyIGJ5IHN5c3RlbS1nZW5lcmF0ZWQgdXNlciBJRCBvciBleHRlcm5hbCBJRC4gVGhlIHJlc3BvbnNlIGluY2x1ZGVzIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwcyBhbmQgdXNlciBtZXRhZGF0YS5KnAEKAzIwMBKUAQpqVXNlciBkZXRhaWxzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgZnVsbCB1c2VyIG9iamVjdCB3aXRoIHN5c3RlbS1nZW5lcmF0ZWQgZmllbGRzIGFuZCB0aW1lc3RhbXBzLhImCiQaIi5zY2FsZWtpdC52MS51c2Vycy5HZXRVc2VyUmVzcG9uc2WCtRgCGESC0+STAhQSEi9hcGkvdjEvdXNlcnMve2lkfRK6AwoOR2V0Q3VycmVudFVzZXISKC5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlcXVlc3QaKS5zY2FsZWtpdC52MS51c2Vycy5HZXRDdXJyZW50VXNlclJlc3BvbnNlItICkkGfAgoFVXNlcnMSFkdldCBhdXRoZW50aWNhdGVkIHVzZXIangFSZXRyaWV2ZXMgZGV0YWlscyBmb3IgdGhlIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkIHVzZXIuIFJldHVybnMgdGhlIHNhbWUgdXNlciBvYmplY3QgYXMgR2V0VXNlciBidXQgdXNlcyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgSUQgZnJvbSB0aGUgc2Vzc2lvbiBjb250ZXh0LkpdCgMyMDASVgosQ3VycmVudCB1c2VyIGRldGFpbHMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4SJgokGiIuc2NhbGVraXQudjEudXNlcnMuR2V0VXNlclJlc3BvbnNlgrUYAhgQ+tLkkwIJEgdQUkVWSUVXgtPkkwIUEhIvYXBpL3YxL3VzZXJzOnRoaXMSoAQKCUxpc3RVc2VycxIjLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2Vyc1JlcXVlc3QaJC5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlcnNSZXNwb25zZSLHA5JBqAMKBVVzZXJzEh1MaXN0IGFsbCB1c2VycyBpbiBlbnZpcm9ubWVudBq8AlJldHJpZXZlcyBhIHBhZ2luYXRlZCBsaXN0IG9mIGFsbCB1c2VycyBhY3Jvc3MgeW91ciBlbnRpcmUgZW52aXJvbm1lbnQuIFVzZSB0aGlzIGVuZHBvaW50IHRvIHZpZXcgYWxsIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXBzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgYWRtaW5pc3RyYXRpdmUgcHVycG9zZXMsIHVzZXIgYXVkaXRzLCBvciB3aGVuIHlvdSBuZWVkIHRvIHNlZSBhbGwgdXNlcnMgaW4geW91ciBTY2FsZWtpdCBlbnZpcm9ubWVudC4gU3VwcG9ydHMgcGFnaW5hdGlvbiBmb3IgbGFyZ2UgdXNlciBiYXNlcy5KQQoDMjAwEjoKDkxpc3Qgb2YgdXNlcnMuEigKJhokLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2Vyc1Jlc3BvbnNlgrUYAhhEgtPkkwIPEg0vYXBpL3YxL3VzZXJzEssDCgtTZWFyY2hVc2VycxIlLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaFVzZXJzUmVxdWVzdBomLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaFVzZXJzUmVzcG9uc2Ui7AKSQbcCCgVVc2VycxIMU2VhcmNoIHVzZXJzGoUBU2VhcmNoZXMgZm9yIHVzZXJzIGluIHRoZSBlbnZpcm9ubWVudCBieSBlbWFpbCwgdXNlciBJRCwgb3IgZXh0ZXJuYWwgSUQuIFJldHVybnMgYWxsIHVzZXJzIHRoYXQgbWF0Y2ggdGhlIHF1ZXJ5LiBTdXBwb3J0cyBwYWdpbmF0aW9uLkqXAQoDMjAwEo8BCmFSZXR1cm5zIGEgbGlzdCBvZiBtYXRjaGluZyB1c2VycyBhbmQgYSBwYWdlIHRva2VuIGZvciBwYWdpbmF0aW9uIGlmIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHJlc3VsdHMuEioKKBomLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaFVzZXJzUmVzcG9uc2WCtRgCGET60uSTAgkSB1BSRVZJRVeC0+STAhYSFC9hcGkvdjEvdXNlcnM6c2VhcmNoEuAEChdTZWFyY2hPcmdhbml6YXRpb25Vc2VycxIxLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBoyLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2Ui3QOSQYgDCgVVc2VycxIZU2VhcmNoIG9yZ2FuaXphdGlvbiB1c2VycxqlAVNlYXJjaGVzIGZvciB1c2VycyB3aXRoaW4gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gYnkgZW1haWwsIHVzZXIgSUQsIG9yIGV4dGVybmFsIElELiBSZXR1cm5zIGFsbCB1c2VycyBpbiB0aGUgb3JnYW5pemF0aW9uIHRoYXQgbWF0Y2ggdGhlIHF1ZXJ5LiBTdXBwb3J0cyBwYWdpbmF0aW9uLkq7AQoDMjAwErMBCnlSZXR1cm5zIGEgbGlzdCBvZiBtYXRjaGluZyB1c2VycyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbiBhbmQgYSBwYWdlIHRva2VuIGZvciBwYWdpbmF0aW9uIGlmIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHJlc3VsdHMuEjYKNBoyLnNjYWxla2l0LnYxLnVzZXJzLlNlYXJjaE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2WCtRgCGET60uSTAgkSB1BSRVZJRVeC0+STAjYSNC9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2VyczpzZWFyY2gSlgUKClVwZGF0ZVVzZXISJC5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyUmVxdWVzdBolLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZVVzZXJSZXNwb25zZSK6BJJBkAQKBVVzZXJzEhdVcGRhdGUgdXNlciBpbmZvcm1hdGlvbhrhAk1vZGlmaWVzIHVzZXIgYWNjb3VudCBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgcHJvZmlsZSBkZXRhaWxzLCBtZXRhZGF0YSwgYW5kIGV4dGVybmFsIElELiBVc2UgdGhpcyBlbmRwb2ludCB0byB1cGRhdGUgYSB1c2VyJ3MgcGVyc29uYWwgaW5mb3JtYXRpb24sIGNvbnRhY3QgZGV0YWlscywgb3IgY3VzdG9tIG1ldGFkYXRhLiBZb3UgY2FuIHVwZGF0ZSB0aGUgdXNlcidzIHByb2ZpbGUsIHBob25lIG51bWJlciwgYW5kIG1ldGFkYXRhIGZpZWxkcy4gTm90ZSB0aGF0IGZpZWxkcyBsaWtlIHVzZXIgSUQsIGVtYWlsIGFkZHJlc3MsIGVudmlyb25tZW50IElELCBhbmQgY3JlYXRpb24gdGltZSBjYW5ub3QgYmUgbW9kaWZpZWQuSokBCgMyMDASgQEKVFVzZXIgdXBkYXRlZCBzdWNjZXNzZnVsbHkuIFJldHVybnMgdGhlIG1vZGlmaWVkIHVzZXIgb2JqZWN0IHdpdGggdXBkYXRlZCB0aW1lc3RhbXBzLhIpCicaJS5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVVc2VyUmVzcG9uc2WCtRgCGESC0+STAho6BHVzZXIyEi9hcGkvdjEvdXNlcnMve2lkfRL9AwoKRGVsZXRlVXNlchIkLnNjYWxla2l0LnYxLnVzZXJzLkRlbGV0ZVVzZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IrADkkGMAwoFVXNlcnMSF0RlbGV0ZSB1c2VyIHBlcm1hbmVudGx5GrACUGVybWFuZW50bHkgcmVtb3ZlcyBhIHVzZXIgZnJvbSB5b3VyIGVudmlyb25tZW50IGFuZCBkZWxldGVzIGFsbCBhc3NvY2lhdGVkIGRhdGEuIFVzZSB0aGlzIGVuZHBvaW50IHdoZW4geW91IG5lZWQgdG8gY29tcGxldGVseSByZW1vdmUgYSB1c2VyIGFjY291bnQuIFRoaXMgYWN0aW9uIGRlbGV0ZXMgdGhlIHVzZXIncyBwcm9maWxlLCBtZW1iZXJzaGlwcywgYW5kIGFsbCByZWxhdGVkIGRhdGEgYWNyb3NzIGFsbCBvcmdhbml6YXRpb25zLiBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgdW5kb25lLCBzbyB1c2Ugd2l0aCBjYXV0aW9uLko3CgMyMDASMAouVXNlciBzdWNjZXNzZnVsbHkgZGVsZXRlZC4gTm8gY29udGVudCByZXR1cm5lZIK1GAIYRILT5JMCFCoSL2FwaS92MS91c2Vycy97aWR9EqgFChBDcmVhdGVNZW1iZXJzaGlwEiouc2NhbGVraXQudjEudXNlcnMuQ3JlYXRlTWVtYmVyc2hpcFJlcXVlc3QaKy5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVNZW1iZXJzaGlwUmVzcG9uc2UiugSSQd4DCgVVc2VycxIhQWRkIGV4aXN0aW5nIHVzZXIgdG8gb3JnYW5pemF0aW9uGpUCQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIG9yZ2FuaXphdGlvbiBhbmQgYXNzaWducyB0aGVtIHNwZWNpZmljIHJvbGVzIGFuZCBwZXJtaXNzaW9ucy4gVXNlIHRoaXMgZW5kcG9pbnQgd2hlbiB5b3Ugd2FudCB0byBncmFudCBhbiBleGlzdGluZyB1c2VyIGFjY2VzcyB0byBhIHBhcnRpY3VsYXIgb3JnYW5pemF0aW9uLiBZb3UgY2FuIHNwZWNpZnkgcm9sZXMsIG1ldGFkYXRhLCBhbmQgb3RoZXIgbWVtYmVyc2hpcCBkZXRhaWxzIGR1cmluZyB0aGUgaW52aXRhdGlvbiBwcm9jZXNzLkqZAQoDMjAxEpEBCl5Vc2VyIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byB0aGUgb3JnYW5pemF0aW9uLiBSZXR1cm5zIGRldGFpbHMgb2YgdGhlIHVwZGF0ZWQgbWVtYmVyc2hpcCBkZXRhaWxzEi8KLRorLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZU1lbWJlcnNoaXBSZXNwb25zZYK1GAIYRILT5JMCTDoKbWVtYmVyc2hpcCI+L2FwaS92MS9tZW1iZXJzaGlwcy9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3tpZH0S/QMKEERlbGV0ZU1lbWJlcnNoaXASKi5zY2FsZWtpdC52MS51c2Vycy5EZWxldGVNZW1iZXJzaGlwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSKkA5JB1AIKBVVzZXJzEidEZWxldGUgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXAgZm9yIHVzZXIa3AFSZW1vdmVzIGEgdXNlciBmcm9tIGFuIG9yZ2FuaXphdGlvbiBieSB1c2VyIElEIG9yIGV4dGVybmFsIElELiBJZiB0aGUgdXNlciBoYXMgbm8gbWVtYmVyc2hpcHMgbGVmdCBhbmQgY2FzY2FkZSBpcyB0cnVlLCB0aGUgdXNlciBpcyBhbHNvIGRlbGV0ZWQuIFRoaXMgYWN0aW9uIGlzIGlycmV2ZXJzaWJsZSBhbmQgbWF5IGFsc28gcmVtb3ZlIHJlbGF0ZWQgZ3JvdXAgbWVtYmVyc2hpcHMuSkMKAzIwMBI8CjpVc2VyIHN1Y2Nlc3NmdWxseSBtYXJrZWQgZm9yIGRlbGV0aW9uLiBObyBjb250ZW50IHJldHVybmVkgrUYAhhEgtPkkwJAKj4vYXBpL3YxL21lbWJlcnNoaXBzL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMve2lkfRL9AwoQVXBkYXRlTWVtYmVyc2hpcBIqLnNjYWxla2l0LnYxLnVzZXJzLlVwZGF0ZU1lbWJlcnNoaXBSZXF1ZXN0Gisuc2NhbGVraXQudjEudXNlcnMuVXBkYXRlTWVtYmVyc2hpcFJlc3BvbnNlIo8DkkGzAgoFVXNlcnMSJ1VwZGF0ZSBvcmdhbml6YXRpb24gbWVtYmVyc2hpcCBmb3IgdXNlchqDAVVwZGF0ZXMgYSB1c2VyJ3MgbWVtYmVyc2hpcCBkZXRhaWxzIHdpdGhpbiBhbiBvcmdhbml6YXRpb24gYnkgdXNlciBJRCBvciBleHRlcm5hbCBJRC4gWW91IGNhbiB1cGRhdGUgcm9sZXMgYW5kIG1lbWJlcnNoaXAgbWV0YWRhdGEuSnsKAzIwMBJ0CkFNZW1iZXJzaGlwIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSB1cGRhdGVkIHVzZXIgb2JqZWN0LhIvCi0aKy5zY2FsZWtpdC52MS51c2Vycy5VcGRhdGVNZW1iZXJzaGlwUmVzcG9uc2WCtRgCGESC0+STAkw6Cm1lbWJlcnNoaXAyPi9hcGkvdjEvbWVtYmVyc2hpcHMvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97aWR9EqwGChdDcmVhdGVVc2VyQW5kTWVtYmVyc2hpcBIxLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJBbmRNZW1iZXJzaGlwUmVxdWVzdBoyLnNjYWxla2l0LnYxLnVzZXJzLkNyZWF0ZVVzZXJBbmRNZW1iZXJzaGlwUmVzcG9uc2UiqQWSQeQECgVVc2VycxIfQ3JlYXRlIG5ldyB1c2VyIGluIG9yZ2FuaXphdGlvbhqDA0NyZWF0ZXMgYSBuZXcgdXNlciBhY2NvdW50IGFuZCBpbW1lZGlhdGVseSBhZGRzIHRoZW0gdG8gdGhlIHNwZWNpZmllZCBvcmdhbml6YXRpb24uIFVzZSB0aGlzIGVuZHBvaW50IHdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgdXNlciBhbmQgZ3JhbnQgdGhlbSBhY2Nlc3MgdG8gYW4gb3JnYW5pemF0aW9uIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gWW91IGNhbiBwcm92aWRlIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbiwgYXNzaWduIHJvbGVzLCBhbmQgY29uZmlndXJlIG1lbWJlcnNoaXAgbWV0YWRhdGEuIFRoZSB1c2VyIHJlY2VpdmVzIGFuIGFjdGl2YXRpb24gZW1haWwgdW5sZXNzIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZCBpbiB0aGUgb3JnYW5pemF0aW9uIHNldHRpbmdzLkqzAQoDMjAxEqsBCnFVc2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBSZXR1cm5zIHRoZSBjcmVhdGVkIHVzZXIgb2JqZWN0LCBpbmNsdWRpbmcgc3lzdGVtLWdlbmVyYXRlZCBpZGVudGlmaWVycyBhbmQgdGltZXN0YW1wcxI2CjQaMi5zY2FsZWtpdC52MS51c2Vycy5DcmVhdGVVc2VyQW5kTWVtYmVyc2hpcFJlc3BvbnNlgrUYAhhEgtPkkwI1OgR1c2VyIi0vYXBpL3YxL29yZ2FuaXphdGlvbnMve29yZ2FuaXphdGlvbl9pZH0vdXNlcnMS4wQKFUxpc3RPcmdhbml6YXRpb25Vc2VycxIvLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1JlcXVlc3QaMC5zY2FsZWtpdC52MS51c2Vycy5MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSLmA5JBpwMKBVVzZXJzEhdMaXN0IG9yZ2FuaXphdGlvbiB1c2VycxqHAlJldHJpZXZlcyBhIHBhZ2luYXRlZCBsaXN0IG9mIGFsbCB1c2VycyB3aG8gYXJlIG1lbWJlcnMgb2YgdGhlIHNwZWNpZmllZCBvcmdhbml6YXRpb24uIFVzZSB0aGlzIGVuZHBvaW50IHRvIHZpZXcgYWxsIHVzZXJzIHdpdGggYWNjZXNzIHRvIGEgcGFydGljdWxhciBvcmdhbml6YXRpb24sIGluY2x1ZGluZyB0aGVpciByb2xlcywgbWV0YWRhdGEsIGFuZCBtZW1iZXJzaGlwIGRldGFpbHMuIFN1cHBvcnRzIHBhZ2luYXRpb24gZm9yIGxhcmdlIHVzZXIgbGlzdHMuSnsKAzIwMBJ0CjxTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmdhbml6YXRpb24SNAoyGjAuc2NhbGVraXQudjEudXNlcnMuTGlzdE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2WCtRgCGESC0+STAi8SLS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2VycxKSEAoMUmVzZW5kSW52aXRlEiYuc2NhbGVraXQudjEudXNlcnMuUmVzZW5kSW52aXRlUmVxdWVzdBonLnNjYWxla2l0LnYxLnVzZXJzLlJlc2VuZEludml0ZVJlc3BvbnNlIrAPkkHaDgoFVXNlcnMSHFJlc2VuZCB1c2VyIGludml0YXRpb24gZW1haWwa4QRSZXNlbmRzIGFuIGludml0YXRpb24gZW1haWwgdG8gYSB1c2VyIHdobyBoYXMgYSBwZW5kaW5nIG9yIGV4cGlyZWQgaW52aXRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIG9yZ2FuaXphdGlvbi4gSWYgdGhlIGludml0YXRpb24gaGFzIGV4cGlyZWQsIGEgbmV3IGludml0YXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHNlbnQuIElmIHRoZSBpbnZpdGF0aW9uIGlzIHN0aWxsIHZhbGlkLCBhIHJlbWluZGVyIGVtYWlsIHdpbGwgYmUgc2VudCBpbnN0ZWFkLiBVc2UgdGhpcyBlbmRwb2ludCB3aGVuIGEgdXNlciBoYXNuJ3QgcmVzcG9uZGVkIHRvIHRoZWlyIGluaXRpYWwgaW52aXRhdGlvbiBhbmQgeW91IG5lZWQgdG8gc2VuZCB0aGVtIGEgcmVtaW5kZXIgb3Igd2hlbiB0aGUgb3JpZ2luYWwgaW52aXRhdGlvbiBoYXMgZXhwaXJlZC4gVGhlIGludml0YXRpb24gZW1haWwgaW5jbHVkZXMgYSBzZWN1cmUgbWFnaWMgbGluayB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBjb21wbGV0ZSB0aGVpciBhY2NvdW50IHNldHVwIGFuZCBqb2luIHRoZSBvcmdhbml6YXRpb24uIEVhY2ggcmVzZW5kIG9wZXJhdGlvbiBpbmNyZW1lbnRzIHRoZSByZXNlbnQgY291bnRlci5KpwIKAzIwMBKfAgrvAVN1Y2Nlc3NmdWxseSByZXNlbnQgdGhlIGludml0YXRpb24gZW1haWwuIFJldHVybnMgdGhlIHVwZGF0ZWQgaW52aXRhdGlvbiBvYmplY3Qgd2l0aCBvcmdhbml6YXRpb24gSUQsIHVzZXIgSUQsIG1lbWJlcnNoaXAgc3RhdHVzLCB0aW1lc3RhbXBzLCBhbmQgcmVzZW50IGNvdW50LiBJZiBleHBpcmVkLCBhIG5ldyBpbnZpdGF0aW9uIGlzIGNyZWF0ZWQ7IG90aGVyd2lzZSwgdGhlIGV4aXN0aW5nIG9uZSBpcyByZXNlbnQuEisKKRonLnNjYWxla2l0LnYxLnVzZXJzLlJlc2VuZEludml0ZVJlc3BvbnNlSo8CCgM0MDAShwIK3QFJbnZhbGlkIHJlcXVlc3Qg4oCUIGNvbW1vbiBjYXVzZXMgaW5jbHVkZSB1c2VyIElEIG9yIG9yZ2FuaXphdGlvbiBJRCBpcyBpbnZhbGlkLCBmdWxsLXN0YWNrIGF1dGhlbnRpY2F0aW9uIGlzIGRpc2FibGVkLCB1c2VyIHByb2ZpbGUgaXMgbWlzc2luZywgaW52aXRlIGFscmVhZHkgYWNjZXB0ZWQsIG9yIG1pc3NpbmcgZXhwaXJ5IHRpbWUgaW4gdXNlciBtYW5hZ2VtZW50IHNldHRpbmdzLhIlCiMaIS5zY2FsZWtpdC52MS5lcnJkZXRhaWxzLkVycm9ySW5mb0qdAgoDNDA0EpUCCusBUmVzb3VyY2Ugbm90IGZvdW5kIOKAlCB0aGUgc3BlY2lmaWVkIHVzZXIsIG9yZ2FuaXphdGlvbiwgbWVtYmVyc2hpcCwgb3IgaW52aXRhdGlvbiBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHNwZWNpZmllZCBlbnZpcm9ubWVudC4gVmVyaWZ5IHRoYXQgYWxsIElEcyBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgcmVzb3VyY2VzIGV4aXN0IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJlc2VuZCBhbiBpbnZpdGF0aW9uLhIlCiMaIS5zY2FsZWtpdC52MS5lcnJkZXRhaWxzLkVycm9ySW5mb0ryAgoDNTAwEuoCCsACSW50ZXJuYWwgc2VydmVyIGVycm9yIOKAlCBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGludml0YXRpb24gcmVzZW5kIHJlcXVlc3QuIFRoaXMgbWF5IGJlIGR1ZSB0byBkYXRhYmFzZSBjb25uZWN0aXZpdHkgaXNzdWVzLCBwcm9ibGVtcyBnZW5lcmF0aW5nIHRoZSBzZWN1cmUgbWFnaWMgbGluaywgZW1haWwgZGVsaXZlcnkgc2VydmljZSBmYWlsdXJlcywgb3IgdHJhbnNhY3Rpb24gZXJyb3JzIGR1cmluZyBpbnZpdGF0aW9uIHByb2Nlc3NpbmcuIENvbnRhY3Qgc3VwcG9ydCBpZiB0aGUgcHJvYmxlbSBwZXJzaXN0cy4SJQojGiEuc2NhbGVraXQudjEuZXJyZGV0YWlscy5FcnJvckluZm+CtRgCGESC0+STAkY6ASoyQS9hcGkvdjEvaW52aXRlcy9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3tpZH0vcmVzZW5kEt8DCg1MaXN0VXNlclJvbGVzEicuc2NhbGVraXQudjEudXNlcnMuTGlzdFVzZXJSb2xlc1JlcXVlc3QaKC5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclJvbGVzUmVzcG9uc2Ui+gKSQasCCgVVc2VycxIPTGlzdCB1c2VyIHJvbGVzGpoBUmV0cmlldmVzIGFsbCByb2xlcyBhc3NpZ25lZCB0byBhIHVzZXIgd2l0aGluIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uLiBUaGlzIGluY2x1ZGVzIGJvdGggZGlyZWN0IHJvbGUgYXNzaWdubWVudHMgYW5kIGluaGVyaXRlZCByb2xlcyBmcm9tIHJvbGUgaGllcmFyY2h5Lkp0CgMyMDASbQo9U3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCB0aGUgbGlzdCBvZiByb2xlcyBhc3NpZ25lZCB0byB0aGUgdXNlchIsCioaKC5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclJvbGVzUmVzcG9uc2WCtRgCGESC0+STAj8SPS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97dXNlcl9pZH0vcm9sZXMS4gMKD0Fzc2lnblVzZXJSb2xlcxIpLnNjYWxla2l0LnYxLnVzZXJzLkFzc2lnblVzZXJSb2xlc1JlcXVlc3QaKi5zY2FsZWtpdC52MS51c2Vycy5Bc3NpZ25Vc2VyUm9sZXNSZXNwb25zZSL3ApJBkgIKBVVzZXJzEhRBc3NpZ24gcm9sZXMgdG8gdXNlchqQAUFzc2lnbnMgb25lIG9yIG1vcmUgcm9sZXMgdG8gYSB1c2VyIHdpdGhpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbi4gVGhpcyBvcGVyYXRpb24gYWRkcyB0byBleGlzdGluZyByb2xlIGFzc2lnbm1lbnRzIHJhdGhlciB0aGFuIHJlcGxhY2luZyB0aGVtLkpgCgMyMDASWQonU3VjY2Vzc2Z1bGx5IGFzc2lnbmVkIHJvbGVzIHRvIHRoZSB1c2VyEi4KLBoqLnNjYWxla2l0LnYxLnVzZXJzLkFzc2lnblVzZXJSb2xlc1Jlc3BvbnNlgrUYAhhE+tLkkwIJEgdQUkVWSUVXgtPkkwJGOgVyb2xlcyI9L2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3t1c2VyX2lkfS9yb2xlcxKoAwoOUmVtb3ZlVXNlclJvbGUSKC5zY2FsZWtpdC52MS51c2Vycy5SZW1vdmVVc2VyUm9sZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHki0wKSQekBCgVVc2VycxIVUmVtb3ZlIHJvbGUgZnJvbSB1c2VyGpoBUmVtb3ZlcyBhIHNwZWNpZmljIHJvbGUgYXNzaWdubWVudCBmcm9tIGEgdXNlciB3aXRoaW4gYW4gb3JnYW5pemF0aW9uLiBUaGlzIG9ubHkgcmVtb3ZlcyBkaXJlY3Qgcm9sZSBhc3NpZ25tZW50cywgbm90IGluaGVyaXRlZCByb2xlcyBmcm9tIHJvbGUgaGllcmFyY2h5LkosCgMyMDASJQojUm9sZSBzdWNjZXNzZnVsbHkgcmVtb3ZlZCBmcm9tIHVzZXKCtRgCGET60uSTAgkSB1BSRVZJRVeC0+STAksqSS9hcGkvdjEvb3JnYW5pemF0aW9ucy97b3JnYW5pemF0aW9uX2lkfS91c2Vycy97dXNlcl9pZH0vcm9sZXMve3JvbGVfbmFtZX0SmwQKE0xpc3RVc2VyUGVybWlzc2lvbnMSLS5zY2FsZWtpdC52MS51c2Vycy5MaXN0VXNlclBlcm1pc3Npb25zUmVxdWVzdBouLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUGVybWlzc2lvbnNSZXNwb25zZSKkA5JBzwIKBVVzZXJzEhVMaXN0IHVzZXIgcGVybWlzc2lvbnMatAFSZXRyaWV2ZXMgYWxsIHBlcm1pc3Npb25zIGEgdXNlciBoYXMgYWNjZXNzIHRvIHdpdGhpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbi4gVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9ucyBmcm9tIGRpcmVjdCByb2xlIGFzc2lnbm1lbnRzIGFuZCBpbmhlcml0ZWQgcGVybWlzc2lvbnMgZnJvbSByb2xlIGhpZXJhcmNoeS5KeAoDMjAwEnEKO1N1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgdGhlIGxpc3Qgb2YgcGVybWlzc2lvbnMgZm9yIHRoZSB1c2VyEjIKMBouLnNjYWxla2l0LnYxLnVzZXJzLkxpc3RVc2VyUGVybWlzc2lvbnNSZXNwb25zZYK1GAIYRILT5JMCRRJDL2FwaS92MS9vcmdhbml6YXRpb25zL3tvcmdhbml6YXRpb25faWR9L3VzZXJzL3t1c2VyX2lkfS9wZXJtaXNzaW9ucxrsA5JB6AMKBVVzZXJzEt4DQ29tcHJlaGVuc2l2ZSB1c2VyIG1hbmFnZW1lbnQgb3BlcmF0aW9ucyBpbmNsdWRpbmcgdXNlciBsaWZlY3ljbGUsIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwcywgYW5kIGludml0YXRpb24gd29ya2Zsb3dzLiBUaGlzIHNlcnZpY2UgcHJvdmlkZXMgZW5kcG9pbnRzIGZvciBjcmVhdGluZywgcmV0cmlldmluZywgdXBkYXRpbmcsIGFuZCBkZWxldGluZyB1c2VyIGFjY291bnRzIGFjcm9zcyB5b3VyIFNjYWxla2l0IGVudmlyb25tZW50LiBJdCBzdXBwb3J0cyBib3RoIGluZGl2aWR1YWwgdXNlciBvcGVyYXRpb25zIGFuZCBidWxrIG9wZXJhdGlvbnMgZm9yIHVzZXIgYWRtaW5pc3RyYXRpb24sIGluY2x1ZGluZyB1c2VyIHNlYXJjaCwgcGFnaW5hdGlvbiwgYW5kIG1ldGFkYXRhIG1hbmFnZW1lbnQuIFRoZSBzZXJ2aWNlIGFsc28gaGFuZGxlcyB1c2VyIGludml0YXRpb25zIGFuZCBvcmdhbml6YXRpb24gbWVtYmVyc2hpcCBtYW5hZ2VtZW50LkIxWi9naXRodWIuY29tL3NjYWxla2l0LWluYy9zY2FsZWtpdC9wa2cvZ3JwYy91c2Vyc2IGcHJvdG8z", [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+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]);
|
|
20
20
|
/**
|
|
21
21
|
* Describes the message scalekit.v1.users.User.
|
|
22
22
|
* Use `create(UserSchema)` to create a new message.
|
|
@@ -217,11 +217,16 @@ exports.ListUserPermissionsRequestSchema = (0, codegenv2_1.messageDesc)(exports.
|
|
|
217
217
|
* Use `create(PermissionSchema)` to create a new message.
|
|
218
218
|
*/
|
|
219
219
|
exports.PermissionSchema = (0, codegenv2_1.messageDesc)(exports.file_scalekit_v1_users_users, 39);
|
|
220
|
+
/**
|
|
221
|
+
* Describes the message scalekit.v1.users.GetSupportHashResponse.
|
|
222
|
+
* Use `create(GetSupportHashResponseSchema)` to create a new message.
|
|
223
|
+
*/
|
|
224
|
+
exports.GetSupportHashResponseSchema = (0, codegenv2_1.messageDesc)(exports.file_scalekit_v1_users_users, 40);
|
|
220
225
|
/**
|
|
221
226
|
* Describes the message scalekit.v1.users.ListUserPermissionsResponse.
|
|
222
227
|
* Use `create(ListUserPermissionsResponseSchema)` to create a new message.
|
|
223
228
|
*/
|
|
224
|
-
exports.ListUserPermissionsResponseSchema = (0, codegenv2_1.messageDesc)(exports.file_scalekit_v1_users_users,
|
|
229
|
+
exports.ListUserPermissionsResponseSchema = (0, codegenv2_1.messageDesc)(exports.file_scalekit_v1_users_users, 41);
|
|
225
230
|
/**
|
|
226
231
|
* @generated from service scalekit.v1.users.UserService
|
|
227
232
|
*/
|
|
@@ -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
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { MessageShape } from
|
|
2
|
-
import { EmptySchema } from
|
|
3
|
-
import GrpcConnect from
|
|
4
|
-
import CoreClient from
|
|
5
|
-
import { CreateRoleResponse, UpdateRoleResponse, GetRoleResponse, ListRolesResponse, CreateOrganizationRoleResponse, UpdateOrganizationRoleResponse, GetOrganizationRoleResponse, ListOrganizationRolesResponse, GetRoleUsersCountResponse, GetOrganizationRoleUsersCountResponse, UpdateDefaultOrganizationRolesResponse, CreateRole, UpdateRole, CreateOrganizationRole } from
|
|
1
|
+
import type { MessageShape } from '@bufbuild/protobuf';
|
|
2
|
+
import { EmptySchema } from '@bufbuild/protobuf/wkt';
|
|
3
|
+
import GrpcConnect from './connect';
|
|
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';
|
|
6
6
|
/**
|
|
7
7
|
* Client for managing roles at both environment and organization levels.
|
|
8
8
|
*
|
|
@@ -128,6 +128,23 @@ export default class RoleClient {
|
|
|
128
128
|
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Delete Role API}
|
|
129
129
|
*/
|
|
130
130
|
deleteRole(roleName: string, reassignRoleName?: string): Promise<MessageShape<typeof EmptySchema>>;
|
|
131
|
+
/**
|
|
132
|
+
* Removes an environment role's inheritance relationship, eliminating inherited permissions from its base role.
|
|
133
|
+
*
|
|
134
|
+
* The role retains only its directly assigned permissions after removal. This action cannot be undone.
|
|
135
|
+
*
|
|
136
|
+
* @param {string} roleName - Role to remove inheritance from
|
|
137
|
+
*
|
|
138
|
+
* @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on success
|
|
139
|
+
*
|
|
140
|
+
* @throws {ScalekitServerException} If the role is not found
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* await scalekitClient.role.deleteRoleBase('custom_role');
|
|
144
|
+
*
|
|
145
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Delete Role Base API}
|
|
146
|
+
*/
|
|
147
|
+
deleteRoleBase(roleName: string): Promise<MessageShape<typeof EmptySchema>>;
|
|
131
148
|
/**
|
|
132
149
|
* Gets the number of users assigned to an environment role.
|
|
133
150
|
*
|
package/lib/role.js
CHANGED
|
@@ -165,6 +165,28 @@ class RoleClient {
|
|
|
165
165
|
return this.coreClient.connectExec(this.client.deleteRole, request);
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Removes an environment role's inheritance relationship, eliminating inherited permissions from its base role.
|
|
170
|
+
*
|
|
171
|
+
* The role retains only its directly assigned permissions after removal. This action cannot be undone.
|
|
172
|
+
*
|
|
173
|
+
* @param {string} roleName - Role to remove inheritance from
|
|
174
|
+
*
|
|
175
|
+
* @returns {Promise<MessageShape<typeof EmptySchema>>} Empty response on success
|
|
176
|
+
*
|
|
177
|
+
* @throws {ScalekitServerException} If the role is not found
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* await scalekitClient.role.deleteRoleBase('custom_role');
|
|
181
|
+
*
|
|
182
|
+
* @see {@link https://docs.scalekit.com/apis/#tag/roles | Delete Role Base API}
|
|
183
|
+
*/
|
|
184
|
+
deleteRoleBase(roleName) {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
const request = (0, protobuf_1.create)(roles_pb_2.DeleteRoleBaseRequestSchema, { roleName });
|
|
187
|
+
return this.coreClient.connectExec(this.client.deleteRoleBase, request);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
168
190
|
/**
|
|
169
191
|
* Gets the number of users assigned to an environment role.
|
|
170
192
|
*
|
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
|
@@ -9,6 +9,7 @@ import SessionClient from './session';
|
|
|
9
9
|
import RoleClient from './role';
|
|
10
10
|
import PermissionClient from './permission';
|
|
11
11
|
import WebAuthnClient from './webauthn';
|
|
12
|
+
import TokenClient from './token';
|
|
12
13
|
import { IdpInitiatedLoginClaims } from './types/auth';
|
|
13
14
|
import { AuthenticationOptions, AuthenticationResponse, AuthorizationUrlOptions, LogoutUrlOptions, RefreshTokenResponse, TokenValidationOptions } from './types/scalekit';
|
|
14
15
|
/**
|
|
@@ -55,6 +56,7 @@ export default class ScalekitClient {
|
|
|
55
56
|
readonly permission: PermissionClient;
|
|
56
57
|
readonly auth: AuthClient;
|
|
57
58
|
readonly webauthn: WebAuthnClient;
|
|
59
|
+
readonly token: TokenClient;
|
|
58
60
|
constructor(envUrl: string, clientId: string, clientSecret: string);
|
|
59
61
|
/**
|
|
60
62
|
* Utility method to generate the OAuth 2.0 authorization URL to initiate the SSO authentication flow.
|
|
@@ -377,6 +379,23 @@ export default class ScalekitClient {
|
|
|
377
379
|
* @return {Date} Returns the timestamp
|
|
378
380
|
*/
|
|
379
381
|
private verifyTimestamp;
|
|
382
|
+
/**
|
|
383
|
+
* Generates an M2M access token using the client credentials grant for the given clientId and clientSecret.
|
|
384
|
+
*
|
|
385
|
+
* @param {string} clientId - The client ID to authenticate with
|
|
386
|
+
* @param {string} clientSecret - The client secret to authenticate with
|
|
387
|
+
* @returns {Promise<string>} The access token string
|
|
388
|
+
* @throws {ScalekitServerException} If the server returns an error response (e.g. invalid credentials)
|
|
389
|
+
* @throws {ScalekitException} If a network, DNS, or timeout failure occurs, or if the access token is missing from the response
|
|
390
|
+
*/
|
|
391
|
+
generateClientToken(clientId: string, clientSecret: string): Promise<string>;
|
|
392
|
+
/**
|
|
393
|
+
* Generates an M2M access token using the stored client credentials (clientId and clientSecret
|
|
394
|
+
* supplied to the ScalekitClient constructor).
|
|
395
|
+
*
|
|
396
|
+
* @returns {Promise<string>} The access token string
|
|
397
|
+
*/
|
|
398
|
+
getClientAccessToken(): Promise<string>;
|
|
380
399
|
/**
|
|
381
400
|
* Compute the signature
|
|
382
401
|
*
|