@nlabs/reaktor 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/conversations.js +1 -1
- package/lib/actions/crm.js +1 -1
- package/lib/actions/crud.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.js +1 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +1 -1
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +1 -1
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.js +1 -1
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/config.js +1 -1
- package/lib/constants/collections.js +1 -1
- package/lib/durableChat/conversations.d.ts +62 -0
- package/lib/durableChat/conversations.js +729 -0
- package/lib/durableChat/errors.d.ts +6 -0
- package/lib/durableChat/errors.js +11 -0
- package/lib/durableChat/events.d.ts +22 -0
- package/lib/durableChat/events.js +50 -0
- package/lib/durableChat/index.d.ts +8 -0
- package/lib/durableChat/index.js +10 -0
- package/lib/durableChat/membership.d.ts +24 -0
- package/lib/durableChat/membership.js +85 -0
- package/lib/durableChat/messageTypes.d.ts +76 -0
- package/lib/durableChat/messageTypes.js +3 -0
- package/lib/durableChat/messages.d.ts +16 -0
- package/lib/durableChat/messages.js +257 -0
- package/lib/durableChat/transaction.d.ts +10 -0
- package/lib/durableChat/transaction.js +53 -0
- package/lib/durableChat/types.d.ts +81 -0
- package/lib/durableChat/types.js +3 -0
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/lambdas/actions/websockets.js +1 -1
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +1 -1
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +1 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +1 -1
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +1 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +1 -1
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.js +1 -1
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +2 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1451,3 +1451,78 @@ For comprehensive guides and detailed documentation, see:
|
|
|
1451
1451
|
Reaktor is proprietary commercial software. A valid commercial agreement with
|
|
1452
1452
|
Nitrogen Labs, Inc. is required to use, copy, modify, or distribute this
|
|
1453
1453
|
package. See [LICENSE](./LICENSE) for the governing terms.
|
|
1454
|
+
|
|
1455
|
+
## Durable conversations and messages (opt-in)
|
|
1456
|
+
|
|
1457
|
+
The durable chat module extends Reaktor with persona-scoped direct/group conversations, invitations, role changes,
|
|
1458
|
+
member removal, ownership transfer, bounded membership epochs, idempotent mutation acknowledgements and ordered
|
|
1459
|
+
ID-only events. Existing conversation/message actions and GraphQL resolvers are unchanged. Community `groups`
|
|
1460
|
+
and posts remain separate from group conversations.
|
|
1461
|
+
|
|
1462
|
+
```ts
|
|
1463
|
+
import {
|
|
1464
|
+
createDurableConversationActions,
|
|
1465
|
+
createDurableConversationRepository
|
|
1466
|
+
} from '@nlabs/reaktor';
|
|
1467
|
+
|
|
1468
|
+
const repository = createDurableConversationRepository(context, verifiedIdentity, {
|
|
1469
|
+
audience: 'web', // Trusted server choice, never copied from an untrusted request.
|
|
1470
|
+
authorizeIdentity, // async (transactionQuery, identity): fresh ownership and application eligibility.
|
|
1471
|
+
classifyName, // (name, contentVersion): application decision metadata.
|
|
1472
|
+
projectName, // (record, audience): authorized current name or undefined.
|
|
1473
|
+
readCollections: ['applicationEligibility'] // Additional collections read by these hooks.
|
|
1474
|
+
});
|
|
1475
|
+
const actions = createDurableConversationActions(verifiedIdentity, repository);
|
|
1476
|
+
const conversation = await actions.getOrCreateDirect({participantPersonaId: 'peer-persona'});
|
|
1477
|
+
```
|
|
1478
|
+
|
|
1479
|
+
Use the actions facade at public boundaries: it validates identifiers, revisions, list bounds, roles and group
|
|
1480
|
+
sizes. The repository handles canonical directs, seven-day invitations, group activation, role/owner transitions
|
|
1481
|
+
and replay receipts. Names are projected only on current reads; mutation receipts contain no name content.
|
|
1482
|
+
Groups initially invite 2–24 peers, become active at three accepted members, and cap active plus pending members
|
|
1483
|
+
at 25. A sole owner may leave and close the group; a nonempty group requires ownership transfer first.
|
|
1484
|
+
|
|
1485
|
+
`createDurableMessagePersistence(hooks)` provides validated send/edit/delete operations. Required hooks are
|
|
1486
|
+
`identity`, `run`, `authorizeIdentity`, `authorizeMembership`, `authorizeAttachment`, `authorizeMessageVisible`,
|
|
1487
|
+
`classifyContent` and `appendEvent` (normally `appendChatEvent`). Identity comes from verified server context.
|
|
1488
|
+
The engine owns exact payload replay/conflict checks, sequence allocation, immutable attachment version
|
|
1489
|
+
snapshots, reply references, 15-minute edit eligibility, revision CAS, deletion tombstones, rate limits and
|
|
1490
|
+
atomic event append. It accepts at most 4,000 Unicode characters and four distinct image references. The
|
|
1491
|
+
application owns content classification, current audience projection, original/derivative delivery and any
|
|
1492
|
+
retained-author policy; persistence records must not be returned directly as public message projections.
|
|
1493
|
+
The existing `mobileContentVersion`, `mobileDecision` and `mobilePlatformDisposition` storage names are retained
|
|
1494
|
+
for schema compatibility, with decision values supplied by the caller rather than a built-in platform policy.
|
|
1495
|
+
|
|
1496
|
+
### Transactions and schema prerequisites
|
|
1497
|
+
|
|
1498
|
+
`createDurableTransaction(context, collections, query?)` returns an operation runner using Reaktor `useDb`,
|
|
1499
|
+
explicit collections, `allowImplicit: false`, five-second lock timeout and synchronous commit. Every policy hook
|
|
1500
|
+
must use its supplied transaction query for authoritative reads. Never call legacy actions that open their own
|
|
1501
|
+
connection from inside a hook. External provider calls belong outside the transaction.
|
|
1502
|
+
|
|
1503
|
+
Conversation repositories lock `conversations`, `hasChatMembership`, `hasConversation`, `chatInvites`,
|
|
1504
|
+
`chatRequests`, `chatRateLimits` and `chatOutbox` exclusively; they read `users`, `personas`, `hasConnection`
|
|
1505
|
+
and declared hook collections. Message runners must exclusively lock `messages`, `chatMessageRequests`,
|
|
1506
|
+
`chatRateLimits`, `conversations` and `chatOutbox`, plus any mutation collections used by hooks. Declare all
|
|
1507
|
+
membership, identity, relationship, media and policy read collections. Both engines must share the conversation
|
|
1508
|
+
lock with membership changes so sends and removals have a defined order.
|
|
1509
|
+
|
|
1510
|
+
Supplying an existing query transfers transaction/lock/commit ownership to the caller. It never opens a fallback
|
|
1511
|
+
connection, nests a transaction or commits independently. Commit failures are propagated without automatic
|
|
1512
|
+
retries: clients retry the exact original idempotency key and payload. `appendChatEvent` requires the caller's
|
|
1513
|
+
exclusive conversation/outbox locks and stores only IDs, revisions and sequence metadata.
|
|
1514
|
+
|
|
1515
|
+
Provision document collections above and edge collections `hasChatMembership`, `hasConversation` and
|
|
1516
|
+
`hasConnection` before use. Required unique persistent indexes are:
|
|
1517
|
+
|
|
1518
|
+
- `conversations.directPairKey` (sparse).
|
|
1519
|
+
- `hasChatMembership.currentKey` (sparse), and `(conversationId, personaId, epoch)`.
|
|
1520
|
+
- `chatInvites.currentKey` (sparse).
|
|
1521
|
+
- `messages.(conversationId, senderPersonaId, clientMessageId)` and `(conversationId, sequence)` (sparse).
|
|
1522
|
+
- `chatOutbox.(conversationId, eventSequence)` (sparse).
|
|
1523
|
+
|
|
1524
|
+
Index membership state/role, invite recipient/state/expiry and outbox status/retry/lease fields for bounded reads.
|
|
1525
|
+
Receipt documents use deterministic primary keys. No migration runs automatically. Legacy message histories
|
|
1526
|
+
must be assigned validated sequences and compatible membership grants before enabling durable writes; the
|
|
1527
|
+
message engine rejects conversations containing unmigrated history. Delivery workers, schema migration and
|
|
1528
|
+
transport endpoints remain application integration responsibilities.
|
package/lib/actions/analytics.js
CHANGED
|
@@ -536,4 +536,4 @@ export const getAnalyticsDashboard = async (context, analyticsIdInput, rangeDays
|
|
|
536
536
|
};
|
|
537
537
|
};
|
|
538
538
|
|
|
539
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL2FuYWx5dGljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNi1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtcbiAgQ3JlYXRlQXBwTW9uaXRvckNvbW1hbmQsXG4gIEdldEFwcE1vbml0b3JDb21tYW5kLFxuICBHZXRBcHBNb25pdG9yRGF0YUNvbW1hbmQsXG4gIFJVTUNsaWVudFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtcnVtJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcmFuZG9tVVVJRH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0NPTExFQ1RJT05TfSBmcm9tICcuLi9jb25zdGFudHMvY29sbGVjdGlvbnMuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge1VzZXJFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2lzQWRtaW5Vc2VyfSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMuanMnO1xuaW1wb3J0IHthZGRJdGVtLCBnZXRJdGVtQnksIGdldExpc3RCeSwgdXBkYXRlSXRlbX0gZnJvbSAnLi9jcnVkLmpzJztcblxuaW1wb3J0IHR5cGUge0F3c0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQW5hbHl0aWNzQ29uZmlndXJhdGlvblR5cGUsXG4gIEFuYWx5dGljc0Rhc2hib2FyZFR5cGUsXG4gIEFuYWx5dGljc0V2ZW50VHlwZSxcbiAgQW5hbHl0aWNzVHlwZSxcbiAgQ3JlYXRlQW5hbHl0aWNzTW9uaXRvcklucHV0VHlwZVxufSBmcm9tICcuLi90eXBlcy9hbmFseXRpY3MudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1Nlc3Npb259IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5cbmNvbnN0IE1BWF9BUFBfSURfTEVOR1RIID0gMTI4O1xuY29uc3QgTUFYX0RPTUFJTl9MRU5HVEggPSAyNTM7XG5jb25zdCBNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSCA9IDI1NTtcbmNvbnN0IE1BWF9SVU1fUEFHRVMgPSAxMDtcbmNvbnN0IE1BWF9SVU1fUkVTVUxUUyA9IDEwMDtcbmNvbnN0IFZBTElEX1JBTkdFX0RBWVMgPSBuZXcgU2V0KFsxLCA3LCAzMF0pO1xuY29uc3QgY29sbGVjdGlvbkluaXRpYWxpemF0aW9uID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU6IHVua25vd24sIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nID0+XG4gIFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnNsaWNlKDAsIG1heExlbmd0aCk7XG5cbmNvbnN0IG5vcm1hbGl6ZURvbWFpbiA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiBub3JtYWxpemVUZXh0KHZhbHVlLCBNQVhfRE9NQUlOX0xFTkdUSClcbiAgLnJlcGxhY2UoL15odHRwcz86XFwvXFwvL2ksICcnKVxuICAuc3BsaXQoJy8nKVswXVxuICAuc3BsaXQoJzonKVswXVxuICAudG9Mb3dlckNhc2UoKTtcblxuY29uc3Qgbm9ybWFsaXplTW9uaXRvck5hbWUgPSAodmFsdWU6IHVua25vd24sIGFwcElkOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgbm9ybWFsaXplVGV4dCh2YWx1ZSB8fCBhcHBJZCwgTUFYX01PTklUT1JfTkFNRV9MRU5HVEgpLnJlcGxhY2UoL1teYS16QS1aMC05LV9dL2csICctJyk7XG5cbmNvbnN0IGdldERvY3VtZW50S2V5ID0gKGFwcElkOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGFwcElkKS5kaWdlc3QoJ2hleCcpO1xuXG5jb25zdCByZXF1aXJlQWRtaW4gPSAoY29udGV4dDogQXBpQ29udGV4dCk6IHZvaWQgPT4ge1xuICBpZighaXNBZG1pblVzZXIoY29udGV4dC5zZXNzaW9uIGFzIFNlc3Npb24pKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTik7XG4gIH1cbn07XG5cbmNvbnN0IHJlcXVpcmVTZXNzaW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBTZXNzaW9uID0+IHtcbiAgY29uc3Qgc2Vzc2lvbiA9IGNvbnRleHQuc2Vzc2lvbiBhcyBTZXNzaW9uO1xuXG4gIGlmKCFzZXNzaW9uPy51c2VySWQpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKTtcbiAgfVxuXG4gIHJldHVybiBzZXNzaW9uO1xufTtcblxuY29uc3QgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24gPSBhc3luYyAoZGF0YWJhc2VOYW1lPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gZGF0YWJhc2VOYW1lIHx8ICdyZWFrdG9yJztcbiAgY29uc3QgZXhpc3RpbmdJbml0aWFsaXphdGlvbiA9IGNvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5nZXQoY2FjaGVLZXkpO1xuXG4gIGlmKGV4aXN0aW5nSW5pdGlhbGl6YXRpb24pIHtcbiAgICByZXR1cm4gZXhpc3RpbmdJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxpemF0aW9uID0gKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oQ09MTEVDVElPTlMuQU5BTFlUSUNTKTtcblxuICAgIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBkYXRhYmFzZS5jcmVhdGVDb2xsZWN0aW9uKENPTExFQ1RJT05TLkFOQUxZVElDUyk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBjb2xsZWN0aW9uLmVuc3VyZUluZGV4KHtmaWVsZHM6IFsnYW5hbHl0aWNzSWQnXSwgdHlwZTogJ3BlcnNpc3RlbnQnLCB1bmlxdWU6IHRydWV9KTtcbiAgICBhd2FpdCBjb2xsZWN0aW9uLmVuc3VyZUluZGV4KHtmaWVsZHM6IFsnYXBwSWQnXSwgdHlwZTogJ3BlcnNpc3RlbnQnLCB1bmlxdWU6IHRydWV9KTtcbiAgfSkoKTtcblxuICBjb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24uc2V0KGNhY2hlS2V5LCBpbml0aWFsaXphdGlvbik7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBpbml0aWFsaXphdGlvbjtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5kZWxldGUoY2FjaGVLZXkpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5jb25zdCBnZXRSdW1DbGllbnQgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFJVTUNsaWVudCA9PiB7XG4gIGNvbnN0IGF3c0NvbmZpZzogQXdzQ29uZmlnID0gY29udGV4dC5jb25maWc/LmF3cyB8fCBDb25maWcuZ2V0PEF3c0NvbmZpZz4oJ2F3cycsIHt9KTtcbiAgY29uc3Qge2FjY2Vzc0tleUlkLCBzZWNyZXRBY2Nlc3NLZXksIHNlc3Npb25Ub2tlbn0gPSBhd3NDb25maWcuY3JlZGVudGlhbHMgfHwge307XG4gIGNvbnN0IHVzZXNSdW50aW1lQ3JlZGVudGlhbHMgPSBCb29sZWFuKFxuICAgIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOICYmXG4gICAgYWNjZXNzS2V5SWQgPT09IHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lEICYmXG4gICAgc2VjcmV0QWNjZXNzS2V5ID09PSBwcm9jZXNzLmVudi5BV1NfU0VDUkVUX0FDQ0VTU19LRVlcbiAgKTtcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhY2Nlc3NLZXlJZCAmJiBzZWNyZXRBY2Nlc3NLZXkgJiYgIXVzZXNSdW50aW1lQ3JlZGVudGlhbHMgPyB7XG4gICAgYWNjZXNzS2V5SWQsXG4gICAgc2VjcmV0QWNjZXNzS2V5LFxuICAgIC4uLihzZXNzaW9uVG9rZW4gPyB7c2Vzc2lvblRva2VufSA6IHt9KVxuICB9IDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBuZXcgUlVNQ2xpZW50KHtcbiAgICAuLi4oY3JlZGVudGlhbHMgPyB7Y3JlZGVudGlhbHN9IDoge30pLFxuICAgIC4uLihhd3NDb25maWcucmVnaW9uID8ge3JlZ2lvbjogYXdzQ29uZmlnLnJlZ2lvbn0gOiB7fSlcbiAgfSk7XG59O1xuXG5jb25zdCBmaW5kQXdzTW9uaXRvciA9IGFzeW5jIChcbiAgY2xpZW50OiBSVU1DbGllbnQsXG4gIG1vbml0b3JOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8e2RvbWFpbj86IHN0cmluZzsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nfSB8IG51bGw+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRBcHBNb25pdG9yQ29tbWFuZCh7TmFtZTogbW9uaXRvck5hbWV9KSk7XG4gICAgY29uc3QgbW9uaXRvcklkID0gbm9ybWFsaXplVGV4dChyZXNwb25zZS5BcHBNb25pdG9yPy5JZCwgMzYpO1xuXG4gICAgcmV0dXJuIG1vbml0b3JJZCA/IHtcbiAgICAgIGRvbWFpbjogbm9ybWFsaXplRG9tYWluKHJlc3BvbnNlLkFwcE1vbml0b3I/LkRvbWFpbiksXG4gICAgICBpZDogbW9uaXRvcklkLFxuICAgICAgbmFtZTogbm9ybWFsaXplVGV4dChyZXNwb25zZS5BcHBNb25pdG9yPy5OYW1lIHx8IG1vbml0b3JOYW1lLCBNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSClcbiAgICB9IDogbnVsbDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKChlcnJvciBhcyB7bmFtZT86IHN0cmluZ30pLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmNvbnN0IGZpbmRPckNyZWF0ZUF3c01vbml0b3IgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFwcElkOiBzdHJpbmcsXG4gIGRvbWFpbjogc3RyaW5nLFxuICBtb25pdG9yTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPHtkb21haW46IHN0cmluZzsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nfT4gPT4ge1xuICBjb25zdCBjbGllbnQgPSBnZXRSdW1DbGllbnQoY29udGV4dCk7XG4gIGNvbnN0IGV4aXN0aW5nTW9uaXRvciA9IGF3YWl0IGZpbmRBd3NNb25pdG9yKGNsaWVudCwgbW9uaXRvck5hbWUpO1xuXG4gIGlmKGV4aXN0aW5nTW9uaXRvcikge1xuICAgIHJldHVybiB7XG4gICAgICBkb21haW46IGV4aXN0aW5nTW9uaXRvci5kb21haW4gfHwgZG9tYWluLFxuICAgICAgaWQ6IGV4aXN0aW5nTW9uaXRvci5pZCxcbiAgICAgIG5hbWU6IGV4aXN0aW5nTW9uaXRvci5uYW1lXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IENyZWF0ZUFwcE1vbml0b3JDb21tYW5kKHtcbiAgICBDdXN0b21FdmVudHM6IHtTdGF0dXM6ICdFTkFCTEVEJ30sXG4gICAgQ3dMb2dFbmFibGVkOiBmYWxzZSxcbiAgICBEb21haW46IGRvbWFpbixcbiAgICBOYW1lOiBtb25pdG9yTmFtZSxcbiAgICBQbGF0Zm9ybTogJ1dlYicsXG4gICAgVGFnczoge2FwcElkLCBtYW5hZ2VkQnk6ICdyZWFrdG9yJ31cbiAgfSkpO1xuICBjb25zdCBtb25pdG9ySWQgPSBub3JtYWxpemVUZXh0KHJlc3BvbnNlLklkLCAzNik7XG5cbiAgaWYoIW1vbml0b3JJZCkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX21vbml0b3InKTtcbiAgfVxuXG4gIHJldHVybiB7ZG9tYWluLCBpZDogbW9uaXRvcklkLCBuYW1lOiBtb25pdG9yTmFtZX07XG59O1xuXG5jb25zdCBwYXJzZU1vbml0b3JJbnB1dCA9IChcbiAgaW5wdXQ6IENyZWF0ZUFuYWx5dGljc01vbml0b3JJbnB1dFR5cGVcbik6IHthcHBJZDogc3RyaW5nOyBhcHBOYW1lOiBzdHJpbmc7IGRvbWFpbjogc3RyaW5nOyBtb25pdG9yTmFtZTogc3RyaW5nfSA9PiB7XG4gIGNvbnN0IGFwcElkID0gbm9ybWFsaXplVGV4dChpbnB1dD8uYXBwSWQsIE1BWF9BUFBfSURfTEVOR1RIKTtcbiAgY29uc3QgYXBwTmFtZSA9IG5vcm1hbGl6ZVRleHQoaW5wdXQ/LmFwcE5hbWUgfHwgaW5wdXQ/Lm1vbml0b3JOYW1lIHx8IGFwcElkLCBNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSCk7XG4gIGNvbnN0IGRvbWFpbiA9IG5vcm1hbGl6ZURvbWFpbihpbnB1dD8uZG9tYWluKTtcbiAgY29uc3QgbW9uaXRvck5hbWUgPSBub3JtYWxpemVNb25pdG9yTmFtZShpbnB1dD8ubW9uaXRvck5hbWUsIGFwcElkKTtcblxuICBpZighYXBwSWQgfHwgIWRvbWFpbiB8fCAhbW9uaXRvck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFMpO1xuICB9XG5cbiAgcmV0dXJuIHthcHBJZCwgYXBwTmFtZSwgZG9tYWluLCBtb25pdG9yTmFtZX07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQnlBcHBJZCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYXBwSWRJbnB1dDogc3RyaW5nXG4pOiBQcm9taXNlPEFuYWx5dGljc1R5cGUgfCBudWxsPiA9PiB7XG4gIHJlcXVpcmVBZG1pbihjb250ZXh0KTtcbiAgY29uc3QgYXBwSWQgPSBub3JtYWxpemVUZXh0KGFwcElkSW5wdXQsIE1BWF9BUFBfSURfTEVOR1RIKTtcblxuICBpZighYXBwSWQpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFMpO1xuICB9XG5cbiAgYXdhaXQgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24oY29udGV4dC5kYXRhYmFzZU5hbWUpO1xuICByZXR1cm4gZ2V0SXRlbUJ5PEFuYWx5dGljc1R5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFOQUxZVElDUywge2FwcElkfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYXBwSWRJbnB1dDogc3RyaW5nXG4pOiBQcm9taXNlPEFuYWx5dGljc0NvbmZpZ3VyYXRpb25UeXBlIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhcHBJZCA9IG5vcm1hbGl6ZVRleHQoYXBwSWRJbnB1dCwgTUFYX0FQUF9JRF9MRU5HVEgpO1xuXG4gIGlmKCFhcHBJZCkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UUyk7XG4gIH1cblxuICBhd2FpdCBpbml0aWFsaXplQW5hbHl0aWNzQ29sbGVjdGlvbihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGFuYWx5dGljcyA9IGF3YWl0IGdldEl0ZW1CeTxBbmFseXRpY3NUeXBlPihjb250ZXh0LCBDT0xMRUNUSU9OUy5BTkFMWVRJQ1MsIHthcHBJZH0pO1xuXG4gIHJldHVybiBhbmFseXRpY3MgPyB7YW5hbHl0aWNzSWQ6IGFuYWx5dGljcy5hbmFseXRpY3NJZCwgYXBwSWQ6IGFuYWx5dGljcy5hcHBJZH0gOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFuYWx5dGljc0J5SWQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkSW5wdXQ6IHN0cmluZ1xuKTogUHJvbWlzZTxBbmFseXRpY3NUeXBlIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhbmFseXRpY3NJZCA9IG5vcm1hbGl6ZVRleHQoYW5hbHl0aWNzSWRJbnB1dCwgMzYpO1xuXG4gIGlmKCFhbmFseXRpY3NJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXdhaXQgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24oY29udGV4dC5kYXRhYmFzZU5hbWUpO1xuICByZXR1cm4gZ2V0SXRlbUJ5PEFuYWx5dGljc1R5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFOQUxZVElDUywge2FuYWx5dGljc0lkfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQW5hbHl0aWNzTW9uaXRvciA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaW5wdXQ6IENyZWF0ZUFuYWx5dGljc01vbml0b3JJbnB1dFR5cGVcbik6IFByb21pc2U8QW5hbHl0aWNzVHlwZT4gPT4ge1xuICBjb25zdCBzZXNzaW9uID0gcmVxdWlyZVNlc3Npb24oY29udGV4dCk7XG4gIGNvbnN0IHthcHBJZCwgYXBwTmFtZSwgZG9tYWluLCBtb25pdG9yTmFtZX0gPSBwYXJzZU1vbml0b3JJbnB1dChpbnB1dCk7XG4gIGF3YWl0IGluaXRpYWxpemVBbmFseXRpY3NDb2xsZWN0aW9uKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBnZXRJdGVtQnk8QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7YXBwSWR9KTtcblxuICBpZihleGlzdGluZykge1xuICAgIGlmKGlzQWRtaW5Vc2VyKHNlc3Npb24pIHx8IChleGlzdGluZy51c2VySWRzIHx8IFtdKS5pbmNsdWRlcyhzZXNzaW9uLnVzZXJJZCkpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKTtcbiAgfVxuXG4gIGNvbnN0IG1vbml0b3IgPSBhd2FpdCBmaW5kT3JDcmVhdGVBd3NNb25pdG9yKGNvbnRleHQsIGFwcElkLCBkb21haW4sIG1vbml0b3JOYW1lKTtcbiAgcmV0dXJuIGFkZEl0ZW08QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7XG4gICAgX2tleTogZ2V0RG9jdW1lbnRLZXkoYXBwSWQpLFxuICAgIGFuYWx5dGljc0lkOiByYW5kb21VVUlEKCksXG4gICAgYXBwSWQsXG4gICAgYXBwTmFtZSxcbiAgICBkb21haW46IG1vbml0b3IuZG9tYWluLFxuICAgIG1vbml0b3JJZDogbW9uaXRvci5pZCxcbiAgICBtb25pdG9yTmFtZTogbW9uaXRvci5uYW1lLFxuICAgIHVzZXJJZHM6IFtzZXNzaW9uLnVzZXJJZF1cbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVnZW5lcmF0ZUFuYWx5dGljc0lkID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhbmFseXRpY3NJZElucHV0OiBzdHJpbmdcbik6IFByb21pc2U8QW5hbHl0aWNzVHlwZT4gPT4ge1xuICBjb25zdCBzZXNzaW9uID0gcmVxdWlyZVNlc3Npb24oY29udGV4dCk7XG4gIGNvbnN0IGFuYWx5dGljc0lkID0gbm9ybWFsaXplVGV4dChhbmFseXRpY3NJZElucHV0LCAzNik7XG5cbiAgaWYoIWFuYWx5dGljc0lkKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTKTtcbiAgfVxuXG4gIGF3YWl0IGluaXRpYWxpemVBbmFseXRpY3NDb2xsZWN0aW9uKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBnZXRJdGVtQnk8QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7YW5hbHl0aWNzSWR9KTtcbiAgY29uc3QgaGFzQWNjZXNzID0gZXhpc3RpbmcgJiYgKFxuICAgIGlzQWRtaW5Vc2VyKHNlc3Npb24pIHx8IChleGlzdGluZy51c2VySWRzIHx8IFtdKS5pbmNsdWRlcyhzZXNzaW9uLnVzZXJJZClcbiAgKTtcblxuICBpZighZXhpc3Rpbmc/Ll9rZXkgfHwgIWhhc0FjY2Vzcykge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2FwcCcpO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZUl0ZW08QW5hbHl0aWNzVHlwZT4oXG4gICAgY29udGV4dCxcbiAgICBDT0xMRUNUSU9OUy5BTkFMWVRJQ1MsXG4gICAgZXhpc3RpbmcuX2tleSxcbiAgICB7YW5hbHl0aWNzSWQ6IHJhbmRvbVVVSUQoKX1cbiAgKTtcbn07XG5cbnR5cGUgQXdzUnVtUmVjb3JkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7XG4gIGV2ZW50X2RldGFpbHM/OiB1bmtub3duO1xuICBtZXRhZGF0YT86IHVua25vd247XG59O1xuXG50eXBlIE5vcm1hbGl6ZWRSdW1FdmVudCA9IEFuYWx5dGljc0V2ZW50VHlwZSAmIHtyZWFkb25seSBhcHBJZDogc3RyaW5nfTtcblxuY29uc3QgcGFyc2VKc29uUmVjb3JkID0gKHZhbHVlOiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBpZih2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfVxuXG4gIGlmKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgIHJldHVybiBwYXJzZWQgJiYgdHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocGFyc2VkKVxuICAgICAgPyBwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIDoge307XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fTtcbiAgfVxufTtcblxuY29uc3QgZ2V0UHJvcGVydHkgPSAoXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFsaWFzZXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4pOiB1bmtub3duID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEFsaWFzZXMgPSBuZXcgU2V0KGFsaWFzZXMubWFwKChhbGlhcykgPT4gYWxpYXMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0vZywgJycpKSk7XG4gIGNvbnN0IGVudHJpZXMgPSBbLi4uT2JqZWN0LmVudHJpZXMocHJvcGVydGllcyksIC4uLk9iamVjdC5lbnRyaWVzKG1ldGFkYXRhKV07XG4gIHJldHVybiBlbnRyaWVzLmZpbmQoKFtrZXldKSA9PiBub3JtYWxpemVkQWxpYXNlcy5oYXMoa2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csICcnKSkpPy5bMV07XG59O1xuXG5jb25zdCBub3JtYWxpemVSdW1FdmVudCA9IChyYXdFdmVudDogc3RyaW5nKTogTm9ybWFsaXplZFJ1bUV2ZW50IHwgbnVsbCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc291cmNlID0gSlNPTi5wYXJzZShyYXdFdmVudCkgYXMgQXdzUnVtUmVjb3JkO1xuICAgIGNvbnN0IGRldGFpbHMgPSBwYXJzZUpzb25SZWNvcmQoc291cmNlLmV2ZW50X2RldGFpbHMpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gcGFyc2VKc29uUmVjb3JkKHNvdXJjZS5tZXRhZGF0YSk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHBhcnNlSnNvblJlY29yZChkZXRhaWxzLnByb3BlcnRpZXMpO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IE51bWJlcihzb3VyY2UuZXZlbnRfdGltZXN0YW1wIHx8IDApO1xuXG4gICAgaWYoIU51bWJlci5pc0Zpbml0ZSh0aW1lc3RhbXApIHx8IHRpbWVzdGFtcCA8PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRUZXh0ID0gKGFsaWFzZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBmYWxsYmFjayA9ICcnKTogc3RyaW5nID0+XG4gICAgICBub3JtYWxpemVUZXh0KGdldFByb3BlcnR5KHByb3BlcnRpZXMsIG1ldGFkYXRhLCBhbGlhc2VzKSA/PyBmYWxsYmFjaywgMjU2KTtcbiAgICBjb25zdCBkdXJhdGlvblZhbHVlID0gTnVtYmVyKGdldFByb3BlcnR5KHByb3BlcnRpZXMsIG1ldGFkYXRhLCBbXG4gICAgICAnZHVyYXRpb24nLFxuICAgICAgJ2R1cmF0aW9uTXMnLFxuICAgICAgJ2xhdGVuY3knLFxuICAgICAgJ2xvYWRUaW1lJyxcbiAgICAgICdwYWdlTG9hZFRpbWUnXG4gICAgXSkgfHwgMCk7XG4gICAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZGV0YWlscy5wYXRoLCAyNTYpO1xuICAgIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KHNvdXJjZS5ldmVudF90eXBlLCAyNTYpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcElkOiBub3JtYWxpemVUZXh0KGRldGFpbHMuYXBwSWQgfHwgbWV0YWRhdGEuYXBwbGljYXRpb25JZCwgTUFYX0FQUF9JRF9MRU5HVEgpLFxuICAgICAgYnJvd3Nlckxhbmd1YWdlOiBnZXRUZXh0KFsnYnJvd3Nlckxhbmd1YWdlJ10sICdVbmtub3duJyksXG4gICAgICBicm93c2VyTmFtZTogZ2V0VGV4dChbJ2Jyb3dzZXJOYW1lJ10sICdVbmtub3duJyksXG4gICAgICBicm93c2VyVmVyc2lvbjogZ2V0VGV4dChbJ2Jyb3dzZXJWZXJzaW9uJ10pLFxuICAgICAgZGV2aWNlVHlwZTogZ2V0VGV4dChbJ2RldmljZVR5cGUnXSwgJ1Vua25vd24nKSxcbiAgICAgIGR1cmF0aW9uOiBOdW1iZXIuaXNGaW5pdGUoZHVyYXRpb25WYWx1ZSkgJiYgZHVyYXRpb25WYWx1ZSA+IDAgPyBkdXJhdGlvblZhbHVlIDogMCxcbiAgICAgIGV2ZW50SWQ6IG5vcm1hbGl6ZVRleHQoc291cmNlLmV2ZW50X2lkLCAxMjgpLFxuICAgICAgaW50ZXJhY3Rpb246IGdldFRleHQoWydpbnRlcmFjdGlvbiddLCBub3JtYWxpemVUZXh0KGRldGFpbHMubmFtZSB8fCB0eXBlLCAxMjgpKSxcbiAgICAgIG5hbWU6IG5vcm1hbGl6ZVRleHQoZGV0YWlscy5uYW1lIHx8IHR5cGUsIDEyOCksXG4gICAgICBvc05hbWU6IGdldFRleHQoWydvc05hbWUnXSwgJ1Vua25vd24nKSxcbiAgICAgIG9zVmVyc2lvbjogZ2V0VGV4dChbJ29zVmVyc2lvbiddKSxcbiAgICAgIG91dGNvbWU6IGdldFRleHQoWydvdXRjb21lJ10pLFxuICAgICAgcGFnZUlkOiBnZXRUZXh0KFsncGFnZUlkJywgJ3BhZ2VJRCddLCBwYXRoIHx8ICdVbmtub3duJyksXG4gICAgICBwYXJlbnRQYWdlOiBnZXRUZXh0KFsncGFyZW50UGFnZUlkJywgJ3BhcmVudFBhZ2UnXSksXG4gICAgICBwYXRoLFxuICAgICAgc2Vzc2lvbklkOiBub3JtYWxpemVUZXh0KHNvdXJjZS5zZXNzaW9uSWQgfHwgcGFyc2VKc29uUmVjb3JkKHNvdXJjZS51c2VyX2RldGFpbHMpLnNlc3Npb25JZCwgMTI4KSxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGUsXG4gICAgICB2aWV3SWQ6IGdldFRleHQoWyd2aWV3SWQnXSlcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuY29uc3QgY3JlYXRlQnJlYWtkb3duID0gKHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW10sIHRvdGFsOiBudW1iZXIpID0+IHtcbiAgY29uc3QgY291bnRzID0gdmFsdWVzLnJlZHVjZTxNYXA8c3RyaW5nLCBudW1iZXI+PigocmVzdWx0LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IGxhYmVsID0gdmFsdWUgfHwgJ1Vua25vd24nO1xuICAgIHJlc3VsdC5zZXQobGFiZWwsIChyZXN1bHQuZ2V0KGxhYmVsKSB8fCAwKSArIDEpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIG5ldyBNYXAoKSk7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oY291bnRzLCAoW2xhYmVsLCBjb3VudF0pID0+ICh7XG4gICAgY291bnQsXG4gICAgbGFiZWwsXG4gICAgcGVyY2VudGFnZTogdG90YWwgPiAwID8gTWF0aC5yb3VuZCgoY291bnQgLyB0b3RhbCkgKiAxMDAwKSAvIDEwIDogMFxuICB9KSkuc29ydCgobGVmdCwgcmlnaHQpID0+IHJpZ2h0LmNvdW50IC0gbGVmdC5jb3VudCB8fCBsZWZ0LmxhYmVsLmxvY2FsZUNvbXBhcmUocmlnaHQubGFiZWwpKTtcbn07XG5cbmNvbnN0IHBlcmNlbnRpbGUgPSAodmFsdWVzOiByZWFkb25seSBudW1iZXJbXSwgcGVyY2VudGlsZVZhbHVlOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBpZih2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb25zdCBzb3J0ZWQgPSB2YWx1ZXMudG9Tb3J0ZWQoKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0IC0gcmlnaHQpO1xuICBjb25zdCBpbmRleCA9IE1hdGgubWF4KDAsIE1hdGguY2VpbChwZXJjZW50aWxlVmFsdWUgKiBzb3J0ZWQubGVuZ3RoKSAtIDEpO1xuICByZXR1cm4gc29ydGVkW2luZGV4XTtcbn07XG5cbmNvbnN0IGNyZWF0ZVZpZXdQZXJmb3JtYW5jZSA9IChldmVudHM6IHJlYWRvbmx5IE5vcm1hbGl6ZWRSdW1FdmVudFtdKSA9PiB7XG4gIGNvbnN0IHZpZXdzID0gZXZlbnRzLnJlZHVjZTxNYXA8c3RyaW5nLCBOb3JtYWxpemVkUnVtRXZlbnRbXT4+KChyZXN1bHQsIGV2ZW50KSA9PiB7XG4gICAgaWYoXG4gICAgICAoZXZlbnQudHlwZSAhPT0gJ3ZpZXdfcGVyZm9ybWFuY2UnICYmIGV2ZW50Lm5hbWUgIT09ICd2aWV3X3BlcmZvcm1hbmNlJylcbiAgICAgIHx8ICFldmVudC52aWV3SWRcbiAgICAgIHx8IGV2ZW50Lm91dGNvbWUgPT09ICdjYW5jZWxsZWQnXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IHNhbXBsZXMgPSByZXN1bHQuZ2V0KGV2ZW50LnZpZXdJZCkgfHwgW107XG4gICAgc2FtcGxlcy5wdXNoKGV2ZW50KTtcbiAgICByZXN1bHQuc2V0KGV2ZW50LnZpZXdJZCwgc2FtcGxlcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgbmV3IE1hcCgpKTtcblxuICByZXR1cm4gQXJyYXkuZnJvbSh2aWV3cywgKFt2aWV3SWQsIHNhbXBsZXNdKSA9PiB7XG4gICAgY29uc3QgZHVyYXRpb25zID0gc2FtcGxlcy5tYXAoKGV2ZW50KSA9PiBldmVudC5kdXJhdGlvbik7XG4gICAgY29uc3QgcGVyY2VudGFnZSA9IChvdXRjb21lOiBzdHJpbmcpOiBudW1iZXIgPT4gTWF0aC5yb3VuZChcbiAgICAgIChzYW1wbGVzLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50Lm91dGNvbWUgPT09IG91dGNvbWUpLmxlbmd0aCAvIHNhbXBsZXMubGVuZ3RoKSAqIDEwMDBcbiAgICApIC8gMTA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmFpbHVyZVJhdGU6IHBlcmNlbnRhZ2UoJ2ZhaWx1cmUnKSxcbiAgICAgIHA1MDogcGVyY2VudGlsZShkdXJhdGlvbnMsIDAuNSksXG4gICAgICBwNzU6IHBlcmNlbnRpbGUoZHVyYXRpb25zLCAwLjc1KSxcbiAgICAgIHA5NTogcGVyY2VudGlsZShkdXJhdGlvbnMsIDAuOTUpLFxuICAgICAgc2FtcGxlQ291bnQ6IHNhbXBsZXMubGVuZ3RoLFxuICAgICAgdGltZW91dFJhdGU6IHBlcmNlbnRhZ2UoJ3RpbWVvdXQnKSxcbiAgICAgIHZpZXdJZFxuICAgIH07XG4gIH0pLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5zYW1wbGVDb3VudCAtIGxlZnQuc2FtcGxlQ291bnQgfHwgbGVmdC52aWV3SWQubG9jYWxlQ29tcGFyZShyaWdodC52aWV3SWQpKTtcbn07XG5cbmNvbnN0IGdldEF1dGhvcml6ZWRBbmFseXRpY3MgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkOiBzdHJpbmdcbik6IFByb21pc2U8QW5hbHl0aWNzVHlwZT4gPT4ge1xuICBjb25zdCBzZXNzaW9uID0gcmVxdWlyZVNlc3Npb24oY29udGV4dCk7XG4gIGNvbnN0IGFuYWx5dGljcyA9IGF3YWl0IGdldEFuYWx5dGljc0J5SWQoY29udGV4dCwgYW5hbHl0aWNzSWQpO1xuICBjb25zdCBoYXNBY2Nlc3MgPSBhbmFseXRpY3MgJiYgKFxuICAgIGlzQWRtaW5Vc2VyKHNlc3Npb24pIHx8IChhbmFseXRpY3MudXNlcklkcyB8fCBbXSkuaW5jbHVkZXMoc2Vzc2lvbi51c2VySWQpXG4gICk7XG5cbiAgaWYoIWFuYWx5dGljcyB8fCAhaGFzQWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTik7XG4gIH1cblxuICByZXR1cm4gYW5hbHl0aWNzO1xufTtcblxuY29uc3QgZ2V0QW5hbHl0aWNzQXBwTmFtZSA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhbmFseXRpY3M6IEFuYWx5dGljc1R5cGUpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZihhbmFseXRpY3MuYXBwTmFtZSkge1xuICAgIHJldHVybiBhbmFseXRpY3MuYXBwTmFtZTtcbiAgfVxuXG4gIGNvbnN0IGFwcCA9IGF3YWl0IGdldEl0ZW1CeTxBcHBUeXBlPihjb250ZXh0LCBDT0xMRUNUSU9OUy5BUFBTLCB7XG4gICAgY29uZGl0aW9uczogW1xuICAgICAge2ZpZWxkOiAnYXBwSWQnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGFuYWx5dGljcy5hcHBJZH0sXG4gICAgICB7ZmllbGQ6ICdfa2V5Jywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBhbmFseXRpY3MuYXBwSWR9XG4gICAgXSxcbiAgICBsb2dpYzogJ09SJ1xuICB9KTtcblxuICByZXR1cm4gbm9ybWFsaXplVGV4dChhcHA/LmRpc3BsYXlOYW1lIHx8IGFwcD8ubmFtZSB8fCBhbmFseXRpY3MubW9uaXRvck5hbWUgfHwgYW5hbHl0aWNzLmFwcElkLCBNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXZhaWxhYmxlQW5hbHl0aWNzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPEFuYWx5dGljc1R5cGVbXT4gPT4ge1xuICBjb25zdCBzZXNzaW9uID0gcmVxdWlyZVNlc3Npb24oY29udGV4dCk7XG4gIGF3YWl0IGluaXRpYWxpemVBbmFseXRpY3NDb2xsZWN0aW9uKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgZ2V0TGlzdEJ5PEFuYWx5dGljc1R5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFOQUxZVElDUywge30sIHtcbiAgICBzb3J0OiBbe2RpcmVjdGlvbjogJ0FTQycsIGZpZWxkOiAnYXBwTmFtZSd9XVxuICB9KTtcblxuICBjb25zdCBhdmFpbGFibGUgPSBhbmFseXRpY3MuZmlsdGVyKChpdGVtKSA9PlxuICAgIGlzQWRtaW5Vc2VyKHNlc3Npb24pIHx8IChpdGVtLnVzZXJJZHMgfHwgW10pLmluY2x1ZGVzKHNlc3Npb24udXNlcklkKSk7XG5cbiAgY29uc3QgZW5yaWNoZWQgPSBhd2FpdCBQcm9taXNlLmFsbChhdmFpbGFibGUubWFwKGFzeW5jIChpdGVtKSA9PiAoe1xuICAgIC4uLml0ZW0sXG4gICAgYXBwTmFtZTogYXdhaXQgZ2V0QW5hbHl0aWNzQXBwTmFtZShjb250ZXh0LCBpdGVtKSxcbiAgICB1c2VySWRzOiBpdGVtLnVzZXJJZHMgfHwgW11cbiAgfSkpKTtcblxuICByZXR1cm4gZW5yaWNoZWQuc29ydCgobGVmdCwgcmlnaHQpID0+XG4gICAgKGxlZnQuYXBwTmFtZSB8fCAnJykubG9jYWxlQ29tcGFyZShyaWdodC5hcHBOYW1lIHx8ICcnKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QW5hbHl0aWNzQWNjZXNzID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhbmFseXRpY3NJZElucHV0OiBzdHJpbmcsXG4gIHVzZXJJZHNJbnB1dDogcmVhZG9ubHkgc3RyaW5nW11cbik6IFByb21pc2U8QW5hbHl0aWNzVHlwZT4gPT4ge1xuICByZXF1aXJlQWRtaW4oY29udGV4dCk7XG4gIGNvbnN0IGFuYWx5dGljc0lkID0gbm9ybWFsaXplVGV4dChhbmFseXRpY3NJZElucHV0LCAzNik7XG4gIGNvbnN0IGFuYWx5dGljcyA9IGF3YWl0IGdldEFuYWx5dGljc0J5SWQoY29udGV4dCwgYW5hbHl0aWNzSWQpO1xuXG4gIGlmKCFhbmFseXRpY3M/Ll9rZXkpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9hcHAnKTtcbiAgfVxuXG4gIGNvbnN0IHVzZXJJZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQoKHVzZXJJZHNJbnB1dCB8fCBbXSlcbiAgICAubWFwKCh1c2VySWQpID0+IG5vcm1hbGl6ZVRleHQodXNlcklkLCAxMjgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbikpKVxuICAgIC5zbGljZSgwLCAxMDApO1xuXG4gIHJldHVybiB1cGRhdGVJdGVtPEFuYWx5dGljc1R5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFOQUxZVElDUywgYW5hbHl0aWNzLl9rZXksIHt1c2VySWRzfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzRGFzaGJvYXJkID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhbmFseXRpY3NJZElucHV0OiBzdHJpbmcsXG4gIHJhbmdlRGF5c0lucHV0OiBudW1iZXJcbik6IFByb21pc2U8QW5hbHl0aWNzRGFzaGJvYXJkVHlwZT4gPT4ge1xuICBjb25zdCBhbmFseXRpY3NJZCA9IG5vcm1hbGl6ZVRleHQoYW5hbHl0aWNzSWRJbnB1dCwgMzYpO1xuICBjb25zdCByYW5nZURheXMgPSBNYXRoLmZsb29yKE51bWJlcihyYW5nZURheXNJbnB1dCkpO1xuXG4gIGlmKCFhbmFseXRpY3NJZCB8fCAhVkFMSURfUkFOR0VfREFZUy5oYXMocmFuZ2VEYXlzKSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UUyk7XG4gIH1cblxuICBjb25zdCBhbmFseXRpY3MgPSBhd2FpdCBnZXRBdXRob3JpemVkQW5hbHl0aWNzKGNvbnRleHQsIGFuYWx5dGljc0lkKTtcbiAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IGVuZFRpbWUgLSByYW5nZURheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwICsgKHJhbmdlRGF5cyA9PT0gMzAgPyA2MF8wMDAgOiAwKTtcbiAgY29uc3QgY2xpZW50ID0gZ2V0UnVtQ2xpZW50KGNvbnRleHQpO1xuICBjb25zdCByYXdFdmVudHM6IHN0cmluZ1tdID0gW107XG4gIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHBhZ2UgPSAwO1xuXG4gIGRvIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRBcHBNb25pdG9yRGF0YUNvbW1hbmQoe1xuICAgICAgTWF4UmVzdWx0czogTUFYX1JVTV9SRVNVTFRTLFxuICAgICAgTmFtZTogYW5hbHl0aWNzLm1vbml0b3JOYW1lLFxuICAgICAgLi4uKG5leHRUb2tlbiA/IHtOZXh0VG9rZW46IG5leHRUb2tlbn0gOiB7fSksXG4gICAgICBUaW1lUmFuZ2U6IHtBZnRlcjogc3RhcnRUaW1lLCBCZWZvcmU6IGVuZFRpbWV9XG4gICAgfSkpO1xuICAgIHJhd0V2ZW50cy5wdXNoKC4uLihyZXNwb25zZS5FdmVudHMgfHwgW10pKTtcbiAgICBuZXh0VG9rZW4gPSByZXNwb25zZS5OZXh0VG9rZW47XG4gICAgcGFnZSArPSAxO1xuICB9IHdoaWxlKG5leHRUb2tlbiAmJiBwYWdlIDwgTUFYX1JVTV9QQUdFUyk7XG5cbiAgY29uc3QgZXZlbnRzID0gcmF3RXZlbnRzXG4gICAgLm1hcChub3JtYWxpemVSdW1FdmVudClcbiAgICAuZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5vcm1hbGl6ZWRSdW1FdmVudCA9PiBCb29sZWFuKGV2ZW50ICYmIGV2ZW50LmFwcElkID09PSBhbmFseXRpY3MuYXBwSWQpKVxuICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gcmlnaHQudGltZXN0YW1wIC0gbGVmdC50aW1lc3RhbXApO1xuICBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXQoZXZlbnRzLm1hcCgoZXZlbnQpID0+IGV2ZW50LnNlc3Npb25JZCkuZmlsdGVyKEJvb2xlYW4pKTtcbiAgY29uc3QgaW50ZXJhY3Rpb25FdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudCkgPT4gKFxuICAgIGV2ZW50LnR5cGUgIT09ICdwYWdlX3ZpZXcnICYmIGV2ZW50LnR5cGUgIT09ICd2aWV3X3BlcmZvcm1hbmNlJ1xuICApKTtcbiAgY29uc3QgZXJyb3JFdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudCkgPT4gL2Vycm9yfGV4Y2VwdGlvbnxmYWlsdXJlL2kudGVzdChgJHtldmVudC50eXBlfSAke2V2ZW50Lm5hbWV9YCkpO1xuICBjb25zdCBkdXJhdGlvbnMgPSBldmVudHMubWFwKChldmVudCkgPT4gZXZlbnQuZHVyYXRpb24pLmZpbHRlcigoZHVyYXRpb24pID0+IGR1cmF0aW9uID4gMCk7XG4gIGNvbnN0IGJ1Y2tldFNpemUgPSByYW5nZURheXMgPT09IDEgPyA2MCAqIDYwICogMTAwMCA6IDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gIGNvbnN0IGJ1Y2tldHMgPSBuZXcgTWFwPG51bWJlciwge2Vycm9yczogbnVtYmVyOyBldmVudHM6IG51bWJlcjsgaW50ZXJhY3Rpb25zOiBudW1iZXI7IHNlc3Npb25zOiBTZXQ8c3RyaW5nPn0+KCk7XG5cbiAgZm9yKGxldCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKHN0YXJ0VGltZSAvIGJ1Y2tldFNpemUpICogYnVja2V0U2l6ZTsgdGltZXN0YW1wIDw9IGVuZFRpbWU7IHRpbWVzdGFtcCArPSBidWNrZXRTaXplKSB7XG4gICAgYnVja2V0cy5zZXQodGltZXN0YW1wLCB7ZXJyb3JzOiAwLCBldmVudHM6IDAsIGludGVyYWN0aW9uczogMCwgc2Vzc2lvbnM6IG5ldyBTZXQoKX0pO1xuICB9XG5cbiAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgYnVja2V0ID0gYnVja2V0cy5nZXQoTWF0aC5mbG9vcihldmVudC50aW1lc3RhbXAgLyBidWNrZXRTaXplKSAqIGJ1Y2tldFNpemUpO1xuICAgIGlmKCFidWNrZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYnVja2V0LmV2ZW50cyArPSAxO1xuICAgIGJ1Y2tldC5pbnRlcmFjdGlvbnMgKz0gZXZlbnQudHlwZSA9PT0gJ3BhZ2VfdmlldycgfHwgZXZlbnQudHlwZSA9PT0gJ3ZpZXdfcGVyZm9ybWFuY2UnID8gMCA6IDE7XG4gICAgYnVja2V0LmVycm9ycyArPSAvZXJyb3J8ZXhjZXB0aW9ufGZhaWx1cmUvaS50ZXN0KGAke2V2ZW50LnR5cGV9ICR7ZXZlbnQubmFtZX1gKSA/IDEgOiAwO1xuICAgIGlmKGV2ZW50LnNlc3Npb25JZCkge1xuICAgICAgYnVja2V0LnNlc3Npb25zLmFkZChldmVudC5zZXNzaW9uSWQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhbmFseXRpY3NJZDogYW5hbHl0aWNzLmFuYWx5dGljc0lkLFxuICAgIGFwcElkOiBhbmFseXRpY3MuYXBwSWQsXG4gICAgYXBwTmFtZTogYXdhaXQgZ2V0QW5hbHl0aWNzQXBwTmFtZShjb250ZXh0LCBhbmFseXRpY3MpLFxuICAgIGF2ZXJhZ2VEdXJhdGlvbjogZHVyYXRpb25zLmxlbmd0aFxuICAgICAgPyBNYXRoLnJvdW5kKGR1cmF0aW9ucy5yZWR1Y2UoKHRvdGFsLCBkdXJhdGlvbikgPT4gdG90YWwgKyBkdXJhdGlvbiwgMCkgLyBkdXJhdGlvbnMubGVuZ3RoKVxuICAgICAgOiAwLFxuICAgIGJyb3dzZXJzOiBjcmVhdGVCcmVha2Rvd24oZXZlbnRzLm1hcCgoZXZlbnQpID0+IFtldmVudC5icm93c2VyTmFtZSwgZXZlbnQuYnJvd3NlclZlcnNpb25dLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykpLCBldmVudHMubGVuZ3RoKSxcbiAgICBkZXZpY2VzOiBjcmVhdGVCcmVha2Rvd24oZXZlbnRzLm1hcCgoZXZlbnQpID0+IGV2ZW50LmRldmljZVR5cGUpLCBldmVudHMubGVuZ3RoKSxcbiAgICBlbmRUaW1lLFxuICAgIGVycm9yQ291bnQ6IGVycm9yRXZlbnRzLmxlbmd0aCxcbiAgICBldmVudENvdW50OiBldmVudHMubGVuZ3RoLFxuICAgIGdlbmVyYXRlZEF0OiBEYXRlLm5vdygpLFxuICAgIGludGVyYWN0aW9uczogY3JlYXRlQnJlYWtkb3duKGludGVyYWN0aW9uRXZlbnRzLm1hcCgoZXZlbnQpID0+IGV2ZW50LmludGVyYWN0aW9uIHx8IGV2ZW50Lm5hbWUpLCBpbnRlcmFjdGlvbkV2ZW50cy5sZW5ndGgpLFxuICAgIGxhbmd1YWdlczogY3JlYXRlQnJlYWtkb3duKGV2ZW50cy5tYXAoKGV2ZW50KSA9PiBldmVudC5icm93c2VyTGFuZ3VhZ2UpLCBldmVudHMubGVuZ3RoKSxcbiAgICBtb25pdG9ySWQ6IGFuYWx5dGljcy5tb25pdG9ySWQsXG4gICAgbW9uaXRvck5hbWU6IGFuYWx5dGljcy5tb25pdG9yTmFtZSxcbiAgICBvcGVyYXRpbmdTeXN0ZW1zOiBjcmVhdGVCcmVha2Rvd24oZXZlbnRzLm1hcCgoZXZlbnQpID0+IFtldmVudC5vc05hbWUsIGV2ZW50Lm9zVmVyc2lvbl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSksIGV2ZW50cy5sZW5ndGgpLFxuICAgIHBhZ2VzOiBjcmVhdGVCcmVha2Rvd24oZXZlbnRzLm1hcCgoZXZlbnQpID0+IGV2ZW50LnBhZ2VJZCB8fCBldmVudC5wYXRoKSwgZXZlbnRzLmxlbmd0aCksXG4gICAgcGFnZVZpZXdDb3VudDogZXZlbnRzLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnR5cGUgPT09ICdwYWdlX3ZpZXcnKS5sZW5ndGgsXG4gICAgcGFydGlhbDogQm9vbGVhbihuZXh0VG9rZW4pLFxuICAgIHBlcmZvcm1hbmNlU2FtcGxlczogZHVyYXRpb25zLmxlbmd0aCxcbiAgICByZWNlbnRFdmVudHM6IGV2ZW50cy5zbGljZSgwLCAxMDApLm1hcCgoe2FwcElkOiBfYXBwSWQsIC4uLmV2ZW50fSkgPT4gZXZlbnQpLFxuICAgIHNlc3Npb25Db3VudDogc2Vzc2lvbnMuc2l6ZSxcbiAgICBzdGFydFRpbWUsXG4gICAgdGltZWxpbmU6IEFycmF5LmZyb20oYnVja2V0cywgKFt0aW1lc3RhbXAsIGJ1Y2tldF0pID0+ICh7XG4gICAgICBlcnJvcnM6IGJ1Y2tldC5lcnJvcnMsXG4gICAgICBldmVudHM6IGJ1Y2tldC5ldmVudHMsXG4gICAgICBpbnRlcmFjdGlvbnM6IGJ1Y2tldC5pbnRlcmFjdGlvbnMsXG4gICAgICBzZXNzaW9uczogYnVja2V0LnNlc3Npb25zLnNpemUsXG4gICAgICB0aW1lc3RhbXBcbiAgICB9KSksXG4gICAgdmlld1BlcmZvcm1hbmNlOiBjcmVhdGVWaWV3UGVyZm9ybWFuY2UoZXZlbnRzKVxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJDcmVhdGVBcHBNb25pdG9yQ29tbWFuZCIsIkdldEFwcE1vbml0b3JDb21tYW5kIiwiR2V0QXBwTW9uaXRvckRhdGFDb21tYW5kIiwiUlVNQ2xpZW50IiwiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDb25maWciLCJDT0xMRUNUSU9OUyIsIkVycm9yVHlwZXMiLCJVc2VyRXJyb3IiLCJ1c2VEYiIsImlzQWRtaW5Vc2VyIiwiYWRkSXRlbSIsImdldEl0ZW1CeSIsImdldExpc3RCeSIsInVwZGF0ZUl0ZW0iLCJNQVhfQVBQX0lEX0xFTkdUSCIsIk1BWF9ET01BSU5fTEVOR1RIIiwiTUFYX01PTklUT1JfTkFNRV9MRU5HVEgiLCJNQVhfUlVNX1BBR0VTIiwiTUFYX1JVTV9SRVNVTFRTIiwiVkFMSURfUkFOR0VfREFZUyIsIlNldCIsImNvbGxlY3Rpb25Jbml0aWFsaXphdGlvbiIsIk1hcCIsIm5vcm1hbGl6ZVRleHQiLCJ2YWx1ZSIsIm1heExlbmd0aCIsIlN0cmluZyIsInRyaW0iLCJzbGljZSIsIm5vcm1hbGl6ZURvbWFpbiIsInJlcGxhY2UiLCJzcGxpdCIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplTW9uaXRvck5hbWUiLCJhcHBJZCIsImdldERvY3VtZW50S2V5IiwidXBkYXRlIiwiZGlnZXN0IiwicmVxdWlyZUFkbWluIiwiY29udGV4dCIsInNlc3Npb24iLCJJTlZBTElEX1NFU1NJT04iLCJyZXF1aXJlU2Vzc2lvbiIsInVzZXJJZCIsImluaXRpYWxpemVBbmFseXRpY3NDb2xsZWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwiY2FjaGVLZXkiLCJleGlzdGluZ0luaXRpYWxpemF0aW9uIiwiZ2V0IiwiaW5pdGlhbGl6YXRpb24iLCJkYXRhYmFzZSIsImNvbGxlY3Rpb24iLCJBTkFMWVRJQ1MiLCJleGlzdHMiLCJjcmVhdGVDb2xsZWN0aW9uIiwiZXJyb3IiLCJlbnN1cmVJbmRleCIsImZpZWxkcyIsInR5cGUiLCJ1bmlxdWUiLCJzZXQiLCJkZWxldGUiLCJnZXRSdW1DbGllbnQiLCJhd3NDb25maWciLCJjb25maWciLCJhd3MiLCJhY2Nlc3NLZXlJZCIsInNlY3JldEFjY2Vzc0tleSIsInNlc3Npb25Ub2tlbiIsImNyZWRlbnRpYWxzIiwidXNlc1J1bnRpbWVDcmVkZW50aWFscyIsIkJvb2xlYW4iLCJwcm9jZXNzIiwiZW52IiwiQVdTX1NFU1NJT05fVE9LRU4iLCJBV1NfQUNDRVNTX0tFWV9JRCIsIkFXU19TRUNSRVRfQUNDRVNTX0tFWSIsInVuZGVmaW5lZCIsInJlZ2lvbiIsImZpbmRBd3NNb25pdG9yIiwiY2xpZW50IiwibW9uaXRvck5hbWUiLCJyZXNwb25zZSIsInNlbmQiLCJOYW1lIiwibW9uaXRvcklkIiwiQXBwTW9uaXRvciIsIklkIiwiZG9tYWluIiwiRG9tYWluIiwiaWQiLCJuYW1lIiwiZmluZE9yQ3JlYXRlQXdzTW9uaXRvciIsImV4aXN0aW5nTW9uaXRvciIsIkN1c3RvbUV2ZW50cyIsIlN0YXR1cyIsIkN3TG9nRW5hYmxlZCIsIlBsYXRmb3JtIiwiVGFncyIsIm1hbmFnZWRCeSIsInBhcnNlTW9uaXRvcklucHV0IiwiaW5wdXQiLCJhcHBOYW1lIiwiSU5WQUxJRF9BUkdVTUVOVFMiLCJnZXRBbmFseXRpY3NCeUFwcElkIiwiYXBwSWRJbnB1dCIsImdldEFuYWx5dGljc0NvbmZpZ3VyYXRpb24iLCJhbmFseXRpY3MiLCJhbmFseXRpY3NJZCIsImdldEFuYWx5dGljc0J5SWQiLCJhbmFseXRpY3NJZElucHV0IiwiY3JlYXRlQW5hbHl0aWNzTW9uaXRvciIsImV4aXN0aW5nIiwidXNlcklkcyIsImluY2x1ZGVzIiwibW9uaXRvciIsIl9rZXkiLCJyZWdlbmVyYXRlQW5hbHl0aWNzSWQiLCJoYXNBY2Nlc3MiLCJwYXJzZUpzb25SZWNvcmQiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJnZXRQcm9wZXJ0eSIsInByb3BlcnRpZXMiLCJtZXRhZGF0YSIsImFsaWFzZXMiLCJub3JtYWxpemVkQWxpYXNlcyIsIm1hcCIsImFsaWFzIiwiZW50cmllcyIsIk9iamVjdCIsImZpbmQiLCJrZXkiLCJoYXMiLCJub3JtYWxpemVSdW1FdmVudCIsInJhd0V2ZW50Iiwic291cmNlIiwiZGV0YWlscyIsImV2ZW50X2RldGFpbHMiLCJ0aW1lc3RhbXAiLCJOdW1iZXIiLCJldmVudF90aW1lc3RhbXAiLCJpc0Zpbml0ZSIsImdldFRleHQiLCJmYWxsYmFjayIsImR1cmF0aW9uVmFsdWUiLCJwYXRoIiwiZXZlbnRfdHlwZSIsImFwcGxpY2F0aW9uSWQiLCJicm93c2VyTGFuZ3VhZ2UiLCJicm93c2VyTmFtZSIsImJyb3dzZXJWZXJzaW9uIiwiZGV2aWNlVHlwZSIsImR1cmF0aW9uIiwiZXZlbnRJZCIsImV2ZW50X2lkIiwiaW50ZXJhY3Rpb24iLCJvc05hbWUiLCJvc1ZlcnNpb24iLCJvdXRjb21lIiwicGFnZUlkIiwicGFyZW50UGFnZSIsInNlc3Npb25JZCIsInVzZXJfZGV0YWlscyIsInZpZXdJZCIsImNyZWF0ZUJyZWFrZG93biIsInZhbHVlcyIsInRvdGFsIiwiY291bnRzIiwicmVkdWNlIiwicmVzdWx0IiwibGFiZWwiLCJmcm9tIiwiY291bnQiLCJwZXJjZW50YWdlIiwiTWF0aCIsInJvdW5kIiwic29ydCIsImxlZnQiLCJyaWdodCIsImxvY2FsZUNvbXBhcmUiLCJwZXJjZW50aWxlIiwicGVyY2VudGlsZVZhbHVlIiwibGVuZ3RoIiwic29ydGVkIiwidG9Tb3J0ZWQiLCJpbmRleCIsIm1heCIsImNlaWwiLCJjcmVhdGVWaWV3UGVyZm9ybWFuY2UiLCJldmVudHMiLCJ2aWV3cyIsImV2ZW50Iiwic2FtcGxlcyIsInB1c2giLCJkdXJhdGlvbnMiLCJmaWx0ZXIiLCJmYWlsdXJlUmF0ZSIsInA1MCIsInA3NSIsInA5NSIsInNhbXBsZUNvdW50IiwidGltZW91dFJhdGUiLCJnZXRBdXRob3JpemVkQW5hbHl0aWNzIiwiZ2V0QW5hbHl0aWNzQXBwTmFtZSIsImFwcCIsIkFQUFMiLCJjb25kaXRpb25zIiwiZmllbGQiLCJvcGVyYXRvciIsImxvZ2ljIiwiZGlzcGxheU5hbWUiLCJnZXRBdmFpbGFibGVBbmFseXRpY3MiLCJkaXJlY3Rpb24iLCJhdmFpbGFibGUiLCJpdGVtIiwiZW5yaWNoZWQiLCJQcm9taXNlIiwiYWxsIiwic2V0QW5hbHl0aWNzQWNjZXNzIiwidXNlcklkc0lucHV0IiwiZ2V0QW5hbHl0aWNzRGFzaGJvYXJkIiwicmFuZ2VEYXlzSW5wdXQiLCJyYW5nZURheXMiLCJmbG9vciIsImVuZFRpbWUiLCJEYXRlIiwibm93Iiwic3RhcnRUaW1lIiwicmF3RXZlbnRzIiwibmV4dFRva2VuIiwicGFnZSIsIk1heFJlc3VsdHMiLCJOZXh0VG9rZW4iLCJUaW1lUmFuZ2UiLCJBZnRlciIsIkJlZm9yZSIsIkV2ZW50cyIsInNlc3Npb25zIiwiaW50ZXJhY3Rpb25FdmVudHMiLCJlcnJvckV2ZW50cyIsInRlc3QiLCJidWNrZXRTaXplIiwiYnVja2V0cyIsImVycm9ycyIsImludGVyYWN0aW9ucyIsImZvckVhY2giLCJidWNrZXQiLCJhZGQiLCJhdmVyYWdlRHVyYXRpb24iLCJicm93c2VycyIsImpvaW4iLCJkZXZpY2VzIiwiZXJyb3JDb3VudCIsImV2ZW50Q291bnQiLCJnZW5lcmF0ZWRBdCIsImxhbmd1YWdlcyIsIm9wZXJhdGluZ1N5c3RlbXMiLCJwYWdlcyIsInBhZ2VWaWV3Q291bnQiLCJwYXJ0aWFsIiwicGVyZm9ybWFuY2VTYW1wbGVzIiwicmVjZW50RXZlbnRzIiwiX2FwcElkIiwic2Vzc2lvbkNvdW50Iiwic2l6ZSIsInRpbWVsaW5lIiwidmlld1BlcmZvcm1hbmNl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
|
|
539
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvYW5hbHl0aWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge1xuICBDcmVhdGVBcHBNb25pdG9yQ29tbWFuZCxcbiAgR2V0QXBwTW9uaXRvckNvbW1hbmQsXG4gIEdldEFwcE1vbml0b3JEYXRhQ29tbWFuZCxcbiAgUlVNQ2xpZW50XG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1ydW0nO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCByYW5kb21VVUlEfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7Q09MTEVDVElPTlN9IGZyb20gJy4uL2NvbnN0YW50cy9jb2xsZWN0aW9ucy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7VXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGdldEl0ZW1CeSwgZ2V0TGlzdEJ5LCB1cGRhdGVJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXdzQ29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHR5cGUge0FwcFR5cGV9IGZyb20gJy4uL3R5cGVzL2FwcHMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBbmFseXRpY3NDb25maWd1cmF0aW9uVHlwZSxcbiAgQW5hbHl0aWNzRGFzaGJvYXJkVHlwZSxcbiAgQW5hbHl0aWNzRXZlbnRUeXBlLFxuICBBbmFseXRpY3NUeXBlLFxuICBDcmVhdGVBbmFseXRpY3NNb25pdG9ySW5wdXRUeXBlXG59IGZyb20gJy4uL3R5cGVzL2FuYWx5dGljcy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7U2Vzc2lvbn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvblV0aWxzLmpzJztcblxuY29uc3QgTUFYX0FQUF9JRF9MRU5HVEggPSAxMjg7XG5jb25zdCBNQVhfRE9NQUlOX0xFTkdUSCA9IDI1MztcbmNvbnN0IE1BWF9NT05JVE9SX05BTUVfTEVOR1RIID0gMjU1O1xuY29uc3QgTUFYX1JVTV9QQUdFUyA9IDEwO1xuY29uc3QgTUFYX1JVTV9SRVNVTFRTID0gMTAwO1xuY29uc3QgVkFMSURfUkFOR0VfREFZUyA9IG5ldyBTZXQoWzEsIDcsIDMwXSk7XG5jb25zdCBjb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxuY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgU3RyaW5nKHZhbHVlIHx8ICcnKS50cmltKCkuc2xpY2UoMCwgbWF4TGVuZ3RoKTtcblxuY29uc3Qgbm9ybWFsaXplRG9tYWluID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IG5vcm1hbGl6ZVRleHQodmFsdWUsIE1BWF9ET01BSU5fTEVOR1RIKVxuICAucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vaSwgJycpXG4gIC5zcGxpdCgnLycpWzBdXG4gIC5zcGxpdCgnOicpWzBdXG4gIC50b0xvd2VyQ2FzZSgpO1xuXG5jb25zdCBub3JtYWxpemVNb25pdG9yTmFtZSA9ICh2YWx1ZTogdW5rbm93biwgYXBwSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBub3JtYWxpemVUZXh0KHZhbHVlIHx8IGFwcElkLCBNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSCkucmVwbGFjZSgvW15hLXpBLVowLTktX10vZywgJy0nKTtcblxuY29uc3QgZ2V0RG9jdW1lbnRLZXkgPSAoYXBwSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYXBwSWQpLmRpZ2VzdCgnaGV4Jyk7XG5cbmNvbnN0IHJlcXVpcmVBZG1pbiA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogdm9pZCA9PiB7XG4gIGlmKCFpc0FkbWluVXNlcihjb250ZXh0LnNlc3Npb24gYXMgU2Vzc2lvbikpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKTtcbiAgfVxufTtcblxuY29uc3QgcmVxdWlyZVNlc3Npb24gPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFNlc3Npb24gPT4ge1xuICBjb25zdCBzZXNzaW9uID0gY29udGV4dC5zZXNzaW9uIGFzIFNlc3Npb247XG5cbiAgaWYoIXNlc3Npb24/LnVzZXJJZCkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pO1xuICB9XG5cbiAgcmV0dXJuIHNlc3Npb247XG59O1xuXG5jb25zdCBpbml0aWFsaXplQW5hbHl0aWNzQ29sbGVjdGlvbiA9IGFzeW5jIChkYXRhYmFzZU5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgY2FjaGVLZXkgPSBkYXRhYmFzZU5hbWUgfHwgJ3JlYWt0b3InO1xuICBjb25zdCBleGlzdGluZ0luaXRpYWxpemF0aW9uID0gY29sbGVjdGlvbkluaXRpYWxpemF0aW9uLmdldChjYWNoZUtleSk7XG5cbiAgaWYoZXhpc3RpbmdJbml0aWFsaXphdGlvbikge1xuICAgIHJldHVybiBleGlzdGluZ0luaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhbGl6YXRpb24gPSAoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbihDT0xMRUNUSU9OUy5BTkFMWVRJQ1MpO1xuXG4gICAgaWYoIWF3YWl0IGNvbGxlY3Rpb24uZXhpc3RzKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRhdGFiYXNlLmNyZWF0ZUNvbGxlY3Rpb24oQ09MTEVDVElPTlMuQU5BTFlUSUNTKTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgaWYoIWF3YWl0IGNvbGxlY3Rpb24uZXhpc3RzKCkpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGNvbGxlY3Rpb24uZW5zdXJlSW5kZXgoe2ZpZWxkczogWydhbmFseXRpY3NJZCddLCB0eXBlOiAncGVyc2lzdGVudCcsIHVuaXF1ZTogdHJ1ZX0pO1xuICAgIGF3YWl0IGNvbGxlY3Rpb24uZW5zdXJlSW5kZXgoe2ZpZWxkczogWydhcHBJZCddLCB0eXBlOiAncGVyc2lzdGVudCcsIHVuaXF1ZTogdHJ1ZX0pO1xuICB9KSgpO1xuXG4gIGNvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5zZXQoY2FjaGVLZXksIGluaXRpYWxpemF0aW9uKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGluaXRpYWxpemF0aW9uO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29sbGVjdGlvbkluaXRpYWxpemF0aW9uLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmNvbnN0IGdldFJ1bUNsaWVudCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUlVNQ2xpZW50ID0+IHtcbiAgY29uc3QgYXdzQ29uZmlnOiBBd3NDb25maWcgPSBjb250ZXh0LmNvbmZpZz8uYXdzIHx8IENvbmZpZy5nZXQ8QXdzQ29uZmlnPignYXdzJywge30pO1xuICBjb25zdCB7YWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VufSA9IGF3c0NvbmZpZy5jcmVkZW50aWFscyB8fCB7fTtcbiAgY29uc3QgdXNlc1J1bnRpbWVDcmVkZW50aWFscyA9IEJvb2xlYW4oXG4gICAgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4gJiZcbiAgICBhY2Nlc3NLZXlJZCA9PT0gcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgJiZcbiAgICBzZWNyZXRBY2Nlc3NLZXkgPT09IHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWVxuICApO1xuICBjb25zdCBjcmVkZW50aWFscyA9IGFjY2Vzc0tleUlkICYmIHNlY3JldEFjY2Vzc0tleSAmJiAhdXNlc1J1bnRpbWVDcmVkZW50aWFscyA/IHtcbiAgICBhY2Nlc3NLZXlJZCxcbiAgICBzZWNyZXRBY2Nlc3NLZXksXG4gICAgLi4uKHNlc3Npb25Ub2tlbiA/IHtzZXNzaW9uVG9rZW59IDoge30pXG4gIH0gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIG5ldyBSVU1DbGllbnQoe1xuICAgIC4uLihjcmVkZW50aWFscyA/IHtjcmVkZW50aWFsc30gOiB7fSksXG4gICAgLi4uKGF3c0NvbmZpZy5yZWdpb24gPyB7cmVnaW9uOiBhd3NDb25maWcucmVnaW9ufSA6IHt9KVxuICB9KTtcbn07XG5cbmNvbnN0IGZpbmRBd3NNb25pdG9yID0gYXN5bmMgKFxuICBjbGllbnQ6IFJVTUNsaWVudCxcbiAgbW9uaXRvck5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTx7ZG9tYWluPzogc3RyaW5nOyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmd9IHwgbnVsbD4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldEFwcE1vbml0b3JDb21tYW5kKHtOYW1lOiBtb25pdG9yTmFtZX0pKTtcbiAgICBjb25zdCBtb25pdG9ySWQgPSBub3JtYWxpemVUZXh0KHJlc3BvbnNlLkFwcE1vbml0b3I/LklkLCAzNik7XG5cbiAgICByZXR1cm4gbW9uaXRvcklkID8ge1xuICAgICAgZG9tYWluOiBub3JtYWxpemVEb21haW4ocmVzcG9uc2UuQXBwTW9uaXRvcj8uRG9tYWluKSxcbiAgICAgIGlkOiBtb25pdG9ySWQsXG4gICAgICBuYW1lOiBub3JtYWxpemVUZXh0KHJlc3BvbnNlLkFwcE1vbml0b3I/Lk5hbWUgfHwgbW9uaXRvck5hbWUsIE1BWF9NT05JVE9SX05BTUVfTEVOR1RIKVxuICAgIH0gOiBudWxsO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoKGVycm9yIGFzIHtuYW1lPzogc3RyaW5nfSkubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuY29uc3QgZmluZE9yQ3JlYXRlQXdzTW9uaXRvciA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZG9tYWluOiBzdHJpbmcsXG4gIG1vbml0b3JOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8e2RvbWFpbjogc3RyaW5nOyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmd9PiA9PiB7XG4gIGNvbnN0IGNsaWVudCA9IGdldFJ1bUNsaWVudChjb250ZXh0KTtcbiAgY29uc3QgZXhpc3RpbmdNb25pdG9yID0gYXdhaXQgZmluZEF3c01vbml0b3IoY2xpZW50LCBtb25pdG9yTmFtZSk7XG5cbiAgaWYoZXhpc3RpbmdNb25pdG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbWFpbjogZXhpc3RpbmdNb25pdG9yLmRvbWFpbiB8fCBkb21haW4sXG4gICAgICBpZDogZXhpc3RpbmdNb25pdG9yLmlkLFxuICAgICAgbmFtZTogZXhpc3RpbmdNb25pdG9yLm5hbWVcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgQ3JlYXRlQXBwTW9uaXRvckNvbW1hbmQoe1xuICAgIEN1c3RvbUV2ZW50czoge1N0YXR1czogJ0VOQUJMRUQnfSxcbiAgICBDd0xvZ0VuYWJsZWQ6IGZhbHNlLFxuICAgIERvbWFpbjogZG9tYWluLFxuICAgIE5hbWU6IG1vbml0b3JOYW1lLFxuICAgIFBsYXRmb3JtOiAnV2ViJyxcbiAgICBUYWdzOiB7YXBwSWQsIG1hbmFnZWRCeTogJ3JlYWt0b3InfVxuICB9KSk7XG4gIGNvbnN0IG1vbml0b3JJZCA9IG5vcm1hbGl6ZVRleHQocmVzcG9uc2UuSWQsIDM2KTtcblxuICBpZighbW9uaXRvcklkKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fbW9uaXRvcicpO1xuICB9XG5cbiAgcmV0dXJuIHtkb21haW4sIGlkOiBtb25pdG9ySWQsIG5hbWU6IG1vbml0b3JOYW1lfTtcbn07XG5cbmNvbnN0IHBhcnNlTW9uaXRvcklucHV0ID0gKFxuICBpbnB1dDogQ3JlYXRlQW5hbHl0aWNzTW9uaXRvcklucHV0VHlwZVxuKToge2FwcElkOiBzdHJpbmc7IGFwcE5hbWU6IHN0cmluZzsgZG9tYWluOiBzdHJpbmc7IG1vbml0b3JOYW1lOiBzdHJpbmd9ID0+IHtcbiAgY29uc3QgYXBwSWQgPSBub3JtYWxpemVUZXh0KGlucHV0Py5hcHBJZCwgTUFYX0FQUF9JRF9MRU5HVEgpO1xuICBjb25zdCBhcHBOYW1lID0gbm9ybWFsaXplVGV4dChpbnB1dD8uYXBwTmFtZSB8fCBpbnB1dD8ubW9uaXRvck5hbWUgfHwgYXBwSWQsIE1BWF9NT05JVE9SX05BTUVfTEVOR1RIKTtcbiAgY29uc3QgZG9tYWluID0gbm9ybWFsaXplRG9tYWluKGlucHV0Py5kb21haW4pO1xuICBjb25zdCBtb25pdG9yTmFtZSA9IG5vcm1hbGl6ZU1vbml0b3JOYW1lKGlucHV0Py5tb25pdG9yTmFtZSwgYXBwSWQpO1xuXG4gIGlmKCFhcHBJZCB8fCAhZG9tYWluIHx8ICFtb25pdG9yTmFtZSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UUyk7XG4gIH1cblxuICByZXR1cm4ge2FwcElkLCBhcHBOYW1lLCBkb21haW4sIG1vbml0b3JOYW1lfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmFseXRpY3NCeUFwcElkID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhcHBJZElucHV0OiBzdHJpbmdcbik6IFByb21pc2U8QW5hbHl0aWNzVHlwZSB8IG51bGw+ID0+IHtcbiAgcmVxdWlyZUFkbWluKGNvbnRleHQpO1xuICBjb25zdCBhcHBJZCA9IG5vcm1hbGl6ZVRleHQoYXBwSWRJbnB1dCwgTUFYX0FQUF9JRF9MRU5HVEgpO1xuXG4gIGlmKCFhcHBJZCkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UUyk7XG4gIH1cblxuICBhd2FpdCBpbml0aWFsaXplQW5hbHl0aWNzQ29sbGVjdGlvbihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIHJldHVybiBnZXRJdGVtQnk8QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7YXBwSWR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmFseXRpY3NDb25maWd1cmF0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhcHBJZElucHV0OiBzdHJpbmdcbik6IFByb21pc2U8QW5hbHl0aWNzQ29uZmlndXJhdGlvblR5cGUgfCBudWxsPiA9PiB7XG4gIGNvbnN0IGFwcElkID0gbm9ybWFsaXplVGV4dChhcHBJZElucHV0LCBNQVhfQVBQX0lEX0xFTkdUSCk7XG5cbiAgaWYoIWFwcElkKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTKTtcbiAgfVxuXG4gIGF3YWl0IGluaXRpYWxpemVBbmFseXRpY3NDb2xsZWN0aW9uKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgZ2V0SXRlbUJ5PEFuYWx5dGljc1R5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFOQUxZVElDUywge2FwcElkfSk7XG5cbiAgcmV0dXJuIGFuYWx5dGljcyA/IHthbmFseXRpY3NJZDogYW5hbHl0aWNzLmFuYWx5dGljc0lkLCBhcHBJZDogYW5hbHl0aWNzLmFwcElkfSA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQnlJZCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYW5hbHl0aWNzSWRJbnB1dDogc3RyaW5nXG4pOiBQcm9taXNlPEFuYWx5dGljc1R5cGUgfCBudWxsPiA9PiB7XG4gIGNvbnN0IGFuYWx5dGljc0lkID0gbm9ybWFsaXplVGV4dChhbmFseXRpY3NJZElucHV0LCAzNik7XG5cbiAgaWYoIWFuYWx5dGljc0lkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhd2FpdCBpbml0aWFsaXplQW5hbHl0aWNzQ29sbGVjdGlvbihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIHJldHVybiBnZXRJdGVtQnk8QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7YW5hbHl0aWNzSWR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBbmFseXRpY3NNb25pdG9yID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpbnB1dDogQ3JlYXRlQW5hbHl0aWNzTW9uaXRvcklucHV0VHlwZVxuKTogUHJvbWlzZTxBbmFseXRpY3NUeXBlPiA9PiB7XG4gIGNvbnN0IHNlc3Npb24gPSByZXF1aXJlU2Vzc2lvbihjb250ZXh0KTtcbiAgY29uc3Qge2FwcElkLCBhcHBOYW1lLCBkb21haW4sIG1vbml0b3JOYW1lfSA9IHBhcnNlTW9uaXRvcklucHV0KGlucHV0KTtcbiAgYXdhaXQgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24oY29udGV4dC5kYXRhYmFzZU5hbWUpO1xuICBjb25zdCBleGlzdGluZyA9IGF3YWl0IGdldEl0ZW1CeTxBbmFseXRpY3NUeXBlPihjb250ZXh0LCBDT0xMRUNUSU9OUy5BTkFMWVRJQ1MsIHthcHBJZH0pO1xuXG4gIGlmKGV4aXN0aW5nKSB7XG4gICAgaWYoaXNBZG1pblVzZXIoc2Vzc2lvbikgfHwgKGV4aXN0aW5nLnVzZXJJZHMgfHwgW10pLmluY2x1ZGVzKHNlc3Npb24udXNlcklkKSkge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pO1xuICB9XG5cbiAgY29uc3QgbW9uaXRvciA9IGF3YWl0IGZpbmRPckNyZWF0ZUF3c01vbml0b3IoY29udGV4dCwgYXBwSWQsIGRvbWFpbiwgbW9uaXRvck5hbWUpO1xuICByZXR1cm4gYWRkSXRlbTxBbmFseXRpY3NUeXBlPihjb250ZXh0LCBDT0xMRUNUSU9OUy5BTkFMWVRJQ1MsIHtcbiAgICBfa2V5OiBnZXREb2N1bWVudEtleShhcHBJZCksXG4gICAgYW5hbHl0aWNzSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICBhcHBJZCxcbiAgICBhcHBOYW1lLFxuICAgIGRvbWFpbjogbW9uaXRvci5kb21haW4sXG4gICAgbW9uaXRvcklkOiBtb25pdG9yLmlkLFxuICAgIG1vbml0b3JOYW1lOiBtb25pdG9yLm5hbWUsXG4gICAgdXNlcklkczogW3Nlc3Npb24udXNlcklkXVxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWdlbmVyYXRlQW5hbHl0aWNzSWQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkSW5wdXQ6IHN0cmluZ1xuKTogUHJvbWlzZTxBbmFseXRpY3NUeXBlPiA9PiB7XG4gIGNvbnN0IHNlc3Npb24gPSByZXF1aXJlU2Vzc2lvbihjb250ZXh0KTtcbiAgY29uc3QgYW5hbHl0aWNzSWQgPSBub3JtYWxpemVUZXh0KGFuYWx5dGljc0lkSW5wdXQsIDM2KTtcblxuICBpZighYW5hbHl0aWNzSWQpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFMpO1xuICB9XG5cbiAgYXdhaXQgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24oY29udGV4dC5kYXRhYmFzZU5hbWUpO1xuICBjb25zdCBleGlzdGluZyA9IGF3YWl0IGdldEl0ZW1CeTxBbmFseXRpY3NUeXBlPihjb250ZXh0LCBDT0xMRUNUSU9OUy5BTkFMWVRJQ1MsIHthbmFseXRpY3NJZH0pO1xuICBjb25zdCBoYXNBY2Nlc3MgPSBleGlzdGluZyAmJiAoXG4gICAgaXNBZG1pblVzZXIoc2Vzc2lvbikgfHwgKGV4aXN0aW5nLnVzZXJJZHMgfHwgW10pLmluY2x1ZGVzKHNlc3Npb24udXNlcklkKVxuICApO1xuXG4gIGlmKCFleGlzdGluZz8uX2tleSB8fCAhaGFzQWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlSXRlbTxBbmFseXRpY3NUeXBlPihcbiAgICBjb250ZXh0LFxuICAgIENPTExFQ1RJT05TLkFOQUxZVElDUyxcbiAgICBleGlzdGluZy5fa2V5LFxuICAgIHthbmFseXRpY3NJZDogcmFuZG9tVVVJRCgpfVxuICApO1xufTtcblxudHlwZSBBd3NSdW1SZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHtcbiAgZXZlbnRfZGV0YWlscz86IHVua25vd247XG4gIG1ldGFkYXRhPzogdW5rbm93bjtcbn07XG5cbnR5cGUgTm9ybWFsaXplZFJ1bUV2ZW50ID0gQW5hbHl0aWNzRXZlbnRUeXBlICYge3JlYWRvbmx5IGFwcElkOiBzdHJpbmd9O1xuXG5jb25zdCBwYXJzZUpzb25SZWNvcmQgPSAodmFsdWU6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGlmKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9XG5cbiAgaWYodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpXG4gICAgICA/IHBhcnNlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgOiB7fTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5jb25zdCBnZXRQcm9wZXJ0eSA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgYWxpYXNlczogcmVhZG9ubHkgc3RyaW5nW11cbik6IHVua25vd24gPT4ge1xuICBjb25zdCBub3JtYWxpemVkQWxpYXNlcyA9IG5ldyBTZXQoYWxpYXNlcy5tYXAoKGFsaWFzKSA9PiBhbGlhcy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJykpKTtcbiAgY29uc3QgZW50cmllcyA9IFsuLi5PYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSwgLi4uT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpXTtcbiAgcmV0dXJuIGVudHJpZXMuZmluZCgoW2tleV0pID0+IG5vcm1hbGl6ZWRBbGlhc2VzLmhhcyhrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0vZywgJycpKSk/LlsxXTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVJ1bUV2ZW50ID0gKHJhd0V2ZW50OiBzdHJpbmcpOiBOb3JtYWxpemVkUnVtRXZlbnQgfCBudWxsID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzb3VyY2UgPSBKU09OLnBhcnNlKHJhd0V2ZW50KSBhcyBBd3NSdW1SZWNvcmQ7XG4gICAgY29uc3QgZGV0YWlscyA9IHBhcnNlSnNvblJlY29yZChzb3VyY2UuZXZlbnRfZGV0YWlscyk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBwYXJzZUpzb25SZWNvcmQoc291cmNlLm1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcGFyc2VKc29uUmVjb3JkKGRldGFpbHMucHJvcGVydGllcyk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gTnVtYmVyKHNvdXJjZS5ldmVudF90aW1lc3RhbXAgfHwgMCk7XG5cbiAgICBpZighTnVtYmVyLmlzRmluaXRlKHRpbWVzdGFtcCkgfHwgdGltZXN0YW1wIDw9IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGdldFRleHQgPSAoYWxpYXNlczogcmVhZG9ubHkgc3RyaW5nW10sIGZhbGxiYWNrID0gJycpOiBzdHJpbmcgPT5cbiAgICAgIG5vcm1hbGl6ZVRleHQoZ2V0UHJvcGVydHkocHJvcGVydGllcywgbWV0YWRhdGEsIGFsaWFzZXMpID8/IGZhbGxiYWNrLCAyNTYpO1xuICAgIGNvbnN0IGR1cmF0aW9uVmFsdWUgPSBOdW1iZXIoZ2V0UHJvcGVydHkocHJvcGVydGllcywgbWV0YWRhdGEsIFtcbiAgICAgICdkdXJhdGlvbicsXG4gICAgICAnZHVyYXRpb25NcycsXG4gICAgICAnbGF0ZW5jeScsXG4gICAgICAnbG9hZFRpbWUnLFxuICAgICAgJ3BhZ2VMb2FkVGltZSdcbiAgICBdKSB8fCAwKTtcbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplVGV4dChkZXRhaWxzLnBhdGgsIDI1Nik7XG4gICAgY29uc3QgdHlwZSA9IG5vcm1hbGl6ZVRleHQoc291cmNlLmV2ZW50X3R5cGUsIDI1Nik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXBwSWQ6IG5vcm1hbGl6ZVRleHQoZGV0YWlscy5hcHBJZCB8fCBtZXRhZGF0YS5hcHBsaWNhdGlvbklkLCBNQVhfQVBQX0lEX0xFTkdUSCksXG4gICAgICBicm93c2VyTGFuZ3VhZ2U6IGdldFRleHQoWydicm93c2VyTGFuZ3VhZ2UnXSwgJ1Vua25vd24nKSxcbiAgICAgIGJyb3dzZXJOYW1lOiBnZXRUZXh0KFsnYnJvd3Nlck5hbWUnXSwgJ1Vua25vd24nKSxcbiAgICAgIGJyb3dzZXJWZXJzaW9uOiBnZXRUZXh0KFsnYnJvd3NlclZlcnNpb24nXSksXG4gICAgICBkZXZpY2VUeXBlOiBnZXRUZXh0KFsnZGV2aWNlVHlwZSddLCAnVW5rbm93bicpLFxuICAgICAgZHVyYXRpb246IE51bWJlci5pc0Zpbml0ZShkdXJhdGlvblZhbHVlKSAmJiBkdXJhdGlvblZhbHVlID4gMCA/IGR1cmF0aW9uVmFsdWUgOiAwLFxuICAgICAgZXZlbnRJZDogbm9ybWFsaXplVGV4dChzb3VyY2UuZXZlbnRfaWQsIDEyOCksXG4gICAgICBpbnRlcmFjdGlvbjogZ2V0VGV4dChbJ2ludGVyYWN0aW9uJ10sIG5vcm1hbGl6ZVRleHQoZGV0YWlscy5uYW1lIHx8IHR5cGUsIDEyOCkpLFxuICAgICAgbmFtZTogbm9ybWFsaXplVGV4dChkZXRhaWxzLm5hbWUgfHwgdHlwZSwgMTI4KSxcbiAgICAgIG9zTmFtZTogZ2V0VGV4dChbJ29zTmFtZSddLCAnVW5rbm93bicpLFxuICAgICAgb3NWZXJzaW9uOiBnZXRUZXh0KFsnb3NWZXJzaW9uJ10pLFxuICAgICAgb3V0Y29tZTogZ2V0VGV4dChbJ291dGNvbWUnXSksXG4gICAgICBwYWdlSWQ6IGdldFRleHQoWydwYWdlSWQnLCAncGFnZUlEJ10sIHBhdGggfHwgJ1Vua25vd24nKSxcbiAgICAgIHBhcmVudFBhZ2U6IGdldFRleHQoWydwYXJlbnRQYWdlSWQnLCAncGFyZW50UGFnZSddKSxcbiAgICAgIHBhdGgsXG4gICAgICBzZXNzaW9uSWQ6IG5vcm1hbGl6ZVRleHQoc291cmNlLnNlc3Npb25JZCB8fCBwYXJzZUpzb25SZWNvcmQoc291cmNlLnVzZXJfZGV0YWlscykuc2Vzc2lvbklkLCAxMjgpLFxuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZSxcbiAgICAgIHZpZXdJZDogZ2V0VGV4dChbJ3ZpZXdJZCddKVxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBjcmVhdGVCcmVha2Rvd24gPSAodmFsdWVzOiByZWFkb25seSBzdHJpbmdbXSwgdG90YWw6IG51bWJlcikgPT4ge1xuICBjb25zdCBjb3VudHMgPSB2YWx1ZXMucmVkdWNlPE1hcDxzdHJpbmcsIG51bWJlcj4+KChyZXN1bHQsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSB2YWx1ZSB8fCAnVW5rbm93bic7XG4gICAgcmVzdWx0LnNldChsYWJlbCwgKHJlc3VsdC5nZXQobGFiZWwpIHx8IDApICsgMSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgbmV3IE1hcCgpKTtcblxuICByZXR1cm4gQXJyYXkuZnJvbShjb3VudHMsIChbbGFiZWwsIGNvdW50XSkgPT4gKHtcbiAgICBjb3VudCxcbiAgICBsYWJlbCxcbiAgICBwZXJjZW50YWdlOiB0b3RhbCA+IDAgPyBNYXRoLnJvdW5kKChjb3VudCAvIHRvdGFsKSAqIDEwMDApIC8gMTAgOiAwXG4gIH0pKS5zb3J0KChsZWZ0LCByaWdodCkgPT4gcmlnaHQuY291bnQgLSBsZWZ0LmNvdW50IHx8IGxlZnQubGFiZWwubG9jYWxlQ29tcGFyZShyaWdodC5sYWJlbCkpO1xufTtcblxuY29uc3QgcGVyY2VudGlsZSA9ICh2YWx1ZXM6IHJlYWRvbmx5IG51bWJlcltdLCBwZXJjZW50aWxlVmFsdWU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGlmKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZCA9IHZhbHVlcy50b1NvcnRlZCgobGVmdCwgcmlnaHQpID0+IGxlZnQgLSByaWdodCk7XG4gIGNvbnN0IGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKHBlcmNlbnRpbGVWYWx1ZSAqIHNvcnRlZC5sZW5ndGgpIC0gMSk7XG4gIHJldHVybiBzb3J0ZWRbaW5kZXhdO1xufTtcblxuY29uc3QgY3JlYXRlVmlld1BlcmZvcm1hbmNlID0gKGV2ZW50czogcmVhZG9ubHkgTm9ybWFsaXplZFJ1bUV2ZW50W10pID0+IHtcbiAgY29uc3Qgdmlld3MgPSBldmVudHMucmVkdWNlPE1hcDxzdHJpbmcsIE5vcm1hbGl6ZWRSdW1FdmVudFtdPj4oKHJlc3VsdCwgZXZlbnQpID0+IHtcbiAgICBpZihcbiAgICAgIChldmVudC50eXBlICE9PSAndmlld19wZXJmb3JtYW5jZScgJiYgZXZlbnQubmFtZSAhPT0gJ3ZpZXdfcGVyZm9ybWFuY2UnKVxuICAgICAgfHwgIWV2ZW50LnZpZXdJZFxuICAgICAgfHwgZXZlbnQub3V0Y29tZSA9PT0gJ2NhbmNlbGxlZCdcbiAgICApIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FtcGxlcyA9IHJlc3VsdC5nZXQoZXZlbnQudmlld0lkKSB8fCBbXTtcbiAgICBzYW1wbGVzLnB1c2goZXZlbnQpO1xuICAgIHJlc3VsdC5zZXQoZXZlbnQudmlld0lkLCBzYW1wbGVzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBuZXcgTWFwKCkpO1xuXG4gIHJldHVybiBBcnJheS5mcm9tKHZpZXdzLCAoW3ZpZXdJZCwgc2FtcGxlc10pID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbnMgPSBzYW1wbGVzLm1hcCgoZXZlbnQpID0+IGV2ZW50LmR1cmF0aW9uKTtcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKG91dGNvbWU6IHN0cmluZyk6IG51bWJlciA9PiBNYXRoLnJvdW5kKFxuICAgICAgKHNhbXBsZXMuZmlsdGVyKChldmVudCkgPT4gZXZlbnQub3V0Y29tZSA9PT0gb3V0Y29tZSkubGVuZ3RoIC8gc2FtcGxlcy5sZW5ndGgpICogMTAwMFxuICAgICkgLyAxMDtcblxuICAgIHJldHVybiB7XG4gICAgICBmYWlsdXJlUmF0ZTogcGVyY2VudGFnZSgnZmFpbHVyZScpLFxuICAgICAgcDUwOiBwZXJjZW50aWxlKGR1cmF0aW9ucywgMC41KSxcbiAgICAgIHA3NTogcGVyY2VudGlsZShkdXJhdGlvbnMsIDAuNzUpLFxuICAgICAgcDk1OiBwZXJjZW50aWxlKGR1cmF0aW9ucywgMC45NSksXG4gICAgICBzYW1wbGVDb3VudDogc2FtcGxlcy5sZW5ndGgsXG4gICAgICB0aW1lb3V0UmF0ZTogcGVyY2VudGFnZSgndGltZW91dCcpLFxuICAgICAgdmlld0lkXG4gICAgfTtcbiAgfSkuc29ydCgobGVmdCwgcmlnaHQpID0+IHJpZ2h0LnNhbXBsZUNvdW50IC0gbGVmdC5zYW1wbGVDb3VudCB8fCBsZWZ0LnZpZXdJZC5sb2NhbGVDb21wYXJlKHJpZ2h0LnZpZXdJZCkpO1xufTtcblxuY29uc3QgZ2V0QXV0aG9yaXplZEFuYWx5dGljcyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYW5hbHl0aWNzSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxBbmFseXRpY3NUeXBlPiA9PiB7XG4gIGNvbnN0IHNlc3Npb24gPSByZXF1aXJlU2Vzc2lvbihjb250ZXh0KTtcbiAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgZ2V0QW5hbHl0aWNzQnlJZChjb250ZXh0LCBhbmFseXRpY3NJZCk7XG4gIGNvbnN0IGhhc0FjY2VzcyA9IGFuYWx5dGljcyAmJiAoXG4gICAgaXNBZG1pblVzZXIoc2Vzc2lvbikgfHwgKGFuYWx5dGljcy51c2VySWRzIHx8IFtdKS5pbmNsdWRlcyhzZXNzaW9uLnVzZXJJZClcbiAgKTtcblxuICBpZighYW5hbHl0aWNzIHx8ICFoYXNBY2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKTtcbiAgfVxuXG4gIHJldHVybiBhbmFseXRpY3M7XG59O1xuXG5jb25zdCBnZXRBbmFseXRpY3NBcHBOYW1lID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFuYWx5dGljczogQW5hbHl0aWNzVHlwZSk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmKGFuYWx5dGljcy5hcHBOYW1lKSB7XG4gICAgcmV0dXJuIGFuYWx5dGljcy5hcHBOYW1lO1xuICB9XG5cbiAgY29uc3QgYXBwID0gYXdhaXQgZ2V0SXRlbUJ5PEFwcFR5cGU+KGNvbnRleHQsIENPTExFQ1RJT05TLkFQUFMsIHtcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdhcHBJZCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogYW5hbHl0aWNzLmFwcElkfSxcbiAgICAgIHtmaWVsZDogJ19rZXknLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGFuYWx5dGljcy5hcHBJZH1cbiAgICBdLFxuICAgIGxvZ2ljOiAnT1InXG4gIH0pO1xuXG4gIHJldHVybiBub3JtYWxpemVUZXh0KGFwcD8uZGlzcGxheU5hbWUgfHwgYXBwPy5uYW1lIHx8IGFuYWx5dGljcy5tb25pdG9yTmFtZSB8fCBhbmFseXRpY3MuYXBwSWQsIE1BWF9NT05JVE9SX05BTUVfTEVOR1RIKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdmFpbGFibGVBbmFseXRpY3MgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8QW5hbHl0aWNzVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHNlc3Npb24gPSByZXF1aXJlU2Vzc2lvbihjb250ZXh0KTtcbiAgYXdhaXQgaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24oY29udGV4dC5kYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhbmFseXRpY3MgPSBhd2FpdCBnZXRMaXN0Qnk8QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCB7fSwge1xuICAgIHNvcnQ6IFt7ZGlyZWN0aW9uOiAnQVNDJywgZmllbGQ6ICdhcHBOYW1lJ31dXG4gIH0pO1xuXG4gIGNvbnN0IGF2YWlsYWJsZSA9IGFuYWx5dGljcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgaXNBZG1pblVzZXIoc2Vzc2lvbikgfHwgKGl0ZW0udXNlcklkcyB8fCBbXSkuaW5jbHVkZXMoc2Vzc2lvbi51c2VySWQpKTtcblxuICBjb25zdCBlbnJpY2hlZCA9IGF3YWl0IFByb21pc2UuYWxsKGF2YWlsYWJsZS5tYXAoYXN5bmMgKGl0ZW0pID0+ICh7XG4gICAgLi4uaXRlbSxcbiAgICBhcHBOYW1lOiBhd2FpdCBnZXRBbmFseXRpY3NBcHBOYW1lKGNvbnRleHQsIGl0ZW0pLFxuICAgIHVzZXJJZHM6IGl0ZW0udXNlcklkcyB8fCBbXVxuICB9KSkpO1xuXG4gIHJldHVybiBlbnJpY2hlZC5zb3J0KChsZWZ0LCByaWdodCkgPT5cbiAgICAobGVmdC5hcHBOYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKHJpZ2h0LmFwcE5hbWUgfHwgJycpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBbmFseXRpY3NBY2Nlc3MgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkSW5wdXQ6IHN0cmluZyxcbiAgdXNlcklkc0lucHV0OiByZWFkb25seSBzdHJpbmdbXVxuKTogUHJvbWlzZTxBbmFseXRpY3NUeXBlPiA9PiB7XG4gIHJlcXVpcmVBZG1pbihjb250ZXh0KTtcbiAgY29uc3QgYW5hbHl0aWNzSWQgPSBub3JtYWxpemVUZXh0KGFuYWx5dGljc0lkSW5wdXQsIDM2KTtcbiAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgZ2V0QW5hbHl0aWNzQnlJZChjb250ZXh0LCBhbmFseXRpY3NJZCk7XG5cbiAgaWYoIWFuYWx5dGljcz8uX2tleSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2FwcCcpO1xuICB9XG5cbiAgY29uc3QgdXNlcklkcyA9IEFycmF5LmZyb20obmV3IFNldCgodXNlcklkc0lucHV0IHx8IFtdKVxuICAgIC5tYXAoKHVzZXJJZCkgPT4gbm9ybWFsaXplVGV4dCh1c2VySWQsIDEyOCkpXG4gICAgLmZpbHRlcihCb29sZWFuKSkpXG4gICAgLnNsaWNlKDAsIDEwMCk7XG5cbiAgcmV0dXJuIHVwZGF0ZUl0ZW08QW5hbHl0aWNzVHlwZT4oY29udGV4dCwgQ09MTEVDVElPTlMuQU5BTFlUSUNTLCBhbmFseXRpY3MuX2tleSwge3VzZXJJZHN9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmFseXRpY3NEYXNoYm9hcmQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkSW5wdXQ6IHN0cmluZyxcbiAgcmFuZ2VEYXlzSW5wdXQ6IG51bWJlclxuKTogUHJvbWlzZTxBbmFseXRpY3NEYXNoYm9hcmRUeXBlPiA9PiB7XG4gIGNvbnN0IGFuYWx5dGljc0lkID0gbm9ybWFsaXplVGV4dChhbmFseXRpY3NJZElucHV0LCAzNik7XG4gIGNvbnN0IHJhbmdlRGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKHJhbmdlRGF5c0lucHV0KSk7XG5cbiAgaWYoIWFuYWx5dGljc0lkIHx8ICFWQUxJRF9SQU5HRV9EQVlTLmhhcyhyYW5nZURheXMpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTKTtcbiAgfVxuXG4gIGNvbnN0IGFuYWx5dGljcyA9IGF3YWl0IGdldEF1dGhvcml6ZWRBbmFseXRpY3MoY29udGV4dCwgYW5hbHl0aWNzSWQpO1xuICBjb25zdCBlbmRUaW1lID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gZW5kVGltZSAtIHJhbmdlRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDAgKyAocmFuZ2VEYXlzID09PSAzMCA/IDYwXzAwMCA6IDApO1xuICBjb25zdCBjbGllbnQgPSBnZXRSdW1DbGllbnQoY29udGV4dCk7XG4gIGNvbnN0IHJhd0V2ZW50czogc3RyaW5nW10gPSBbXTtcbiAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcGFnZSA9IDA7XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldEFwcE1vbml0b3JEYXRhQ29tbWFuZCh7XG4gICAgICBNYXhSZXN1bHRzOiBNQVhfUlVNX1JFU1VMVFMsXG4gICAgICBOYW1lOiBhbmFseXRpY3MubW9uaXRvck5hbWUsXG4gICAgICAuLi4obmV4dFRva2VuID8ge05leHRUb2tlbjogbmV4dFRva2VufSA6IHt9KSxcbiAgICAgIFRpbWVSYW5nZToge0FmdGVyOiBzdGFydFRpbWUsIEJlZm9yZTogZW5kVGltZX1cbiAgICB9KSk7XG4gICAgcmF3RXZlbnRzLnB1c2goLi4uKHJlc3BvbnNlLkV2ZW50cyB8fCBbXSkpO1xuICAgIG5leHRUb2tlbiA9IHJlc3BvbnNlLk5leHRUb2tlbjtcbiAgICBwYWdlICs9IDE7XG4gIH0gd2hpbGUobmV4dFRva2VuICYmIHBhZ2UgPCBNQVhfUlVNX1BBR0VTKTtcblxuICBjb25zdCBldmVudHMgPSByYXdFdmVudHNcbiAgICAubWFwKG5vcm1hbGl6ZVJ1bUV2ZW50KVxuICAgIC5maWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTm9ybWFsaXplZFJ1bUV2ZW50ID0+IEJvb2xlYW4oZXZlbnQgJiYgZXZlbnQuYXBwSWQgPT09IGFuYWx5dGljcy5hcHBJZCkpXG4gICAgLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiByaWdodC50aW1lc3RhbXAgLSBsZWZ0LnRpbWVzdGFtcCk7XG4gIGNvbnN0IHNlc3Npb25zID0gbmV3IFNldChldmVudHMubWFwKChldmVudCkgPT4gZXZlbnQuc2Vzc2lvbklkKS5maWx0ZXIoQm9vbGVhbikpO1xuICBjb25zdCBpbnRlcmFjdGlvbkV2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGV2ZW50KSA9PiAoXG4gICAgZXZlbnQudHlwZSAhPT0gJ3BhZ2VfdmlldycgJiYgZXZlbnQudHlwZSAhPT0gJ3ZpZXdfcGVyZm9ybWFuY2UnXG4gICkpO1xuICBjb25zdCBlcnJvckV2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGV2ZW50KSA9PiAvZXJyb3J8ZXhjZXB0aW9ufGZhaWx1cmUvaS50ZXN0KGAke2V2ZW50LnR5cGV9ICR7ZXZlbnQubmFtZX1gKSk7XG4gIGNvbnN0IGR1cmF0aW9ucyA9IGV2ZW50cy5tYXAoKGV2ZW50KSA9PiBldmVudC5kdXJhdGlvbikuZmlsdGVyKChkdXJhdGlvbikgPT4gZHVyYXRpb24gPiAwKTtcbiAgY29uc3QgYnVja2V0U2l6ZSA9IHJhbmdlRGF5cyA9PT0gMSA/IDYwICogNjAgKiAxMDAwIDogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgY29uc3QgYnVja2V0cyA9IG5ldyBNYXA8bnVtYmVyLCB7ZXJyb3JzOiBudW1iZXI7IGV2ZW50czogbnVtYmVyOyBpbnRlcmFjdGlvbnM6IG51bWJlcjsgc2Vzc2lvbnM6IFNldDxzdHJpbmc+fT4oKTtcblxuICBmb3IobGV0IHRpbWVzdGFtcCA9IE1hdGguZmxvb3Ioc3RhcnRUaW1lIC8gYnVja2V0U2l6ZSkgKiBidWNrZXRTaXplOyB0aW1lc3RhbXAgPD0gZW5kVGltZTsgdGltZXN0YW1wICs9IGJ1Y2tldFNpemUpIHtcbiAgICBidWNrZXRzLnNldCh0aW1lc3RhbXAsIHtlcnJvcnM6IDAsIGV2ZW50czogMCwgaW50ZXJhY3Rpb25zOiAwLCBzZXNzaW9uczogbmV3IFNldCgpfSk7XG4gIH1cblxuICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICBjb25zdCBidWNrZXQgPSBidWNrZXRzLmdldChNYXRoLmZsb29yKGV2ZW50LnRpbWVzdGFtcCAvIGJ1Y2tldFNpemUpICogYnVja2V0U2l6ZSk7XG4gICAgaWYoIWJ1Y2tldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBidWNrZXQuZXZlbnRzICs9IDE7XG4gICAgYnVja2V0LmludGVyYWN0aW9ucyArPSBldmVudC50eXBlID09PSAncGFnZV92aWV3JyB8fCBldmVudC50eXBlID09PSAndmlld19wZXJmb3JtYW5jZScgPyAwIDogMTtcbiAgICBidWNrZXQuZXJyb3JzICs9IC9lcnJvcnxleGNlcHRpb258ZmFpbHVyZS9pLnRlc3QoYCR7ZXZlbnQudHlwZX0gJHtldmVudC5uYW1lfWApID8gMSA6IDA7XG4gICAgaWYoZXZlbnQuc2Vzc2lvbklkKSB7XG4gICAgICBidWNrZXQuc2Vzc2lvbnMuYWRkKGV2ZW50LnNlc3Npb25JZCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFuYWx5dGljc0lkOiBhbmFseXRpY3MuYW5hbHl0aWNzSWQsXG4gICAgYXBwSWQ6IGFuYWx5dGljcy5hcHBJZCxcbiAgICBhcHBOYW1lOiBhd2FpdCBnZXRBbmFseXRpY3NBcHBOYW1lKGNvbnRleHQsIGFuYWx5dGljcyksXG4gICAgYXZlcmFnZUR1cmF0aW9uOiBkdXJhdGlvbnMubGVuZ3RoXG4gICAgICA/IE1hdGgucm91bmQoZHVyYXRpb25zLnJlZHVjZSgodG90YWwsIGR1cmF0aW9uKSA9PiB0b3RhbCArIGR1cmF0aW9uLCAwKSAvIGR1cmF0aW9ucy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgYnJvd3NlcnM6IGNyZWF0ZUJyZWFrZG93bihldmVudHMubWFwKChldmVudCkgPT4gW2V2ZW50LmJyb3dzZXJOYW1lLCBldmVudC5icm93c2VyVmVyc2lvbl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSksIGV2ZW50cy5sZW5ndGgpLFxuICAgIGRldmljZXM6IGNyZWF0ZUJyZWFrZG93bihldmVudHMubWFwKChldmVudCkgPT4gZXZlbnQuZGV2aWNlVHlwZSksIGV2ZW50cy5sZW5ndGgpLFxuICAgIGVuZFRpbWUsXG4gICAgZXJyb3JDb3VudDogZXJyb3JFdmVudHMubGVuZ3RoLFxuICAgIGV2ZW50Q291bnQ6IGV2ZW50cy5sZW5ndGgsXG4gICAgZ2VuZXJhdGVkQXQ6IERhdGUubm93KCksXG4gICAgaW50ZXJhY3Rpb25zOiBjcmVhdGVCcmVha2Rvd24oaW50ZXJhY3Rpb25FdmVudHMubWFwKChldmVudCkgPT4gZXZlbnQuaW50ZXJhY3Rpb24gfHwgZXZlbnQubmFtZSksIGludGVyYWN0aW9uRXZlbnRzLmxlbmd0aCksXG4gICAgbGFuZ3VhZ2VzOiBjcmVhdGVCcmVha2Rvd24oZXZlbnRzLm1hcCgoZXZlbnQpID0+IGV2ZW50LmJyb3dzZXJMYW5ndWFnZSksIGV2ZW50cy5sZW5ndGgpLFxuICAgIG1vbml0b3JJZDogYW5hbHl0aWNzLm1vbml0b3JJZCxcbiAgICBtb25pdG9yTmFtZTogYW5hbHl0aWNzLm1vbml0b3JOYW1lLFxuICAgIG9wZXJhdGluZ1N5c3RlbXM6IGNyZWF0ZUJyZWFrZG93bihldmVudHMubWFwKChldmVudCkgPT4gW2V2ZW50Lm9zTmFtZSwgZXZlbnQub3NWZXJzaW9uXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpKSwgZXZlbnRzLmxlbmd0aCksXG4gICAgcGFnZXM6IGNyZWF0ZUJyZWFrZG93bihldmVudHMubWFwKChldmVudCkgPT4gZXZlbnQucGFnZUlkIHx8IGV2ZW50LnBhdGgpLCBldmVudHMubGVuZ3RoKSxcbiAgICBwYWdlVmlld0NvdW50OiBldmVudHMuZmlsdGVyKChldmVudCkgPT4gZXZlbnQudHlwZSA9PT0gJ3BhZ2VfdmlldycpLmxlbmd0aCxcbiAgICBwYXJ0aWFsOiBCb29sZWFuKG5leHRUb2tlbiksXG4gICAgcGVyZm9ybWFuY2VTYW1wbGVzOiBkdXJhdGlvbnMubGVuZ3RoLFxuICAgIHJlY2VudEV2ZW50czogZXZlbnRzLnNsaWNlKDAsIDEwMCkubWFwKCh7YXBwSWQ6IF9hcHBJZCwgLi4uZXZlbnR9KSA9PiBldmVudCksXG4gICAgc2Vzc2lvbkNvdW50OiBzZXNzaW9ucy5zaXplLFxuICAgIHN0YXJ0VGltZSxcbiAgICB0aW1lbGluZTogQXJyYXkuZnJvbShidWNrZXRzLCAoW3RpbWVzdGFtcCwgYnVja2V0XSkgPT4gKHtcbiAgICAgIGVycm9yczogYnVja2V0LmVycm9ycyxcbiAgICAgIGV2ZW50czogYnVja2V0LmV2ZW50cyxcbiAgICAgIGludGVyYWN0aW9uczogYnVja2V0LmludGVyYWN0aW9ucyxcbiAgICAgIHNlc3Npb25zOiBidWNrZXQuc2Vzc2lvbnMuc2l6ZSxcbiAgICAgIHRpbWVzdGFtcFxuICAgIH0pKSxcbiAgICB2aWV3UGVyZm9ybWFuY2U6IGNyZWF0ZVZpZXdQZXJmb3JtYW5jZShldmVudHMpXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbIkNyZWF0ZUFwcE1vbml0b3JDb21tYW5kIiwiR2V0QXBwTW9uaXRvckNvbW1hbmQiLCJHZXRBcHBNb25pdG9yRGF0YUNvbW1hbmQiLCJSVU1DbGllbnQiLCJjcmVhdGVIYXNoIiwicmFuZG9tVVVJRCIsIkNvbmZpZyIsIkNPTExFQ1RJT05TIiwiRXJyb3JUeXBlcyIsIlVzZXJFcnJvciIsInVzZURiIiwiaXNBZG1pblVzZXIiLCJhZGRJdGVtIiwiZ2V0SXRlbUJ5IiwiZ2V0TGlzdEJ5IiwidXBkYXRlSXRlbSIsIk1BWF9BUFBfSURfTEVOR1RIIiwiTUFYX0RPTUFJTl9MRU5HVEgiLCJNQVhfTU9OSVRPUl9OQU1FX0xFTkdUSCIsIk1BWF9SVU1fUEFHRVMiLCJNQVhfUlVNX1JFU1VMVFMiLCJWQUxJRF9SQU5HRV9EQVlTIiwiU2V0IiwiY29sbGVjdGlvbkluaXRpYWxpemF0aW9uIiwiTWFwIiwibm9ybWFsaXplVGV4dCIsInZhbHVlIiwibWF4TGVuZ3RoIiwiU3RyaW5nIiwidHJpbSIsInNsaWNlIiwibm9ybWFsaXplRG9tYWluIiwicmVwbGFjZSIsInNwbGl0IiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVNb25pdG9yTmFtZSIsImFwcElkIiwiZ2V0RG9jdW1lbnRLZXkiLCJ1cGRhdGUiLCJkaWdlc3QiLCJyZXF1aXJlQWRtaW4iLCJjb250ZXh0Iiwic2Vzc2lvbiIsIklOVkFMSURfU0VTU0lPTiIsInJlcXVpcmVTZXNzaW9uIiwidXNlcklkIiwiaW5pdGlhbGl6ZUFuYWx5dGljc0NvbGxlY3Rpb24iLCJkYXRhYmFzZU5hbWUiLCJjYWNoZUtleSIsImV4aXN0aW5nSW5pdGlhbGl6YXRpb24iLCJnZXQiLCJpbml0aWFsaXphdGlvbiIsImRhdGFiYXNlIiwiY29sbGVjdGlvbiIsIkFOQUxZVElDUyIsImV4aXN0cyIsImNyZWF0ZUNvbGxlY3Rpb24iLCJlcnJvciIsImVuc3VyZUluZGV4IiwiZmllbGRzIiwidHlwZSIsInVuaXF1ZSIsInNldCIsImRlbGV0ZSIsImdldFJ1bUNsaWVudCIsImF3c0NvbmZpZyIsImNvbmZpZyIsImF3cyIsImFjY2Vzc0tleUlkIiwic2VjcmV0QWNjZXNzS2V5Iiwic2Vzc2lvblRva2VuIiwiY3JlZGVudGlhbHMiLCJ1c2VzUnVudGltZUNyZWRlbnRpYWxzIiwiQm9vbGVhbiIsInByb2Nlc3MiLCJlbnYiLCJBV1NfU0VTU0lPTl9UT0tFTiIsIkFXU19BQ0NFU1NfS0VZX0lEIiwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIiwidW5kZWZpbmVkIiwicmVnaW9uIiwiZmluZEF3c01vbml0b3IiLCJjbGllbnQiLCJtb25pdG9yTmFtZSIsInJlc3BvbnNlIiwic2VuZCIsIk5hbWUiLCJtb25pdG9ySWQiLCJBcHBNb25pdG9yIiwiSWQiLCJkb21haW4iLCJEb21haW4iLCJpZCIsIm5hbWUiLCJmaW5kT3JDcmVhdGVBd3NNb25pdG9yIiwiZXhpc3RpbmdNb25pdG9yIiwiQ3VzdG9tRXZlbnRzIiwiU3RhdHVzIiwiQ3dMb2dFbmFibGVkIiwiUGxhdGZvcm0iLCJUYWdzIiwibWFuYWdlZEJ5IiwicGFyc2VNb25pdG9ySW5wdXQiLCJpbnB1dCIsImFwcE5hbWUiLCJJTlZBTElEX0FSR1VNRU5UUyIsImdldEFuYWx5dGljc0J5QXBwSWQiLCJhcHBJZElucHV0IiwiZ2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbiIsImFuYWx5dGljcyIsImFuYWx5dGljc0lkIiwiZ2V0QW5hbHl0aWNzQnlJZCIsImFuYWx5dGljc0lkSW5wdXQiLCJjcmVhdGVBbmFseXRpY3NNb25pdG9yIiwiZXhpc3RpbmciLCJ1c2VySWRzIiwiaW5jbHVkZXMiLCJtb25pdG9yIiwiX2tleSIsInJlZ2VuZXJhdGVBbmFseXRpY3NJZCIsImhhc0FjY2VzcyIsInBhcnNlSnNvblJlY29yZCIsIkFycmF5IiwiaXNBcnJheSIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsImdldFByb3BlcnR5IiwicHJvcGVydGllcyIsIm1ldGFkYXRhIiwiYWxpYXNlcyIsIm5vcm1hbGl6ZWRBbGlhc2VzIiwibWFwIiwiYWxpYXMiLCJlbnRyaWVzIiwiT2JqZWN0IiwiZmluZCIsImtleSIsImhhcyIsIm5vcm1hbGl6ZVJ1bUV2ZW50IiwicmF3RXZlbnQiLCJzb3VyY2UiLCJkZXRhaWxzIiwiZXZlbnRfZGV0YWlscyIsInRpbWVzdGFtcCIsIk51bWJlciIsImV2ZW50X3RpbWVzdGFtcCIsImlzRmluaXRlIiwiZ2V0VGV4dCIsImZhbGxiYWNrIiwiZHVyYXRpb25WYWx1ZSIsInBhdGgiLCJldmVudF90eXBlIiwiYXBwbGljYXRpb25JZCIsImJyb3dzZXJMYW5ndWFnZSIsImJyb3dzZXJOYW1lIiwiYnJvd3NlclZlcnNpb24iLCJkZXZpY2VUeXBlIiwiZHVyYXRpb24iLCJldmVudElkIiwiZXZlbnRfaWQiLCJpbnRlcmFjdGlvbiIsIm9zTmFtZSIsIm9zVmVyc2lvbiIsIm91dGNvbWUiLCJwYWdlSWQiLCJwYXJlbnRQYWdlIiwic2Vzc2lvbklkIiwidXNlcl9kZXRhaWxzIiwidmlld0lkIiwiY3JlYXRlQnJlYWtkb3duIiwidmFsdWVzIiwidG90YWwiLCJjb3VudHMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJsYWJlbCIsImZyb20iLCJjb3VudCIsInBlcmNlbnRhZ2UiLCJNYXRoIiwicm91bmQiLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibG9jYWxlQ29tcGFyZSIsInBlcmNlbnRpbGUiLCJwZXJjZW50aWxlVmFsdWUiLCJsZW5ndGgiLCJzb3J0ZWQiLCJ0b1NvcnRlZCIsImluZGV4IiwibWF4IiwiY2VpbCIsImNyZWF0ZVZpZXdQZXJmb3JtYW5jZSIsImV2ZW50cyIsInZpZXdzIiwiZXZlbnQiLCJzYW1wbGVzIiwicHVzaCIsImR1cmF0aW9ucyIsImZpbHRlciIsImZhaWx1cmVSYXRlIiwicDUwIiwicDc1IiwicDk1Iiwic2FtcGxlQ291bnQiLCJ0aW1lb3V0UmF0ZSIsImdldEF1dGhvcml6ZWRBbmFseXRpY3MiLCJnZXRBbmFseXRpY3NBcHBOYW1lIiwiYXBwIiwiQVBQUyIsImNvbmRpdGlvbnMiLCJmaWVsZCIsIm9wZXJhdG9yIiwibG9naWMiLCJkaXNwbGF5TmFtZSIsImdldEF2YWlsYWJsZUFuYWx5dGljcyIsImRpcmVjdGlvbiIsImF2YWlsYWJsZSIsIml0ZW0iLCJlbnJpY2hlZCIsIlByb21pc2UiLCJhbGwiLCJzZXRBbmFseXRpY3NBY2Nlc3MiLCJ1c2VySWRzSW5wdXQiLCJnZXRBbmFseXRpY3NEYXNoYm9hcmQiLCJyYW5nZURheXNJbnB1dCIsInJhbmdlRGF5cyIsImZsb29yIiwiZW5kVGltZSIsIkRhdGUiLCJub3ciLCJzdGFydFRpbWUiLCJyYXdFdmVudHMiLCJuZXh0VG9rZW4iLCJwYWdlIiwiTWF4UmVzdWx0cyIsIk5leHRUb2tlbiIsIlRpbWVSYW5nZSIsIkFmdGVyIiwiQmVmb3JlIiwiRXZlbnRzIiwic2Vzc2lvbnMiLCJpbnRlcmFjdGlvbkV2ZW50cyIsImVycm9yRXZlbnRzIiwidGVzdCIsImJ1Y2tldFNpemUiLCJidWNrZXRzIiwiZXJyb3JzIiwiaW50ZXJhY3Rpb25zIiwiZm9yRWFjaCIsImJ1Y2tldCIsImFkZCIsImF2ZXJhZ2VEdXJhdGlvbiIsImJyb3dzZXJzIiwiam9pbiIsImRldmljZXMiLCJlcnJvckNvdW50IiwiZXZlbnRDb3VudCIsImdlbmVyYXRlZEF0IiwibGFuZ3VhZ2VzIiwib3BlcmF0aW5nU3lzdGVtcyIsInBhZ2VzIiwicGFnZVZpZXdDb3VudCIsInBhcnRpYWwiLCJwZXJmb3JtYW5jZVNhbXBsZXMiLCJyZWNlbnRFdmVudHMiLCJfYXBwSWQiLCJzZXNzaW9uQ291bnQiLCJz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
|
package/lib/actions/apps.js
CHANGED
|
@@ -218,4 +218,4 @@ export const getApps = async (context, options)=>{
|
|
|
218
218
|
});
|
|
219
219
|
};
|
|
220
220
|
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL2FwcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yLCBsb2dFeGNlcHRpb24sIFVzZXJFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtnZXREb2NJZCwgZ2V0TGltaXQsIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGV9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtpc0FkbWluVXNlcn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvblV0aWxzLmpzJztcbmltcG9ydCB7YWRkSXRlbSwgZGVsZXRlSXRlbSwgZ2V0SXRlbUJ5LCBnZXRMaXN0QnksIHVwZGF0ZUl0ZW19IGZyb20gJy4vY3J1ZC5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtTZXNzaW9ufSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmNvbnN0IGJ1aWxkQXBwR2V0RmlsdGVycyA9ICh7aWQsIGtleSwgbmFtZX06IEFwcE9wdGlvbnMpOiB7bG9naWM6ICdBTkQnOyBjb25kaXRpb25zOiBhbnlbXX0gPT4ge1xuICBjb25zdCBjb25kaXRpb25zOiBhbnlbXSA9IFt7ZmllbGQ6ICdhY3RpdmUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHRydWV9XTtcblxuICBpZihpZCkge1xuICAgIGNvbmRpdGlvbnMucHVzaCh7ZmllbGQ6ICdfaWQnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHBhcnNlQXJhbmdvSWQoaWQpfSk7XG4gIH1cblxuICBpZihrZXkpIHtcbiAgICBjb25kaXRpb25zLnB1c2goe2ZpZWxkOiAnX2tleScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogcGFyc2VJZChrZXkpfSk7XG4gIH1cblxuICBpZihuYW1lKSB7XG4gICAgY29uZGl0aW9ucy5wdXNoKHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJ0NPTlRBSU5TJywgdmFsdWU6IHBhcnNlU3RyaW5nKG5hbWUpfSk7XG4gIH1cblxuICByZXR1cm4ge2xvZ2ljOiAnQU5EJywgY29uZGl0aW9uc307XG59O1xuXG5jb25zdCBnZXRBcHBRdWVyeU9wdGlvbnMgPSAoZmllbGRzOiBzdHJpbmdbXSA9IFtdKSA9PiB7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjdXN0b21PYmplY3RzOiBzZWxlY3RPYmplY3RzLmxlbmd0aCA+IDAgPyBzZWxlY3RPYmplY3RzIDogdW5kZWZpbmVkLFxuICAgIGN1c3RvbVF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXMubGVuZ3RoID4gMCA/IHNlbGVjdFF1ZXJpZXMgOiB1bmRlZmluZWRcbiAgfTtcbn07XG5cbmNvbnN0IGdldEFwcEtleSA9IChhcHA6IEFwcFR5cGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB7X2tleSwgX2lkLCBpZCwgYXBwSWR9ID0gYXBwO1xuICByZXR1cm4gX2tleSB8fCBpZCB8fCBhcHBJZCB8fCBfaWQ/LnNwbGl0KCcvJylbMV07XG59O1xuXG5jb25zdCBidWlsZEFwcE11dGF0aW9uID0gKGFwcDogQXBwVHlwZSk6IFBhcnRpYWw8QXBwVHlwZT4gPT4ge1xuICBjb25zdCB7ZW1haWwgPSAnJywgbmFtZSA9ICcnLCBwaG9uZSA9ICcnfSA9IGFwcDtcblxuICByZXR1cm4ge1xuICAgIGVtYWlsOiBwYXJzZUVtYWlsKGVtYWlsKSxcbiAgICBuYW1lOiBwYXJzZVN0cmluZyhuYW1lKSxcbiAgICBwaG9uZTogcGFyc2VQaG9uZShwaG9uZSlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRBcHAnO1xuICBjb25zdCB7bmFtZSA9ICcnfSA9IGFwcDtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGJ1aWxkQXBwTXV0YXRpb24oYXBwKTtcbiAgY29uc3Qge2VtYWlsOiBmb3JtYXRFbWFpbCwgbmFtZTogZm9ybWF0TmFtZX0gPSBpbnNlcnREYXRhO1xuXG4gIGlmKCFmb3JtYXROYW1lKSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7bmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UU1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBDaGVjayBmb3IgZXhpc3RpbmcgYXBwIHVzaW5nIGdlbmVyaWMgcXVlcnlcbiAgICBjb25zdCBjb25kaXRpb25zOiBhbnlbXSA9IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdE5hbWV9XG4gICAgXTtcblxuICAgIGlmKGZvcm1hdEVtYWlsKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goe2ZpZWxkOiAnZW1haWwnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdEVtYWlsfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdBcHBzID0gYXdhaXQgZ2V0TGlzdEJ5PEFwcFR5cGU+KGNvbnRleHQsICdhcHBzJywge1xuICAgICAgbG9naWM6ICdPUicsXG4gICAgICBjb25kaXRpb25zXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgaWYoZXhpc3RpbmdBcHBzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgcGFyYW1zOiB7bmFtZX0sXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkVYSVNUSU5HX0lURU1cbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAuLi5pbnNlcnREYXRhXG4gIH07XG5cbiAgcmV0dXJuIGF3YWl0IGFkZEl0ZW08QXBwVHlwZT4oY29udGV4dCwgJ2FwcHMnLCBpbnNlcnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYXBwSWRQYXJzZWQgPSBnZXRBcHBLZXkoYXBwKTtcblxuICBpZighYXBwSWRQYXJzZWQpIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uOiAndXBkYXRlQXBwJyxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7YXBwfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdXBkYXRlSXRlbTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGFwcElkUGFyc2VkLCBidWlsZEFwcE11dGF0aW9uKGFwcCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3Qge3Nlc3Npb24gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbiBhcyBTZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcbiAgY29uc3QgZGVsZXRlZEFwcCA9IGF3YWl0IGRlbGV0ZUl0ZW08QXBwVHlwZT4oY29udGV4dCwgJ2FwcHMnLCBhcHBEb2NJZCk7XG5cbiAgaWYgKCFkZWxldGVkQXBwKSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbjogJ2RlbGV0ZUFwcCcsXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2FwcH0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0lEXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gZGVsZXRlZEFwcDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWFjdGl2YXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgdXBkYXRlSXRlbTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGFwcERvY0lkLCB1cGRhdGVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3Qge2ZpZWxkcywgc2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHBhcnNlZE9wdGlvbnMgPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRJdGVtQnk8QXBwVHlwZT4oY29udGV4dCwgJ2FwcHMnLCBidWlsZEFwcEdldEZpbHRlcnMocGFyc2VkT3B0aW9ucykgYXMgYW55LCBnZXRBcHBRdWVyeU9wdGlvbnMoZmllbGRzKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwcyA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBvcHRpb25zPzogQXBwT3B0aW9ucyk6IFByb21pc2U8QXBwVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHtmaWVsZHMsIHNlc3Npb24gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCBwYXJzZWRPcHRpb25zID0gcGFyc2VBcHBPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VkT3B0aW9ucztcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24gYXMgU2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldExpc3RCeTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGJ1aWxkQXBwR2V0RmlsdGVycyhwYXJzZWRPcHRpb25zKSBhcyBhbnksIHtcbiAgICBzb3J0OiBbe2ZpZWxkOiAnbmFtZScsIGRpcmVjdGlvbjogJ0FTQyd9XSxcbiAgICBsaW1pdDoge2Zyb206IGxpbWl0LnN0YXJ0LCB0bzogbGltaXQuc3RhcnQgKyBsaW1pdC5udW19LFxuICAgIC4uLmdldEFwcFF1ZXJ5T3B0aW9ucyhmaWVsZHMpXG4gIH0pO1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VBcmFuZ29JZCIsInBhcnNlRW1haWwiLCJwYXJzZUlkIiwicGFyc2VQaG9uZSIsInBhcnNlU3RyaW5nIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwibG9nRXhjZXB0aW9uIiwiVXNlckVycm9yIiwiZ2V0RG9jSWQiLCJnZXRMaW1pdCIsInNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUiLCJpc0FkbWluVXNlciIsImFkZEl0ZW0iLCJkZWxldGVJdGVtIiwiZ2V0SXRlbUJ5IiwiZ2V0TGlzdEJ5IiwidXBkYXRlSXRlbSIsImV2ZW50Q2F0ZWdvcnkiLCJnZXRBcHBPcHRpb25hbCIsImZpZWxkcyIsInJlZHVjZSIsInNlbGVjdHMiLCJmaWVsZCIsImluY2x1ZGVzIiwib2JqZWN0cyIsInF1ZXJpZXMiLCJwYXJzZUFwcE9wdGlvbnMiLCJvcHRpb25zIiwiZnJvbSIsInRvIiwibGltaXQiLCJidWlsZEFwcEdldEZpbHRlcnMiLCJpZCIsImtleSIsIm5hbWUiLCJjb25kaXRpb25zIiwib3BlcmF0b3IiLCJ2YWx1ZSIsInB1c2giLCJsb2dpYyIsImdldEFwcFF1ZXJ5T3B0aW9ucyIsInNlbGVjdE9iamVjdHMiLCJzZWxlY3RRdWVyaWVzIiwiY3VzdG9tT2JqZWN0cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImN1c3RvbVF1ZXJpZXMiLCJnZXRBcHBLZXkiLCJhcHAiLCJfa2V5IiwiX2lkIiwiYXBwSWQiLCJzcGxpdCIsImJ1aWxkQXBwTXV0YXRpb24iLCJlbWFpbCIsInBob25lIiwiYWRkQXBwIiwiY29udGV4dCIsImFjdGlvbiIsImluc2VydERhdGEiLCJmb3JtYXRFbWFpbCIsImZvcm1hdE5hbWUiLCJjYXRlZ29yeSIsInBhcmFtcyIsIklOVkFMSURfQVJHVU1FTlRTIiwiZXhpc3RpbmdBcHBzIiwiRVhJU1RJTkdfSVRFTSIsImVycm9yIiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsImluc2VydCIsImFjdGl2ZSIsInVwZGF0ZUFwcCIsImFwcElkUGFyc2VkIiwiZGVsZXRlQXBwIiwic2Vzc2lvbiIsImlzQWRtaW4iLCJQcm9taXNlIiwicmVqZWN0IiwiSU5WQUxJRF9TRVNTSU9OIiwiYXBwRG9jSWQiLCJkZWxldGVkQXBwIiwiSU5WQUxJRF9JRCIsImRlYWN0aXZhdGVBcHAiLCJ1cGRhdGVkIiwiZ2V0QXBwIiwicGFyc2VkT3B0aW9ucyIsImdldEFwcHMiLCJzb3J0IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJudW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBQ3JILFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLFNB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
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvYXBwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUFyYW5nb0lkLCBwYXJzZUVtYWlsLCBwYXJzZUlkLCBwYXJzZVBob25lLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgVXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2dldERvY0lkLCBnZXRMaW1pdCwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZX0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2lzQWRtaW5Vc2VyfSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMuanMnO1xuaW1wb3J0IHthZGRJdGVtLCBkZWxldGVJdGVtLCBnZXRJdGVtQnksIGdldExpc3RCeSwgdXBkYXRlSXRlbX0gZnJvbSAnLi9jcnVkLmpzJztcblxuaW1wb3J0IHR5cGUge0FwcFR5cGV9IGZyb20gJy4uL3R5cGVzL2FwcHMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1Nlc3Npb259IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnYXBwcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZyb20/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0QXBwT3B0aW9uYWwgPSAoZmllbGRzOiBzdHJpbmdbXSA9IFtdKSA9PlxuICBmaWVsZHMucmVkdWNlKChzZWxlY3RzLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgaWYoZmllbGQuaW5jbHVkZXMoJ0NvdW50JykpIHtcbiAgICAgIHJldHVybiBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlKCdhcHBzJywgJ2EnLCBmaWVsZCwgc2VsZWN0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdHM7XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQXBwT3B0aW9ucyA9IChvcHRpb25zOiBBcHBPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBsaW1pdFxuICB9O1xufTtcblxuY29uc3QgYnVpbGRBcHBHZXRGaWx0ZXJzID0gKHtpZCwga2V5LCBuYW1lfTogQXBwT3B0aW9ucyk6IHtsb2dpYzogJ0FORCc7IGNvbmRpdGlvbnM6IGFueVtdfSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbnM6IGFueVtdID0gW3tmaWVsZDogJ2FjdGl2ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogdHJ1ZX1dO1xuXG4gIGlmKGlkKSB7XG4gICAgY29uZGl0aW9ucy5wdXNoKHtmaWVsZDogJ19pZCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogcGFyc2VBcmFuZ29JZChpZCl9KTtcbiAgfVxuXG4gIGlmKGtleSkge1xuICAgIGNvbmRpdGlvbnMucHVzaCh7ZmllbGQ6ICdfa2V5Jywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBwYXJzZUlkKGtleSl9KTtcbiAgfVxuXG4gIGlmKG5hbWUpIHtcbiAgICBjb25kaXRpb25zLnB1c2goe2ZpZWxkOiAnbmFtZScsIG9wZXJhdG9yOiAnQ09OVEFJTlMnLCB2YWx1ZTogcGFyc2VTdHJpbmcobmFtZSl9KTtcbiAgfVxuXG4gIHJldHVybiB7bG9naWM6ICdBTkQnLCBjb25kaXRpb25zfTtcbn07XG5cbmNvbnN0IGdldEFwcFF1ZXJ5T3B0aW9ucyA9IChmaWVsZHM6IHN0cmluZ1tdID0gW10pID0+IHtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcblxuICByZXR1cm4ge1xuICAgIGN1c3RvbU9iamVjdHM6IHNlbGVjdE9iamVjdHMubGVuZ3RoID4gMCA/IHNlbGVjdE9iamVjdHMgOiB1bmRlZmluZWQsXG4gICAgY3VzdG9tUXVlcmllczogc2VsZWN0UXVlcmllcy5sZW5ndGggPiAwID8gc2VsZWN0UXVlcmllcyA6IHVuZGVmaW5lZFxuICB9O1xufTtcblxuY29uc3QgZ2V0QXBwS2V5ID0gKGFwcDogQXBwVHlwZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHtfa2V5LCBfaWQsIGlkLCBhcHBJZH0gPSBhcHA7XG4gIHJldHVybiBfa2V5IHx8IGlkIHx8IGFwcElkIHx8IF9pZD8uc3BsaXQoJy8nKVsxXTtcbn07XG5cbmNvbnN0IGJ1aWxkQXBwTXV0YXRpb24gPSAoYXBwOiBBcHBUeXBlKTogUGFydGlhbDxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IHtlbWFpbCA9ICcnLCBuYW1lID0gJycsIHBob25lID0gJyd9ID0gYXBwO1xuXG4gIHJldHVybiB7XG4gICAgZW1haWw6IHBhcnNlRW1haWwoZW1haWwpLFxuICAgIG5hbWU6IHBhcnNlU3RyaW5nKG5hbWUpLFxuICAgIHBob25lOiBwYXJzZVBob25lKHBob25lKVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEFwcCc7XG4gIGNvbnN0IHtuYW1lID0gJyd9ID0gYXBwO1xuICBjb25zdCBpbnNlcnREYXRhID0gYnVpbGRBcHBNdXRhdGlvbihhcHApO1xuICBjb25zdCB7ZW1haWw6IGZvcm1hdEVtYWlsLCBuYW1lOiBmb3JtYXROYW1lfSA9IGluc2VydERhdGE7XG5cbiAgaWYoIWZvcm1hdE5hbWUpIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBhcHAgdXNpbmcgZ2VuZXJpYyBxdWVyeVxuICAgIGNvbnN0IGNvbmRpdGlvbnM6IGFueVtdID0gW1xuICAgICAge2ZpZWxkOiAnbmFtZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0TmFtZX1cbiAgICBdO1xuXG4gICAgaWYoZm9ybWF0RW1haWwpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh7ZmllbGQ6ICdlbWFpbCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0RW1haWx9KTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0FwcHMgPSBhd2FpdCBnZXRMaXN0Qnk8QXBwVHlwZT4oY29udGV4dCwgJ2FwcHMnLCB7XG4gICAgICBsb2dpYzogJ09SJyxcbiAgICAgIGNvbmRpdGlvbnNcbiAgICB9IGFzIGFueSk7XG5cbiAgICBpZihleGlzdGluZ0FwcHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge25hbWV9XG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgaW5zZXJ0OiBBcHBUeXBlID0ge1xuICAgIF9rZXk6IGNyZWF0ZUhhc2gobmFtZSksXG4gICAgYWN0aXZlOiB0cnVlLFxuICAgIC4uLmluc2VydERhdGFcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgYWRkSXRlbTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGluc2VydCk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhcHBJZFBhcnNlZCA9IGdldEFwcEtleShhcHApO1xuXG4gIGlmKCFhcHBJZFBhcnNlZCkge1xuICAgIHRocm93IGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb246ICd1cGRhdGVBcHAnLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHthcHB9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB1cGRhdGVJdGVtPEFwcFR5cGU+KGNvbnRleHQsICdhcHBzJywgYXBwSWRQYXJzZWQsIGJ1aWxkQXBwTXV0YXRpb24oYXBwKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIGNvbnN0IGFwcERvY0lkID0gZ2V0RG9jSWQoJ2FwcHMnLCBhcHApO1xuICBjb25zdCBkZWxldGVkQXBwID0gYXdhaXQgZGVsZXRlSXRlbTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGFwcERvY0lkKTtcblxuICBpZiAoIWRlbGV0ZWRBcHApIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uOiAnZGVsZXRlQXBwJyxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7YXBwfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfSURcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBkZWxldGVkQXBwO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYWN0aXZhdGVBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IHtzZXNzaW9uID0ge319ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24gYXMgU2Vzc2lvbik7XG4gIGNvbnN0IGFwcERvY0lkID0gZ2V0RG9jSWQoJ2FwcHMnLCBhcHApO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWQ6IEFwcFR5cGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuXG4gIHJldHVybiBhd2FpdCB1cGRhdGVJdGVtPEFwcFR5cGU+KGNvbnRleHQsICdhcHBzJywgYXBwRG9jSWQsIHVwZGF0ZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBvcHRpb25zPzogQXBwT3B0aW9ucyk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCB7ZmllbGRzLCBzZXNzaW9uID0ge319ID0gY29udGV4dDtcbiAgY29uc3QgcGFyc2VkT3B0aW9ucyA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24gYXMgU2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEl0ZW1CeTxBcHBUeXBlPihjb250ZXh0LCAnYXBwcycsIGJ1aWxkQXBwR2V0RmlsdGVycyhwYXJzZWRPcHRpb25zKSBhcyBhbnksIGdldEFwcFF1ZXJ5T3B0aW9ucyhmaWVsZHMpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlW10+ID0+IHtcbiAgY29uc3Qge2ZpZWxkcywgc2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHBhcnNlZE9wdGlvbnMgPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZWRPcHRpb25zO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbiBhcyBTZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TGlzdEJ5PEFwcFR5cGU+KGNvbnRleHQsICdhcHBzJywgYnVpbGRBcHBHZXRGaWx0ZXJzKHBhcnNlZE9wdGlvbnMpIGFzIGFueSwge1xuICAgIHNvcnQ6IFt7ZmllbGQ6ICduYW1lJywgZGlyZWN0aW9uOiAnQVNDJ31dLFxuICAgIGxpbWl0OiB7ZnJvbTogbGltaXQuc3RhcnQsIHRvOiBsaW1pdC5zdGFydCArIGxpbWl0Lm51bX0sXG4gICAgLi4uZ2V0QXBwUXVlcnlPcHRpb25zKGZpZWxkcylcbiAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZUFyYW5nb0lkIiwicGFyc2VFbWFpbCIsInBhcnNlSWQiLCJwYXJzZVBob25lIiwicGFyc2VTdHJpbmciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJsb2dFeGNlcHRpb24iLCJVc2VyRXJyb3IiLCJnZXREb2NJZCIsImdldExpbWl0Iiwic2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSIsImlzQWRtaW5Vc2VyIiwiYWRkSXRlbSIsImRlbGV0ZUl0ZW0iLCJnZXRJdGVtQnkiLCJnZXRMaXN0QnkiLCJ1cGRhdGVJdGVtIiwiZXZlbnRDYXRlZ29yeSIsImdldEFwcE9wdGlvbmFsIiwiZmllbGRzIiwicmVkdWNlIiwic2VsZWN0cyIsImZpZWxkIiwiaW5jbHVkZXMiLCJvYmplY3RzIiwicXVlcmllcyIsInBhcnNlQXBwT3B0aW9ucyIsIm9wdGlvbnMiLCJmcm9tIiwidG8iLCJsaW1pdCIsImJ1aWxkQXBwR2V0RmlsdGVycyIsImlkIiwia2V5IiwibmFtZSIsImNvbmRpdGlvbnMiLCJvcGVyYXRvciIsInZhbHVlIiwicHVzaCIsImxvZ2ljIiwiZ2V0QXBwUXVlcnlPcHRpb25zIiwic2VsZWN0T2JqZWN0cyIsInNlbGVjdFF1ZXJpZXMiLCJjdXN0b21PYmplY3RzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY3VzdG9tUXVlcmllcyIsImdldEFwcEtleSIsImFwcCIsIl9rZXkiLCJfaWQiLCJhcHBJZCIsInNwbGl0IiwiYnVpbGRBcHBNdXRhdGlvbiIsImVtYWlsIiwicGhvbmUiLCJhZGRBcHAiLCJjb250ZXh0IiwiYWN0aW9uIiwiaW5zZXJ0RGF0YSIsImZvcm1hdEVtYWlsIiwiZm9ybWF0TmFtZSIsImNhdGVnb3J5IiwicGFyYW1zIiwiSU5WQUxJRF9BUkdVTUVOVFMiLCJleGlzdGluZ0FwcHMiLCJFWElTVElOR19JVEVNIiwiZXJyb3IiLCJsYWJlbCIsIkRBVEFCQVNFX0VSUk9SIiwiaW5zZXJ0IiwiYWN0aXZlIiwidXBkYXRlQXBwIiwiYXBwSWRQYXJzZWQiLCJkZWxldGVBcHAiLCJzZXNzaW9uIiwiaXNBZG1pbiIsIlByb21pc2UiLCJyZWplY3QiLCJJTlZBTElEX1NFU1NJT04iLCJhcHBEb2NJZCIsImRlbGV0ZWRBcHAiLCJJTlZBTElEX0lEIiwiZGVhY3RpdmF0ZUFwcCIsInVwZGF0ZWQiLCJnZXRBcHAiLCJwYXJzZWRPcHRpb25zIiwiZ2V0QXBwcyIsInNvcnQiLCJkaXJlY3Rpb24iLCJzdGFydCIsIm51bSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsUUFBTywrQkFBK0I7QUFDckgsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUNu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
|
|
@@ -125,4 +125,4 @@ export const deleteConnection = (context, fromType, fromId, toType, toId, connec
|
|
|
125
125
|
});
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL2Nvbm5lY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtsaXRlcmFsfSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7YnVpbGRGaWx0ZXJDbGF1c2V9IGZyb20gJy4uL3V0aWxzL2FxbEhlbHBlcnMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHtGaWx0ZXJHcm91cH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHtDb25uZWN0aW9uS2luZHN9IGZyb20gJy4uL3R5cGVzL2Nvbm5lY3Rpb25zLnR5cGVzLmpzJztcblxuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25LaW5kVHlwZSwgQ29ubmVjdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL2Nvbm5lY3Rpb25zLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdjb25uZWN0aW9ucyc7XG5jb25zdCBoYXNDb25uZWN0aW9uQ29sbGVjdGlvbiA9IGxpdGVyYWwoJ2hhc0Nvbm5lY3Rpb24nKTtcblxuY29uc3QgcmVtb3ZlRm9sbG93Q29ubmVjdGlvbnNGb3JCbG9ja2VkUGFpciA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbURvY0lkOiBzdHJpbmcsXG4gIHRvRG9jSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxgXG4gICAgRk9SIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgaGMudHlwZSA9PSAke0Nvbm5lY3Rpb25LaW5kcy5GT0xMT1d9XG4gICAgICBGSUxURVIgKFxuICAgICAgICAoaGMuX2Zyb20gPT0gJHtmcm9tRG9jSWR9ICYmIGhjLl90byA9PSAke3RvRG9jSWR9KVxuICAgICAgICB8fCAoaGMuX2Zyb20gPT0gJHt0b0RvY0lkfSAmJiBoYy5fdG8gPT0gJHtmcm9tRG9jSWR9KVxuICAgICAgKVxuICAgICAgUkVNT1ZFIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gIGApO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZENvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nLFxuICB2YWx1ZT86IHN0cmluZyxcbiAgY29ubmVjdGlvblR5cGU6IENvbm5lY3Rpb25LaW5kVHlwZSA9IENvbm5lY3Rpb25LaW5kcy5GT0xMT1dcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkQ29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICBjb25zdCBmb3JtYXRGcm9tRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG4gIGNvbnN0IGluc2VydCA9IHtcbiAgICBfZnJvbTogZm9ybWF0RnJvbURvY0lkLFxuICAgIF90bzogZm9ybWF0VG9Eb2NJZCxcbiAgICBpc0RpcmVjdDogdHJ1ZSxcbiAgICB0eXBlOiBjb25uZWN0aW9uVHlwZSxcbiAgICB2YWx1ZTogISF2YWx1ZSA/IHBhcnNlU3RyaW5nKHZhbHVlLCAzMikgOiB1bmRlZmluZWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gaGFzQ29ubmVjdGlvbmA7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgaWYoY29ubmVjdGlvblR5cGUgPT09IENvbm5lY3Rpb25LaW5kcy5CTE9DSykge1xuICAgICAgICBhd2FpdCByZW1vdmVGb2xsb3dDb25uZWN0aW9uc0ZvckJsb2NrZWRQYWlyKGNvbnRleHQsIGZvcm1hdEZyb21Eb2NJZCwgZm9ybWF0VG9Eb2NJZCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSkpXG4gICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nLFxuICBjb25uZWN0aW9uVHlwZTogQ29ubmVjdGlvbktpbmRUeXBlID0gQ29ubmVjdGlvbktpbmRzLkZPTExPV1xuKTogUHJvbWlzZTxDb25uZWN0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0Q29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICBjb25zdCBmb3JtYXRGcm9tRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgZmlsdGVyczogRmlsdGVyR3JvdXAgPSB7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ19mcm9tJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRGcm9tRG9jSWR9LFxuICAgICAge2ZpZWxkOiAnX3RvJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRUb0RvY0lkfSxcbiAgICAgIHtmaWVsZDogJ3R5cGUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGNvbm5lY3Rpb25UeXBlfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2UoZmlsdGVycywgJ2hjJyk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBcbiAgICBGT1IgaGMgSU4gJHtoYXNDb25uZWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBoY1xuICBgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZyxcbiAgY29ubmVjdGlvblR5cGU6IENvbm5lY3Rpb25LaW5kVHlwZSA9IENvbm5lY3Rpb25LaW5kcy5GT0xMT1dcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZGVsZXRlQ29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuXG4gIGNvbnN0IGZpbHRlcnM6IEZpbHRlckdyb3VwID0ge1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0RnJvbURvY0lkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0VG9Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICd0eXBlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBjb25uZWN0aW9uVHlwZX1cbiAgICBdXG4gIH07XG4gIGNvbnN0IGZpbHRlckNsYXVzZSA9IGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMsICdoYycpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgXG4gICAgRk9SIGhjIElOICR7aGFzQ29ubmVjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRU1PVkUgaGMgSU4gJHtoYXNDb25uZWN0aW9uQ29sbGVjdGlvbn1cbiAgYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufTtcbiJdLCJuYW1lcyI6WyJwYXJzZUFyYW5nb0lkIiwicGFyc2VTdHJpbmciLCJhcWwiLCJsaXRlcmFsIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwiYnVpbGRGaWx0ZXJDbGF1c2UiLCJ1c2VEYiIsIkNvbm5lY3Rpb25LaW5kcyIsImV2ZW50Q2F0ZWdvcnkiLCJoYXNDb25uZWN0aW9uQ29sbGVjdGlvbiIsInJlbW92ZUZvbGxvd0Nvbm5lY3Rpb25zRm9yQmxvY2tlZFBhaXIiLCJjb250ZXh0IiwiZnJvbURvY0lkIiwidG9Eb2NJZCIsImRhdGFiYXNlTmFtZSIsInF1ZXJ5IiwiRk9MTE9XIiwiYWRkQ29ubmVjdGlvbiIsImZyb21UeXBlIiwiZnJvbUlkIiwidG9UeXBlIiwidG9JZCIsInZhbHVlIiwiY29ubmVjdGlvblR5cGUiLCJhY3Rpb24iLCJmb3JtYXRGcm9tRG9jSWQiLCJmb3JtYXRUb0RvY0lkIiwiaW5zZXJ0IiwiX2Zyb20iLCJfdG8iLCJpc0RpcmVjdCIsInR5cGUiLCJ1bmRlZmluZWQiLCJhcWxRcnkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJCTE9DSyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRDb25uZWN0aW9uIiwiZmlsdGVycyIsImxvZ2ljIiwiY29uZGl0aW9ucyIsImZpZWxkIiwib3BlcmF0b3IiLCJmaWx0ZXJDbGF1c2UiLCJjdXJzb3IiLCJuZXh0IiwiZGVsZXRlQ29ubmVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUUEsYUFBYSxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBQ3hFLFNBQVFDLEdBQUcsUUFBTyxXQUFXO0FBQzdCLFNBQVFDLE9BQU8sUUFBTyxlQUFlO0FBRXJDLFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxRQUFPLDZCQUE2QjtBQUNwRCxTQUFRQyxpQkFBaUIsUUFBTyx5QkFBeUI7QUFDekQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUloRCxTQUFRQyxlQUFlLFFBQU8sZ0NBQWdDO0FBSTlELE1BQU1DLGdCQUFnQjtBQUN0QixNQUFNQywwQkFBMEJQLFFBQVE7QUFFeEMsTUFBTVEsd0NBQXdDLE9BQzVDQyxTQUNBQyxXQUNBQztJQUVBLE1BQU1QLE1BQU1LLFFBQVFHLFlBQVksRUFBRUMsS0FBSyxDQUFDZCxHQUFHLENBQUM7Y0FDaEMsRUFBRVEsd0JBQXdCO3dCQUNoQixFQUFFRixnQkFBZ0JTLE1BQU0sQ0FBQzs7cUJBRTVCLEVBQUVKLFVBQVUsY0FBYyxFQUFFQyxRQUFRO3dCQUNqQyxFQUFFQSxRQUFRLGNBQWMsRUFBRUQsVUFBVTs7bUJBRXpDLEVBQUVILHdCQUF3QjtFQUMzQyxDQUFDO0FBQ0g7QUFFQSxPQUFPLE1BQU1RLGdCQUFnQixDQUMzQk4sU0FDQU8sVUFDQUMsUUFDQUMsUUFDQUMsTUFDQUMsT0FDQUMsaUJBQXFDaEIsZ0JBQWdCUyxNQUFNO0lBRTNELE1BQU1RLFNBQVM7SUFDZixNQUFNLEVBQUNWLFlBQVksRUFBQyxHQUFHSDtJQUV2QixNQUFNYyxrQkFBa0IxQixjQUFjLEdBQUdtQixTQUFTLENBQUMsRUFBRUMsUUFBUTtJQUM3RCxNQUFNTyxn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
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvY29ubmVjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge2xpdGVyYWx9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5cbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtidWlsZEZpbHRlckNsYXVzZX0gZnJvbSAnLi4vdXRpbHMvYXFsSGVscGVycy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcblxuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Nvbm5lY3Rpb25LaW5kc30gZnJvbSAnLi4vdHlwZXMvY29ubmVjdGlvbnMudHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7Q29ubmVjdGlvbktpbmRUeXBlLCBDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29ubmVjdGlvbnMudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ2Nvbm5lY3Rpb25zJztcbmNvbnN0IGhhc0Nvbm5lY3Rpb25Db2xsZWN0aW9uID0gbGl0ZXJhbCgnaGFzQ29ubmVjdGlvbicpO1xuXG5jb25zdCByZW1vdmVGb2xsb3dDb25uZWN0aW9uc0ZvckJsb2NrZWRQYWlyID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tRG9jSWQ6IHN0cmluZyxcbiAgdG9Eb2NJZDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbGBcbiAgICBGT1IgaGMgSU4gJHtoYXNDb25uZWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiBoYy50eXBlID09ICR7Q29ubmVjdGlvbktpbmRzLkZPTExPV31cbiAgICAgIEZJTFRFUiAoXG4gICAgICAgIChoYy5fZnJvbSA9PSAke2Zyb21Eb2NJZH0gJiYgaGMuX3RvID09ICR7dG9Eb2NJZH0pXG4gICAgICAgIHx8IChoYy5fZnJvbSA9PSAke3RvRG9jSWR9ICYmIGhjLl90byA9PSAke2Zyb21Eb2NJZH0pXG4gICAgICApXG4gICAgICBSRU1PVkUgaGMgSU4gJHtoYXNDb25uZWN0aW9uQ29sbGVjdGlvbn1cbiAgYCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIHZhbHVlPzogc3RyaW5nLFxuICBjb25uZWN0aW9uVHlwZTogQ29ubmVjdGlvbktpbmRUeXBlID0gQ29ubmVjdGlvbktpbmRzLkZPTExPV1xuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRDb25uZWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcbiAgY29uc3QgaW5zZXJ0ID0ge1xuICAgIF9mcm9tOiBmb3JtYXRGcm9tRG9jSWQsXG4gICAgX3RvOiBmb3JtYXRUb0RvY0lkLFxuICAgIGlzRGlyZWN0OiB0cnVlLFxuICAgIHR5cGU6IGNvbm5lY3Rpb25UeXBlLFxuICAgIHZhbHVlOiAhIXZhbHVlID8gcGFyc2VTdHJpbmcodmFsdWUsIDMyKSA6IHVuZGVmaW5lZFxuICB9O1xuICBjb25zdCBhcWxRcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBoYXNDb25uZWN0aW9uYDtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZihjb25uZWN0aW9uVHlwZSA9PT0gQ29ubmVjdGlvbktpbmRzLkJMT0NLKSB7XG4gICAgICAgIGF3YWl0IHJlbW92ZUZvbGxvd0Nvbm5lY3Rpb25zRm9yQmxvY2tlZFBhaXIoY29udGV4dCwgZm9ybWF0RnJvbURvY0lkLCBmb3JtYXRUb0RvY0lkKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIGNvbm5lY3Rpb25UeXBlOiBDb25uZWN0aW9uS2luZFR5cGUgPSBDb25uZWN0aW9uS2luZHMuRk9MTE9XXG4pOiBQcm9taXNlPENvbm5lY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRDb25uZWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcblxuICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJHcm91cCA9IHtcbiAgICBsb2dpYzogJ0FORCcsXG4gICAgY29uZGl0aW9uczogW1xuICAgICAge2ZpZWxkOiAnX2Zyb20nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdEZyb21Eb2NJZH0sXG4gICAgICB7ZmllbGQ6ICdfdG8nLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFRvRG9jSWR9LFxuICAgICAge2ZpZWxkOiAndHlwZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogY29ubmVjdGlvblR5cGV9XG4gICAgXVxuICB9O1xuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZShmaWx0ZXJzLCAnaGMnKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYFxuICAgIEZPUiBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJDbGF1c2UpfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIGhjXG4gIGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nLFxuICBjb25uZWN0aW9uVHlwZTogQ29ubmVjdGlvbktpbmRUeXBlID0gQ29ubmVjdGlvbktpbmRzLkZPTExPV1xuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVDb25uZWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRGcm9tRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgZmlsdGVyczogRmlsdGVyR3JvdXAgPSB7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ19mcm9tJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRGcm9tRG9jSWR9LFxuICAgICAge2ZpZWxkOiAnX3RvJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRUb0RvY0lkfSxcbiAgICAgIHtmaWVsZDogJ3R5cGUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGNvbm5lY3Rpb25UeXBlfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2UoZmlsdGVycywgJ2hjJyk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBcbiAgICBGT1IgaGMgSU4gJHtoYXNDb25uZWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSBoYyBJTiAke2hhc0Nvbm5lY3Rpb25Db2xsZWN0aW9ufVxuICBgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbInBhcnNlQXJhbmdvSWQiLCJwYXJzZVN0cmluZyIsImFxbCIsImxpdGVyYWwiLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJidWlsZEZpbHRlckNsYXVzZSIsInVzZURiIiwiQ29ubmVjdGlvbktpbmRzIiwiZXZlbnRDYXRlZ29yeSIsImhhc0Nvbm5lY3Rpb25Db2xsZWN0aW9uIiwicmVtb3ZlRm9sbG93Q29ubmVjdGlvbnNGb3JCbG9ja2VkUGFpciIsImNvbnRleHQiLCJmcm9tRG9jSWQiLCJ0b0RvY0lkIiwiZGF0YWJhc2VOYW1lIiwicXVlcnkiLCJGT0xMT1ciLCJhZGRDb25uZWN0aW9uIiwiZnJvbVR5cGUiLCJmcm9tSWQiLCJ0b1R5cGUiLCJ0b0lkIiwidmFsdWUiLCJjb25uZWN0aW9uVHlwZSIsImFjdGlvbiIsImZvcm1hdEZyb21Eb2NJZCIsImZvcm1hdFRvRG9jSWQiLCJpbnNlcnQiLCJfZnJvbSIsIl90byIsImlzRGlyZWN0IiwidHlwZSIsInVuZGVmaW5lZCIsImFxbFFyeSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIkJMT0NLIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsImdldENvbm5lY3Rpb24iLCJmaWx0ZXJzIiwibG9naWMiLCJjb25kaXRpb25zIiwiZmllbGQiLCJvcGVyYXRvciIsImZpbHRlckNsYXVzZSIsImN1cnNvciIsIm5leHQiLCJkZWxldGVDb25uZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFRQSxhQUFhLEVBQUVDLFdBQVcsUUFBTywrQkFBK0I7QUFDeEUsU0FBUUMsR0FBRyxRQUFPLFdBQVc7QUFDN0IsU0FBUUMsT0FBTyxRQUFPLGVBQWU7QUFFckMsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUNuRCxTQUFRQyxRQUFRLFFBQU8sNkJBQTZCO0FBQ3BELFNBQVFDLGlCQUFpQixRQUFPLHlCQUF5QjtBQUN6RCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBSWhELFNBQVFDLGVBQWUsUUFBTyxnQ0FBZ0M7QUFJOUQsTUFBTUMsZ0JBQWdCO0FBQ3RCLE1BQU1DLDBCQUEwQlAsUUFBUTtBQUV4QyxNQUFNUSx3Q0FBd0MsT0FDNUNDLFNBQ0FDLFdBQ0FDO0lBRUEsTUFBTVAsTUFBTUssUUFBUUcsWUFBWSxFQUFFQyxLQUFLLENBQUNkLEdBQUcsQ0FBQztjQUNoQyxFQUFFUSx3QkFBd0I7d0JBQ2hCLEVBQUVGLGdCQUFnQlMsTUFBTSxDQUFDOztxQkFFNUIsRUFBRUosVUFBVSxjQUFjLEVBQUVDLFFBQVE7d0JBQ2pDLEVBQUVBLFFBQVEsY0FBYyxFQUFFRCxVQUFVOzttQkFFekMsRUFBRUgsd0JBQXdCO0VBQzNDLENBQUM7QUFDSDtBQUVBLE9BQU8sTUFBTVEsZ0JBQWdCLENBQzNCTixTQUNBTyxVQUNBQyxRQUNBQyxRQUNBQyxNQUNBQyxPQUNBQyxpQkFBcUNoQixnQkFBZ0JTLE1BQU07SUFFM0QsTUFBTVEsU0FBUztJQUNmLE1BQU0sRUFBQ1YsWUFBWSxFQUFDLEdBQUdIO0lBRXZCLE1BQU1jLGtCQUFrQjFCLGNBQWMsR0FBR21CLFNB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
|
package/lib/actions/content.js
CHANGED
|
@@ -209,4 +209,4 @@ export const searchContent = async (context, options = {})=>{
|
|
|
209
209
|
return contentList.map((content)=>parseContentFromDb(content));
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL2NvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuXG5pbXBvcnQge3BhcnNlQ29udGVudEZyb21EYiwgcGFyc2VDb250ZW50SW5wdXR9IGZyb20gJy4uL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyLmpzJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHt0cmFuc2xhdGVUZXh0fSBmcm9tICcuLi91dGlscy9nb29nbGVUcmFuc2xhdGUuanMnO1xuaW1wb3J0IHtleHRyYWN0TGFuZ3VhZ2UsIGlzUmVnaW9uYWxMb2NhbGV9IGZyb20gJy4uL3V0aWxzL2xvY2FsZVV0aWxzLmpzJztcbmltcG9ydCB7YWRkSXRlbSwgZ2V0SXRlbUJ5LCBnZXRMaXN0QnksIHVwZGF0ZUl0ZW19IGZyb20gJy4vY3J1ZC5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtDb250ZW50SW5wdXRUeXBlLCBDb250ZW50T3B0aW9ucywgQ29udGVudFR5cGUsIExvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7RmlsdGVyR3JvdXB9IGZyb20gJy4uL3V0aWxzL2FxbEhlbHBlcnMuanMnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb250ZW50T3B0aW9ucyA9IChvcHRpb25zOiBDb250ZW50T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjYXRlZ29yeSxcbiAgICBpc0FjdGl2ZSA9IHRydWUsXG4gICAga2V5LFxuICAgIGxvY2FsZVxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSA/IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApIDogdW5kZWZpbmVkLFxuICAgIGlzQWN0aXZlLFxuICAgIGtleToga2V5ID8gcGFyc2VTdHJpbmcoa2V5LCAyMDApIDogdW5kZWZpbmVkLFxuICAgIGxvY2FsZVxuICB9O1xufTtcblxuY29uc3QgYnVpbGRDb250ZW50RmlsdGVycyA9IChvcHRpb25zOiBDb250ZW50T3B0aW9ucyA9IHt9KTogRmlsdGVyR3JvdXAgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB7Y2F0ZWdvcnksIGlzQWN0aXZlLCBrZXksIGxvY2FsZX0gPSBwYXJzZUNvbnRlbnRPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCBmaWx0ZXJzOiBhbnlbXSA9IFtdO1xuXG4gIGlmKGtleSkge1xuICAgIGZpbHRlcnMucHVzaCh7ZmllbGQ6ICdrZXknLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGtleX0pO1xuICB9XG5cbiAgaWYobG9jYWxlKSB7XG4gICAgZmlsdGVycy5wdXNoKHtmaWVsZDogJ2xvY2FsZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogbG9jYWxlfSk7XG4gIH1cblxuICBpZihjYXRlZ29yeSkge1xuICAgIGZpbHRlcnMucHVzaCh7ZmllbGQ6ICdjYXRlZ29yeScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogY2F0ZWdvcnl9KTtcbiAgfVxuXG4gIGlmKGlzQWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAnaXNBY3RpdmUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGlzQWN0aXZlfSk7XG4gIH1cblxuICByZXR1cm4gZmlsdGVycy5sZW5ndGggPiAwID8ge29wZXJhdG9yOiAnQU5EJywgZmlsdGVyc30gYXMgYW55IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgYnVpbGRDb250ZW50TXV0YXRpb24gPSAoXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZSxcbiAgb3B0aW9uczoge3JlYWRvbmx5IGluY2x1ZGVJZGVudGl0eT86IGJvb2xlYW59ID0ge31cbik6IFBhcnRpYWw8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtcbiAgICBjYXRlZ29yeSxcbiAgICBjb250ZW50LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGlzQWN0aXZlLFxuICAgIGtleSxcbiAgICBsb2NhbGU6IHBhcnNlZExvY2FsZVxuICB9ID0gcGFyc2VkQ29udGVudDtcbiAgY29uc3Qge2luY2x1ZGVJZGVudGl0eSA9IGZhbHNlfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvY2FsZTogTG9jYWxlID0gcGFyc2VkTG9jYWxlIHx8ICdlbic7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oaW5jbHVkZUlkZW50aXR5ICYmIHtrZXk6IGtleSA/IHBhcnNlU3RyaW5nKGtleSwgMjAwKSA6IHVuZGVmaW5lZCwgbG9jYWxlfSksXG4gICAgY29udGVudDogY29udGVudCAhPT0gdW5kZWZpbmVkID8gcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApIDogdW5kZWZpbmVkLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8gKGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyA6IHVuZGVmaW5lZCxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnkgIT09IHVuZGVmaW5lZCA/IChjYXRlZ29yeSA/IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApIDogdW5kZWZpbmVkKSBhcyBzdHJpbmcgOiB1bmRlZmluZWQsXG4gICAgaXNBY3RpdmVcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBrZXk6IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlIHwgbnVsbD4gPT4ge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZ2V0SXRlbUJ5PENvbnRlbnRUeXBlPihjb250ZXh0LCAnY29udGVudCcsIGJ1aWxkQ29udGVudEZpbHRlcnMoe2tleSwgbG9jYWxlLCBpc0FjdGl2ZTogdHJ1ZX0pKTtcbiAgcmV0dXJuIGNvbnRlbnQgPyBwYXJzZUNvbnRlbnRGcm9tRGIoY29udGVudCkgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRlbnRXaXRoRmFsbGJhY2sgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBmYWxsYmFja0NvbnRlbnQ6IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBhcHBMb2NhbGUgPSAoQ29uZmlnLmdldCgnYXBwLmxvY2FsZScpIHx8ICdlbicpIGFzIExvY2FsZTtcblxuICB0cnkge1xuICAgIGxldCBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxvY2FsZSk7XG5cbiAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUobG9jYWxlKSkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKTtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbGFuZ3VhZ2UgYXMgTG9jYWxlKTtcblxuICAgICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogY29udGVudC5jb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEV4dHJhY3RlZCBmcm9tICR7bGFuZ3VhZ2V9YFxuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGV4dHJhY3RlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYobG9jYWxlID09PSBhcHBMb2NhbGUpIHtcbiAgICAgIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMb2NhbGUpO1xuICAgICAgbGV0IHNvdXJjZVRleHQ6IHN0cmluZztcblxuICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoaXNSZWdpb25hbExvY2FsZShhcHBMb2NhbGUpKSB7XG4gICAgICAgICAgY29uc3QgYXBwTGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKTtcbiAgICAgICAgICBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExhbmd1YWdlIGFzIExvY2FsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgICAgfSBlbHNlIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBmYWxsYmFja0NvbnRlbnQ7XG5cbiAgICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICAgIGxvY2FsZTogYXBwTG9jYWxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBhcyBkZWZhdWx0IGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRUZXh0ID0gYXdhaXQgdHJhbnNsYXRlVGV4dChzb3VyY2VUZXh0LCBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKSwgZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSkpO1xuXG4gICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAga2V5LFxuICAgICAgICBjb250ZW50OiB0cmFuc2xhdGVkVGV4dCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEF1dG8tdHJhbnNsYXRlZCBmcm9tICR7YXBwTG9jYWxlfWBcbiAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHRyYW5zbGF0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cmFuc2xhdGVkVGV4dDtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zbGF0aW9uIGVycm9yOicsIHRyYW5zbGF0aW9uRXJyb3IpO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjb250ZW50IGZyb20gZGF0YWJhc2U6JywgZXJyb3IpO1xuICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IHtzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgY29udGVudCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlOiBwYXJzZWRMb2NhbGVcbiAgfSA9IHBhcnNlZENvbnRlbnQ7XG4gIGNvbnN0IGxvY2FsZTogTG9jYWxlID0gcGFyc2VkTG9jYWxlIHx8ICdlbic7XG4gIGNvbnN0IGNvbnRlbnRJZCA9IGNyZWF0ZUhhc2goYGNvbnRlbnQtJHtrZXl9LSR7bG9jYWxlfWApO1xuICBjb25zdCBpbnNlcnQ6IENvbnRlbnRUeXBlID0ge1xuICAgIF9rZXk6IGNvbnRlbnRJZCxcbiAgICBrZXk6IHBhcnNlU3RyaW5nKGtleSwgMjAwKSxcbiAgICBsb2NhbGUsXG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHtkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZH0pLFxuICAgIC4uLihjYXRlZ29yeSAhPT0gdW5kZWZpbmVkICYmIHtjYXRlZ29yeTogY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZH0pLFxuICAgIC4uLihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkICYmIHtpc0FjdGl2ZX0pLFxuICAgIHVzZXJJZDogc2Vzc2lvbj8udXNlcklkIGFzIHN0cmluZ1xuICB9O1xuXG4gIGNvbnN0IHNhdmVkQ29udGVudCA9IGF3YWl0IGFkZEl0ZW08Q29udGVudFR5cGU+KGNvbnRleHQsICdjb250ZW50JywgaW5zZXJ0KTtcbiAgcmV0dXJuIHBhcnNlQ29udGVudEZyb21EYihzYXZlZENvbnRlbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZVxuKTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge2NvbnRlbnRJZH0gPSBwYXJzZWRDb250ZW50O1xuXG4gIGlmKCFjb250ZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHVwZGF0ZScpO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZENvbnRlbnQgPSBhd2FpdCB1cGRhdGVJdGVtPENvbnRlbnRUeXBlPihjb250ZXh0LCAnY29udGVudCcsIGNvbnRlbnRJZCwgYnVpbGRDb250ZW50TXV0YXRpb24oY29udGVudElucHV0KSk7XG5cbiAgaWYoIXVwZGF0ZWRDb250ZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb250ZW50IG5vdCBmb3VuZCBvciBhY2Nlc3MgZGVuaWVkJyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHVwZGF0ZWRDb250ZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBvcHRpb25zOiBDb250ZW50T3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPENvbnRlbnRUeXBlW10+ID0+IHtcbiAgY29uc3QgY29udGVudExpc3QgPSBhd2FpdCBnZXRMaXN0Qnk8Q29udGVudFR5cGU+KFxuICAgIGNvbnRleHQsXG4gICAgJ2NvbnRlbnQnLFxuICAgIGJ1aWxkQ29udGVudEZpbHRlcnMob3B0aW9ucyksXG4gICAge3NvcnQ6IFt7ZmllbGQ6ICdrZXknLCBkaXJlY3Rpb246ICdBU0MnfSwge2ZpZWxkOiAnbG9jYWxlJywgZGlyZWN0aW9uOiAnQVNDJ31dfVxuICApO1xuXG4gIHJldHVybiBjb250ZW50TGlzdC5tYXAoKGNvbnRlbnQpID0+IHBhcnNlQ29udGVudEZyb21EYihjb250ZW50KSk7XG59O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZVN0cmluZyIsInBhcnNlQ29udGVudEZyb21EYiIsInBhcnNlQ29udGVudElucHV0IiwiQ29uZmlnIiwidHJhbnNsYXRlVGV4dCIsImV4dHJhY3RMYW5ndWFnZSIsImlzUmVnaW9uYWxMb2NhbGUiLCJhZGRJdGVtIiwiZ2V0SXRlbUJ5IiwiZ2V0TGlzdEJ5IiwidXBkYXRlSXRlbSIsInBhcnNlQ29udGVudE9wdGlvbnMiLCJvcHRpb25zIiwiY2F0ZWdvcnkiLCJpc0FjdGl2ZSIsImtleSIsImxvY2FsZSIsInVuZGVmaW5lZCIsImJ1aWxkQ29udGVudEZpbHRlcnMiLCJmaWx0ZXJzIiwicHVzaCIsImZpZWxkIiwib3BlcmF0b3IiLCJ2YWx1ZSIsImxlbmd0aCIsImJ1aWxkQ29udGVudE11dGF0aW9uIiwiY29udGVudElucHV0IiwicGFyc2VkQ29udGVudCIsImNvbnRlbnQiLCJkZXNjcmlwdGlvbiIsInBhcnNlZExvY2FsZSIsImluY2x1ZGVJZGVudGl0eSIsImdldENvbnRlbnQiLCJjb250ZXh0IiwiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsImZhbGxiYWNrQ29udGVudCIsImFwcExvY2FsZSIsImdldCIsImxhbmd1YWdlIiwiYWRkQ29udGVudCIsImNhdGNoIiwic2F2ZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwic291cmNlQ29udGVudCIsInNvdXJjZVRleHQiLCJhcHBMYW5ndWFnZSIsInRyYW5zbGF0ZWRUZXh0IiwidHJhbnNsYXRpb25FcnJvciIsInNlc3Npb24iLCJjb250ZW50SWQiLCJpbnNlcnQiLCJfa2V5IiwidXNlcklkIiwic2F2ZWRDb250ZW50IiwidXBkYXRlQ29udGVudCIsIkVycm9yIiwidXBkYXRlZENvbnRlbnQiLCJzZWFyY2hDb250ZW50IiwiY29udGVudExpc3QiLCJzb3J0IiwiZGlyZWN0aW9uIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFdBQVcsUUFBTywrQkFBK0I7QUFFckUsU0FBUUMsa0JBQWtCLEVBQUVDLGlCQUFpQixRQUFPLGdDQUFnQztBQUNwRixTQUFRQyxNQUFNLFFBQU8sZUFB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
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvY29udGVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5cbmltcG9ydCB7cGFyc2VDb250ZW50RnJvbURiLCBwYXJzZUNvbnRlbnRJbnB1dH0gZnJvbSAnLi4vYWRhcHRlcnMvY29udGVudEFkYXB0ZXIuanMnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge3RyYW5zbGF0ZVRleHR9IGZyb20gJy4uL3V0aWxzL2dvb2dsZVRyYW5zbGF0ZS5qcyc7XG5pbXBvcnQge2V4dHJhY3RMYW5ndWFnZSwgaXNSZWdpb25hbExvY2FsZX0gZnJvbSAnLi4vdXRpbHMvbG9jYWxlVXRpbHMuanMnO1xuaW1wb3J0IHthZGRJdGVtLCBnZXRJdGVtQnksIGdldExpc3RCeSwgdXBkYXRlSXRlbX0gZnJvbSAnLi9jcnVkLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0NvbnRlbnRJbnB1dFR5cGUsIENvbnRlbnRPcHRpb25zLCBDb250ZW50VHlwZSwgTG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtGaWx0ZXJHcm91cH0gZnJvbSAnLi4vdXRpbHMvYXFsSGVscGVycy5qcyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRPcHRpb25zID0gKG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGlzQWN0aXZlID0gdHJ1ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB7XG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQsXG4gICAgaXNBY3RpdmUsXG4gICAga2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsXG4gICAgbG9jYWxlXG4gIH07XG59O1xuXG5jb25zdCBidWlsZENvbnRlbnRGaWx0ZXJzID0gKG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge30pOiBGaWx0ZXJHcm91cCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHtjYXRlZ29yeSwgaXNBY3RpdmUsIGtleSwgbG9jYWxlfSA9IHBhcnNlQ29udGVudE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGZpbHRlcnM6IGFueVtdID0gW107XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVycy5wdXNoKHtmaWVsZDogJ2tleScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZToga2V5fSk7XG4gIH1cblxuICBpZihsb2NhbGUpIHtcbiAgICBmaWx0ZXJzLnB1c2goe2ZpZWxkOiAnbG9jYWxlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBsb2NhbGV9KTtcbiAgfVxuXG4gIGlmKGNhdGVnb3J5KSB7XG4gICAgZmlsdGVycy5wdXNoKHtmaWVsZDogJ2NhdGVnb3J5Jywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBjYXRlZ29yeX0pO1xuICB9XG5cbiAgaWYoaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZpbHRlcnMucHVzaCh7ZmllbGQ6ICdpc0FjdGl2ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogaXNBY3RpdmV9KTtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJzLmxlbmd0aCA+IDAgPyB7b3BlcmF0b3I6ICdBTkQnLCBmaWx0ZXJzfSBhcyBhbnkgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBidWlsZENvbnRlbnRNdXRhdGlvbiA9IChcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlLFxuICBvcHRpb25zOiB7cmVhZG9ubHkgaW5jbHVkZUlkZW50aXR5PzogYm9vbGVhbn0gPSB7fVxuKTogUGFydGlhbDxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGNvbnRlbnQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXNBY3RpdmUsXG4gICAga2V5LFxuICAgIGxvY2FsZTogcGFyc2VkTG9jYWxlXG4gIH0gPSBwYXJzZWRDb250ZW50O1xuICBjb25zdCB7aW5jbHVkZUlkZW50aXR5ID0gZmFsc2V9ID0gb3B0aW9ucztcbiAgY29uc3QgbG9jYWxlOiBMb2NhbGUgPSBwYXJzZWRMb2NhbGUgfHwgJ2VuJztcblxuICByZXR1cm4ge1xuICAgIC4uLihpbmNsdWRlSWRlbnRpdHkgJiYge2tleToga2V5ID8gcGFyc2VTdHJpbmcoa2V5LCAyMDApIDogdW5kZWZpbmVkLCBsb2NhbGV9KSxcbiAgICBjb250ZW50OiBjb250ZW50ICE9PSB1bmRlZmluZWQgPyBwYXJzZVN0cmluZyhjb250ZW50LCAxMDAwMCkgOiB1bmRlZmluZWQsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgPyAoZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZCkgYXMgc3RyaW5nIDogdW5kZWZpbmVkLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSAhPT0gdW5kZWZpbmVkID8gKGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyA6IHVuZGVmaW5lZCxcbiAgICBpc0FjdGl2ZVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbik6IFByb21pc2U8Q29udGVudFR5cGUgfCBudWxsPiA9PiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBnZXRJdGVtQnk8Q29udGVudFR5cGU+KGNvbnRleHQsICdjb250ZW50JywgYnVpbGRDb250ZW50RmlsdGVycyh7a2V5LCBsb2NhbGUsIGlzQWN0aXZlOiB0cnVlfSkpO1xuICByZXR1cm4gY29udGVudCA/IHBhcnNlQ29udGVudEZyb21EYihjb250ZW50KSA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudFdpdGhGYWxsYmFjayA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGZhbGxiYWNrQ29udGVudDogc3RyaW5nLFxuICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGFwcExvY2FsZSA9IChDb25maWcuZ2V0KCdhcHAubG9jYWxlJykgfHwgJ2VuJykgYXMgTG9jYWxlO1xuXG4gIHRyeSB7XG4gICAgbGV0IGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbG9jYWxlKTtcblxuICAgIGlmKGNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgaWYoaXNSZWdpb25hbExvY2FsZShsb2NhbGUpKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShsb2NhbGUpO1xuICAgICAgY29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBsYW5ndWFnZSBhcyBMb2NhbGUpO1xuXG4gICAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjb250ZW50OiBjb250ZW50LmNvbnRlbnQsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRXh0cmFjdGVkIGZyb20gJHtsYW5ndWFnZX1gXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZXh0cmFjdGVkIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQuY29udGVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihsb2NhbGUgPT09IGFwcExvY2FsZSkge1xuICAgICAgaWYoZmFsbGJhY2tDb250ZW50KSB7XG4gICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjb250ZW50OiBmYWxsYmFja0NvbnRlbnQsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXV0by1nZW5lcmF0ZWQgZnJvbSBmYWxsYmFjaydcbiAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExvY2FsZSk7XG4gICAgICBsZXQgc291cmNlVGV4dDogc3RyaW5nO1xuXG4gICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgIHNvdXJjZVRleHQgPSBzb3VyY2VDb250ZW50LmNvbnRlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihpc1JlZ2lvbmFsTG9jYWxlKGFwcExvY2FsZSkpIHtcbiAgICAgICAgICBjb25zdCBhcHBMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShhcHBMb2NhbGUpO1xuICAgICAgICAgIHNvdXJjZUNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgYXBwTGFuZ3VhZ2UgYXMgTG9jYWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHNvdXJjZUNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgICB9IGVsc2UgaWYoZmFsbGJhY2tDb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IGZhbGxiYWNrQ29udGVudDtcblxuICAgICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgICAgbG9jYWxlOiBhcHBMb2NhbGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGZhbGxiYWNrIGFzIGRlZmF1bHQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJhbnNsYXRlZFRleHQgPSBhd2FpdCB0cmFuc2xhdGVUZXh0KHNvdXJjZVRleHQsIGV4dHJhY3RMYW5ndWFnZShsb2NhbGUpLCBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKSk7XG5cbiAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICBrZXksXG4gICAgICAgIGNvbnRlbnQ6IHRyYW5zbGF0ZWRUZXh0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQXV0by10cmFuc2xhdGVkIGZyb20gJHthcHBMb2NhbGV9YFxuICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgdHJhbnNsYXRlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRUZXh0O1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignVHJhbnNsYXRpb24gZXJyb3I6JywgdHJhbnNsYXRpb25FcnJvcik7XG5cbiAgICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICAgIH1cbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbnRlbnQgZnJvbSBkYXRhYmFzZTonLCBlcnJvcik7XG4gICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGVcbik6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3Qge3Nlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtcbiAgICBjYXRlZ29yeSxcbiAgICBjb250ZW50LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGlzQWN0aXZlLFxuICAgIGtleSxcbiAgICBsb2NhbGU6IHBhcnNlZExvY2FsZVxuICB9ID0gcGFyc2VkQ29udGVudDtcbiAgY29uc3QgbG9jYWxlOiBMb2NhbGUgPSBwYXJzZWRMb2NhbGUgfHwgJ2VuJztcbiAgY29uc3QgY29udGVudElkID0gY3JlYXRlSGFzaChgY29udGVudC0ke2tleX0tJHtsb2NhbGV9YCk7XG4gIGNvbnN0IGluc2VydDogQ29udGVudFR5cGUgPSB7XG4gICAgX2tleTogY29udGVudElkLFxuICAgIGtleTogcGFyc2VTdHJpbmcoa2V5LCAyMDApLFxuICAgIGxvY2FsZSxcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhjb250ZW50LCAxMDAwMCksXG4gICAgLi4uKGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYge2Rlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkfSksXG4gICAgLi4uKGNhdGVnb3J5ICE9PSB1bmRlZmluZWQgJiYge2NhdGVnb3J5OiBjYXRlZ29yeSA/IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApIDogdW5kZWZpbmVkfSksXG4gICAgLi4uKGlzQWN0aXZlICE9PSB1bmRlZmluZWQgJiYge2lzQWN0aXZlfSksXG4gICAgdXNlcklkOiBzZXNzaW9uPy51c2VySWQgYXMgc3RyaW5nXG4gIH07XG5cbiAgY29uc3Qgc2F2ZWRDb250ZW50ID0gYXdhaXQgYWRkSXRlbTxDb250ZW50VHlwZT4oY29udGV4dCwgJ2NvbnRlbnQnLCBpbnNlcnQpO1xuICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHNhdmVkQ29udGVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7Y29udGVudElkfSA9IHBhcnNlZENvbnRlbnQ7XG5cbiAgaWYoIWNvbnRlbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCBJRCBpcyByZXF1aXJlZCBmb3IgdXBkYXRlJyk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkQ29udGVudCA9IGF3YWl0IHVwZGF0ZUl0ZW08Q29udGVudFR5cGU+KGNvbnRleHQsICdjb250ZW50JywgY29udGVudElkLCBidWlsZENvbnRlbnRNdXRhdGlvbihjb250ZW50SW5wdXQpKTtcblxuICBpZighdXBkYXRlZENvbnRlbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgbm90IGZvdW5kIG9yIGFjY2VzcyBkZW5pZWQnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUNvbnRlbnRGcm9tRGIodXBkYXRlZENvbnRlbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaENvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge31cbik6IFByb21pc2U8Q29udGVudFR5cGVbXT4gPT4ge1xuICBjb25zdCBjb250ZW50TGlzdCA9IGF3YWl0IGdldExpc3RCeTxDb250ZW50VHlwZT4oXG4gICAgY29udGV4dCxcbiAgICAnY29udGVudCcsXG4gICAgYnVpbGRDb250ZW50RmlsdGVycyhvcHRpb25zKSxcbiAgICB7c29ydDogW3tmaWVsZDogJ2tleScsIGRpcmVjdGlvbjogJ0FTQyd9LCB7ZmllbGQ6ICdsb2NhbGUnLCBkaXJlY3Rpb246ICdBU0MnfV19XG4gICk7XG5cbiAgcmV0dXJuIGNvbnRlbnRMaXN0Lm1hcCgoY29udGVudCkgPT4gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpKTtcbn07XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInBhcnNlU3RyaW5nIiwicGFyc2VDb250ZW50RnJvbURiIiwicGFyc2VDb250ZW50SW5wdXQiLCJDb25maWciLCJ0cmFuc2xhdGVUZXh0IiwiZXh0cmFjdExhbmd1YWdlIiwiaXNSZWdpb25hbExvY2FsZSIsImFkZEl0ZW0iLCJnZXRJdGVtQnkiLCJnZXRMaXN0QnkiLCJ1cGRhdGVJdGVtIiwicGFyc2VDb250ZW50T3B0aW9ucyIsIm9wdGlvbnMiLCJjYXRlZ29yeSIsImlzQWN0aXZlIiwia2V5IiwibG9jYWxlIiwidW5kZWZpbmVkIiwiYnVpbGRDb250ZW50RmlsdGVycyIsImZpbHRlcnMiLCJwdXNoIiwiZmllbGQiLCJvcGVyYXRvciIsInZhbHVlIiwibGVuZ3RoIiwiYnVpbGRDb250ZW50TXV0YXRpb24iLCJjb250ZW50SW5wdXQiLCJwYXJzZWRDb250ZW50IiwiY29udGVudCIsImRlc2NyaXB0aW9uIiwicGFyc2VkTG9jYWxlIiwiaW5jbHVkZUlkZW50aXR5IiwiZ2V0Q29udGVudCIsImNvbnRleHQiLCJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwiZmFsbGJhY2tDb250ZW50IiwiYXBwTG9jYWxlIiwiZ2V0IiwibGFuZ3VhZ2UiLCJhZGRDb250ZW50IiwiY2F0Y2giLCJzYXZlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJzb3VyY2VDb250ZW50Iiwic291cmNlVGV4dCIsImFwcExhbmd1YWdlIiwidHJhbnNsYXRlZFRleHQiLCJ0cmFuc2xhdGlvbkVycm9yIiwic2Vzc2lvbiIsImNvbnRlbnRJZCIsImluc2VydCIsIl9rZXkiLCJ1c2VySWQiLCJzYXZlZENvbnRlbnQiLCJ1cGRhdGVDb250ZW50IiwiRXJyb3IiLCJ1cGRhdGVkQ29udGVudCIsInNlYXJjaENvbnRlbnQiLCJjb250ZW50TGlzdCIsInNvcnQiLCJkaXJlY3Rpb24iLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUVyRSxTQUFRQyxrQkFBa0IsRUFBRUMsaUJBQWlCLFFBQU8s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
|