payload-auth 1.5.1 → 1.6.1-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +30 -30
- package/dist/better-auth/adapter/transform/index.d.ts +8 -7
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +2 -2
- package/dist/better-auth/adapter/types.d.ts +5 -4
- package/dist/better-auth/adapter/types.d.ts.map +1 -1
- package/dist/better-auth/adapter/types.js +1 -1
- package/dist/better-auth/generated-types.d.ts +21 -0
- package/dist/better-auth/generated-types.d.ts.map +1 -1
- package/dist/better-auth/generated-types.js +1 -1
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +14 -17
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +51 -33
- package/dist/better-auth/plugin/helpers/get-collection.d.ts +11 -36
- package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-collection.js +20 -53
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +1 -1
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +21 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +62 -0
- package/dist/better-auth/plugin/index.d.ts +8 -1
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +67 -91
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +13 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +80 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +6 -16
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +10 -12
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +3 -4
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/index.js +15 -26
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.js +8 -10
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +7 -9
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +8 -10
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +23 -12
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +7 -8
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +8 -10
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +8 -10
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +8 -11
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +4 -11
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +3 -8
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +5 -15
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +19 -22
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +31 -14
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +6 -6
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +9 -17
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +8 -11
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +3 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +3 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +15 -15
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +8 -8
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +12 -12
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +6 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +3 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +4 -4
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +7 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +120 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js +59 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +5 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js +40 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.scss +91 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +20 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +2 -1
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +3 -2
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +11 -7
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +3 -1
- package/dist/better-auth/plugin/types.d.ts +6 -3
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/better-auth/scripts/generate-types.js +15 -1
- package/package.json +1 -1
- package/dist/better-auth/plugin/helpers/get-collection-schema-map.d.ts +0 -16
- package/dist/better-auth/plugin/helpers/get-collection-schema-map.d.ts.map +0 -1
- package/dist/better-auth/plugin/helpers/get-collection-schema-map.js +0 -108
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts +0 -3
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +0 -1
- package/dist/better-auth/plugin/helpers/get-requst-collection.js +0 -14
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +0 -105
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +0 -1
- package/dist/better-auth/plugin/helpers/serialize-cookie.js +0 -186
|
@@ -206,6 +206,20 @@ const gen = ()=>{
|
|
|
206
206
|
}
|
|
207
207
|
out += `export type ${P} = ${parts.join(' & ')}\n\n`;
|
|
208
208
|
}
|
|
209
|
+
// Generate union type of plugin identifiers
|
|
210
|
+
const pluginIdUnion = [
|
|
211
|
+
...seen
|
|
212
|
+
].map((id)=>JSON.stringify(id)).join(' | ');
|
|
213
|
+
out += `export type PluginId = ${pluginIdUnion}\n\n`;
|
|
214
|
+
// Generate full schema mapping
|
|
215
|
+
out += `export type BetterAuthFullSchema = {\n`;
|
|
216
|
+
for (const model of models){
|
|
217
|
+
const P = pascal(model);
|
|
218
|
+
out += ` ${JSON.stringify(model)}: ${P}\n`;
|
|
219
|
+
}
|
|
220
|
+
out += `}\n\n`;
|
|
221
|
+
// Generate union type of all model names
|
|
222
|
+
out += `export type ModelKey = keyof BetterAuthFullSchema`;
|
|
209
223
|
return out;
|
|
210
224
|
};
|
|
211
225
|
const generated = gen();
|
|
@@ -216,4 +230,4 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
216
230
|
console.log(`Generated types written to ${file}`);
|
|
217
231
|
})();
|
|
218
232
|
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9zY3JpcHRzL2dlbmVyYXRlLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmlwZSB9IGZyb20gJ0BiZXR0ZXItYXV0aC9zdHJpcGUnXG5pbXBvcnQgeyBlbWFpbEhhcm1vbnksIHBob25lSGFybW9ueSB9IGZyb20gJ2JldHRlci1hdXRoLWhhcm1vbnknXG5pbXBvcnQgeyBnZXRTY2hlbWEgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB0eXBlIHsgRmllbGRBdHRyaWJ1dGUgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB7XG4gIGFkbWluLFxuICBhbm9ueW1vdXMsXG4gIGFwaUtleSxcbiAgYmVhcmVyLFxuICBlbWFpbE9UUCxcbiAgZ2VuZXJpY09BdXRoLFxuICBqd3QsXG4gIG1hZ2ljTGluayxcbiAgbXVsdGlTZXNzaW9uLFxuICBvbmVUYXAsXG4gIG9uZVRpbWVUb2tlbixcbiAgb3BlbkFQSSxcbiAgb3JnYW5pemF0aW9uLFxuICBvaWRjUHJvdmlkZXIsXG4gIHBob25lTnVtYmVyLFxuICB0d29GYWN0b3IsXG4gIHVzZXJuYW1lXG59IGZyb20gJ2JldHRlci1hdXRoL3BsdWdpbnMnXG5pbXBvcnQgeyBwYXNza2V5IH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9wYXNza2V5J1xuaW1wb3J0IHsgc3NvIH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9zc28nXG5pbXBvcnQgeyBwb2xhciB9IGZyb20gJ0Bwb2xhci1zaC9iZXR0ZXItYXV0aCdcbmltcG9ydCB7IFBvbGFyIH0gZnJvbSAnQHBvbGFyLXNoL3NkaydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xuXG5jb25zdCBjbGllbnQgPSBuZXcgUG9sYXIoe1xuICBhY2Nlc3NUb2tlbjogJ3BrX3Rlc3RfMTIzNDU2Nzg5MCcsXG4gIHNlcnZlcjogJ3NhbmRib3gnXG59KTtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgdXNlcm5hbWUoKSxcbiAgYWRtaW4oKSxcbiAgYXBpS2V5KCksXG4gIHBhc3NrZXkoKSxcbiAgZW1haWxIYXJtb255KCksXG4gIHBob25lSGFybW9ueSgpLFxuICBiZWFyZXIoKSxcbiAgZW1haWxPVFAoeyBzZW5kVmVyaWZpY2F0aW9uT1RQOiBhc3luYyAoKSA9PiB7fSB9KSxcbiAgbWFnaWNMaW5rKHsgc2VuZE1hZ2ljTGluazogYXN5bmMgKCkgPT4ge30gfSksXG4gIHBob25lTnVtYmVyKHsgc2VuZE9UUDogYXN5bmMgKCkgPT4ge30gfSksXG4gIG9uZVRhcCgpLFxuICBhbm9ueW1vdXMoKSxcbiAgbXVsdGlTZXNzaW9uKCksXG4gIG9uZVRpbWVUb2tlbigpLFxuICBvaWRjUHJvdmlkZXIoeyBsb2dpblBhZ2U6ICcnIH0pLFxuICBzc28oKSxcbiAgZ2VuZXJpY09BdXRoKHsgY29uZmlnOiBbeyBwcm92aWRlcklkOiAndHlwZXNjcmlwdCcsIGNsaWVudElkOiAndHlwZXNjcmlwdCcsIGNsaWVudFNlY3JldDogJ3R5cGVzY3JpcHQnIH1dIH0pLFxuICBvcGVuQVBJKCksXG4gIG9yZ2FuaXphdGlvbih7IHRlYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSB9KSxcbiAgand0KCksXG4gIHR3b0ZhY3RvcigpLFxuICBwaG9uZU51bWJlcigpLFxuICBzdHJpcGUoe1xuICAgIHN0cmlwZUNsaWVudDogeyBhcGlLZXk6ICd0eXBlc2NyaXB0JyB9LFxuICAgIHN0cmlwZVdlYmhvb2tTZWNyZXQ6ICd0eXBlc2NyaXB0JyxcbiAgICBzdWJzY3JpcHRpb246IHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwbGFuczogW1xuICAgICAgICB7IGlkOiAnYmFzaWMnLCBuYW1lOiAnQmFzaWMnLCBwcmljZTogMTAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9LFxuICAgICAgICB7IGlkOiAncHJvJywgbmFtZTogJ1BybycsIHByaWNlOiAyMDAwLCBpbnRlcnZhbDogJ21vbnRoJywgY3VycmVuY3k6ICd1c2QnIH0sXG4gICAgICAgIHsgaWQ6ICdlbnRlcnByaXNlJywgbmFtZTogJ0VudGVycHJpc2UnLCBwcmljZTogMzAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9XG4gICAgICBdXG4gICAgfVxuICB9KSxcbiAgLy8gQXMgb2Ygd3JpdGluZyB0aGlzLCBQb2xhciBkb24ndCBjcmVhdGUgc2NoZW1hIGZpZWxkcywgYnV0IGp1c3QgaW4gY2FzZSBpbiB0aGUgZnV0dXJlIHdlIGxlYXZlIHRoaXMgaGVyZS5cbiAgcG9sYXIoe1xuICAgIGNsaWVudCxcbiAgICBjaGVja291dDoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHByb2R1Y3RzOiBbXG4gICAgICAgIHsgcHJvZHVjdElkOiAnYmFzaWMnLCBzbHVnOiAnYmFzaWMnIH0sXG4gICAgICAgIHsgcHJvZHVjdElkOiAncHJvJywgc2x1ZzogJ3BybycgfSxcbiAgICAgICAgeyBwcm9kdWN0SWQ6ICdlbnRlcnByaXNlJywgc2x1ZzogJ2VudGVycHJpc2UnIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pXG5dXG5cbmNvbnN0IGJldHRlckF1dGhDb25maWc6IFNhbml0aXplZEJldHRlckF1dGhPcHRpb25zID0ge1xuICBlbWFpbEFuZFBhc3N3b3JkOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgdXNlcjogeyBhZGRpdGlvbmFsRmllbGRzOiB7IHJvbGU6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHRWYWx1ZTogJ3VzZXInLCBpbnB1dDogZmFsc2UgfSB9IH0sXG4gIHBsdWdpbnNcbn1cblxuY29uc3QgYmFzZVNjaGVtYSA9IGdldFNjaGVtYSh7IC4uLmJldHRlckF1dGhDb25maWcsIHBsdWdpbnM6IFtdIH0pXG5cbnR5cGUgU2NoZW1hID0gUmVjb3JkPHN0cmluZywgeyBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPiB9PlxuXG5jb25zdCBtYXAgPSAodDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHQgPT09ICdib29sZWFuJykgcmV0dXJuICdib29sZWFuJ1xuICBpZiAodCA9PT0gJ2RhdGUnKSByZXR1cm4gJ0RhdGUnXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuICdudW1iZXInXG4gIGlmICh0ID09PSAnc3RyaW5nJykgcmV0dXJuICdzdHJpbmcnXG4gIGlmICh0ID09PSAnbnVtYmVyW10nKSByZXR1cm4gJ251bWJlcltdJ1xuICBpZiAodCA9PT0gJ3N0cmluZ1tdJykgcmV0dXJuICdzdHJpbmdbXSdcbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5jb25zdCBwYXNjYWwgPSAoczogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNcbiAgICAuc3BsaXQoL1stX10vZylcbiAgICAubWFwKChwKSA9PiBwLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcC5zbGljZSgxKSlcbiAgICAuam9pbignJylcblxuY29uc3QgZGlmZiA9IChiYXNlOiBTY2hlbWEsIHRhcmdldDogU2NoZW1hKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRmllbGRBdHRyaWJ1dGU+PiA9PiB7XG4gIGNvbnN0IGQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPj4gPSB7fVxuICBmb3IgKGNvbnN0IFttLCB7IGZpZWxkcyB9XSBvZiBPYmplY3QuZW50cmllcyh0YXJnZXQpKSB7XG4gICAgY29uc3QgYWRkZWQgPSBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZpbHRlcigoW2tdKSA9PiAhKGsgaW4gKGJhc2VbbV0/LmZpZWxkcyA/PyB7fSkpKVxuICAgIGlmIChhZGRlZC5sZW5ndGgpIGRbbV0gPSBPYmplY3QuZnJvbUVudHJpZXMoYWRkZWQpXG4gIH1cbiAgcmV0dXJuIGRcbn1cblxuY29uc3QgZ2VuID0gKCk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXQgPSAnLy8gQXV0by1nZW5lcmF0ZWQgdHlwZXMuIERvIG5vdCBlZGl0LlxcblxcbidcblxuICBjb25zdCBwbHVnaW5BZGRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBGaWVsZEF0dHJpYnV0ZT4+PiA9IHt9XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgcGwgb2YgcGx1Z2lucykge1xuICAgIGNvbnN0IGlkID0gKHBsIGFzIGFueSkuaWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgaWYgKCFpZCB8fCBzZWVuLmhhcyhpZCkpIGNvbnRpbnVlXG4gICAgc2Vlbi5hZGQoaWQpXG4gICAgY29uc3QgYWRkcyA9IGRpZmYoYmFzZVNjaGVtYSwgZ2V0U2NoZW1hKHsgLi4uYmV0dGVyQXV0aENvbmZpZywgcGx1Z2luczogW3BsXSB9KSlcbiAgICBmb3IgKGNvbnN0IFttLCBmXSBvZiBPYmplY3QuZW50cmllcyhhZGRzKSkge1xuICAgICAgcGx1Z2luQWRkc1ttXSA/Pz0ge31cbiAgICAgIHBsdWdpbkFkZHNbbV1baWRdID0gZlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1vZGVscyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4uT2JqZWN0LmtleXMoYmFzZVNjaGVtYSksIC4uLk9iamVjdC5rZXlzKHBsdWdpbkFkZHMpXSlcblxuICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgIGNvbnN0IFAgPSBwYXNjYWwobW9kZWwpXG4gICAgY29uc3QgYmFzZSA9IGJhc2VTY2hlbWFbbW9kZWxdPy5maWVsZHMgPz8ge31cbiAgICBjb25zdCBwbHVnaW5zRm9yTW9kZWwgPSBwbHVnaW5BZGRzW21vZGVsXSA/PyB7fVxuICAgIGNvbnN0IHBsdWdpbklkcyA9IE9iamVjdC5rZXlzKHBsdWdpbnNGb3JNb2RlbClcblxuICAgIGlmIChPYmplY3Qua2V5cyhiYXNlKS5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgQmFzZSR7UH1GaWVsZHMgPSB7XFxuYFxuICAgICAgZm9yIChjb25zdCBbaywgZl0gb2YgT2JqZWN0LmVudHJpZXMoYmFzZSkpIG91dCArPSBgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICBvdXQgKz0gJ31cXG5cXG4nXG4gICAgfVxuXG4gICAgY29uc3QgbmVlZFBsdWdpbk1hcCA9IHBsdWdpbklkcy5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKGJhc2UpLmxlbmd0aFxuICAgIGlmIChuZWVkUGx1Z2luTWFwICYmIHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfVBsdWdpbkZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtwaWQsIGZsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHBsdWdpbnNGb3JNb2RlbCkpIHtcbiAgICAgICAgb3V0ICs9IGAgICR7SlNPTi5zdHJpbmdpZnkocGlkKX06IHtcXG5gXG4gICAgICAgIGZvciAoY29uc3QgW2ssIGZdIG9mIE9iamVjdC5lbnRyaWVzKGZsZHMpKSBvdXQgKz0gYCAgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICAgIG91dCArPSAnICB9XFxuJ1xuICAgICAgfVxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoICYmIHBsdWdpbklkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG9ubHkgPSBwbHVnaW5JZHNbMF1cbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfUZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtrLCBmXSBvZiBPYmplY3QuZW50cmllcyhwbHVnaW5zRm9yTW9kZWxbb25seV0pKVxuICAgICAgICBvdXQgKz0gYCAgJHtmLmZpZWxkTmFtZSA/PyBrfSR7Zi5yZXF1aXJlZCA/ICcnIDogJz8nfTogJHttYXAoZi50eXBlIGFzIHN0cmluZyl9XFxuYFxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgICAgb3V0ICs9IGBleHBvcnQgdHlwZSAke1B9ID0gJHtQfUZpZWxkc1xcblxcbmBcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW11cbiAgICBpZiAoT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoKSBwYXJ0cy5wdXNoKGBCYXNlJHtQfUZpZWxkc2ApXG4gICAgaWYgKHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1hcE5hbWUgPSBuZWVkUGx1Z2luTWFwID8gYCR7UH1QbHVnaW5GaWVsZHNgIDogdW5kZWZpbmVkXG4gICAgICBwYXJ0cy5wdXNoKC4uLnBsdWdpbklkcy5tYXAoKGlkKSA9PiAobWFwTmFtZSA/IGAke21hcE5hbWV9WyR7SlNPTi5zdHJpbmdpZnkoaWQpfV1gIDogJ25ldmVyJykgLyogbm90IHJlYWNoYWJsZSAqLykpXG4gICAgfVxuICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfSA9ICR7cGFydHMuam9pbignICYgJyl9XFxuXFxuYFxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5jb25zdCBnZW5lcmF0ZWQgPSBnZW4oKVxuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKVxuOyhhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vZ2VuZXJhdGVkLXR5cGVzLnRzJylcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGUsIGdlbmVyYXRlZCwgJ3V0ZjgnKVxuICBjb25zb2xlLmxvZyhgR2VuZXJhdGVkIHR5cGVzIHdyaXR0ZW4gdG8gJHtmaWxlfWApXG59KSgpXG4iXSwibmFtZXMiOlsic3RyaXBlIiwiZW1haWxIYXJtb255IiwicGhvbmVIYXJtb255IiwiZ2V0U2NoZW1hIiwiYWRtaW4iLCJhbm9ueW1vdXMiLCJhcGlLZXkiLCJiZWFyZXIiLCJlbWFpbE9UUCIsImdlbmVyaWNPQXV0aCIsImp3dCIsIm1hZ2ljTGluayIsIm11bHRpU2Vzc2lvbiIsIm9uZVRhcCIsIm9uZVRpbWVUb2tlbiIsIm9wZW5BUEkiLCJvcmdhbml6YXRpb24iLCJvaWRjUHJvdmlkZXIiLCJwaG9uZU51bWJlciIsInR3b0ZhY3RvciIsInVzZXJuYW1lIiwicGFzc2tleSIsInNzbyIsInBvbGFyIiwiUG9sYXIiLCJmcyIsInBhdGgiLCJmaWxlVVJMVG9QYXRoIiwiY2xpZW50IiwiYWNjZXNzVG9rZW4iLCJzZXJ2ZXIiLCJwbHVnaW5zIiwic2VuZFZlcmlmaWNhdGlvbk9UUCIsInNlbmRNYWdpY0xpbmsiLCJzZW5kT1RQIiwibG9naW5QYWdlIiwiY29uZmlnIiwicHJvdmlkZXJJZCIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwidGVhbXMiLCJlbmFibGVkIiwic3RyaXBlQ2xpZW50Iiwic3RyaXBlV2ViaG9va1NlY3JldCIsInN1YnNjcmlwdGlvbiIsInBsYW5zIiwiaWQiLCJuYW1lIiwicHJpY2UiLCJpbnRlcnZhbCIsImN1cnJlbmN5IiwiY2hlY2tvdXQiLCJwcm9kdWN0cyIsInByb2R1Y3RJZCIsInNsdWciLCJiZXR0ZXJBdXRoQ29uZmlnIiwiZW1haWxBbmRQYXNzd29yZCIsInVzZXIiLCJhZGRpdGlvbmFsRmllbGRzIiwicm9sZSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJpbnB1dCIsImJhc2VTY2hlbWEiLCJtYXAiLCJ0IiwicGFzY2FsIiwicyIsInNwbGl0IiwicCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJqb2luIiwiZGlmZiIsImJhc2UiLCJ0YXJnZXQiLCJkIiwibSIsImZpZWxkcyIsIk9iamVjdCIsImVudHJpZXMiLCJhZGRlZCIsImZpbHRlciIsImsiLCJsZW5ndGgiLCJmcm9tRW50cmllcyIsImdlbiIsIm91dCIsInBsdWdpbkFkZHMiLCJzZWVuIiwiU2V0IiwicGwiLCJoYXMiLCJhZGQiLCJhZGRzIiwiZiIsIm1vZGVscyIsImtleXMiLCJtb2RlbCIsIlAiLCJwbHVnaW5zRm9yTW9kZWwiLCJwbHVnaW5JZHMiLCJmaWVsZE5hbWUiLCJyZXF1aXJlZCIsIm5lZWRQbHVnaW5NYXAiLCJwaWQiLCJmbGRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm9ubHkiLCJwYXJ0cyIsInB1c2giLCJtYXBOYW1lIiwidW5kZWZpbmVkIiwiZ2VuZXJhdGVkIiwiX19kaXJuYW1lIiwiZGlybmFtZSIsInVybCIsImZpbGUiLCJyZXNvbHZlIiwid3JpdGVGaWxlIiwiY29uc29sZSIsImxvZyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBTSxRQUFRLHNCQUFxQjtBQUM1QyxTQUFTQyxZQUFZLEVBQUVDLFlBQVksUUFBUSxzQkFBcUI7QUFDaEUsU0FBU0MsU0FBUyxRQUFRLGlCQUFnQjtBQUUxQyxTQUNFQyxLQUFLLEVBQ0xDLFNBQVMsRUFDVEMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxHQUFHLEVBQ0hDLFNBQVMsRUFDVEMsWUFBWSxFQUNaQyxNQUFNLEVBQ05DLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLFFBQVEsUUFDSCxzQkFBcUI7QUFDNUIsU0FBU0MsT0FBTyxRQUFRLDhCQUE2QjtBQUNyRCxTQUFTQyxHQUFHLFFBQVEsMEJBQXlCO0FBQzdDLFNBQVNDLEtBQUssUUFBUSx3QkFBdUI7QUFDN0MsU0FBU0MsS0FBSyxRQUFRLGdCQUFlO0FBRXJDLE9BQU9DLFFBQVEsbUJBQWtCO0FBQ2pDLE9BQU9DLFVBQVUsWUFBVztBQUM1QixTQUFTQyxhQUFhLFFBQVEsV0FBVTtBQUV4QyxNQUFNQyxTQUFTLElBQUlKLE1BQU07SUFDdkJLLGFBQWE7SUFDYkMsUUFBUTtBQUNWO0FBRUEsTUFBTUMsVUFBVTtJQUNkWDtJQUNBaEI7SUFDQUU7SUFDQWU7SUFDQXBCO0lBQ0FDO0lBQ0FLO0lBQ0FDLFNBQVM7UUFBRXdCLHFCQUFxQixXQUFhO0lBQUU7SUFDL0NyQixVQUFVO1FBQUVzQixlQUFlLFdBQWE7SUFBRTtJQUMxQ2YsWUFBWTtRQUFFZ0IsU0FBUyxXQUFhO0lBQUU7SUFDdENyQjtJQUNBUjtJQUNBTztJQUNBRTtJQUNBRyxhQUFhO1FBQUVrQixXQUFXO0lBQUc7SUFDN0JiO0lBQ0FiLGFBQWE7UUFBRTJCLFFBQVE7WUFBQztnQkFBRUMsWUFBWTtnQkFBY0MsVUFBVTtnQkFBY0MsY0FBYztZQUFhO1NBQUU7SUFBQztJQUMxR3hCO0lBQ0FDLGFBQWE7UUFBRXdCLE9BQU87WUFBRUMsU0FBUztRQUFLO0lBQUU7SUFDeEMvQjtJQUNBUztJQUNBRDtJQUNBbEIsT0FBTztRQUNMMEMsY0FBYztZQUFFcEMsUUFBUTtRQUFhO1FBQ3JDcUMscUJBQXFCO1FBQ3JCQyxjQUFjO1lBQ1pILFNBQVM7WUFDVEksT0FBTztnQkFDTDtvQkFBRUMsSUFBSTtvQkFBU0MsTUFBTTtvQkFBU0MsT0FBTztvQkFBTUMsVUFBVTtvQkFBU0MsVUFBVTtnQkFBTTtnQkFDOUU7b0JBQUVKLElBQUk7b0JBQU9DLE1BQU07b0JBQU9DLE9BQU87b0JBQU1DLFVBQVU7b0JBQVNDLFVBQVU7Z0JBQU07Z0JBQzFFO29CQUFFSixJQUFJO29CQUFjQyxNQUFNO29CQUFjQyxPQUFPO29CQUFNQyxVQUFVO29CQUFTQyxVQUFVO2dCQUFNO2FBQ3pGO1FBQ0g7SUFDRjtJQUNBLDJHQUEyRztJQUMzRzNCLE1BQU07UUFDSks7UUFDQXVCLFVBQVU7WUFDUlYsU0FBUztZQUNUVyxVQUFVO2dCQUNSO29CQUFFQyxXQUFXO29CQUFTQyxNQUFNO2dCQUFRO2dCQUNwQztvQkFBRUQsV0FBVztvQkFBT0MsTUFBTTtnQkFBTTtnQkFDaEM7b0JBQUVELFdBQVc7b0JBQWNDLE1BQU07Z0JBQWE7YUFDL0M7UUFDSDtJQUNGO0NBQ0Q7QUFFRCxNQUFNQyxtQkFBK0M7SUFDbkRDLGtCQUFrQjtRQUFFZixTQUFTO0lBQUs7SUFDbENnQixNQUFNO1FBQUVDLGtCQUFrQjtZQUFFQyxNQUFNO2dCQUFFQyxNQUFNO2dCQUFVQyxjQUFjO2dCQUFRQyxPQUFPO1lBQU07UUFBRTtJQUFFO0lBQzNGL0I7QUFDRjtBQUVBLE1BQU1nQyxhQUFhNUQsVUFBVTtJQUFFLEdBQUdvRCxnQkFBZ0I7SUFBRXhCLFNBQVMsRUFBRTtBQUFDO0FBSWhFLE1BQU1pQyxNQUFNLENBQUNDO0lBQ1gsSUFBSUEsTUFBTSxXQUFXLE9BQU87SUFDNUIsSUFBSUEsTUFBTSxRQUFRLE9BQU87SUFDekIsSUFBSUEsTUFBTSxVQUFVLE9BQU87SUFDM0IsSUFBSUEsTUFBTSxVQUFVLE9BQU87SUFDM0IsSUFBSUEsTUFBTSxZQUFZLE9BQU87SUFDN0IsSUFBSUEsTUFBTSxZQUFZLE9BQU87SUFDN0IsT0FBTztBQUNUO0FBRUEsTUFBTUMsU0FBUyxDQUFDQyxJQUNkQSxFQUNHQyxLQUFLLENBQUMsU0FDTkosR0FBRyxDQUFDLENBQUNLLElBQU1BLEVBQUVDLE1BQU0sQ0FBQyxHQUFHQyxXQUFXLEtBQUtGLEVBQUVHLEtBQUssQ0FBQyxJQUMvQ0MsSUFBSSxDQUFDO0FBRVYsTUFBTUMsT0FBTyxDQUFDQyxNQUFjQztJQUMxQixNQUFNQyxJQUFvRCxDQUFDO0lBQzNELEtBQUssTUFBTSxDQUFDQyxHQUFHLEVBQUVDLE1BQU0sRUFBRSxDQUFDLElBQUlDLE9BQU9DLE9BQU8sQ0FBQ0wsUUFBUztRQUNwRCxNQUFNTSxRQUFRRixPQUFPQyxPQUFPLENBQUNGLFFBQVFJLE1BQU0sQ0FBQyxDQUFDLENBQUNDLEVBQUUsR0FBSyxDQUFFQSxDQUFBQSxLQUFNVCxDQUFBQSxJQUFJLENBQUNHLEVBQUUsRUFBRUMsVUFBVSxDQUFDLENBQUEsQ0FBQztRQUNsRixJQUFJRyxNQUFNRyxNQUFNLEVBQUVSLENBQUMsQ0FBQ0MsRUFBRSxHQUFHRSxPQUFPTSxXQUFXLENBQUNKO0lBQzlDO0lBQ0EsT0FBT0w7QUFDVDtBQUVBLE1BQU1VLE1BQU07SUFDVixJQUFJQyxNQUFNO0lBRVYsTUFBTUMsYUFBNkUsQ0FBQztJQUNwRixNQUFNQyxPQUFPLElBQUlDO0lBRWpCLEtBQUssTUFBTUMsTUFBTTdELFFBQVM7UUFDeEIsTUFBTWUsS0FBSyxBQUFDOEMsR0FBVzlDLEVBQUU7UUFDekIsSUFBSSxDQUFDQSxNQUFNNEMsS0FBS0csR0FBRyxDQUFDL0MsS0FBSztRQUN6QjRDLEtBQUtJLEdBQUcsQ0FBQ2hEO1FBQ1QsTUFBTWlELE9BQU9yQixLQUFLWCxZQUFZNUQsVUFBVTtZQUFFLEdBQUdvRCxnQkFBZ0I7WUFBRXhCLFNBQVM7Z0JBQUM2RDthQUFHO1FBQUM7UUFDN0UsS0FBSyxNQUFNLENBQUNkLEdBQUdrQixFQUFFLElBQUloQixPQUFPQyxPQUFPLENBQUNjLE1BQU87WUFDekNOLFVBQVUsQ0FBQ1gsRUFBRSxLQUFLLENBQUM7WUFDbkJXLFVBQVUsQ0FBQ1gsRUFBRSxDQUFDaEMsR0FBRyxHQUFHa0Q7UUFDdEI7SUFDRjtJQUVBLE1BQU1DLFNBQVMsSUFBSU4sSUFBWTtXQUFJWCxPQUFPa0IsSUFBSSxDQUFDbkM7V0FBZ0JpQixPQUFPa0IsSUFBSSxDQUFDVDtLQUFZO0lBRXZGLEtBQUssTUFBTVUsU0FBU0YsT0FBUTtRQUMxQixNQUFNRyxJQUFJbEMsT0FBT2lDO1FBQ2pCLE1BQU14QixPQUFPWixVQUFVLENBQUNvQyxNQUFNLEVBQUVwQixVQUFVLENBQUM7UUFDM0MsTUFBTXNCLGtCQUFrQlosVUFBVSxDQUFDVSxNQUFNLElBQUksQ0FBQztRQUM5QyxNQUFNRyxZQUFZdEIsT0FBT2tCLElBQUksQ0FBQ0c7UUFFOUIsSUFBSXJCLE9BQU9rQixJQUFJLENBQUN2QixNQUFNVSxNQUFNLEVBQUU7WUFDNUJHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRVksRUFBRSxZQUFZLENBQUM7WUFDekMsS0FBSyxNQUFNLENBQUNoQixHQUFHWSxFQUFFLElBQUloQixPQUFPQyxPQUFPLENBQUNOLE1BQU9hLE9BQU8sQ0FBQyxFQUFFLEVBQUVRLEVBQUVPLFNBQVMsSUFBSW5CLElBQUlZLEVBQUVRLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRSxFQUFFeEMsSUFBSWdDLEVBQUVwQyxJQUFJLEVBQVksRUFBRSxDQUFDO1lBQzdINEIsT0FBTztRQUNUO1FBRUEsTUFBTWlCLGdCQUFnQkgsVUFBVWpCLE1BQU0sR0FBRyxLQUFLTCxPQUFPa0IsSUFBSSxDQUFDdkIsTUFBTVUsTUFBTTtRQUN0RSxJQUFJb0IsaUJBQWlCSCxVQUFVakIsTUFBTSxFQUFFO1lBQ3JDRyxPQUFPLENBQUMsWUFBWSxFQUFFWSxFQUFFLGtCQUFrQixDQUFDO1lBQzNDLEtBQUssTUFBTSxDQUFDTSxLQUFLQyxLQUFLLElBQUkzQixPQUFPQyxPQUFPLENBQUNvQixpQkFBa0I7Z0JBQ3pEYixPQUFPLENBQUMsRUFBRSxFQUFFb0IsS0FBS0MsU0FBUyxDQUFDSCxLQUFLLEtBQUssQ0FBQztnQkFDdEMsS0FBSyxNQUFNLENBQUN0QixHQUFHWSxFQUFFLElBQUloQixPQUFPQyxPQUFPLENBQUMwQixNQUFPbkIsT0FBTyxDQUFDLElBQUksRUFBRVEsRUFBRU8sU0FBUyxJQUFJbkIsSUFBSVksRUFBRVEsUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUV4QyxJQUFJZ0MsRUFBRXBDLElBQUksRUFBWSxFQUFFLENBQUM7Z0JBQy9INEIsT0FBTztZQUNUO1lBQ0FBLE9BQU87UUFDVDtRQUVBLElBQUksQ0FBQ1IsT0FBT2tCLElBQUksQ0FBQ3ZCLE1BQU1VLE1BQU0sSUFBSWlCLFVBQVVqQixNQUFNLEtBQUssR0FBRztZQUN2RCxNQUFNeUIsT0FBT1IsU0FBUyxDQUFDLEVBQUU7WUFDekJkLE9BQU8sQ0FBQyxZQUFZLEVBQUVZLEVBQUUsWUFBWSxDQUFDO1lBQ3JDLEtBQUssTUFBTSxDQUFDaEIsR0FBR1ksRUFBRSxJQUFJaEIsT0FBT0MsT0FBTyxDQUFDb0IsZUFBZSxDQUFDUyxLQUFLLEVBQ3ZEdEIsT0FBTyxDQUFDLEVBQUUsRUFBRVEsRUFBRU8sU0FBUyxJQUFJbkIsSUFBSVksRUFBRVEsUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUV4QyxJQUFJZ0MsRUFBRXBDLElBQUksRUFBWSxFQUFFLENBQUM7WUFDcEY0QixPQUFPO1lBQ1BBLE9BQU8sQ0FBQyxZQUFZLEVBQUVZLEVBQUUsR0FBRyxFQUFFQSxFQUFFLFVBQVUsQ0FBQztZQUMxQztRQUNGO1FBRUEsTUFBTVcsUUFBa0IsRUFBRTtRQUMxQixJQUFJL0IsT0FBT2tCLElBQUksQ0FBQ3ZCLE1BQU1VLE1BQU0sRUFBRTBCLE1BQU1DLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRVosRUFBRSxNQUFNLENBQUM7UUFDekQsSUFBSUUsVUFBVWpCLE1BQU0sRUFBRTtZQUNwQixNQUFNNEIsVUFBVVIsZ0JBQWdCLEdBQUdMLEVBQUUsWUFBWSxDQUFDLEdBQUdjO1lBQ3JESCxNQUFNQyxJQUFJLElBQUlWLFVBQVV0QyxHQUFHLENBQUMsQ0FBQ2xCLEtBQVFtRSxVQUFVLEdBQUdBLFFBQVEsQ0FBQyxFQUFFTCxLQUFLQyxTQUFTLENBQUMvRCxJQUFJLENBQUMsQ0FBQyxHQUFHO1FBQ3ZGO1FBQ0EwQyxPQUFPLENBQUMsWUFBWSxFQUFFWSxFQUFFLEdBQUcsRUFBRVcsTUFBTXRDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQztJQUN0RDtJQUVBLE9BQU9lO0FBQ1Q7QUFFQSxNQUFNMkIsWUFBWTVCO0FBRWxCLE1BQU02QixZQUFZMUYsS0FBSzJGLE9BQU8sQ0FBQzFGLGNBQWMsWUFBWTJGLEdBQUc7QUFDMUQsQ0FBQTtJQUNBLE1BQU1DLE9BQU83RixLQUFLOEYsT0FBTyxDQUFDSixXQUFXO0lBQ3JDLE1BQU0zRixHQUFHZ0csU0FBUyxDQUFDRixNQUFNSixXQUFXO0lBQ3BDTyxRQUFRQyxHQUFHLENBQUMsQ0FBQywyQkFBMkIsRUFBRUosTUFBTTtBQUNsRCxDQUFBIn0=
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9zY3JpcHRzL2dlbmVyYXRlLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmlwZSB9IGZyb20gJ0BiZXR0ZXItYXV0aC9zdHJpcGUnXG5pbXBvcnQgeyBlbWFpbEhhcm1vbnksIHBob25lSGFybW9ueSB9IGZyb20gJ2JldHRlci1hdXRoLWhhcm1vbnknXG5pbXBvcnQgeyBnZXRTY2hlbWEgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB0eXBlIHsgRmllbGRBdHRyaWJ1dGUgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB7XG4gIGFkbWluLFxuICBhbm9ueW1vdXMsXG4gIGFwaUtleSxcbiAgYmVhcmVyLFxuICBlbWFpbE9UUCxcbiAgZ2VuZXJpY09BdXRoLFxuICBqd3QsXG4gIG1hZ2ljTGluayxcbiAgbXVsdGlTZXNzaW9uLFxuICBvbmVUYXAsXG4gIG9uZVRpbWVUb2tlbixcbiAgb3BlbkFQSSxcbiAgb3JnYW5pemF0aW9uLFxuICBvaWRjUHJvdmlkZXIsXG4gIHBob25lTnVtYmVyLFxuICB0d29GYWN0b3IsXG4gIHVzZXJuYW1lXG59IGZyb20gJ2JldHRlci1hdXRoL3BsdWdpbnMnXG5pbXBvcnQgeyBwYXNza2V5IH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9wYXNza2V5J1xuaW1wb3J0IHsgc3NvIH0gZnJvbSAnYmV0dGVyLWF1dGgvcGx1Z2lucy9zc28nXG5pbXBvcnQgeyBwb2xhciB9IGZyb20gJ0Bwb2xhci1zaC9iZXR0ZXItYXV0aCdcbmltcG9ydCB7IFBvbGFyIH0gZnJvbSAnQHBvbGFyLXNoL3NkaydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xuXG5jb25zdCBjbGllbnQgPSBuZXcgUG9sYXIoe1xuICBhY2Nlc3NUb2tlbjogJ3BrX3Rlc3RfMTIzNDU2Nzg5MCcsXG4gIHNlcnZlcjogJ3NhbmRib3gnXG59KTtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgdXNlcm5hbWUoKSxcbiAgYWRtaW4oKSxcbiAgYXBpS2V5KCksXG4gIHBhc3NrZXkoKSxcbiAgZW1haWxIYXJtb255KCksXG4gIHBob25lSGFybW9ueSgpLFxuICBiZWFyZXIoKSxcbiAgZW1haWxPVFAoeyBzZW5kVmVyaWZpY2F0aW9uT1RQOiBhc3luYyAoKSA9PiB7fSB9KSxcbiAgbWFnaWNMaW5rKHsgc2VuZE1hZ2ljTGluazogYXN5bmMgKCkgPT4ge30gfSksXG4gIHBob25lTnVtYmVyKHsgc2VuZE9UUDogYXN5bmMgKCkgPT4ge30gfSksXG4gIG9uZVRhcCgpLFxuICBhbm9ueW1vdXMoKSxcbiAgbXVsdGlTZXNzaW9uKCksXG4gIG9uZVRpbWVUb2tlbigpLFxuICBvaWRjUHJvdmlkZXIoeyBsb2dpblBhZ2U6ICcnIH0pLFxuICBzc28oKSxcbiAgZ2VuZXJpY09BdXRoKHsgY29uZmlnOiBbeyBwcm92aWRlcklkOiAndHlwZXNjcmlwdCcsIGNsaWVudElkOiAndHlwZXNjcmlwdCcsIGNsaWVudFNlY3JldDogJ3R5cGVzY3JpcHQnIH1dIH0pLFxuICBvcGVuQVBJKCksXG4gIG9yZ2FuaXphdGlvbih7IHRlYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSB9KSxcbiAgand0KCksXG4gIHR3b0ZhY3RvcigpLFxuICBwaG9uZU51bWJlcigpLFxuICBzdHJpcGUoe1xuICAgIHN0cmlwZUNsaWVudDogeyBhcGlLZXk6ICd0eXBlc2NyaXB0JyB9LFxuICAgIHN0cmlwZVdlYmhvb2tTZWNyZXQ6ICd0eXBlc2NyaXB0JyxcbiAgICBzdWJzY3JpcHRpb246IHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwbGFuczogW1xuICAgICAgICB7IGlkOiAnYmFzaWMnLCBuYW1lOiAnQmFzaWMnLCBwcmljZTogMTAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9LFxuICAgICAgICB7IGlkOiAncHJvJywgbmFtZTogJ1BybycsIHByaWNlOiAyMDAwLCBpbnRlcnZhbDogJ21vbnRoJywgY3VycmVuY3k6ICd1c2QnIH0sXG4gICAgICAgIHsgaWQ6ICdlbnRlcnByaXNlJywgbmFtZTogJ0VudGVycHJpc2UnLCBwcmljZTogMzAwMCwgaW50ZXJ2YWw6ICdtb250aCcsIGN1cnJlbmN5OiAndXNkJyB9XG4gICAgICBdXG4gICAgfVxuICB9KSxcbiAgLy8gQXMgb2Ygd3JpdGluZyB0aGlzLCBQb2xhciBkb24ndCBjcmVhdGUgc2NoZW1hIGZpZWxkcywgYnV0IGp1c3QgaW4gY2FzZSBpbiB0aGUgZnV0dXJlIHdlIGxlYXZlIHRoaXMgaGVyZS5cbiAgcG9sYXIoe1xuICAgIGNsaWVudCxcbiAgICBjaGVja291dDoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHByb2R1Y3RzOiBbXG4gICAgICAgIHsgcHJvZHVjdElkOiAnYmFzaWMnLCBzbHVnOiAnYmFzaWMnIH0sXG4gICAgICAgIHsgcHJvZHVjdElkOiAncHJvJywgc2x1ZzogJ3BybycgfSxcbiAgICAgICAgeyBwcm9kdWN0SWQ6ICdlbnRlcnByaXNlJywgc2x1ZzogJ2VudGVycHJpc2UnIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pXG5dXG5cbmNvbnN0IGJldHRlckF1dGhDb25maWc6IFNhbml0aXplZEJldHRlckF1dGhPcHRpb25zID0ge1xuICBlbWFpbEFuZFBhc3N3b3JkOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgdXNlcjogeyBhZGRpdGlvbmFsRmllbGRzOiB7IHJvbGU6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHRWYWx1ZTogJ3VzZXInLCBpbnB1dDogZmFsc2UgfSB9IH0sXG4gIHBsdWdpbnNcbn1cblxuY29uc3QgYmFzZVNjaGVtYSA9IGdldFNjaGVtYSh7IC4uLmJldHRlckF1dGhDb25maWcsIHBsdWdpbnM6IFtdIH0pXG5cbnR5cGUgU2NoZW1hID0gUmVjb3JkPHN0cmluZywgeyBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPiB9PlxuXG5jb25zdCBtYXAgPSAodDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKHQgPT09ICdib29sZWFuJykgcmV0dXJuICdib29sZWFuJ1xuICBpZiAodCA9PT0gJ2RhdGUnKSByZXR1cm4gJ0RhdGUnXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuICdudW1iZXInXG4gIGlmICh0ID09PSAnc3RyaW5nJykgcmV0dXJuICdzdHJpbmcnXG4gIGlmICh0ID09PSAnbnVtYmVyW10nKSByZXR1cm4gJ251bWJlcltdJ1xuICBpZiAodCA9PT0gJ3N0cmluZ1tdJykgcmV0dXJuICdzdHJpbmdbXSdcbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5jb25zdCBwYXNjYWwgPSAoczogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNcbiAgICAuc3BsaXQoL1stX10vZylcbiAgICAubWFwKChwKSA9PiBwLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcC5zbGljZSgxKSlcbiAgICAuam9pbignJylcblxuY29uc3QgZGlmZiA9IChiYXNlOiBTY2hlbWEsIHRhcmdldDogU2NoZW1hKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRmllbGRBdHRyaWJ1dGU+PiA9PiB7XG4gIGNvbnN0IGQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPj4gPSB7fVxuICBmb3IgKGNvbnN0IFttLCB7IGZpZWxkcyB9XSBvZiBPYmplY3QuZW50cmllcyh0YXJnZXQpKSB7XG4gICAgY29uc3QgYWRkZWQgPSBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZpbHRlcigoW2tdKSA9PiAhKGsgaW4gKGJhc2VbbV0/LmZpZWxkcyA/PyB7fSkpKVxuICAgIGlmIChhZGRlZC5sZW5ndGgpIGRbbV0gPSBPYmplY3QuZnJvbUVudHJpZXMoYWRkZWQpXG4gIH1cbiAgcmV0dXJuIGRcbn1cblxuY29uc3QgZ2VuID0gKCk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXQgPSAnLy8gQXV0by1nZW5lcmF0ZWQgdHlwZXMuIERvIG5vdCBlZGl0LlxcblxcbidcblxuICBjb25zdCBwbHVnaW5BZGRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBGaWVsZEF0dHJpYnV0ZT4+PiA9IHt9XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgcGwgb2YgcGx1Z2lucykge1xuICAgIGNvbnN0IGlkID0gKHBsIGFzIGFueSkuaWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgaWYgKCFpZCB8fCBzZWVuLmhhcyhpZCkpIGNvbnRpbnVlXG4gICAgc2Vlbi5hZGQoaWQpXG4gICAgY29uc3QgYWRkcyA9IGRpZmYoYmFzZVNjaGVtYSwgZ2V0U2NoZW1hKHsgLi4uYmV0dGVyQXV0aENvbmZpZywgcGx1Z2luczogW3BsXSB9KSlcbiAgICBmb3IgKGNvbnN0IFttLCBmXSBvZiBPYmplY3QuZW50cmllcyhhZGRzKSkge1xuICAgICAgcGx1Z2luQWRkc1ttXSA/Pz0ge31cbiAgICAgIHBsdWdpbkFkZHNbbV1baWRdID0gZlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1vZGVscyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4uT2JqZWN0LmtleXMoYmFzZVNjaGVtYSksIC4uLk9iamVjdC5rZXlzKHBsdWdpbkFkZHMpXSlcblxuICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgIGNvbnN0IFAgPSBwYXNjYWwobW9kZWwpXG4gICAgY29uc3QgYmFzZSA9IGJhc2VTY2hlbWFbbW9kZWxdPy5maWVsZHMgPz8ge31cbiAgICBjb25zdCBwbHVnaW5zRm9yTW9kZWwgPSBwbHVnaW5BZGRzW21vZGVsXSA/PyB7fVxuICAgIGNvbnN0IHBsdWdpbklkcyA9IE9iamVjdC5rZXlzKHBsdWdpbnNGb3JNb2RlbClcblxuICAgIGlmIChPYmplY3Qua2V5cyhiYXNlKS5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgQmFzZSR7UH1GaWVsZHMgPSB7XFxuYFxuICAgICAgZm9yIChjb25zdCBbaywgZl0gb2YgT2JqZWN0LmVudHJpZXMoYmFzZSkpIG91dCArPSBgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICBvdXQgKz0gJ31cXG5cXG4nXG4gICAgfVxuXG4gICAgY29uc3QgbmVlZFBsdWdpbk1hcCA9IHBsdWdpbklkcy5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKGJhc2UpLmxlbmd0aFxuICAgIGlmIChuZWVkUGx1Z2luTWFwICYmIHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfVBsdWdpbkZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtwaWQsIGZsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHBsdWdpbnNGb3JNb2RlbCkpIHtcbiAgICAgICAgb3V0ICs9IGAgICR7SlNPTi5zdHJpbmdpZnkocGlkKX06IHtcXG5gXG4gICAgICAgIGZvciAoY29uc3QgW2ssIGZdIG9mIE9iamVjdC5lbnRyaWVzKGZsZHMpKSBvdXQgKz0gYCAgICAke2YuZmllbGROYW1lID8/IGt9JHtmLnJlcXVpcmVkID8gJycgOiAnPyd9OiAke21hcChmLnR5cGUgYXMgc3RyaW5nKX1cXG5gXG4gICAgICAgIG91dCArPSAnICB9XFxuJ1xuICAgICAgfVxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoICYmIHBsdWdpbklkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG9ubHkgPSBwbHVnaW5JZHNbMF1cbiAgICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfUZpZWxkcyA9IHtcXG5gXG4gICAgICBmb3IgKGNvbnN0IFtrLCBmXSBvZiBPYmplY3QuZW50cmllcyhwbHVnaW5zRm9yTW9kZWxbb25seV0pKVxuICAgICAgICBvdXQgKz0gYCAgJHtmLmZpZWxkTmFtZSA/PyBrfSR7Zi5yZXF1aXJlZCA/ICcnIDogJz8nfTogJHttYXAoZi50eXBlIGFzIHN0cmluZyl9XFxuYFxuICAgICAgb3V0ICs9ICd9XFxuXFxuJ1xuICAgICAgb3V0ICs9IGBleHBvcnQgdHlwZSAke1B9ID0gJHtQfUZpZWxkc1xcblxcbmBcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW11cbiAgICBpZiAoT2JqZWN0LmtleXMoYmFzZSkubGVuZ3RoKSBwYXJ0cy5wdXNoKGBCYXNlJHtQfUZpZWxkc2ApXG4gICAgaWYgKHBsdWdpbklkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1hcE5hbWUgPSBuZWVkUGx1Z2luTWFwID8gYCR7UH1QbHVnaW5GaWVsZHNgIDogdW5kZWZpbmVkXG4gICAgICBwYXJ0cy5wdXNoKC4uLnBsdWdpbklkcy5tYXAoKGlkKSA9PiAobWFwTmFtZSA/IGAke21hcE5hbWV9WyR7SlNPTi5zdHJpbmdpZnkoaWQpfV1gIDogJ25ldmVyJykgLyogbm90IHJlYWNoYWJsZSAqLykpXG4gICAgfVxuICAgIG91dCArPSBgZXhwb3J0IHR5cGUgJHtQfSA9ICR7cGFydHMuam9pbignICYgJyl9XFxuXFxuYFxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdW5pb24gdHlwZSBvZiBwbHVnaW4gaWRlbnRpZmllcnNcbiAgY29uc3QgcGx1Z2luSWRVbmlvbiA9IFsuLi5zZWVuXVxuICAgIC5tYXAoKGlkKSA9PiBKU09OLnN0cmluZ2lmeShpZCkpXG4gICAgLmpvaW4oJyB8ICcpXG4gIG91dCArPSBgZXhwb3J0IHR5cGUgUGx1Z2luSWQgPSAke3BsdWdpbklkVW5pb259XFxuXFxuYFxuXG4gIC8vIEdlbmVyYXRlIGZ1bGwgc2NoZW1hIG1hcHBpbmdcbiAgb3V0ICs9IGBleHBvcnQgdHlwZSBCZXR0ZXJBdXRoRnVsbFNjaGVtYSA9IHtcXG5gXG4gIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgY29uc3QgUCA9IHBhc2NhbChtb2RlbClcbiAgICBvdXQgKz0gYCAgJHtKU09OLnN0cmluZ2lmeShtb2RlbCl9OiAke1B9XFxuYFxuICB9XG4gIG91dCArPSBgfVxcblxcbmBcblxuICAvLyBHZW5lcmF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBtb2RlbCBuYW1lc1xuICBvdXQgKz0gYGV4cG9ydCB0eXBlIE1vZGVsS2V5ID0ga2V5b2YgQmV0dGVyQXV0aEZ1bGxTY2hlbWFgXG5cbiAgcmV0dXJuIG91dFxufVxuXG5jb25zdCBnZW5lcmF0ZWQgPSBnZW4oKVxuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKVxuOyhhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vZ2VuZXJhdGVkLXR5cGVzLnRzJylcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGUsIGdlbmVyYXRlZCwgJ3V0ZjgnKVxuICBjb25zb2xlLmxvZyhgR2VuZXJhdGVkIHR5cGVzIHdyaXR0ZW4gdG8gJHtmaWxlfWApXG59KSgpXG4iXSwibmFtZXMiOlsic3RyaXBlIiwiZW1haWxIYXJtb255IiwicGhvbmVIYXJtb255IiwiZ2V0U2NoZW1hIiwiYWRtaW4iLCJhbm9ueW1vdXMiLCJhcGlLZXkiLCJiZWFyZXIiLCJlbWFpbE9UUCIsImdlbmVyaWNPQXV0aCIsImp3dCIsIm1hZ2ljTGluayIsIm11bHRpU2Vzc2lvbiIsIm9uZVRhcCIsIm9uZVRpbWVUb2tlbiIsIm9wZW5BUEkiLCJvcmdhbml6YXRpb24iLCJvaWRjUHJvdmlkZXIiLCJwaG9uZU51bWJlciIsInR3b0ZhY3RvciIsInVzZXJuYW1lIiwicGFzc2tleSIsInNzbyIsInBvbGFyIiwiUG9sYXIiLCJmcyIsInBhdGgiLCJmaWxlVVJMVG9QYXRoIiwiY2xpZW50IiwiYWNjZXNzVG9rZW4iLCJzZXJ2ZXIiLCJwbHVnaW5zIiwic2VuZFZlcmlmaWNhdGlvbk9UUCIsInNlbmRNYWdpY0xpbmsiLCJzZW5kT1RQIiwibG9naW5QYWdlIiwiY29uZmlnIiwicHJvdmlkZXJJZCIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwidGVhbXMiLCJlbmFibGVkIiwic3RyaXBlQ2xpZW50Iiwic3RyaXBlV2ViaG9va1NlY3JldCIsInN1YnNjcmlwdGlvbiIsInBsYW5zIiwiaWQiLCJuYW1lIiwicHJpY2UiLCJpbnRlcnZhbCIsImN1cnJlbmN5IiwiY2hlY2tvdXQiLCJwcm9kdWN0cyIsInByb2R1Y3RJZCIsInNsdWciLCJiZXR0ZXJBdXRoQ29uZmlnIiwiZW1haWxBbmRQYXNzd29yZCIsInVzZXIiLCJhZGRpdGlvbmFsRmllbGRzIiwicm9sZSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJpbnB1dCIsImJhc2VTY2hlbWEiLCJtYXAiLCJ0IiwicGFzY2FsIiwicyIsInNwbGl0IiwicCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJqb2luIiwiZGlmZiIsImJhc2UiLCJ0YXJnZXQiLCJkIiwibSIsImZpZWxkcyIsIk9iamVjdCIsImVudHJpZXMiLCJhZGRlZCIsImZpbHRlciIsImsiLCJsZW5ndGgiLCJmcm9tRW50cmllcyIsImdlbiIsIm91dCIsInBsdWdpbkFkZHMiLCJzZWVuIiwiU2V0IiwicGwiLCJoYXMiLCJhZGQiLCJhZGRzIiwiZiIsIm1vZGVscyIsImtleXMiLCJtb2RlbCIsIlAiLCJwbHVnaW5zRm9yTW9kZWwiLCJwbHVnaW5JZHMiLCJmaWVsZE5hbWUiLCJyZXF1aXJlZCIsIm5lZWRQbHVnaW5NYXAiLCJwaWQiLCJmbGRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm9ubHkiLCJwYXJ0cyIsInB1c2giLCJtYXBOYW1lIiwidW5kZWZpbmVkIiwicGx1Z2luSWRVbmlvbiIsImdlbmVyYXRlZCIsIl9fZGlybmFtZSIsImRp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
|
package/package.json
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { baModelKey } from '../constants';
|
|
2
|
-
import { BetterAuthPluginOptions } from '../types';
|
|
3
|
-
export type CollectionSchemaMap = Record<keyof typeof baModelKey, {
|
|
4
|
-
collectionSlug: string;
|
|
5
|
-
fields: Record<string, string>;
|
|
6
|
-
}>;
|
|
7
|
-
export declare function getDefaultCollectionSchemaMap(pluginOptions: BetterAuthPluginOptions): CollectionSchemaMap;
|
|
8
|
-
/**
|
|
9
|
-
* Builds a collection schema map by analyzing collection overrides and extracting
|
|
10
|
-
* BetterAuth model keys and field mappings
|
|
11
|
-
*
|
|
12
|
-
* @param collectionOverrides - Collection override functions provided in plugin options
|
|
13
|
-
* @returns A collection schema map with default values merged with any overrides
|
|
14
|
-
*/
|
|
15
|
-
export declare function buildCollectionSchemaMap(pluginOptions: BetterAuthPluginOptions): CollectionSchemaMap;
|
|
16
|
-
//# sourceMappingURL=get-collection-schema-map.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-collection-schema-map.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-collection-schema-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;AAQvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAElD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,MAAM,OAAO,UAAU,EACvB;IACE,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B,CACF,CAAA;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,uBAAuB,GAAG,mBAAmB,CAmCzG;AAMD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,uBAAuB,GAAG,mBAAmB,CA0CpG"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { baModelFieldKeysToFieldNames, baModelKey } from "../constants";
|
|
2
|
-
import { getAuthTables } from "better-auth/db";
|
|
3
|
-
import { flattenAllFields } from "payload/shared";
|
|
4
|
-
import { getDeafultCollectionSlug } from "./get-collection-slug";
|
|
5
|
-
export function getDefaultCollectionSchemaMap(pluginOptions) {
|
|
6
|
-
const tables = getAuthTables(pluginOptions.betterAuthOptions ?? {});
|
|
7
|
-
const map = {};
|
|
8
|
-
Object.entries(tables).forEach(([key, table])=>{
|
|
9
|
-
const fieldNames = Object.entries(table.fields).map(([k, v])=>k);
|
|
10
|
-
const typedKey = key;
|
|
11
|
-
const value = {
|
|
12
|
-
collectionSlug: getDeafultCollectionSlug({
|
|
13
|
-
modelKey: typedKey,
|
|
14
|
-
pluginOptions
|
|
15
|
-
}),
|
|
16
|
-
fields: fieldNames.reduce((acc, field)=>{
|
|
17
|
-
if (typedKey in baModelFieldKeysToFieldNames && field in baModelFieldKeysToFieldNames[typedKey]) {
|
|
18
|
-
const fieldMapping = baModelFieldKeysToFieldNames[typedKey];
|
|
19
|
-
const typedField = field;
|
|
20
|
-
acc[field] = fieldMapping[typedField] || field;
|
|
21
|
-
} else {
|
|
22
|
-
acc[field] = field;
|
|
23
|
-
}
|
|
24
|
-
return acc;
|
|
25
|
-
}, {})
|
|
26
|
-
};
|
|
27
|
-
map[typedKey] = value;
|
|
28
|
-
});
|
|
29
|
-
// always add the role field to the user collection if not already present
|
|
30
|
-
if (!map[baModelKey.user].fields.role) {
|
|
31
|
-
map[baModelKey.user].fields.role = baModelFieldKeysToFieldNames.user.role;
|
|
32
|
-
}
|
|
33
|
-
return map;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Builds a collection schema map by analyzing collection overrides and extracting
|
|
37
|
-
* BetterAuth model keys and field mappings
|
|
38
|
-
*
|
|
39
|
-
* @param collectionOverrides - Collection override functions provided in plugin options
|
|
40
|
-
* @returns A collection schema map with default values merged with any overrides
|
|
41
|
-
*/ export function buildCollectionSchemaMap(pluginOptions) {
|
|
42
|
-
const collectionOverrides = {
|
|
43
|
-
users: pluginOptions.users?.collectionOverrides,
|
|
44
|
-
accounts: pluginOptions.accounts?.collectionOverrides,
|
|
45
|
-
sessions: pluginOptions.sessions?.collectionOverrides,
|
|
46
|
-
verifications: pluginOptions.verifications?.collectionOverrides,
|
|
47
|
-
...pluginOptions.pluginCollectionOverrides
|
|
48
|
-
};
|
|
49
|
-
const defaultCollectionSchemaMap = getDefaultCollectionSchemaMap(pluginOptions);
|
|
50
|
-
if (!collectionOverrides || Object.keys(collectionOverrides).length === 0) {
|
|
51
|
-
return {
|
|
52
|
-
...defaultCollectionSchemaMap
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
const schemaMap = {
|
|
56
|
-
...defaultCollectionSchemaMap
|
|
57
|
-
};
|
|
58
|
-
Object.entries(collectionOverrides).forEach(([collectionSlug, overrideFunction])=>{
|
|
59
|
-
if (!overrideFunction) return;
|
|
60
|
-
const modifiedCollection = overrideFunction({
|
|
61
|
-
collection: {
|
|
62
|
-
slug: collectionSlug,
|
|
63
|
-
fields: []
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
const modelKey = assertModelKey(modifiedCollection);
|
|
67
|
-
schemaMap[modelKey].collectionSlug = modifiedCollection.slug;
|
|
68
|
-
const flattenedFields = flattenAllFields(modifiedCollection);
|
|
69
|
-
if (flattenedFields && Array.isArray(flattenedFields)) {
|
|
70
|
-
flattenedFields.forEach((field)=>{
|
|
71
|
-
// we only want to process fields that have a betterAuthFieldKey
|
|
72
|
-
// because its possible the user has added additional fields
|
|
73
|
-
if (field.custom?.betterAuthFieldKey) {
|
|
74
|
-
const fieldKey = assertFieldKey(field, modelKey, modifiedCollection.slug);
|
|
75
|
-
schemaMap[modelKey].fields[fieldKey] = field.name;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
return schemaMap;
|
|
81
|
-
}
|
|
82
|
-
function assertFieldKey(field, modelKey, collectionSlug) {
|
|
83
|
-
const fieldKey = field.custom?.betterAuthFieldKey;
|
|
84
|
-
// Assert that fieldKey is a valid key in the baModelFieldKeysToFieldNames mapping
|
|
85
|
-
if (!Object.values(baModelFieldKeysToFieldNames).some((fieldMap)=>Object.keys(fieldMap).includes(fieldKey))) {
|
|
86
|
-
throw new Error(`Invalid custom.betterAuthFieldKey: ${fieldKey} for field ${field.name} in collection ${collectionSlug},
|
|
87
|
-
must be one of ${Object.keys(baModelFieldKeysToFieldNames[modelKey]).join(', ')}`);
|
|
88
|
-
}
|
|
89
|
-
return fieldKey;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Asserts that a collection has a valid BetterAuth model key and returns it
|
|
93
|
-
*
|
|
94
|
-
* @param collection - The collection to check for a BetterAuth model key
|
|
95
|
-
* @returns The BetterAuth model key
|
|
96
|
-
* @throws Error if the collection does not have a valid BetterAuth model key
|
|
97
|
-
*/ function assertModelKey(collection) {
|
|
98
|
-
if (!collection.custom?.betterAuthModelKey) {
|
|
99
|
-
throw new Error(`Collection ${collection.slug} is missing a betterAuthModelKey in its custom field`);
|
|
100
|
-
}
|
|
101
|
-
const modelKey = collection.custom.betterAuthModelKey;
|
|
102
|
-
if (!Object.values(baModelKey).includes(modelKey)) {
|
|
103
|
-
throw new Error(`Collection ${collection.slug} has an invalid betterAuthModelKey: ${modelKey}`);
|
|
104
|
-
}
|
|
105
|
-
return modelKey;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtY29sbGVjdGlvbi1zY2hlbWEtbWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMsIGJhTW9kZWxLZXkgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBnZXRBdXRoVGFibGVzIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgeyBCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ2JldHRlci1hdXRoL3R5cGVzJ1xuaW1wb3J0IHsgYmFNb2RlbEtleVRvU2x1ZyB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IEZsYXR0ZW5lZEZpZWxkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB7IGZsYXR0ZW5BbGxGaWVsZHMgfSBmcm9tICdwYXlsb2FkL3NoYXJlZCdcbmltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHsgZ2V0RGVhZnVsdENvbGxlY3Rpb25TbHVnIH0gZnJvbSAnLi9nZXQtY29sbGVjdGlvbi1zbHVnJ1xuaW1wb3J0IHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvblNjaGVtYU1hcCA9IFJlY29yZDxcbiAga2V5b2YgdHlwZW9mIGJhTW9kZWxLZXksXG4gIHtcbiAgICBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXG4gICAgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIH1cbj5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb2xsZWN0aW9uU2NoZW1hTWFwKHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zKTogQ29sbGVjdGlvblNjaGVtYU1hcCB7XG4gIGNvbnN0IHRhYmxlcyA9IGdldEF1dGhUYWJsZXMocGx1Z2luT3B0aW9ucy5iZXR0ZXJBdXRoT3B0aW9ucyA/PyB7fSlcbiAgY29uc3QgbWFwID0ge30gYXMgQ29sbGVjdGlvblNjaGVtYU1hcFxuICBPYmplY3QuZW50cmllcyh0YWJsZXMpLmZvckVhY2goKFtrZXksIHRhYmxlXSkgPT4ge1xuICAgIGNvbnN0IGZpZWxkTmFtZXMgPSBPYmplY3QuZW50cmllcyh0YWJsZS5maWVsZHMpLm1hcCgoW2ssIHZdKSA9PiBrKVxuICAgIGNvbnN0IHR5cGVkS2V5ID0ga2V5IGFzIGtleW9mIHR5cGVvZiBiYU1vZGVsS2V5VG9TbHVnXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICBjb2xsZWN0aW9uU2x1ZzogZ2V0RGVhZnVsdENvbGxlY3Rpb25TbHVnKHsgbW9kZWxLZXk6IHR5cGVkS2V5LCBwbHVnaW5PcHRpb25zIH0pLFxuICAgICAgZmllbGRzOiBmaWVsZE5hbWVzLnJlZHVjZShcbiAgICAgICAgKGFjYywgZmllbGQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlZEtleSBpbiBiYU1vZGVsRmllbGRLZXlzVG9GaWVsZE5hbWVzICYmXG4gICAgICAgICAgICBmaWVsZCBpbiBiYU1vZGVsRmllbGRLZXlzVG9GaWVsZE5hbWVzW3R5cGVkS2V5IGFzIGtleW9mIHR5cGVvZiBiYU1vZGVsRmllbGRLZXlzVG9GaWVsZE5hbWVzXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRNYXBwaW5nID0gYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lc1t0eXBlZEtleSBhcyBrZXlvZiB0eXBlb2YgYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lc11cbiAgICAgICAgICAgIGNvbnN0IHR5cGVkRmllbGQgPSBmaWVsZCBhcyBrZXlvZiB0eXBlb2YgZmllbGRNYXBwaW5nXG4gICAgICAgICAgICBhY2NbZmllbGRdID0gZmllbGRNYXBwaW5nW3R5cGVkRmllbGRdIHx8IGZpZWxkXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1tmaWVsZF0gPSBmaWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICAgIClcbiAgICB9XG5cbiAgICBtYXBbdHlwZWRLZXldID0gdmFsdWVcbiAgfSlcblxuICAvLyBhbHdheXMgYWRkIHRoZSByb2xlIGZpZWxkIHRvIHRoZSB1c2VyIGNvbGxlY3Rpb24gaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICBpZiAoIW1hcFtiYU1vZGVsS2V5LnVzZXJdLmZpZWxkcy5yb2xlKSB7XG4gICAgbWFwW2JhTW9kZWxLZXkudXNlcl0uZmllbGRzLnJvbGUgPSBiYU1vZGVsRmllbGRLZXlzVG9GaWVsZE5hbWVzLnVzZXIucm9sZVxuICB9XG5cbiAgcmV0dXJuIG1hcFxufVxuXG50eXBlIENvbGxlY3Rpb25PdmVycmlkZSA9ICgob3B0aW9uczogeyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnIH0pID0+IENvbGxlY3Rpb25Db25maWcpIHwgdW5kZWZpbmVkXG5cbnR5cGUgQ29sbGVjdGlvbk92ZXJyaWRlcyA9IFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb25PdmVycmlkZT5cblxuLyoqXG4gKiBCdWlsZHMgYSBjb2xsZWN0aW9uIHNjaGVtYSBtYXAgYnkgYW5hbHl6aW5nIGNvbGxlY3Rpb24gb3ZlcnJpZGVzIGFuZCBleHRyYWN0aW5nXG4gKiBCZXR0ZXJBdXRoIG1vZGVsIGtleXMgYW5kIGZpZWxkIG1hcHBpbmdzXG4gKlxuICogQHBhcmFtIGNvbGxlY3Rpb25PdmVycmlkZXMgLSBDb2xsZWN0aW9uIG92ZXJyaWRlIGZ1bmN0aW9ucyBwcm92aWRlZCBpbiBwbHVnaW4gb3B0aW9uc1xuICogQHJldHVybnMgQSBjb2xsZWN0aW9uIHNjaGVtYSBtYXAgd2l0aCBkZWZhdWx0IHZhbHVlcyBtZXJnZWQgd2l0aCBhbnkgb3ZlcnJpZGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbGxlY3Rpb25TY2hlbWFNYXAocGx1Z2luT3B0aW9uczogQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMpOiBDb2xsZWN0aW9uU2NoZW1hTWFwIHtcbiAgY29uc3QgY29sbGVjdGlvbk92ZXJyaWRlcyA9IHtcbiAgICB1c2VyczogcGx1Z2luT3B0aW9ucy51c2Vycz8uY29sbGVjdGlvbk92ZXJyaWRlcyxcbiAgICBhY2NvdW50czogcGx1Z2luT3B0aW9ucy5hY2NvdW50cz8uY29sbGVjdGlvbk92ZXJyaWRlcyxcbiAgICBzZXNzaW9uczogcGx1Z2luT3B0aW9ucy5zZXNzaW9ucz8uY29sbGVjdGlvbk92ZXJyaWRlcyxcbiAgICB2ZXJpZmljYXRpb25zOiBwbHVnaW5PcHRpb25zLnZlcmlmaWNhdGlvbnM/LmNvbGxlY3Rpb25PdmVycmlkZXMsXG4gICAgLi4ucGx1Z2luT3B0aW9ucy5wbHVnaW5Db2xsZWN0aW9uT3ZlcnJpZGVzXG4gIH1cblxuICBjb25zdCBkZWZhdWx0Q29sbGVjdGlvblNjaGVtYU1hcCA9IGdldERlZmF1bHRDb2xsZWN0aW9uU2NoZW1hTWFwKHBsdWdpbk9wdGlvbnMpXG5cbiAgaWYgKCFjb2xsZWN0aW9uT3ZlcnJpZGVzIHx8IE9iamVjdC5rZXlzKGNvbGxlY3Rpb25PdmVycmlkZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IC4uLmRlZmF1bHRDb2xsZWN0aW9uU2NoZW1hTWFwIH1cbiAgfVxuXG4gIGNvbnN0IHNjaGVtYU1hcCA9IHsgLi4uZGVmYXVsdENvbGxlY3Rpb25TY2hlbWFNYXAgfVxuXG4gIE9iamVjdC5lbnRyaWVzKGNvbGxlY3Rpb25PdmVycmlkZXMpLmZvckVhY2goKFtjb2xsZWN0aW9uU2x1Zywgb3ZlcnJpZGVGdW5jdGlvbl0pID0+IHtcbiAgICBpZiAoIW92ZXJyaWRlRnVuY3Rpb24pIHJldHVyblxuXG4gICAgY29uc3QgbW9kaWZpZWRDb2xsZWN0aW9uID0gb3ZlcnJpZGVGdW5jdGlvbih7XG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIHNsdWc6IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICBmaWVsZHM6IFtdXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBtb2RlbEtleSA9IGFzc2VydE1vZGVsS2V5KG1vZGlmaWVkQ29sbGVjdGlvbilcbiAgICBzY2hlbWFNYXBbbW9kZWxLZXldLmNvbGxlY3Rpb25TbHVnID0gbW9kaWZpZWRDb2xsZWN0aW9uLnNsdWdcbiAgICBjb25zdCBmbGF0dGVuZWRGaWVsZHMgPSBmbGF0dGVuQWxsRmllbGRzKG1vZGlmaWVkQ29sbGVjdGlvbilcbiAgICBpZiAoZmxhdHRlbmVkRmllbGRzICYmIEFycmF5LmlzQXJyYXkoZmxhdHRlbmVkRmllbGRzKSkge1xuICAgICAgZmxhdHRlbmVkRmllbGRzLmZvckVhY2goKGZpZWxkOiBGbGF0dGVuZWRGaWVsZCkgPT4ge1xuICAgICAgICAvLyB3ZSBvbmx5IHdhbnQgdG8gcHJvY2VzcyBmaWVsZHMgdGhhdCBoYXZlIGEgYmV0dGVyQXV0aEZpZWxkS2V5XG4gICAgICAgIC8vIGJlY2F1c2UgaXRzIHBvc3NpYmxlIHRoZSB1c2VyIGhhcyBhZGRlZCBhZGRpdGlvbmFsIGZpZWxkc1xuICAgICAgICBpZiAoZmllbGQuY3VzdG9tPy5iZXR0ZXJBdXRoRmllbGRLZXkpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZEtleSA9IGFzc2VydEZpZWxkS2V5KGZpZWxkLCBtb2RlbEtleSwgbW9kaWZpZWRDb2xsZWN0aW9uLnNsdWcpXG4gICAgICAgICAgc2NoZW1hTWFwW21vZGVsS2V5XS5maWVsZHNbZmllbGRLZXldID0gZmllbGQubmFtZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gc2NoZW1hTWFwXG59XG5cbmZ1bmN0aW9uIGFzc2VydEZpZWxkS2V5KGZpZWxkOiBGbGF0dGVuZWRGaWVsZCwgbW9kZWxLZXk6IGtleW9mIHR5cGVvZiBiYU1vZGVsS2V5LCBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nKSB7XG4gIGNvbnN0IGZpZWxkS2V5ID0gZmllbGQuY3VzdG9tPy5iZXR0ZXJBdXRoRmllbGRLZXkgYXMgc3RyaW5nXG5cbiAgLy8gQXNzZXJ0IHRoYXQgZmllbGRLZXkgaXMgYSB2YWxpZCBrZXkgaW4gdGhlIGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMgbWFwcGluZ1xuICBpZiAoIU9iamVjdC52YWx1ZXMoYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lcykuc29tZSgoZmllbGRNYXApID0+IE9iamVjdC5rZXlzKGZpZWxkTWFwKS5pbmNsdWRlcyhmaWVsZEtleSkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgY3VzdG9tLmJldHRlckF1dGhGaWVsZEtleTogJHtmaWVsZEtleX0gZm9yIGZpZWxkICR7ZmllbGQubmFtZX0gaW4gY29sbGVjdGlvbiAke2NvbGxlY3Rpb25TbHVnfSwgXG4gICAgICAgIG11c3QgYmUgb25lIG9mICR7T2JqZWN0LmtleXMoYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lc1ttb2RlbEtleSBhcyBrZXlvZiB0eXBlb2YgYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lc10pLmpvaW4oJywgJyl9YFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBmaWVsZEtleVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbGxlY3Rpb24gaGFzIGEgdmFsaWQgQmV0dGVyQXV0aCBtb2RlbCBrZXkgYW5kIHJldHVybnMgaXRcbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvbiAtIFRoZSBjb2xsZWN0aW9uIHRvIGNoZWNrIGZvciBhIEJldHRlckF1dGggbW9kZWwga2V5XG4gKiBAcmV0dXJucyBUaGUgQmV0dGVyQXV0aCBtb2RlbCBrZXlcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIEJldHRlckF1dGggbW9kZWwga2V5XG4gKi9cbmZ1bmN0aW9uIGFzc2VydE1vZGVsS2V5KGNvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcpOiBrZXlvZiB0eXBlb2YgYmFNb2RlbEtleSB7XG4gIGlmICghY29sbGVjdGlvbi5jdXN0b20/LmJldHRlckF1dGhNb2RlbEtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ29sbGVjdGlvbiAke2NvbGxlY3Rpb24uc2x1Z30gaXMgbWlzc2luZyBhIGJldHRlckF1dGhNb2RlbEtleSBpbiBpdHMgY3VzdG9tIGZpZWxkYClcbiAgfVxuXG4gIGNvbnN0IG1vZGVsS2V5ID0gY29sbGVjdGlvbi5jdXN0b20uYmV0dGVyQXV0aE1vZGVsS2V5IGFzIGtleW9mIHR5cGVvZiBiYU1vZGVsS2V5XG5cbiAgaWYgKCFPYmplY3QudmFsdWVzKGJhTW9kZWxLZXkpLmluY2x1ZGVzKG1vZGVsS2V5IGFzIGFueSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvbGxlY3Rpb24gJHtjb2xsZWN0aW9uLnNsdWd9IGhhcyBhbiBpbnZhbGlkIGJldHRlckF1dGhNb2RlbEtleTogJHttb2RlbEtleX1gKVxuICB9XG5cbiAgcmV0dXJuIG1vZGVsS2V5XG59XG4iXSwibmFtZXMiOlsiYmFNb2RlbEZpZWxkS2V5c1RvRmllbGROYW1lcyIsImJhTW9kZWxLZXkiLCJnZXRBdXRoVGFibGVzIiwiZmxhdHRlbkFsbEZpZWxkcyIsImdldERlYWZ1bHRDb2xsZWN0aW9uU2x1ZyIsImdldERlZmF1bHRDb2xsZWN0aW9uU2NoZW1hTWFwIiwicGx1Z2luT3B0aW9ucyIsInRhYmxlcyIsImJldHRlckF1dGhPcHRpb25zIiwibWFwIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJrZXkiLCJ0YWJsZSIsImZpZWxkTmFtZXMiLCJmaWVsZHMiLCJrIiwidiIsInR5cGVkS2V5IiwidmFsdWUiLCJjb2xsZWN0aW9uU2x1ZyIsIm1vZGVsS2V5IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJmaWVsZE1hcHBpbmciLCJ0eXBlZEZpZWxkIiwidXNlciIsInJvbGUiLCJidWlsZENvbGxlY3Rpb25TY2hlbWFNYXAiLCJjb2xsZWN0aW9uT3ZlcnJpZGVzIiwidXNlcnMiLCJhY2NvdW50cyIsInNlc3Npb25zIiwidmVyaWZpY2F0aW9ucyIsInBsdWdpbkNvbGxlY3Rpb25PdmVycmlkZXMiLCJkZWZhdWx0Q29sbGVjdGlvblNjaGVtYU1hcCIsImtleXMiLCJsZW5ndGgiLCJzY2hlbWFNYXAiLCJvdmVycmlkZUZ1bmN0aW9uIiwibW9kaWZpZWRDb2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsInNsdWciLCJhc3NlcnRNb2RlbEtleSIsImZsYXR0ZW5lZEZpZWxkcyIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbSIsImJldHRlckF1dGhGaWVsZEtleSIsImZpZWxkS2V5IiwiYXNzZXJ0RmllbGRLZXkiLCJuYW1lIiwidmFsdWVzIiwic29tZSIsImZpZWxkTWFwIiwiaW5jbHVkZXMiLCJFcnJvciIsImpvaW4iLCJiZXR0ZXJBdXRoTW9kZWxLZXkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLDRCQUE0QixFQUFFQyxVQUFVLFFBQVEsZUFBYztBQUN2RSxTQUFTQyxhQUFhLFFBQVEsaUJBQWdCO0FBSTlDLFNBQVNDLGdCQUFnQixRQUFRLGlCQUFnQjtBQUVqRCxTQUFTQyx3QkFBd0IsUUFBUSx3QkFBdUI7QUFXaEUsT0FBTyxTQUFTQyw4QkFBOEJDLGFBQXNDO0lBQ2xGLE1BQU1DLFNBQVNMLGNBQWNJLGNBQWNFLGlCQUFpQixJQUFJLENBQUM7SUFDakUsTUFBTUMsTUFBTSxDQUFDO0lBQ2JDLE9BQU9DLE9BQU8sQ0FBQ0osUUFBUUssT0FBTyxDQUFDLENBQUMsQ0FBQ0MsS0FBS0MsTUFBTTtRQUMxQyxNQUFNQyxhQUFhTCxPQUFPQyxPQUFPLENBQUNHLE1BQU1FLE1BQU0sRUFBRVAsR0FBRyxDQUFDLENBQUMsQ0FBQ1EsR0FBR0MsRUFBRSxHQUFLRDtRQUNoRSxNQUFNRSxXQUFXTjtRQUNqQixNQUFNTyxRQUFRO1lBQ1pDLGdCQUFnQmpCLHlCQUF5QjtnQkFBRWtCLFVBQVVIO2dCQUFVYjtZQUFjO1lBQzdFVSxRQUFRRCxXQUFXUSxNQUFNLENBQ3ZCLENBQUNDLEtBQUtDO2dCQUNKLElBQ0VO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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-requst-collection.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-requst-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAExE,eAAO,MAAM,oBAAoB,GAAI,KAAK,cAAc,KAAG,UAc1D,CAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { APIError } from "payload";
|
|
2
|
-
export const getRequestCollection = (req)=>{
|
|
3
|
-
const collectionSlug = req.routeParams?.collection;
|
|
4
|
-
if (typeof collectionSlug !== 'string') {
|
|
5
|
-
throw new APIError(`No collection was specified`, 400);
|
|
6
|
-
}
|
|
7
|
-
const collection = req.payload.collections[collectionSlug];
|
|
8
|
-
if (!collection) {
|
|
9
|
-
throw new APIError(`Collection with the slug ${collectionSlug} was not found`, 404);
|
|
10
|
-
}
|
|
11
|
-
return collection;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtcmVxdXN0LWNvbGxlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJRXJyb3IsIHR5cGUgQ29sbGVjdGlvbiwgdHlwZSBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQnXG5cbmV4cG9ydCBjb25zdCBnZXRSZXF1ZXN0Q29sbGVjdGlvbiA9IChyZXE6IFBheWxvYWRSZXF1ZXN0KTogQ29sbGVjdGlvbiA9PiB7XG4gIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gcmVxLnJvdXRlUGFyYW1zPy5jb2xsZWN0aW9uXG5cbiAgaWYgKHR5cGVvZiBjb2xsZWN0aW9uU2x1ZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgQVBJRXJyb3IoYE5vIGNvbGxlY3Rpb24gd2FzIHNwZWNpZmllZGAsIDQwMClcbiAgfVxuXG4gIGNvbnN0IGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9uc1tjb2xsZWN0aW9uU2x1Z11cblxuICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgQVBJRXJyb3IoYENvbGxlY3Rpb24gd2l0aCB0aGUgc2x1ZyAke2NvbGxlY3Rpb25TbHVnfSB3YXMgbm90IGZvdW5kYCwgNDA0KVxuICB9XG5cbiAgcmV0dXJuIGNvbGxlY3Rpb25cbn1cbiJdLCJuYW1lcyI6WyJBUElFcnJvciIsImdldFJlcXVlc3RDb2xsZWN0aW9uIiwicmVxIiwiY29sbGVjdGlvblNsdWciLCJyb3V0ZVBhcmFtcyIsImNvbGxlY3Rpb24iLCJwYXlsb2FkIiwiY29sbGVjdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBOEMsVUFBUztBQUV4RSxPQUFPLE1BQU1DLHVCQUF1QixDQUFDQztJQUNuQyxNQUFNQyxpQkFBaUJELElBQUlFLFdBQVcsRUFBRUM7SUFFeEMsSUFBSSxPQUFPRixtQkFBbUIsVUFBVTtRQUN0QyxNQUFNLElBQUlILFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO0lBQ3BEO0lBRUEsTUFBTUssYUFBYUgsSUFBSUksT0FBTyxDQUFDQyxXQUFXLENBQUNKLGVBQWU7SUFFMUQsSUFBSSxDQUFDRSxZQUFZO1FBQ2YsTUFBTSxJQUFJTCxTQUFTLENBQUMseUJBQXlCLEVBQUVHLGVBQWUsY0FBYyxDQUFDLEVBQUU7SUFDakY7SUFFQSxPQUFPRTtBQUNULEVBQUMifQ==
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
type CookiePrefixOptions = 'host' | 'secure';
|
|
2
|
-
type CookieOptions = {
|
|
3
|
-
/**
|
|
4
|
-
* Domain of the cookie
|
|
5
|
-
*
|
|
6
|
-
* The Domain attribute specifies which server can receive a cookie. If specified, cookies are
|
|
7
|
-
* available on the specified server and its subdomains. If the it is not
|
|
8
|
-
* specified, the cookies are available on the server that sets it but not on
|
|
9
|
-
* its subdomains.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* `domain: "example.com"`
|
|
13
|
-
*/
|
|
14
|
-
domain?: string;
|
|
15
|
-
/**
|
|
16
|
-
* A lifetime of a cookie. Permanent cookies are deleted after the date specified in the
|
|
17
|
-
* Expires attribute:
|
|
18
|
-
*
|
|
19
|
-
* Expires has been available for longer than Max-Age, however Max-Age is less error-prone, and
|
|
20
|
-
* takes precedence when both are set. The rationale behind this is that when you set an
|
|
21
|
-
* Expires date and time, they're relative to the client the cookie is being set on. If the
|
|
22
|
-
* server is set to a different time, this could cause errors
|
|
23
|
-
*/
|
|
24
|
-
expires?: Date;
|
|
25
|
-
/**
|
|
26
|
-
* Forbids JavaScript from accessing the cookie, for example, through the Document.cookie
|
|
27
|
-
* property. Note that a cookie that has been created with HttpOnly will still be sent with
|
|
28
|
-
* JavaScript-initiated requests, for example, when calling XMLHttpRequest.send() or fetch().
|
|
29
|
-
* This mitigates attacks against cross-site scripting
|
|
30
|
-
*/
|
|
31
|
-
httpOnly?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Indicates the number of seconds until the cookie expires. A zero or negative number will
|
|
34
|
-
* expire the cookie immediately. If both Expires and Max-Age are set, Max-Age has precedence.
|
|
35
|
-
*
|
|
36
|
-
* @example 604800 - 7 days
|
|
37
|
-
*/
|
|
38
|
-
maxAge?: number;
|
|
39
|
-
/**
|
|
40
|
-
* Indicates the path that must exist in the requested URL for the browser to send the Cookie
|
|
41
|
-
* header.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* "/docs"
|
|
45
|
-
* // -> the request paths /docs, /docs/, /docs/Web/, and /docs/Web/HTTP will all match. the request paths /, /fr/docs will not match.
|
|
46
|
-
*/
|
|
47
|
-
path?: string;
|
|
48
|
-
/**
|
|
49
|
-
* Indicates that the cookie is sent to the server only when a request is made with the https:
|
|
50
|
-
* scheme (except on localhost), and therefore, is more resistant to man-in-the-middle attacks.
|
|
51
|
-
*/
|
|
52
|
-
secure?: boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Controls whether or not a cookie is sent with cross-site requests, providing some protection
|
|
55
|
-
* against cross-site request forgery attacks (CSRF).
|
|
56
|
-
*
|
|
57
|
-
* Strict - Means that the browser sends the cookie only for same-site requests, that is,
|
|
58
|
-
* requests originating from the same site that set the cookie. If a request originates from a
|
|
59
|
-
* different domain or scheme (even with the same domain), no cookies with the SameSite=Strict
|
|
60
|
-
* attribute are sent.
|
|
61
|
-
*
|
|
62
|
-
* Lax - Means that the cookie is not sent on cross-site requests, such as on requests to load
|
|
63
|
-
* images or frames, but is sent when a user is navigating to the origin site from an external
|
|
64
|
-
* site (for example, when following a link). This is the default behavior if the SameSite
|
|
65
|
-
* attribute is not specified.
|
|
66
|
-
*
|
|
67
|
-
* None - Means that the browser sends the cookie with both cross-site and same-site requests.
|
|
68
|
-
* The Secure attribute must also be set when setting this value.
|
|
69
|
-
*/
|
|
70
|
-
sameSite?: 'Strict' | 'Lax' | 'None' | 'strict' | 'lax' | 'none';
|
|
71
|
-
/**
|
|
72
|
-
* Indicates that the cookie should be stored using partitioned storage. Note that if this is
|
|
73
|
-
* set, the Secure directive must also be set.
|
|
74
|
-
*
|
|
75
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/Privacy/Privacy_sandbox/Partitioned_cookies
|
|
76
|
-
*/
|
|
77
|
-
partitioned?: boolean;
|
|
78
|
-
/**
|
|
79
|
-
* Cooke Prefix
|
|
80
|
-
*
|
|
81
|
-
* - secure: `__Secure-` -> `__Secure-cookie-name`
|
|
82
|
-
* - host: `__Host-` -> `__Host-cookie-name`
|
|
83
|
-
*
|
|
84
|
-
* `secure` must be set to true to use prefixes
|
|
85
|
-
*/
|
|
86
|
-
prefix?: CookiePrefixOptions;
|
|
87
|
-
};
|
|
88
|
-
export declare const verifySignature: (base64Signature: string, value: string, secret: CryptoKey) => Promise<boolean>;
|
|
89
|
-
export declare const signCookieValue: (value: string, secret: string | BufferSource) => Promise<string>;
|
|
90
|
-
export declare const serializeCookie: (key: string, value: string, opt?: CookieOptions) => string;
|
|
91
|
-
export declare const serializeSignedCookie: (key: string, value: string, secret: string, opt?: CookieOptions) => Promise<string>;
|
|
92
|
-
export declare const getCookieKey: (key: string, prefix?: CookiePrefixOptions) => string | undefined;
|
|
93
|
-
export declare function tryDecode(str: string): string;
|
|
94
|
-
/**
|
|
95
|
-
* Parse an HTTP Cookie header string and returning an object of all cookie
|
|
96
|
-
* name-value pairs.
|
|
97
|
-
*
|
|
98
|
-
* Inspired by https://github.com/unjs/cookie-es/blob/main/src/cookie/parse.ts
|
|
99
|
-
*
|
|
100
|
-
* @param str the string representing a `Cookie` header value
|
|
101
|
-
*/
|
|
102
|
-
export declare function parseCookies(str: string): Map<string, string>;
|
|
103
|
-
export declare const getSignedCookie: (key: string, secret: string, headers: Headers, prefix?: CookiePrefixOptions) => Promise<string | false | null>;
|
|
104
|
-
export {};
|
|
105
|
-
//# sourceMappingURL=serialize-cookie.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-cookie.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/serialize-cookie.ts"],"names":[],"mappings":"AAEA,KAAK,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE5C,KAAK,aAAa,GAAG;IACnB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,CAAA;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;IAChE;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,iBAAiB,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,SAAS,KAAG,OAAO,CAAC,OAAO,CAWhH,CAAA;AAyFD,eAAO,MAAM,eAAe,GAAU,OAAO,MAAM,EAAE,QAAQ,MAAM,GAAG,YAAY,oBAMjF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,aAAa,WAG9E,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,aAAa,oBAG1G,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,SAAS,mBAAmB,uBAYrE,CAAA;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UAMpC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,uBAqCvC;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,OAAO,EAAE,SAAS,mBAAmB,mCAuBhH,CAAA"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { subtle } from "uncrypto";
|
|
2
|
-
export const verifySignature = async (base64Signature, value, secret)=>{
|
|
3
|
-
try {
|
|
4
|
-
const signatureBinStr = atob(base64Signature);
|
|
5
|
-
const signature = new Uint8Array(signatureBinStr.length);
|
|
6
|
-
for(let i = 0, len = signatureBinStr.length; i < len; i++){
|
|
7
|
-
signature[i] = signatureBinStr.charCodeAt(i);
|
|
8
|
-
}
|
|
9
|
-
return await subtle.verify(algorithm, secret, signature, new TextEncoder().encode(value));
|
|
10
|
-
} catch (e) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
const _serialize = (key, value, opt = {})=>{
|
|
15
|
-
let cookie;
|
|
16
|
-
if (opt?.prefix === 'secure') {
|
|
17
|
-
cookie = `${`__Secure-${key}`}=${value}`;
|
|
18
|
-
} else if (opt?.prefix === 'host') {
|
|
19
|
-
cookie = `${`__Host-${key}`}=${value}`;
|
|
20
|
-
} else {
|
|
21
|
-
cookie = `${key}=${value}`;
|
|
22
|
-
}
|
|
23
|
-
if (key.startsWith('__Secure-') && !opt.secure) {
|
|
24
|
-
opt.secure = true;
|
|
25
|
-
}
|
|
26
|
-
if (key.startsWith('__Host-')) {
|
|
27
|
-
if (!opt.secure) {
|
|
28
|
-
opt.secure = true;
|
|
29
|
-
}
|
|
30
|
-
if (opt.path !== '/') {
|
|
31
|
-
opt.path = '/';
|
|
32
|
-
}
|
|
33
|
-
if (opt.domain) {
|
|
34
|
-
opt.domain = undefined;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (opt && typeof opt.maxAge === 'number' && opt.maxAge >= 0) {
|
|
38
|
-
if (opt.maxAge > 34560000) {
|
|
39
|
-
throw new Error('Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.');
|
|
40
|
-
}
|
|
41
|
-
cookie += `; Max-Age=${Math.floor(opt.maxAge)}`;
|
|
42
|
-
}
|
|
43
|
-
if (opt.domain && opt.prefix !== 'host') {
|
|
44
|
-
cookie += `; Domain=${opt.domain}`;
|
|
45
|
-
}
|
|
46
|
-
if (opt.path) {
|
|
47
|
-
cookie += `; Path=${opt.path}`;
|
|
48
|
-
}
|
|
49
|
-
if (opt.expires) {
|
|
50
|
-
if (opt.expires.getTime() - Date.now() > 34560000_000) {
|
|
51
|
-
throw new Error('Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.');
|
|
52
|
-
}
|
|
53
|
-
cookie += `; Expires=${opt.expires.toUTCString()}`;
|
|
54
|
-
}
|
|
55
|
-
if (opt.httpOnly) {
|
|
56
|
-
cookie += '; HttpOnly';
|
|
57
|
-
}
|
|
58
|
-
if (opt.secure) {
|
|
59
|
-
cookie += '; Secure';
|
|
60
|
-
}
|
|
61
|
-
if (opt.sameSite) {
|
|
62
|
-
cookie += `; SameSite=${opt.sameSite.charAt(0).toUpperCase() + opt.sameSite.slice(1)}`;
|
|
63
|
-
}
|
|
64
|
-
if (opt.partitioned) {
|
|
65
|
-
if (!opt.secure) {
|
|
66
|
-
opt.secure = true;
|
|
67
|
-
}
|
|
68
|
-
cookie += '; Partitioned';
|
|
69
|
-
}
|
|
70
|
-
return cookie;
|
|
71
|
-
};
|
|
72
|
-
const algorithm = {
|
|
73
|
-
name: 'HMAC',
|
|
74
|
-
hash: 'SHA-256'
|
|
75
|
-
};
|
|
76
|
-
const getCryptoKey = async (secret)=>{
|
|
77
|
-
const secretBuf = typeof secret === 'string' ? new TextEncoder().encode(secret) : secret;
|
|
78
|
-
return await subtle.importKey('raw', secretBuf, algorithm, false, [
|
|
79
|
-
'sign',
|
|
80
|
-
'verify'
|
|
81
|
-
]);
|
|
82
|
-
};
|
|
83
|
-
const makeSignature = async (value, secret)=>{
|
|
84
|
-
const key = await getCryptoKey(secret);
|
|
85
|
-
const signature = await subtle.sign(algorithm.name, key, new TextEncoder().encode(value));
|
|
86
|
-
// the returned base64 encoded signature will always be 44 characters long and end with one or two equal signs
|
|
87
|
-
return btoa(String.fromCharCode(...new Uint8Array(signature)));
|
|
88
|
-
};
|
|
89
|
-
export const signCookieValue = async (value, secret)=>{
|
|
90
|
-
const signature = await makeSignature(value, secret);
|
|
91
|
-
value = `${value}.${signature}`;
|
|
92
|
-
value = encodeURIComponent(value);
|
|
93
|
-
value = decodeURIComponent(value);
|
|
94
|
-
return value;
|
|
95
|
-
};
|
|
96
|
-
export const serializeCookie = (key, value, opt)=>{
|
|
97
|
-
value = encodeURIComponent(value);
|
|
98
|
-
return _serialize(key, value, opt);
|
|
99
|
-
};
|
|
100
|
-
export const serializeSignedCookie = async (key, value, secret, opt)=>{
|
|
101
|
-
value = await signCookieValue(value, secret);
|
|
102
|
-
return _serialize(key, value, opt);
|
|
103
|
-
};
|
|
104
|
-
export const getCookieKey = (key, prefix)=>{
|
|
105
|
-
let finalKey = key;
|
|
106
|
-
if (prefix) {
|
|
107
|
-
if (prefix === 'secure') {
|
|
108
|
-
finalKey = '__Secure-' + key;
|
|
109
|
-
} else if (prefix === 'host') {
|
|
110
|
-
finalKey = '__Host-' + key;
|
|
111
|
-
} else {
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return finalKey;
|
|
116
|
-
};
|
|
117
|
-
export function tryDecode(str) {
|
|
118
|
-
try {
|
|
119
|
-
return str.includes('%') ? decodeURIComponent(str) : str;
|
|
120
|
-
} catch {
|
|
121
|
-
return str;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Parse an HTTP Cookie header string and returning an object of all cookie
|
|
126
|
-
* name-value pairs.
|
|
127
|
-
*
|
|
128
|
-
* Inspired by https://github.com/unjs/cookie-es/blob/main/src/cookie/parse.ts
|
|
129
|
-
*
|
|
130
|
-
* @param str the string representing a `Cookie` header value
|
|
131
|
-
*/ export function parseCookies(str) {
|
|
132
|
-
if (typeof str !== 'string') {
|
|
133
|
-
throw new TypeError('argument str must be a string');
|
|
134
|
-
}
|
|
135
|
-
const cookies = new Map();
|
|
136
|
-
let index = 0;
|
|
137
|
-
while(index < str.length){
|
|
138
|
-
const eqIdx = str.indexOf('=', index);
|
|
139
|
-
if (eqIdx === -1) {
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
let endIdx = str.indexOf(';', index);
|
|
143
|
-
if (endIdx === -1) {
|
|
144
|
-
endIdx = str.length;
|
|
145
|
-
} else if (endIdx < eqIdx) {
|
|
146
|
-
index = str.lastIndexOf(';', eqIdx - 1) + 1;
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
const key = str.slice(index, eqIdx).trim();
|
|
150
|
-
if (!cookies.has(key)) {
|
|
151
|
-
let val = str.slice(eqIdx + 1, endIdx).trim();
|
|
152
|
-
if (val.codePointAt(0) === 0x22) {
|
|
153
|
-
val = val.slice(1, -1);
|
|
154
|
-
}
|
|
155
|
-
cookies.set(key, tryDecode(val));
|
|
156
|
-
}
|
|
157
|
-
index = endIdx + 1;
|
|
158
|
-
}
|
|
159
|
-
return cookies;
|
|
160
|
-
}
|
|
161
|
-
export const getSignedCookie = async (key, secret, headers, prefix)=>{
|
|
162
|
-
const finalKey = getCookieKey(key, prefix);
|
|
163
|
-
if (!finalKey) {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
const cookieHeader = headers.get('cookie');
|
|
167
|
-
const parsedCookies = cookieHeader ? parseCookies(cookieHeader) : undefined;
|
|
168
|
-
const value = parsedCookies?.get(finalKey);
|
|
169
|
-
if (!value) {
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
const signatureStartPos = value.lastIndexOf('.');
|
|
173
|
-
if (signatureStartPos < 1) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
const signedValue = value.substring(0, signatureStartPos);
|
|
177
|
-
const signature = value.substring(signatureStartPos + 1);
|
|
178
|
-
if (signature.length !== 44 || !signature.endsWith('=')) {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
const secretKey = await getCryptoKey(secret);
|
|
182
|
-
const isVerified = await verifySignature(signature, signedValue, secretKey);
|
|
183
|
-
return isVerified ? signedValue : false;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9zZXJpYWxpemUtY29va2llLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN1YnRsZSB9IGZyb20gJ3VuY3J5cHRvJ1xuXG50eXBlIENvb2tpZVByZWZpeE9wdGlvbnMgPSAnaG9zdCcgfCAnc2VjdXJlJ1xuXG50eXBlIENvb2tpZU9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBEb21haW4gb2YgdGhlIGNvb2tpZVxuICAgKlxuICAgKiBUaGUgRG9tYWluIGF0dHJpYnV0ZSBzcGVjaWZpZXMgd2hpY2ggc2VydmVyIGNhbiByZWNlaXZlIGEgY29va2llLiBJZiBzcGVjaWZpZWQsIGNvb2tpZXMgYXJlXG4gICAqIGF2YWlsYWJsZSBvbiB0aGUgc3BlY2lmaWVkIHNlcnZlciBhbmQgaXRzIHN1YmRvbWFpbnMuIElmIHRoZSBpdCBpcyBub3RcbiAgICogc3BlY2lmaWVkLCB0aGUgY29va2llcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIgdGhhdCBzZXRzIGl0IGJ1dCBub3Qgb25cbiAgICogaXRzIHN1YmRvbWFpbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBkb21haW46IFwiZXhhbXBsZS5jb21cImBcbiAgICovXG4gIGRvbWFpbj86IHN0cmluZ1xuICAvKipcbiAgICogQSBsaWZldGltZSBvZiBhIGNvb2tpZS4gUGVybWFuZW50IGNvb2tpZXMgYXJlIGRlbGV0ZWQgYWZ0ZXIgdGhlIGRhdGUgc3BlY2lmaWVkIGluIHRoZVxuICAgKiBFeHBpcmVzIGF0dHJpYnV0ZTpcbiAgICpcbiAgICogRXhwaXJlcyBoYXMgYmVlbiBhdmFpbGFibGUgZm9yIGxvbmdlciB0aGFuIE1heC1BZ2UsIGhvd2V2ZXIgTWF4LUFnZSBpcyBsZXNzIGVycm9yLXByb25lLCBhbmRcbiAgICogdGFrZXMgcHJlY2VkZW5jZSB3aGVuIGJvdGggYXJlIHNldC4gVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBpcyB0aGF0IHdoZW4geW91IHNldCBhblxuICAgKiBFeHBpcmVzIGRhdGUgYW5kIHRpbWUsIHRoZXkncmUgcmVsYXRpdmUgdG8gdGhlIGNsaWVudCB0aGUgY29va2llIGlzIGJlaW5nIHNldCBvbi4gSWYgdGhlXG4gICAqIHNlcnZlciBpcyBzZXQgdG8gYSBkaWZmZXJlbnQgdGltZSwgdGhpcyBjb3VsZCBjYXVzZSBlcnJvcnNcbiAgICovXG4gIGV4cGlyZXM/OiBEYXRlXG4gIC8qKlxuICAgKiBGb3JiaWRzIEphdmFTY3JpcHQgZnJvbSBhY2Nlc3NpbmcgdGhlIGNvb2tpZSwgZm9yIGV4YW1wbGUsIHRocm91Z2ggdGhlIERvY3VtZW50LmNvb2tpZVxuICAgKiBwcm9wZXJ0eS4gTm90ZSB0aGF0IGEgY29va2llIHRoYXQgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIEh0dHBPbmx5IHdpbGwgc3RpbGwgYmUgc2VudCB3aXRoXG4gICAqIEphdmFTY3JpcHQtaW5pdGlhdGVkIHJlcXVlc3RzLCBmb3IgZXhhbXBsZSwgd2hlbiBjYWxsaW5nIFhNTEh0dHBSZXF1ZXN0LnNlbmQoKSBvciBmZXRjaCgpLlxuICAgKiBUaGlzIG1pdGlnYXRlcyBhdHRhY2tzIGFnYWluc3QgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmdcbiAgICovXG4gIGh0dHBPbmx5PzogYm9vbGVhblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbCB0aGUgY29va2llIGV4cGlyZXMuIEEgemVybyBvciBuZWdhdGl2ZSBudW1iZXIgd2lsbFxuICAgKiBleHBpcmUgdGhlIGNvb2tpZSBpbW1lZGlhdGVseS4gSWYgYm90aCBFeHBpcmVzIGFuZCBNYXgtQWdlIGFyZSBzZXQsIE1heC1BZ2UgaGFzIHByZWNlZGVuY2UuXG4gICAqXG4gICAqIEBleGFtcGxlIDYwNDgwMCAtIDcgZGF5c1xuICAgKi9cbiAgbWF4QWdlPzogbnVtYmVyXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBhdGggdGhhdCBtdXN0IGV4aXN0IGluIHRoZSByZXF1ZXN0ZWQgVVJMIGZvciB0aGUgYnJvd3NlciB0byBzZW5kIHRoZSBDb29raWVcbiAgICogaGVhZGVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBcIi9kb2NzXCJcbiAgICogLy8gLT4gdGhlIHJlcXVlc3QgcGF0aHMgL2RvY3MsIC9kb2NzLywgL2RvY3MvV2ViLywgYW5kIC9kb2NzL1dlYi9IVFRQIHdpbGwgYWxsIG1hdGNoLiB0aGUgcmVxdWVzdCBwYXRocyAvLCAvZnIvZG9jcyB3aWxsIG5vdCBtYXRjaC5cbiAgICovXG4gIHBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBjb29raWUgaXMgc2VudCB0byB0aGUgc2VydmVyIG9ubHkgd2hlbiBhIHJlcXVlc3QgaXMgbWFkZSB3aXRoIHRoZSBodHRwczpcbiAgICogc2NoZW1lIChleGNlcHQgb24gbG9jYWxob3N0KSwgYW5kIHRoZXJlZm9yZSwgaXMgbW9yZSByZXNpc3RhbnQgdG8gbWFuLWluLXRoZS1taWRkbGUgYXR0YWNrcy5cbiAgICovXG4gIHNlY3VyZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGEgY29va2llIGlzIHNlbnQgd2l0aCBjcm9zcy1zaXRlIHJlcXVlc3RzLCBwcm92aWRpbmcgc29tZSBwcm90ZWN0aW9uXG4gICAqIGFnYWluc3QgY3Jvc3Mtc2l0ZSByZXF1ZXN0IGZvcmdlcnkgYXR0YWNrcyAoQ1NSRikuXG4gICAqXG4gICAqIFN0cmljdCAtICBNZWFucyB0aGF0IHRoZSBicm93c2VyIHNlbmRzIHRoZSBjb29raWUgb25seSBmb3Igc2FtZS1zaXRlIHJlcXVlc3RzLCB0aGF0IGlzLFxuICAgKiByZXF1ZXN0cyBvcmlnaW5hdGluZyBmcm9tIHRoZSBzYW1lIHNpdGUgdGhhdCBzZXQgdGhlIGNvb2tpZS4gSWYgYSByZXF1ZXN0IG9yaWdpbmF0ZXMgZnJvbSBhXG4gICAqIGRpZmZlcmVudCBkb21haW4gb3Igc2NoZW1lIChldmVuIHdpdGggdGhlIHNhbWUgZG9tYWluKSwgbm8gY29va2llcyB3aXRoIHRoZSBTYW1lU2l0ZT1TdHJpY3RcbiAgICogYXR0cmlidXRlIGFyZSBzZW50LlxuICAgKlxuICAgKiBMYXggLSBNZWFucyB0aGF0IHRoZSBjb29raWUgaXMgbm90IHNlbnQgb24gY3Jvc3Mtc2l0ZSByZXF1ZXN0cywgc3VjaCBhcyBvbiByZXF1ZXN0cyB0byBsb2FkXG4gICAqIGltYWdlcyBvciBmcmFtZXMsIGJ1dCBpcyBzZW50IHdoZW4gYSB1c2VyIGlzIG5hdmlnYXRpbmcgdG8gdGhlIG9yaWdpbiBzaXRlIGZyb20gYW4gZXh0ZXJuYWxcbiAgICogc2l0ZSAoZm9yIGV4YW1wbGUsIHdoZW4gZm9sbG93aW5nIGEgbGluaykuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgdGhlIFNhbWVTaXRlXG4gICAqIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBOb25lIC0gTWVhbnMgdGhhdCB0aGUgYnJvd3NlciBzZW5kcyB0aGUgY29va2llIHdpdGggYm90aCBjcm9zcy1zaXRlIGFuZCBzYW1lLXNpdGUgcmVxdWVzdHMuXG4gICAqIFRoZSBTZWN1cmUgYXR0cmlidXRlIG11c3QgYWxzbyBiZSBzZXQgd2hlbiBzZXR0aW5nIHRoaXMgdmFsdWUuXG4gICAqL1xuICBzYW1lU2l0ZT86ICdTdHJpY3QnIHwgJ0xheCcgfCAnTm9uZScgfCAnc3RyaWN0JyB8ICdsYXgnIHwgJ25vbmUnXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY29va2llIHNob3VsZCBiZSBzdG9yZWQgdXNpbmcgcGFydGl0aW9uZWQgc3RvcmFnZS4gTm90ZSB0aGF0IGlmIHRoaXMgaXNcbiAgICogc2V0LCB0aGUgU2VjdXJlIGRpcmVjdGl2ZSBtdXN0IGFsc28gYmUgc2V0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1ByaXZhY3kvUHJpdmFjeV9zYW5kYm94L1BhcnRpdGlvbmVkX2Nvb2tpZXNcbiAgICovXG4gIHBhcnRpdGlvbmVkPzogYm9vbGVhblxuICAvKipcbiAgICogQ29va2UgUHJlZml4XG4gICAqXG4gICAqIC0gc2VjdXJlOiBgX19TZWN1cmUtYCAtPiBgX19TZWN1cmUtY29va2llLW5hbWVgXG4gICAqIC0gaG9zdDogYF9fSG9zdC1gIC0+IGBfX0hvc3QtY29va2llLW5hbWVgXG4gICAqXG4gICAqIGBzZWN1cmVgIG11c3QgYmUgc2V0IHRvIHRydWUgdG8gdXNlIHByZWZpeGVzXG4gICAqL1xuICBwcmVmaXg/OiBDb29raWVQcmVmaXhPcHRpb25zXG59XG5cbmV4cG9ydCBjb25zdCB2ZXJpZnlTaWduYXR1cmUgPSBhc3luYyAoYmFzZTY0U2lnbmF0dXJlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNlY3JldDogQ3J5cHRvS2V5KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQmluU3RyID0gYXRvYihiYXNlNjRTaWduYXR1cmUpXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gc2lnbmF0dXJlQmluU3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBzaWduYXR1cmVbaV0gPSBzaWduYXR1cmVCaW5TdHIuY2hhckNvZGVBdChpKVxuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuY29uc3QgX3NlcmlhbGl6ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0OiBDb29raWVPcHRpb25zID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZTogc3RyaW5nXG5cbiAgaWYgKG9wdD8ucHJlZml4ID09PSAnc2VjdXJlJykge1xuICAgIGNvb2tpZSA9IGAke2BfX1NlY3VyZS0ke2tleX1gfT0ke3ZhbHVlfWBcbiAgfSBlbHNlIGlmIChvcHQ/LnByZWZpeCA9PT0gJ2hvc3QnKSB7XG4gICAgY29va2llID0gYCR7YF9fSG9zdC0ke2tleX1gfT0ke3ZhbHVlfWBcbiAgfSBlbHNlIHtcbiAgICBjb29raWUgPSBgJHtrZXl9PSR7dmFsdWV9YFxuICB9XG5cbiAgaWYgKGtleS5zdGFydHNXaXRoKCdfX1NlY3VyZS0nKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIG9wdC5zZWN1cmUgPSB0cnVlXG4gIH1cblxuICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ19fSG9zdC0nKSkge1xuICAgIGlmICghb3B0LnNlY3VyZSkge1xuICAgICAgb3B0LnNlY3VyZSA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAob3B0LnBhdGggIT09ICcvJykge1xuICAgICAgb3B0LnBhdGggPSAnLydcbiAgICB9XG5cbiAgICBpZiAob3B0LmRvbWFpbikge1xuICAgICAgb3B0LmRvbWFpbiA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHQgJiYgdHlwZW9mIG9wdC5tYXhBZ2UgPT09ICdudW1iZXInICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NjAwMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi4nKVxuICAgIH1cbiAgICBjb29raWUgKz0gYDsgTWF4LUFnZT0ke01hdGguZmxvb3Iob3B0Lm1heEFnZSl9YFxuICB9XG5cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gJ2hvc3QnKSB7XG4gICAgY29va2llICs9IGA7IERvbWFpbj0ke29wdC5kb21haW59YFxuICB9XG5cbiAgaWYgKG9wdC5wYXRoKSB7XG4gICAgY29va2llICs9IGA7IFBhdGg9JHtvcHQucGF0aH1gXG4gIH1cblxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTYwMDAwXzAwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb29raWVzIEV4cGlyZXMgU0hPVUxEIE5PVCBiZSBncmVhdGVyIHRoYW4gNDAwIGRheXMgKDM0NTYwMDAwIHNlY29uZHMpIGluIHRoZSBmdXR1cmUuJylcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWBcbiAgfVxuXG4gIGlmIChvcHQuaHR0cE9ubHkpIHtcbiAgICBjb29raWUgKz0gJzsgSHR0cE9ubHknXG4gIH1cblxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSAnOyBTZWN1cmUnXG4gIH1cblxuICBpZiAob3B0LnNhbWVTaXRlKSB7XG4gICAgY29va2llICs9IGA7IFNhbWVTaXRlPSR7b3B0LnNhbWVTaXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgb3B0LnNhbWVTaXRlLnNsaWNlKDEpfWBcbiAgfVxuXG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIG9wdC5zZWN1cmUgPSB0cnVlXG4gICAgfVxuICAgIGNvb2tpZSArPSAnOyBQYXJ0aXRpb25lZCdcbiAgfVxuXG4gIHJldHVybiBjb29raWVcbn1cblxuY29uc3QgYWxnb3JpdGhtID0geyBuYW1lOiAnSE1BQycsIGhhc2g6ICdTSEEtMjU2JyB9XG5cbmNvbnN0IGdldENyeXB0b0tleSA9IGFzeW5jIChzZWNyZXQ6IHN0cmluZyB8IEJ1ZmZlclNvdXJjZSkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSAnc3RyaW5nJyA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzZWNyZXQpIDogc2VjcmV0XG4gIHJldHVybiBhd2FpdCBzdWJ0bGUuaW1wb3J0S2V5KCdyYXcnLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFsnc2lnbicsICd2ZXJpZnknXSlcbn1cblxuY29uc3QgbWFrZVNpZ25hdHVyZSA9IGFzeW5jICh2YWx1ZTogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyB8IEJ1ZmZlclNvdXJjZSk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpXG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHN1YnRsZS5zaWduKGFsZ29yaXRobS5uYW1lLCBrZXksIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2YWx1ZSkpXG4gIC8vIHRoZSByZXR1cm5lZCBiYXNlNjQgZW5jb2RlZCBzaWduYXR1cmUgd2lsbCBhbHdheXMgYmUgNDQgY2hhcmFjdGVycyBsb25nIGFuZCBlbmQgd2l0aCBvbmUgb3IgdHdvIGVxdWFsIHNpZ25zXG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSkpXG59XG5cbmV4cG9ydCBjb25zdCBzaWduQ29va2llVmFsdWUgPSBhc3luYyAodmFsdWU6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcgfCBCdWZmZXJTb3VyY2UpID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KVxuICB2YWx1ZSA9IGAke3ZhbHVlfS4ke3NpZ25hdHVyZX1gXG4gIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKVxuICB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSlcbiAgcmV0dXJuIHZhbHVlXG59XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVDb29raWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdD86IENvb2tpZU9wdGlvbnMpID0+IHtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpXG4gIHJldHVybiBfc2VyaWFsaXplKGtleSwgdmFsdWUsIG9wdClcbn1cblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZVNpZ25lZENvb2tpZSA9IGFzeW5jIChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcsIG9wdD86IENvb2tpZU9wdGlvbnMpID0+IHtcbiAgdmFsdWUgPSBhd2FpdCBzaWduQ29va2llVmFsdWUodmFsdWUsIHNlY3JldClcbiAgcmV0dXJuIF9zZXJpYWxpemUoa2V5LCB2YWx1ZSwgb3B0KVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29va2llS2V5ID0gKGtleTogc3RyaW5nLCBwcmVmaXg/OiBDb29raWVQcmVmaXhPcHRpb25zKSA9PiB7XG4gIGxldCBmaW5hbEtleSA9IGtleVxuICBpZiAocHJlZml4KSB7XG4gICAgaWYgKHByZWZpeCA9PT0gJ3NlY3VyZScpIHtcbiAgICAgIGZpbmFsS2V5ID0gJ19fU2VjdXJlLScgKyBrZXlcbiAgICB9IGVsc2UgaWYgKHByZWZpeCA9PT0gJ2hvc3QnKSB7XG4gICAgICBmaW5hbEtleSA9ICdfX0hvc3QtJyArIGtleVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG4gIHJldHVybiBmaW5hbEtleVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5RGVjb2RlKHN0cjogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0ci5pbmNsdWRlcygnJScpID8gZGVjb2RlVVJJQ29tcG9uZW50KHN0cikgOiBzdHJcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHN0clxuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYW4gSFRUUCBDb29raWUgaGVhZGVyIHN0cmluZyBhbmQgcmV0dXJuaW5nIGFuIG9iamVjdCBvZiBhbGwgY29va2llXG4gKiBuYW1lLXZhbHVlIHBhaXJzLlxuICpcbiAqIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS91bmpzL2Nvb2tpZS1lcy9ibG9iL21haW4vc3JjL2Nvb2tpZS9wYXJzZS50c1xuICpcbiAqIEBwYXJhbSBzdHIgdGhlIHN0cmluZyByZXByZXNlbnRpbmcgYSBgQ29va2llYCBoZWFkZXIgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29va2llcyhzdHI6IHN0cmluZykge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZycpXG4gIH1cblxuICBjb25zdCBjb29raWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpXG5cbiAgbGV0IGluZGV4ID0gMFxuICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgY29uc3QgZXFJZHggPSBzdHIuaW5kZXhPZignPScsIGluZGV4KVxuXG4gICAgaWYgKGVxSWR4ID09PSAtMSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBsZXQgZW5kSWR4ID0gc3RyLmluZGV4T2YoJzsnLCBpbmRleClcblxuICAgIGlmIChlbmRJZHggPT09IC0xKSB7XG4gICAgICBlbmRJZHggPSBzdHIubGVuZ3RoXG4gICAgfSBlbHNlIGlmIChlbmRJZHggPCBlcUlkeCkge1xuICAgICAgaW5kZXggPSBzdHIubGFzdEluZGV4T2YoJzsnLCBlcUlkeCAtIDEpICsgMVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBzdHIuc2xpY2UoaW5kZXgsIGVxSWR4KS50cmltKClcbiAgICBpZiAoIWNvb2tpZXMuaGFzKGtleSkpIHtcbiAgICAgIGxldCB2YWwgPSBzdHIuc2xpY2UoZXFJZHggKyAxLCBlbmRJZHgpLnRyaW0oKVxuICAgICAgaWYgKHZhbC5jb2RlUG9pbnRBdCgwKSA9PT0gMHgyMikge1xuICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMSwgLTEpXG4gICAgICB9XG4gICAgICBjb29raWVzLnNldChrZXksIHRyeURlY29kZSh2YWwpKVxuICAgIH1cblxuICAgIGluZGV4ID0gZW5kSWR4ICsgMVxuICB9XG5cbiAgcmV0dXJuIGNvb2tpZXNcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZENvb2tpZSA9IGFzeW5jIChrZXk6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcsIGhlYWRlcnM6IEhlYWRlcnMsIHByZWZpeD86IENvb2tpZVByZWZpeE9wdGlvbnMpID0+IHtcbiAgY29uc3QgZmluYWxLZXkgPSBnZXRDb29raWVLZXkoa2V5LCBwcmVmaXgpXG4gIGlmICghZmluYWxLZXkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNvb2tpZUhlYWRlciA9IGhlYWRlcnMuZ2V0KCdjb29raWUnKVxuICBjb25zdCBwYXJzZWRDb29raWVzID0gY29va2llSGVhZGVyID8gcGFyc2VDb29raWVzKGNvb2tpZUhlYWRlcikgOiB1bmRlZmluZWRcbiAgY29uc3QgdmFsdWUgPSBwYXJzZWRDb29raWVzPy5nZXQoZmluYWxLZXkpXG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoJy4nKVxuICBpZiAoc2lnbmF0dXJlU3RhcnRQb3MgPCAxKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcylcbiAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSlcbiAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoJz0nKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3Qgc2VjcmV0S2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldClcbiAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpXG4gIHJldHVybiBpc1ZlcmlmaWVkID8gc2lnbmVkVmFsdWUgOiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbInN1YnRsZSIsInZlcmlmeVNpZ25hdHVyZSIsImJhc2U2NFNpZ25hdHVyZSIsInZhbHVlIiwic2VjcmV0Iiwic2lnbmF0dXJlQmluU3RyIiwiYXRvYiIsInNpZ25hdHVyZSIsIlVpbnQ4QXJyYXkiLCJsZW5ndGgiLCJpIiwibGVuIiwiY2hhckNvZGVBdCIsInZlcmlmeSIsImFsZ29yaXRobSIsIlRleHRFbmNvZGVyIiwiZW5jb2RlIiwiZSIsIl9zZXJpYWxpemUiLCJrZXkiLCJvcHQiLCJjb29raWUiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwic2VjdXJlIiwicGF0aCIsImRvbWFpbiIsInVuZGVmaW5lZCIsIm1heEFnZSIsIkVycm9yIiwiTWF0aCIsImZsb29yIiwiZXhwaXJlcyIsImdldFRpbWUiLCJEYXRlIiwibm93IiwidG9VVENTdHJpbmciLCJodHRwT25seSIsInNhbWVTaXRlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInBhcnRpdGlvbmVkIiwibmFtZSIsImhhc2giLCJnZXRDcnlwdG9LZXkiLCJzZWNyZXRCdWYiLCJpbXBvcnRLZXkiLCJtYWtlU2lnbmF0dXJlIiwic2lnbiIsImJ0b2EiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJzaWduQ29va2llVmFsdWUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemVDb29raWUiLCJzZXJpYWxpemVTaWduZWRDb29raWUiLCJnZXRDb29raWVLZXkiLCJmaW5hbEtleSIsInRyeURlY29kZSIsInN0ciIsImluY2x1ZGVzIiwicGFyc2VDb29raWVzIiwiVHlwZUVycm9yIiwiY29va2llcyIsIk1hcCIsImluZGV4IiwiZXFJZHgiLCJpbmRleE9mIiwiZW5kSWR4IiwibGFzdEluZGV4T2YiLCJ0cmltIiwiaGFzIiwidmFsIiwiY29kZVBvaW50QXQiLCJzZXQiLCJnZXRTaWduZWRDb29raWUiLCJoZWFkZXJzIiwiY29va2llSGVhZGVyIiwiZ2V0IiwicGFyc2VkQ29va2llcyIsInNpZ25hdHVyZVN0YXJ0UG9zIiwic2lnbmVkVmFsdWUiLCJzdWJzdHJpbmciLCJlbmRzV2l0aCIsInNlY3JldEtleSIsImlzVmVyaWZpZWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBUSxXQUFVO0FBMkZqQyxPQUFPLE1BQU1DLGtCQUFrQixPQUFPQyxpQkFBeUJDLE9BQWVDO0lBQzVFLElBQUk7UUFDRixNQUFNQyxrQkFBa0JDLEtBQUtKO1FBQzdCLE1BQU1LLFlBQVksSUFBSUMsV0FBV0gsZ0JBQWdCSSxNQUFNO1FBQ3ZELElBQUssSUFBSUMsSUFBSSxHQUFHQyxNQUFNTixnQkFBZ0JJLE1BQU0sRUFBRUMsSUFBSUMsS0FBS0QsSUFBSztZQUMxREgsU0FBUyxDQUFDRyxFQUFFLEdBQUdMLGdCQUFnQk8sVUFBVSxDQUFDRjtRQUM1QztRQUNBLE9BQU8sTUFBTVYsT0FBT2EsTUFBTSxDQUFDQyxXQUFXVixRQUFRRyxXQUFXLElBQUlRLGNBQWNDLE1BQU0sQ0FBQ2I7SUFDcEYsRUFBRSxPQUFPYyxHQUFHO1FBQ1YsT0FBTztJQUNUO0FBQ0YsRUFBQztBQUVELE1BQU1DLGFBQWEsQ0FBQ0MsS0FBYWhCLE9BQWVpQixNQUFxQixDQUFDLENBQUM7SUFDckUsSUFBSUM7SUFFSixJQUFJRCxLQUFLRSxXQUFXLFVBQVU7UUFDNUJELFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRUYsS0FBSyxDQUFDLENBQUMsRUFBRWhCLE9BQU87SUFDMUMsT0FBTyxJQUFJaUIsS0FBS0UsV0FBVyxRQUFRO1FBQ2pDRCxTQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUVGLEtBQUssQ0FBQyxDQUFDLEVBQUVoQixPQUFPO0lBQ3hDLE9BQU87UUFDTGtCLFNBQVMsR0FBR0YsSUFBSSxDQUFDLEVBQUVoQixPQUFPO0lBQzVCO0lBRUEsSUFBSWdCLElBQUlJLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQ0gsSUFBSUksTUFBTSxFQUFFO1FBQzlDSixJQUFJSSxNQUFNLEdBQUc7SUFDZjtJQUVBLElBQUlMLElBQUlJLFVBQVUsQ0FBQyxZQUFZO1FBQzdCLElBQUksQ0FBQ0gsSUFBSUksTUFBTSxFQUFFO1lBQ2ZKLElBQUlJLE1BQU0sR0FBRztRQUNmO1FBRUEsSUFBSUosSUFBSUssSUFBSSxLQUFLLEtBQUs7WUFDcEJMLElBQUlLLElBQUksR0FBRztRQUNiO1FBRUEsSUFBSUwsSUFBSU0sTUFBTSxFQUFFO1lBQ2ROLElBQUlNLE1BQU0sR0FBR0M7UUFDZjtJQUNGO0lBRUEsSUFBSVAsT0FBTyxPQUFPQSxJQUFJUSxNQUFNLEtBQUssWUFBWVIsSUFBSVEsTUFBTSxJQUFJLEdBQUc7UUFDNUQsSUFBSVIsSUFBSVEsTUFBTSxHQUFHLFVBQVU7WUFDekIsTUFBTSxJQUFJQyxNQUFNO1FBQ2xCO1FBQ0FSLFVBQVUsQ0FBQyxVQUFVLEVBQUVTLEtBQUtDLEtBQUssQ0FBQ1gsSUFBSVEsTUFBTSxHQUFHO0lBQ2pEO0lBRUEsSUFBSVIsSUFBSU0sTUFBTSxJQUFJTixJQUFJRSxNQUFNLEtBQUssUUFBUTtRQUN2Q0QsVUFBVSxDQUFDLFNBQVMsRUFBRUQsSUFBSU0sTUFBTSxFQUFFO0lBQ3BDO0lBRUEsSUFBSU4sSUFBSUssSUFBSSxFQUFFO1FBQ1pKLFVBQVUsQ0FBQyxPQUFPLEVBQUVELElBQUlLLElBQUksRUFBRTtJQUNoQztJQUVBLElBQUlMLElBQUlZLE9BQU8sRUFBRTtRQUNmLElBQUlaLElBQUlZLE9BQU8sQ0FBQ0MsT0FBTyxLQUFLQyxLQUFLQyxHQUFHLEtBQUssY0FBYztZQUNyRCxNQUFNLElBQUlOLE1BQU07UUFDbEI7UUFDQVIsVUFBVSxDQUFDLFVBQVUsRUFBRUQsSUFBSVksT0FBTyxDQUFDSSxXQUFXLElBQUk7SUFDcEQ7SUFFQSxJQUFJaEIsSUFBSWlCLFFBQVEsRUFBRTtRQUNoQmhCLFVBQVU7SUFDWjtJQUVBLElBQUlELElBQUlJLE1BQU0sRUFBRTtRQUNkSCxVQUFVO0lBQ1o7SUFFQSxJQUFJRCxJQUFJa0IsUUFBUSxFQUFFO1FBQ2hCakIsVUFBVSxDQUFDLFdBQVcsRUFBRUQsSUFBSWtCLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDLEdBQUdDLFdBQVcsS0FBS3BCLElBQUlrQixRQUFRLENBQUNHLEtBQUssQ0FBQyxJQUFJO0lBQ3hGO0lBRUEsSUFBSXJCLElBQUlzQixXQUFXLEVBQUU7UUFDbkIsSUFBSSxDQUFDdEIsSUFBSUksTUFBTSxFQUFFO1lBQ2ZKLElBQUlJLE1BQU0sR0FBRztRQUNmO1FBQ0FILFVBQVU7SUFDWjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxNQUFNUCxZQUFZO0lBQUU2QixNQUFNO0lBQVFDLE1BQU07QUFBVTtBQUVsRCxNQUFNQyxlQUFlLE9BQU96QztJQUMxQixNQUFNMEMsWUFBWSxPQUFPMUMsV0FBVyxXQUFXLElBQUlXLGNBQWNDLE1BQU0sQ0FBQ1osVUFBVUE7SUFDbEYsT0FBTyxNQUFNSixPQUFPK0MsU0FBUyxDQUFDLE9BQU9ELFdBQVdoQyxXQUFXLE9BQU87UUFBQztRQUFRO0tBQVM7QUFDdEY7QUFFQSxNQUFNa0MsZ0JBQWdCLE9BQU83QyxPQUFlQztJQUMxQyxNQUFNZSxNQUFNLE1BQU0wQixhQUFhekM7SUFDL0IsTUFBTUcsWUFBWSxNQUFNUCxPQUFPaUQsSUFBSSxDQUFDbkMsVUFBVTZCLElBQUksRUFBRXhCLEtBQUssSUFBSUosY0FBY0MsTUFBTSxDQUFDYjtJQUNsRiw4R0FBOEc7SUFDOUcsT0FBTytDLEtBQUtDLE9BQU9DLFlBQVksSUFBSSxJQUFJNUMsV0FBV0Q7QUFDcEQ7QUFFQSxPQUFPLE1BQU04QyxrQkFBa0IsT0FBT2xELE9BQWVDO0lBQ25ELE1BQU1HLFlBQVksTUFBTXlDLGNBQWM3QyxPQUFPQztJQUM3Q0QsUUFBUSxHQUFHQSxNQUFNLENBQUMsRUFBRUksV0FBVztJQUMvQkosUUFBUW1ELG1CQUFtQm5EO0lBQzNCQSxRQUFRb0QsbUJBQW1CcEQ7SUFDM0IsT0FBT0E7QUFDVCxFQUFDO0FBRUQsT0FBTyxNQUFNcUQsa0JBQWtCLENBQUNyQyxLQUFhaEIsT0FBZWlCO0lBQzFEakIsUUFBUW1ELG1CQUFtQm5EO0lBQzNCLE9BQU9lLFdBQVdDLEtBQUtoQixPQUFPaUI7QUFDaEMsRUFBQztBQUVELE9BQU8sTUFBTXFDLHdCQUF3QixPQUFPdEMsS0FBYWhCLE9BQWVDLFFBQWdCZ0I7SUFDdEZqQixRQUFRLE1BQU1rRCxnQkFBZ0JsRCxPQUFPQztJQUNyQyxPQUFPYyxXQUFXQyxLQUFLaEIsT0FBT2lCO0FBQ2hDLEVBQUM7QUFFRCxPQUFPLE1BQU1zQyxlQUFlLENBQUN2QyxLQUFhRztJQUN4QyxJQUFJcUMsV0FBV3hDO0lBQ2YsSUFBSUcsUUFBUTtRQUNWLElBQUlBLFdBQVcsVUFBVTtZQUN2QnFDLFdBQVcsY0FBY3hDO1FBQzNCLE9BQU8sSUFBSUcsV0FBVyxRQUFRO1lBQzVCcUMsV0FBVyxZQUFZeEM7UUFDekIsT0FBTztZQUNMLE9BQU9RO1FBQ1Q7SUFDRjtJQUNBLE9BQU9nQztBQUNULEVBQUM7QUFFRCxPQUFPLFNBQVNDLFVBQVVDLEdBQVc7SUFDbkMsSUFBSTtRQUNGLE9BQU9BLElBQUlDLFFBQVEsQ0FBQyxPQUFPUCxtQkFBbUJNLE9BQU9BO0lBQ3ZELEVBQUUsT0FBTTtRQUNOLE9BQU9BO0lBQ1Q7QUFDRjtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNFLGFBQWFGLEdBQVc7SUFDdEMsSUFBSSxPQUFPQSxRQUFRLFVBQVU7UUFDM0IsTUFBTSxJQUFJRyxVQUFVO0lBQ3RCO0lBRUEsTUFBTUMsVUFBK0IsSUFBSUM7SUFFekMsSUFBSUMsUUFBUTtJQUNaLE1BQU9BLFFBQVFOLElBQUlwRCxNQUFNLENBQUU7UUFDekIsTUFBTTJELFFBQVFQLElBQUlRLE9BQU8sQ0FBQyxLQUFLRjtRQUUvQixJQUFJQyxVQUFVLENBQUMsR0FBRztZQUNoQjtRQUNGO1FBRUEsSUFBSUUsU0FBU1QsSUFBSVEsT0FBTyxDQUFDLEtBQUtGO1FBRTlCLElBQUlHLFdBQVcsQ0FBQyxHQUFHO1lBQ2pCQSxTQUFTVCxJQUFJcEQsTUFBTTtRQUNyQixPQUFPLElBQUk2RCxTQUFTRixPQUFPO1lBQ3pCRCxRQUFRTixJQUFJVSxXQUFXLENBQUMsS0FBS0gsUUFBUSxLQUFLO1lBQzFDO1FBQ0Y7UUFFQSxNQUFNakQsTUFBTTBDLElBQUlwQixLQUFLLENBQUMwQixPQUFPQyxPQUFPSSxJQUFJO1FBQ3hDLElBQUksQ0FBQ1AsUUFBUVEsR0FBRyxDQUFDdEQsTUFBTTtZQUNyQixJQUFJdUQsTUFBTWIsSUFBSXBCLEtBQUssQ0FBQzJCLFFBQVEsR0FBR0UsUUFBUUUsSUFBSTtZQUMzQyxJQUFJRSxJQUFJQyxXQUFXLENBQUMsT0FBTyxNQUFNO2dCQUMvQkQsTUFBTUEsSUFBSWpDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDdEI7WUFDQXdCLFFBQVFXLEdBQUcsQ0FBQ3pELEtBQUt5QyxVQUFVYztRQUM3QjtRQUVBUCxRQUFRRyxTQUFTO0lBQ25CO0lBRUEsT0FBT0w7QUFDVDtBQUVBLE9BQU8sTUFBTVksa0JBQWtCLE9BQU8xRCxLQUFhZixRQUFnQjBFLFNBQWtCeEQ7SUFDbkYsTUFBTXFDLFdBQVdELGFBQWF2QyxLQUFLRztJQUNuQyxJQUFJLENBQUNxQyxVQUFVO1FBQ2IsT0FBTztJQUNUO0lBQ0EsTUFBTW9CLGVBQWVELFFBQVFFLEdBQUcsQ0FBQztJQUNqQyxNQUFNQyxnQkFBZ0JGLGVBQWVoQixhQUFhZ0IsZ0JBQWdCcEQ7SUFDbEUsTUFBTXhCLFFBQVE4RSxlQUFlRCxJQUFJckI7SUFDakMsSUFBSSxDQUFDeEQsT0FBTztRQUNWLE9BQU87SUFDVDtJQUNBLE1BQU0rRSxvQkFBb0IvRSxNQUFNb0UsV0FBVyxDQUFDO0lBQzVDLElBQUlXLG9CQUFvQixHQUFHO1FBQ3pCLE9BQU87SUFDVDtJQUNBLE1BQU1DLGNBQWNoRixNQUFNaUYsU0FBUyxDQUFDLEdBQUdGO0lBQ3ZDLE1BQU0zRSxZQUFZSixNQUFNaUYsU0FBUyxDQUFDRixvQkFBb0I7SUFDdEQsSUFBSTNFLFVBQVVFLE1BQU0sS0FBSyxNQUFNLENBQUNGLFVBQVU4RSxRQUFRLENBQUMsTUFBTTtRQUN2RCxPQUFPO0lBQ1Q7SUFDQSxNQUFNQyxZQUFZLE1BQU16QyxhQUFhekM7SUFDckMsTUFBTW1GLGFBQWEsTUFBTXRGLGdCQUFnQk0sV0FBVzRFLGFBQWFHO0lBQ2pFLE9BQU9DLGFBQWFKLGNBQWM7QUFDcEMsRUFBQyJ9
|