@dbx-tools/appkit-mastra 0.6.59 → 0.6.60
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 +1 -1
- package/lib/src/config.d.ts +1 -1
- package/lib/src/config.js +1 -1
- package/lib/src/identity.d.ts +1 -1
- package/lib/src/identity.js +2 -2
- package/package.json +13 -13
- package/src/config.ts +1 -1
- package/src/identity.ts +1 -1
package/README.md
CHANGED
|
@@ -779,7 +779,7 @@ requiring callers to assemble a Mastra server by hand.
|
|
|
779
779
|
of per-user attribution in Genie / Unity Catalog. `"auto"` decides PER REQUEST:
|
|
780
780
|
OBO when the request actually carries an OBO token, service principal when it
|
|
781
781
|
does not. That is the mode for an app served through more than one door - a
|
|
782
|
-
container fronted by [`@dbx-tools/
|
|
782
|
+
container fronted by [`@dbx-tools/tunnel`](../../node/tunnel) serves both
|
|
783
783
|
email-code callers (no Databricks credential exists to forward) and the
|
|
784
784
|
platform front door on one port, and `"user"` would make every tunnel turn fail
|
|
785
785
|
with AppKit's `AuthenticationError` while `"service-principal"` would throw away
|
package/lib/src/config.d.ts
CHANGED
|
@@ -493,7 +493,7 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
493
493
|
* per-user attribution in Genie / Unity Catalog.
|
|
494
494
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
495
495
|
* when it does not. For an app serving BOTH the platform front door and a
|
|
496
|
-
* door that has no token to forward - a `@dbx-tools/
|
|
496
|
+
* door that has no token to forward - a `@dbx-tools/tunnel` gate, a
|
|
497
497
|
* Teams channel - where AppKit's `asUser` would otherwise throw
|
|
498
498
|
* `AuthenticationError` outside `NODE_ENV=development`.
|
|
499
499
|
*
|
package/lib/src/config.js
CHANGED
|
@@ -221,4 +221,4 @@ export const MASTRA_CONFIG_SCHEMA = {
|
|
|
221
221
|
},
|
|
222
222
|
},
|
|
223
223
|
};
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFB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QUNILElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDM0IsV0FBVyxFQUNULDRKQUE0SjtTQUMvSjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsMkVBQTJFO1lBQzNFLDBFQUEwRTtZQUMxRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN6QixXQUFXLEVBQ1QsNmZBQTZmO1NBQ2hnQjtRQUNELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN4QixXQUFXLEVBQ1QscU9BQXFPO1NBQ3hPO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsMElBQTBJO1NBQzdJO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQbHVnaW4gY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgc2hhcmVkIGBSZXF1ZXN0Q29udGV4dGAga2V5cy5cbiAqXG4gKiBPd25zIHRoZSB0eXBlZCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfSAodGhlIHBsdWdpbidzIHNsaWNlIG9mIEFwcEtpdFxuICogY29uZmlnKSBhbmQge0BsaW5rIE1BU1RSQV9DT05GSUdfU0NIRU1BfSwgdGhlIEpTT04gU2NoZW1hIHRoZSBtYW5pZmVzdFxuICogcHVibGlzaGVzIGZvciBpdCBzbyBzY2FmZm9sZGluZyB0b29scyBhbmQgYWdlbnRzIGNhbiByZWFkIHRoZSBvcHRpb24gc2V0LlxuICpcbiAqIFByZWNlZGVuY2UgcGVyIGZpZWxkIGlzIGV4cGxpY2l0IHBsdWdpbiBjb25maWcsIHRoZW4gdGhlIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZSBuYW1lZCBvbiB0aGUgZmllbGQsIHRoZW4gYSBidWlsdC1pbiBkZWZhdWx0LlxuICpcbiAqIEtlcHQgaW4gYSBsZWFmIG1vZHVsZSBzbyBgcGx1Z2luLnRzYCwgYHNlcnZlci50c2AsIGBtb2RlbC50c2AsIGFuZFxuICogYG1lbW9yeS50c2AgY2FuIGltcG9ydCB0aGVtIHdpdGhvdXQgY3JlYXRpbmcgYSBjeWNsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZ2V0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIENvbmZpZ1NjaGVtYSB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBBZ2VudENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvYWdlbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuaW1wb3J0IHsgTUFTVFJBX1JFU09VUkNFX0lEX0tFWSwgTUFTVFJBX1RIUkVBRF9JRF9LRVkgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQZ1ZlY3RvckNvbmZpZywgUG9zdGdyZXNTdG9yZUNvbmZpZyB9IGZyb20gXCJAbWFzdHJhL3BnXCI7XG5cbmltcG9ydCB0eXBlIHsgTWFzdHJhQWdlbnREZWZpbml0aW9uLCBNYXN0cmFUb29scyB9IGZyb20gXCIuL2FnZW50cy50c1wiO1xuaW1wb3J0IHR5cGUgeyBHZW5pZVNwYWNlc0NvbmZpZyB9IGZyb20gXCIuL2dlbmllLnRzXCI7XG5pbXBvcnQgeyBJREVOVElUWV9NT0RFUywgdHlwZSBNYXN0cmFJZGVudGl0eU1vZGUgfSBmcm9tIFwiLi9pZGVudGl0eS50c1wiO1xuaW1wb3J0IHR5cGUgeyBSZW1vdGVTa2lsbHNPcHRpb24gfSBmcm9tIFwiLi9yZW1vdGUtc2tpbGxzLnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9FTUFJTF9LRVkgPSBcIm1hc3RyYV9fdXNlckVtYWlsXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIC8vIE1vZGVsIG92ZXJyaWRlIGtleSBpcyBvd25lZCBieSBgc2VydmluZy50c2A7IHNwZWxsZWQgaW5saW5lIGhlcmVcbiAgLy8gc28gdGhpcyBtb2R1bGUgc3RheXMgbGVhZi1sZXZlbCAobm8gY3ljbGVzIHdpdGggYHNlcnZpbmcudHNgKS5cbiAgXCJtYXN0cmFfX21vZGVsX292ZXJyaWRlXCIsXG5dO1xuXG4vKiogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHBsdXMgdGhlIGNhbm9uaWNhbCB1c2VyIGlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBpZGVudGl0eSBmb3IgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0OiB0aGUgT0JPIHVzZXIgaWQgb24gYVxuICogdXNlci1zY29wZWQgY2FsbCwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoY29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFwidXNlcklkXCIgaW4gY29udGV4dCA/IGNvbnRleHQudXNlcklkIDogY29udGV4dC5zZXJ2aWNlVXNlcklkO1xufVxuXG4vKipcbiAqIFdobyBhIHR1cm4gaXMgQVRUUklCVVRFRCB0bywgd2hpY2ggaXMgbm90IGFsd2F5cyB3aG9zZSBEYXRhYnJpY2tzIGNyZWRlbnRpYWxcbiAqIHJ1bnMgaXQuIEFuIE9CTyBjb250ZXh0J3Mgb3duIHVzZXIgaWQgaXMgYXV0aG9yaXRhdGl2ZS4gVW5kZXIgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCwgZXZlcnkgY2FsbGVyIHNoYXJlcyBvbmUgY3JlZGVudGlhbCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlkIGlzXG4gKiB3aGF0IGtlZXBzIG1lbW9yeSB0aHJlYWRzIGFuZCBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2VzIGRpc3RpbmN0OyB0aGUgc2VydmljZVxuICogcHJpbmNpcGFsIGlkIGlzIHRoZSBmbG9vciB3aGVuIG5vIHVzZXIgd2FzIGZvcndhcmRlZC5cbiAqXG4gKiBUaGlzIHJ1bGUgaGFzIHRvIGJlIGlkZW50aWNhbCBldmVyeXdoZXJlIGEgY2FjaGUga2V5IGlzIGJ1aWx0LCBzbyBib3RoIHRoZVxuICogd3JpdGUgc2lkZSAodGhlIGBSZXF1ZXN0Q29udGV4dGAgdXNlciBzdGFtcGVkIGJ5IGBzdGFtcFJlcXVlc3RDb250ZXh0VXNlcmApXG4gKiBhbmQgdGhlIHJlYWQgc2lkZSAodGhlIHBsdWdpbidzIG93biBBcHBLaXQgcm91dGVzLCB3aGljaCBoYXZlIGEgcmVxdWVzdCBidXRcbiAqIG5vIGBSZXF1ZXN0Q29udGV4dGApIGRlcml2ZSB0aGVpciBrZXkgZnJvbSB0aGlzIG9uZSBmdW5jdGlvbi4gV2hlbiB0aGUgdHdvXG4gKiBkaXNhZ3JlZWQsIGEgY2hhcnQgd3JpdHRlbiB1bmRlciB0aGUgZm9yd2FyZGVkIHVzZXIgaWQgd2FzIHJlYWQgYmFjayB1bmRlclxuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIGFuZCB0aGUgZW1iZWQgcm91dGUgYW5zd2VyZWQgNDA0LCB3aGljaCB0aGUgY2hhdCBVSVxuICogcmVuZGVycyBhcyBhbiBleHBpcmVkIGNoYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlZFVzZXJJZChcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBmb3J3YXJkZWRVc2VySWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBpZiAoXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCkgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gIHJldHVybiBmb3J3YXJkZWRVc2VySWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChleGVjdXRpb25Db250ZXh0KTtcbn1cblxuLyoqXG4gKiBJZGVudGl0eSBldmVyeSBwZXItdXNlciBjYWNoZSBlbnRyeSBpcyBuYW1lc3BhY2VkIHVuZGVyLCBzbyBhbiBPQk8gcmVzdWx0XG4gKiBjYW5ub3QgYmUgcmVhZCBiYWNrIGJ5IGFub3RoZXIgY2FsbGVyLlxuICpcbiAqIFByZWZlcnMgdGhlIHtAbGluayBVc2VyfSB0aGF0IHtAbGluayBNYXN0cmFTZXJ2ZXJ9IHN0YW1wcyBvbiB0aGUgcmVxdWVzdFxuICogY29udGV4dCwgd2hvc2UgaWQgYWxyZWFkeSBmb2xsb3dzIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfS4gVGhlIE1DUCB0cmFuc3BvcnRcbiAqIHJvdXRlcyBkbyBub3QgdGhyZWFkIHRoYXQgY29udGV4dCBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyB0aG9zZSBmYWxsIGJhY2sgdG9cbiAqIHRoZSBhbWJpZW50IGV4ZWN1dGlvbiBjb250ZXh0ICh0aGUgYWN0aXZlIE9CTyBzY29wZSwgb3IgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCkuIEEgY2FsbGVyIGhvbGRpbmcgYW4gZXhwcmVzcyByZXF1ZXN0IHNob3VsZCBidWlsZCBpdHMga2V5IGZyb21cbiAqIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfSBpbnN0ZWFkLCBzbyB0aGUgZm9yd2FyZGVkIHVzZXIgaXMgbm90IGxvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlcktleShyZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gdXNlcj8uaWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChnZXRFeGVjdXRpb25Db250ZXh0KCkpO1xufVxuXG4vKiogUGdWZWN0b3IgY29uZmlnIHdpdGggYW4gb3B0aW9uYWwgTWFzdHJhIHN0b3JlIGlkLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhTWVtb3J5Q29uZmlnID0gUGdWZWN0b3JDb25maWcgJiB7XG4gIGlkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGaW5lLWdyYWluZWQgY29udHJvbCBmb3IgdGhlIG9wdGlvbmFsIE1DUCBzZXJ2ZXIgZXhwb3N1cmVcbiAqICh7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLm1jcH0pLiBFdmVyeSBmaWVsZCBpcyBvcHRpb25hbDsgdGhlIG9iamVjdFxuICogZm9ybSBvbmx5IG5lZWRzIHRvIHNldCB3aGF0IGRpZmZlcnMgZnJvbSB0aGUgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhTWNwQ29uZmlnIHtcbiAgLyoqXG4gICAqIFNlcnZlciBpZCB1c2VkIGluIHRoZSByb3V0ZSBwYXRoIChgL21jcC88c2VydmVySWQ+Ly4uLmApIGFuZCBhcyB0aGVcbiAgICogTUNQIHJlZ2lzdHJ5IGlkLiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luJ3MgcmVnaXN0ZXJlZCBuYW1lLlxuICAgKi9cbiAgc2VydmVySWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiPGRpc3BsYXlOYW1lPiBNQ1BcImAuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBTZW1hbnRpYyB2ZXJzaW9uIGFkdmVydGlzZWQgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGBcIjEuMC4wXCJgLiAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhcyBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYCAtIHRoaXMgaXMgdGhlIFwibGV2ZXJhZ2UgdGhlIE1hc3RyYSBhZ2VudHMgb3ZlclxuICAgKiBNQ1BcIiBiZWhhdmlvciBtb3N0IGNhbGxlcnMgd2FudC5cbiAgICovXG4gIGFnZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbHNvIGV4cG9zZSB0aGUgcGx1Z2luJ3MgYW1iaWVudCB0b29scyAodGhlIGJ1aWx0LWluIGByZW5kZXJfZGF0YWBcbiAgICogcGx1cyBhbnl0aGluZyBpbiBgY29uZmlnLnRvb2xzYCkgYXMgTUNQIHRvb2xzLiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiB0aGUgYW1iaWVudCB0b29scyBhc3N1bWUgYW4gaW4tcHJvY2VzcyBjaGF0IHR1cm4gKHRoZXkgcHVibGlzaFxuICAgKiB3cml0ZXIgZXZlbnRzIHRoZSBjaGF0IFVJIGNvbnN1bWVzKSwgc28gdGhleSBhcmVuJ3QgdXNlZnVsIHRvIGFcbiAgICogc3RhbmRhbG9uZSBNQ1AgY2xpZW50LiBUdXJuIHRoaXMgb24gb25seSB3aGVuIHRob3NlIHRvb2xzIGFyZSBzYWZlXG4gICAqIHRvIGNhbGwgb3V0LW9mLWJhbmQuXG4gICAqL1xuICB0b29scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHRyYSB0b29scyB0byBleHBvc2Ugb3ZlciBNQ1AgYmV5b25kIHRoZSBhZ2VudCAvIGFtYmllbnQgc2V0cy5cbiAgICogVXNlIHRoaXMgZm9yIHRvb2xzIHdyaXR0ZW4gc3BlY2lmaWNhbGx5IGZvciBNQ1AgY29uc3VtZXJzLlxuICAgKi9cbiAgZXh0cmFUb29scz86IE1hc3RyYVRvb2xzO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBhY2NlcHRlZCBieSB0aGUgTWFzdHJhIEFwcEtpdCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBgXCJkYXRhYnJpY2tzXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGVcbiAgICogYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuXG4gICAqL1xuICBzdG9yYWdlPzogYm9vbGVhbiB8IFBvc3RncmVzU3RvcmVDb25maWc7XG4gIC8qKlxuICAgKiBQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIG1lbW9yeSByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLlxuICAgKi9cbiAgbWVtb3J5PzogYm9vbGVhbiB8IE1hc3RyYU1lbW9yeUNvbmZpZztcbiAgLyoqXG4gICAqIENvZGUtZGVmaW5lZCBhZ2VudHMuIEFjY2VwdHMgdGhyZWUgc2hhcGVzIGZvciBjb252ZW5pZW5jZTpcbiAgICpcbiAgICogLSAqKlJlY29yZCoqOiBgeyBhbmFseXN0OiBkZWYsIGhlbHBlcjogZGVmIH1gIC0ga2V5cyBiZWNvbWUgdGhlXG4gICAqICAgcmVnaXN0ZXJlZCBpZHMgYW5kIHRoZSBmaXJzdCBrZXkgaXMgdGhlIGRlZmF1bHQuXG4gICAqIC0gKipTaW5nbGUgZGVmaW5pdGlvbioqOiBgZGVmYCAtIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgXCJkZWZhdWx0XCJgIHdoZW4gYG5hbWVgIGlzIG9taXR0ZWQpIGFuZFxuICAgKiAgIGF1dG9tYXRpY2FsbHkgbWFya2VkIGFzIHRoZSBkZWZhdWx0IGFnZW50LlxuICAgKiAtICoqQXJyYXkqKjogYFtkZWYxLCBkZWYyXWAgLSBlYWNoIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgYWdlbnRfJHtpfWAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCk7XG4gICAqICAgdGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBkZWZhdWx0LlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGJlY29tZXMgYSBNYXN0cmEgYEFnZW50YCByZWFjaGFibGUgYXRcbiAgICogYC9hcGkvPHBsdWdpbj4vcm91dGUvY2hhdC88aWQ+YCAodGhlIGNoYXQgcm91dGUgYWxzbyBtYXRjaGVzXG4gICAqIGA6YWdlbnRJZGApLiBXaGVuIGBhZ2VudHNgIGlzIG9taXR0ZWQgZW50aXJlbHksIHRoZSBwbHVnaW5cbiAgICogcmVnaXN0ZXJzIGEgc2luZ2xlIGJ1aWx0LWluIGBkZWZhdWx0YCBhbmFseXN0IHNvIHRoZSBiYXJlXG4gICAqIGBtYXN0cmEoKWAgY2FsbCBzdGlsbCBtb3VudHMgYSB3b3JraW5nIGNoYXQgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBleGFtcGxlIFNpbmdsZS1hZ2VudCBzaG9ydGhhbmRcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIEFycmF5XG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiBbXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiYW5hbHlzdFwiLCBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiaGVscGVyXCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICBdLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIFJlY29yZCAoZXhwbGljaXQgaWRzKVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czoge1xuICAgKiAgICAgYW5hbHlzdDogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBoZWxwZXI6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIH0sXG4gICAqICAgZGVmYXVsdEFnZW50OiBcImFuYWx5c3RcIixcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWdlbnRzPzogUmVjb3JkPHN0cmluZywgTWFzdHJhQWdlbnREZWZpbml0aW9uPiB8IE1hc3RyYUFnZW50RGVmaW5pdGlvbiB8IE1hc3RyYUFnZW50RGVmaW5pdGlvbltdO1xuICAvKipcbiAgICogQW1iaWVudCB0b29scyBzcHJlYWQgaW50byBldmVyeSByZWdpc3RlcmVkIGFnZW50J3MgdG9vbHMgcmVjb3JkO1xuICAgKiBwZXItYWdlbnQgdG9vbHMgd2luIG9uIGtleSBjb2xsaXNpb24uIFVzZSBmb3IgYSBzbWFsbCBzaGFyZWRcbiAgICogbGlicmFyeTsgZm9yIHBlci1hZ2VudCB0b29scyBzZXQgYGFnZW50c1tpZF0udG9vbHNgIGluc3RlYWQuXG4gICAqL1xuICB0b29scz86IE1hc3RyYVRvb2xzO1xuICAvKipcbiAgICogQWdlbnQgaWQgdXNlZCB3aGVuIHRoZSBjbGllbnQgZG9lc24ndCBzcGVjaWZ5IG9uZSAodGhlIGJhcmUsXG4gICAqIHVuLXN1ZmZpeGVkIGhpc3RvcnkgLyBzdWdnZXN0aW9ucyByb3V0ZXMgcmVzb2x2ZSB0byBpdCkuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBrZXkgaW4gYGFnZW50c2AgKG9yIGBcImRlZmF1bHRcImAgd2hlblxuICAgKiBgYWdlbnRzYCBpcyBvbWl0dGVkKS4gTXVzdCBtYXRjaCBhbiBpZCBpbiBgYWdlbnRzYCB3aGVuIGJvdGggYXJlXG4gICAqIHNldDsgYSBtaXNtYXRjaCB0aHJvd3MgYXQgc2V0dXAgd2l0aCB0aGUgYXZhaWxhYmxlIGNhbmRpZGF0ZXMuXG4gICAqL1xuICBkZWZhdWx0QWdlbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQbHVnaW4tbGV2ZWwgZGVmYXVsdCBtb2RlbCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzXG4gICAqIG93biBgbW9kZWxgLiBNaXJyb3JzIEFwcEtpdCdzIGBhZ2VudHMoeyBkZWZhdWx0TW9kZWwgfSlgLlxuICAgKlxuICAgKiAtIGBzdHJpbmdgOiBzaG9ydGhhbmQgZm9yIFwidXNlIHRoZSBPQk8gYXV0by1yZXNvbHZlciBidXQgc3dhcCB0aGVcbiAgICogICBgbW9kZWxJZGBcIiAoZS5nLiBgXCJkYXRhYnJpY2tzLWNsYXVkZS1zb25uZXQtNC02XCJgKS5cbiAgICogLSBBbnkgb3RoZXIgTWFzdHJhIGBEeW5hbWljQXJndW1lbnQ8TWFzdHJhTW9kZWxDb25maWc+YDogcGFzc2VkXG4gICAqICAgdGhyb3VnaCB2ZXJiYXRpbS4gVXNlIHRoaXMgd2hlbiB5b3UgbmVlZCBmdWxsIGNvbnRyb2wgb3ZlciBhdXRoXG4gICAqICAgb3IgYHByb3ZpZGVySWRgLlxuICAgKlxuICAgKiBSZXNvbHV0aW9uIG9yZGVyIHBlciBhZ2VudDogYGRlZi5tb2RlbGAg4oaSIGBkZWZhdWx0TW9kZWxgIOKGklxuICAgKiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgIOKGkiBidWlsdC1pbiBgL3NlcnZpbmctZW5kcG9pbnRzYFxuICAgKiByZXNvbHZlci5cbiAgICovXG4gIGRlZmF1bHRNb2RlbD86IEFnZW50Q29uZmlnW1wibW9kZWxcIl0gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyAoYFwiY2xhdWRlIHNvbm5ldFwiYCkgYWdhaW5zdCB0aGUgd29ya3NwYWNlJ3NcbiAgICogTW9kZWwgU2VydmluZyBlbmRwb2ludHMuIERlZmF1bHRzIHRvIGB0cnVlYDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBTZXQgYGZhbHNlYCB0byByZXF1aXJlIGV4YWN0IGVuZHBvaW50IG5hbWVzIGV2ZXJ5d2hlcmUuXG4gICAqL1xuICBtb2RlbEZ1enp5TWF0Y2g/OiBib29sZWFuO1xuICAvKipcbiAgICogRnVzZS5qcyBzY29yZSB0aHJlc2hvbGQgZm9yIHRoZSBmdXp6eSBtYXRjaGVyLCAwIChleGFjdCkgdG8gMSAoYW55dGhpbmcpLlxuICAgKiBEZWZhdWx0cyB0byBgMC40YDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBMb3dlciB2YWx1ZXMgcmVqZWN0IGxvb3NlIG1hdGNoZXM7IHJhaXNlIGl0IGlmIHlvdSBoYXZlIGEgc3ByYXdsaW5nXG4gICAqIGVuZHBvaW50IGNhdGFsb2d1ZSB3aXRoIHNpbWlsYXItbG9va2luZyBuYW1lcy5cbiAgICovXG4gIG1vZGVsRnV6enlUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBEZWZhdWx0cyB0byA1IG1pbnV0ZXM7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogVGhlIGNhY2hlIGlzIHBlciB3b3Jrc3BhY2UgaG9zdCBhbmQgc2hhcmVkIGFjcm9zcyB1c2VyczsgY29uY3VycmVudFxuICAgKiBjYWxsZXJzIGNvYWxlc2NlIG9uIGEgc2luZ2xlIGluLWZsaWdodCBmZXRjaC5cbiAgICovXG4gIG1vZGVsQ2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIExldCBjbGllbnRzIHBpY2sgdGhlIGJhY2tpbmcgZW5kcG9pbnQgcGVyIHJlcXVlc3QuIERlZmF1bHRzIHRvIGB0cnVlYDtcbiAgICogbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBSZWFkcyB0aGUgYFgtTWFzdHJhLU1vZGVsYCBoZWFkZXIsIHRoZSBgP21vZGVsPWAgcXVlcnkgc3RyaW5nLCBvciBhXG4gICAqIGBtb2RlbGAgYm9keSBmaWVsZCwgaW4gdGhhdCBvcmRlci4gRGlzYWJsZSB3aGVuIHJ1bm5pbmcgbXVsdGktdGVuYW50XG4gICAqIHdoZXJlIHVudHJ1c3RlZCBjbGllbnRzIHNob3VsZG4ndCBjaG9vc2UgdGhlIGVuZHBvaW50LlxuICAgKi9cbiAgbW9kZWxPdmVycmlkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmlvcml0eS1vcmRlcmVkIGxpc3Qgb2YgZW5kcG9pbnQgbmFtZXMgdHJpZWQgKmZpcnN0KiB3aGVuIG5vXG4gICAqIGFnZW50IC8gcGx1Z2luIC8gZW52IC8gcmVxdWVzdC1vdmVycmlkZSBtb2RlbCBpZCBpcyBzZXQsIGFoZWFkIG9mXG4gICAqIHRoZSBkeW5hbWljIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLiBUaGUgcmVzb2x2ZXIgcGlja3MgdGhlXG4gICAqIGZpcnN0IGlkIHRoYXQgaXMgYWN0dWFsbHkgcHJlc2VudCBpbiB0aGUgd29ya3NwYWNlJ3NcbiAgICogYC9zZXJ2aW5nLWVuZHBvaW50c2AgbGlzdGluZy5cbiAgICpcbiAgICogV2hlbiB1bnNldCwgcmVzb2x1dGlvbiBpcyBkcml2ZW4gYnkgdGhlIGxpdmUgRm91bmRhdGlvbiBNb2RlbCBBUElcbiAgICogYHF1YWxpdHlgIC8gYHNwZWVkYCAvIGBjb3N0YCBzY29yZXM6IGVuZHBvaW50cyBhcmUgY2xhc3NpZmllZCBpbnRvXG4gICAqIGNoYXQgY2xhc3NlcyAoYGNsYXNzaWZ5RW5kcG9pbnRzYCkgYW5kIHdhbGtlZCBiZXN0LWZpcnN0XG4gICAqIChDaGF0VGhpbmtpbmcgLT4gQ2hhdEJhbGFuY2VkIC0+IENoYXRGYXN0KSwgd2l0aCB0aGUgc21hbGwgYnVpbHQtaW5cbiAgICogYEZBTExCQUNLX01PREVMX0lEU2AgbGlzdCBhcyB0aGUgZmxvb3Igd2hlbiB0aGUgY2F0YWxvZ3VlIGNhbid0IGJlXG4gICAqIHJlYWQuIFNldCB0aGlzIHRvXG4gICAqIHBpbiBhIHJlZ3VsYXRlZCB3b3Jrc3BhY2UgdG8gYW4gYXBwcm92ZWQgc3Vic2V0LCBvciB0byBwdXQgY3VzdG9tXG4gICAqIGVuZHBvaW50cyBpbiBmcm9udCBvZiB0aGUgYXV0by1jbGFzc2lmaWVkIGNhdGFsb2d1ZS5cbiAgICovXG4gIGRlZmF1bHRNb2RlbEZhbGxiYWNrcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAgKGRlZmF1bHQpLCBldmVyeSBhZ2VudCBnZXRzIGEgYnVpbHQtaW4gaW5wdXRcbiAgICogcHJvY2Vzc29yIHRoYXQgc3RyaXBzIGBjaGFydElkYCBmaWVsZHMgZnJvbSBwcmlvciBhc3Npc3RhbnRcbiAgICogdG9vbC1pbnZvY2F0aW9uIHJlc3VsdHMgYmVmb3JlIHRoZXkgcmVhY2ggdGhlIG1vZGVsLiBUaGlzXG4gICAqIHByZXZlbnRzIHRoZSBtb2RlbCBmcm9tIHJldXNpbmcgdHVybi1zY29wZWQgY2hhcnRJZHMgaXQgc2Vlc1xuICAgKiBpbiBtZW1vcnkgcmVjYWxsICh3aGljaCB3b3VsZCBsZWF2ZSBgW2NoYXJ0OjxpZD5dYCBtYXJrZXJzXG4gICAqIHBvaW50aW5nIGF0IHdyaXRlciBldmVudHMgdGhhdCBubyBsb25nZXIgZXhpc3QpLlxuICAgKlxuICAgKiBTZXQgdG8gYGZhbHNlYCB0byBvcHQgb3V0IC0gdXNlZnVsIGlmIGEgbm9uLWRlZmF1bHQgYWdlbnRcbiAgICogbmVlZHMgZnVsbCB2aXNpYmlsaXR5IGludG8gcHJpb3IgY2hhcnRJZHMgKGUuZy4gYW4gYXVkaXRcbiAgICogYWdlbnQgcmVhc29uaW5nIGFib3V0IGNoYXJ0IGxpbmVhZ2UpLlxuICAgKi9cbiAgc3RyaXBTdGFsZUNoYXJ0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdHlsZSBndWFyZHJhaWxzIGFwcGVuZGVkIHRvIGV2ZXJ5IGFnZW50J3MgYGluc3RydWN0aW9uc2AgdG8gY3VyYlxuICAgKiBjb21tb24gTExNLWlzbXMgKGVtIGRhc2hlcywgZW1vamlzLCBzeWNvcGhhbnRpYyBvcGVuZXJzLCB0aHJvd2F3YXlcbiAgICogY2xvc2VycywgZXhjZXNzaXZlIGhlZGdpbmcpLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KTogdXNlIHRoZSBidWlsdC1pblxuICAgKiAgIGBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OU2AgZnJvbSBgYWdlbnRzLnRzYC5cbiAgICogLSBgc3RyaW5nYDogcmVwbGFjZSB0aGUgZGVmYXVsdCB3aXRoIHRoZSBzdXBwbGllZCBibG9jay5cbiAgICogLSBgZmFsc2VgOiBkaXNhYmxlIGVudGlyZWx5IChhZ2VudHMgc2VlIG9ubHkgdGhlaXIgYmVzcG9rZVxuICAgKiAgIGBpbnN0cnVjdGlvbnNgKS5cbiAgICpcbiAgICogQXBwZW5kZWQgKG5vdCBwcmVwZW5kZWQpIHNvIHRoZSBhZ2VudCdzIHJvbGUgYW5kIHJ1bGVzIGNvbWUgZmlyc3RcbiAgICogYW5kIHRoZSBzdHlsZSBibG9jayBsZWFucyBvbiB0aGUgbW9kZWwncyByZWNlbmN5IGJpYXMuXG4gICAqL1xuICBzdHlsZUluc3RydWN0aW9ucz86IHN0cmluZyB8IGZhbHNlO1xuICAvKipcbiAgICogR2VuaWUgc3BhY2VzIHRoaXMgcGx1Z2luJ3MgYWdlbnRzIGNhbiBkZWxlZ2F0ZSB0by4gT25lIE1hc3RyYVxuICAgKiB0b29sIGlzIHJlZ2lzdGVyZWQgcGVyIGFsaWFzIChgZ2VuaWVgIGZvciB0aGUgd2VsbC1rbm93blxuICAgKiBgZGVmYXVsdGAgYWxpYXMsIGBnZW5pZV88YWxpYXM+YCBvdGhlcndpc2UpLiBFYWNoIHRvb2wgc3BpbnNcbiAgICogdXAgYSBwZXItcXVlc3Rpb24gR2VuaWUgc3ViLWFnZW50IHRoYXQgcnVucyBEYXRhYnJpY2tzXG4gICAqIFwiYWdlbnQgbW9kZVwiIGFnYWluc3QgdGhlIHNwYWNlLCBicm9hZGNhc3RzIHdpcmUgZXZlbnRzIHRvIHRoZVxuICAgKiBVSSwgZmV0Y2hlcyBzdGF0ZW1lbnQgcm93cyBmb3Igbm9uLWVtcHR5IHJlc3VsdHMsIGFuZCByZXR1cm5zXG4gICAqIGEgYChzdHJpbmcgfCBkYXRhIHwgY2hhcnQpW11gIHN1bW1hcnkgdGhlIGhvc3QgVUkgcmVuZGVyc1xuICAgKiBpbmxpbmUuXG4gICAqXG4gICAqIEVudHJpZXMgYWNjZXB0IGVpdGhlciBhIGZ1bGwge0BsaW5rIEdlbmllU3BhY2VDb25maWd9IG9iamVjdFxuICAgKiBvciBhIGJhcmUgYHNwYWNlX2lkYCBzdHJpbmcgd2hlbiBubyBleHRyYXMgYXJlIG5lZWRlZDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBnZW5pZVNwYWNlczoge1xuICAgKiAgICAgZGVmYXVsdDogXCIwMWVmMGQzYzBlMWIxZjRhOGQyYzNlNGY1YTZiN2M4ZFwiLFxuICAgKiAgICAgZm9yZWNhc3RzOiB7IHNwYWNlSWQ6IFwiMDFlZi4uLlwiLCBoaW50OiBcIndlZWtseSBkZW1hbmQgZm9yZWNhc3RzXCIgfSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFJlYWNoIHRoZSBzcGFjZXMgZnJvbSBhbiBhZ2VudCdzIGB0b29scyhwbHVnaW5zKWAgY2FsbGJhY2sgdmlhXG4gICAqIGBwbHVnaW5zLmdlbmllPy50b29sa2l0KClgOyB0aGUgcmVzdWx0aW5nIHRvb2xzIGFjY2VwdFxuICAgKiBgeyBjb250ZW50LCBjb252ZXJzYXRpb25JZD8gfWAgYW5kIHJldHVybiBhIGh5ZHJhdGVkIHN1bW1hcnkuXG4gICAqXG4gICAqICoqRmFsbGJhY2sgZGlzY292ZXJ5KiogKGhpZ2hlc3QgcHJlY2VkZW5jZSBmaXJzdCk6IGlmIHRoaXNcbiAgICogZmllbGQgaXMgb21pdHRlZCwgdGhlIEdlbmllIGFnZW50IGFsc28gcGlja3MgdXAgc3BhY2VzIGZyb21cbiAgICogKDEpIHRoZSBBcHBLaXQgYGdlbmllKHsgc3BhY2VzOiB7IC4uLiB9IH0pYCBwbHVnaW4gaW5zdGFuY2VcbiAgICogd2hlbiByZWdpc3RlcmVkLCBhbmQgKDIpIHRoZSBgREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRGBcbiAgICogZW52IHZhciAocmVnaXN0ZXJlZCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzKS4gVGhpcyBrZWVwc1xuICAgKiBleGlzdGluZyBBcHBLaXQgZGVwbG95bWVudHMgd29ya2luZyB3aXRob3V0IHJlc3RhdGluZyB0aGVcbiAgICogc3BhY2VzIGNvbmZpZyBpbiB0d28gcGxhY2VzLlxuICAgKi9cbiAgZ2VuaWVTcGFjZXM/OiBHZW5pZVNwYWNlc0NvbmZpZztcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZSwgaW5cbiAgICogbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuIFRoZSBHZW5pZSBhZ2VudCBjYWxsc1xuICAgKiBgY2xpZW50LmdlbmllLmdldFNwYWNlKC4uLilgIG9uIGV2ZXJ5IGNvbGQtc3RhcnQgdG8gZ2V0IHRoZVxuICAgKiB0aXRsZSAvIGRlc2NyaXB0aW9uIC8gd2FyZWhvdXNlIGlkOyBjYWNoZWQgcmVzcG9uc2VzIHNraXAgdGhlXG4gICAqIHJvdW5kLXRyaXAgYW5kIGNvbmN1cnJlbnQgY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZVxuICAgKiBpbi1mbGlnaHQgZmV0Y2guIERyb3AgdG8gYSBzbWFsbGVyIHZhbHVlIHdoZW4gYW5hbHlzdHMgYXJlXG4gICAqIGFjdGl2ZWx5IGVkaXRpbmcgc3BhY2UgbWV0YWRhdGEgYW5kIHlvdSB3YW50IGNoYW5nZXMgdmlzaWJsZVxuICAgKiB3aXRoaW4gc2Vjb25kczsgcmFpc2UgaXQgdG8gYW1vcnRpc2UgdGhlIHJvdW5kLXRyaXAgd2hlblxuICAgKiBzcGFjZSBtZXRhZGF0YSBpcyBlZmZlY3RpdmVseSBmcm96ZW4uXG4gICAqXG4gICAqIEJhY2tlZCBieSBBcHBLaXQncyBgQ2FjaGVNYW5hZ2VyYCwgc28gdGhlIGNhY2hlIHBhcnRpY2lwYXRlc1xuICAgKiBpbiB0ZWxlbWV0cnkgc3BhbnMgKGBjYWNoZS5nZXRPckV4ZWN1dGVgKSBhbmQgYmVuZWZpdHMgZnJvbVxuICAgKiBMYWtlYmFzZSBwZXJzaXN0ZW5jZSB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyB3aXJlZCB1cC5cbiAgICovXG4gIGdlbmllU3BhY2VDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuLiBPbmUgc3RlcCA9IG9uZVxuICAgKiByb3VuZC10cmlwIHRvIHRoZSB1bmRlcmx5aW5nIG1vZGVsIChhIHRvb2wgY2FsbCBjb25zdW1lcyBhXG4gICAqIHN0ZXAsIHRoZSBmaW5hbC10ZXh0IHJlcGx5IGNvbnN1bWVzIG9uZSB0b28pLiBBcHBsaWVzIHRvXG4gICAqIGV2ZXJ5IGFnZW50IHJlZ2lzdGVyZWQgdGhyb3VnaCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLmFnZW50c31cbiAgICogLSBwZXItYWdlbnQgb3ZlcnJpZGVzIGFyZW4ndCBzdXJmYWNlZCB5ZXQgYmVjYXVzZSB0aGUgc2FtZVxuICAgKiBjZWlsaW5nIGhhcyBiZWVuIHN1ZmZpY2llbnQgYWNyb3NzIGV2ZXJ5IHdvcmtsb2FkIHdlJ3ZlIHJ1bi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfQUdFTlRfTUFYX1NURVBTfSAoMjUpLCBzaXplZCB0byBmaXRcbiAgICogYSBkZWNvbXBvc2VkIEdlbmllIHR1cm4gKGdyb3VuZGluZyArIHNldmVyYWwgYGFza19nZW5pZWAgY2FsbHNcbiAgICogKyBgcHJlcGFyZV9jaGFydGAgcGVyIGRhdGFzZXQgKyB0aGUgZmluYWwtdGV4dCByZXBseSkgd2l0aFxuICAgKiBoZWFkcm9vbSBmb3IgdGhlIG1vZGVsIHRvIGNoYWluIGEgY291cGxlIG9mIGZvbGxvdy11cHMgYmVmb3JlXG4gICAqIGFuc3dlcmluZy4gTWFzdHJhJ3Mgb3duIGBhZ2VudC5nZW5lcmF0ZWAgZGVmYXVsdCBvZiA1IHdvdWxkXG4gICAqIGN1dCBtdWx0aS1zdGVwIG9yY2hlc3RyYXRpb24gb2ZmIGFmdGVyIDItMyB0b29sIGNhbGxzLCBzb1xuICAgKiBleHBsaWNpdGx5IHJhaXNpbmcgdGhlIGNlaWxpbmcgaGVyZSBpcyB3aGF0IGxldHMgdGhlXG4gICAqIGFnZW50LW1vZGUgbG9vcCBwbGF5IG91dC5cbiAgICpcbiAgICogTG93ZXIgd2hlbiBhbiB1bnVzdWFsbHkgc2xvdyBvciBleHBlbnNpdmUgbW9kZWwgbWFrZXMgbG9uZ1xuICAgKiB0dXJucyB1bmFmZm9yZGFibGU7IHJhaXNlIGZvciBleHBsb3JhdG9yeSB3b3JrbG9hZHMgdGhhdCBuZWVkXG4gICAqIHRvIGRyaWxsIGRlZXAgaW50byBhIGRhdGFzZXQgd2l0aGluIGEgc2luZ2xlIHR1cm4uXG4gICAqL1xuICBhZ2VudE1heFN0ZXBzPzogbnVtYmVyO1xuICAvKipcbiAgICogV2lyZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBnbG9iYWwgT1RlbCBwaXBlbGluZSB2aWFcbiAgICogYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogb24gb25seSB3aGVuXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgb3JcbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVGAgaXMgc2V0LiBXaGVuIHVuc2V0LCB0aGVcbiAgICogICBicmlkZ2UgaXMgc2tpcHBlZCBzbyBNYXN0cmEgZG9lcyBub3QgbG9nXG4gICAqICAgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW4gZm91bmRgIG9uIHRoZSBub29wIHRyYWNlci5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uIGV2ZW4gd2l0aG91dCBhbiBPVExQIGVuZHBvaW50LlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi5cbiAgICovXG4gIG9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuICAvKipcbiAgICogTG9nIHVzZXIgZmVlZGJhY2sgKHRodW1icyB1cC9kb3duICsgZnJlZWZvcm0gY29tbWVudHMpIHRvIE1MZmxvdyBhc1xuICAgKiB0cmFjZSBhc3Nlc3NtZW50cywgYW5kIHN1cmZhY2UgdGhlIGZlZWRiYWNrIGNvbnRyb2xzIGluIHRoZSBjaGF0IFVJLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogZW5hYmxlZCBvbmx5IHdoZW4gTUxmbG93IHRyYWNpbmcgaXNcbiAgICogICB3aXJlZCAtIGFuIE9UTFAgZXhwb3J0ZXIgZW5kcG9pbnQgaXMgc2V0IGFuZCBhbiBNTGZsb3cgZXhwZXJpbWVudFxuICAgKiAgIGlzIG5hbWVkICh0aGUgc2FtZSBzaWduYWxzIHRoZSBvYnNlcnZhYmlsaXR5IHBpcGVsaW5lIG5lZWRzIHRvXG4gICAqICAgc2hpcCB0cmFjZXMgdG8gTUxmbG93KS4gT3RoZXJ3aXNlIG9mZiwgc2luY2UgdGhlcmUnZCBiZSBubyB0cmFjZVxuICAgKiAgIHRvIGF0dGFjaCBmZWVkYmFjayB0by5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uLiBGZWVkYmFjayBjb250cm9scyBzaG93IGFuZCB3cml0ZXMgYXJlIGF0dGVtcHRlZFxuICAgKiAgIHJlZ2FyZGxlc3Mgb2YgZW52IGRldGVjdGlvbiAodXNlIHdoZW4gdGhlIGVudiBpcyBjb25maWd1cmVkIGluIGFcbiAgICogICB3YXkgdGhlIGF1dG8tcHJvYmUgZG9lc24ndCByZWNvZ25pemUpLlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi4gTm8gdHJhY2UtaWQgaGVhZGVyLCBubyBmZWVkYmFjayByb3V0ZSwgbm8gVUkuXG4gICAqXG4gICAqIEZlZWRiYWNrIGF0dGFjaGVzIHRvIGEgdHVybidzIE1MZmxvdyB0cmFjZSB2aWEgdGhlIE9wZW5UZWxlbWV0cnlcbiAgICogdHJhY2UgaWQgdGhlIHNlcnZlciBzdGFtcHMgb24gZWFjaCByZXNwb25zZTsgc2VlIGBtbGZsb3cudHNgLlxuICAgKi9cbiAgZmVlZGJhY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogRXhwb3NlIHRoZSBwbHVnaW4ncyBhZ2VudHMgKGFuZCBvcHRpb25hbGx5IHRvb2xzKSBhcyBhIE1hc3RyYSBNQ1BcbiAgICogc2VydmVyIHNvIGV4dGVybmFsIE1DUCBjbGllbnRzIC0gQ2xhdWRlIERlc2t0b3AsIEN1cnNvciwgdGhlIE1hc3RyYVxuICAgKiBwbGF5Z3JvdW5kLCBvciBhbm90aGVyIGFnZW50IC0gY2FuIGNhbGwgdGhlbSBvdmVyIHRoZSBzdGFuZGFyZCBNQ1BcbiAgICogdHJhbnNwb3J0cy4gRW5hYmxlZCBieSBkZWZhdWx0IChhZ2VudHMgb25seSk6IHdyYXBwaW5nIHRoZVxuICAgKiBhbHJlYWR5LXJlZ2lzdGVyZWQgYWdlbnRzIGNvc3RzIG5vdGhpbmcgZXh0cmEsIHNvIHRoZSBlbmRwb2ludCBpcyBvblxuICAgKiBvdXQgb2YgdGhlIGJveDsgb25seSB0aGUgYW1iaWVudCB0b29scyAod2hpY2ggYXNzdW1lIGFuIGluLXByb2Nlc3NcbiAgICogY2hhdCB0dXJuKSBzdGF5IG9mZiB1bmxlc3MgZXhwbGljaXRseSBvcHRlZCBpbi5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgLyBgdHJ1ZWA6IGV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzXG4gICAqICAgYW4gYGFza188YWdlbnRJZD5gIE1DUCB0b29sIHVuZGVyIGEgc2VydmVyIHdob3NlIGlkIGlzIHRoZSBwbHVnaW5cbiAgICogICBuYW1lLlxuICAgKiAtIGBmYWxzZWA6IG5vIE1DUCBlbmRwb2ludHMuXG4gICAqIC0ge0BsaW5rIE1hc3RyYU1jcENvbmZpZ306IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIHNlcnZlciBpZCxcbiAgICogICBhZHZlcnRpc2VkIG1ldGFkYXRhLCBhbmQgd2hpY2ggYWdlbnRzIC8gdG9vbHMgYXJlIGV4cG9zZWQuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgdGhlIHN0b2NrIE1hc3RyYSBNQ1Agcm91dGVzIG1vdW50IHVuZGVyIHRoZSBwbHVnaW4nc1xuICAgKiBiYXNlIHBhdGggKG5vIGJlc3Bva2Ugcm91dGUgaXMgYWRkZWQgLSB0aGUgc2VydmVyIGlzIGhhbmRlZCB0byB0aGVcbiAgICogYE1hc3RyYWAgaW5zdGFuY2UgdmlhIGBtY3BTZXJ2ZXJzYCwgd2hpY2ggYEBtYXN0cmEvZXhwcmVzc2Agc2VydmVzKTpcbiAgICpcbiAgICogLSBTdHJlYW1hYmxlIEhUVFA6IGBQT1NUIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vbWNwYFxuICAgKiAtIFNTRSAobGVnYWN5KTogICAgYEdFVCAgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9zc2VgXG4gICAqICAgICAgICAgICAgICAgICAgICBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21lc3NhZ2VzYFxuICAgKlxuICAgKiBSZXF1ZXN0cyBydW4gdW5kZXIgdGhlIHNhbWUgQXBwS2l0IE9CTyBzY29wZSBhcyB0aGUgY2hhdCByb3V0ZXMsIHNvXG4gICAqIGFuIGFnZW50IGludm9rZWQgb3ZlciBNQ1AgcmVzb2x2ZXMgaXRzIG1vZGVsIGFuZCB0b29scyBhcyB0aGVcbiAgICogY2FsbGluZyB1c2VyLlxuICAgKi9cbiAgbWNwPzogYm9vbGVhbiB8IE1hc3RyYU1jcENvbmZpZztcbiAgLyoqXG4gICAqIEhvdyBtdWNoIG9mIHRoZSBzdG9jayBgQG1hc3RyYS9leHByZXNzYCBtYW5hZ2VtZW50IEFQSSBpcyByZWFjaGFibGVcbiAgICogdGhyb3VnaCB0aGUgcGx1Z2luIG1vdW50LiBgQG1hc3RyYS9leHByZXNzYCByZWdpc3RlcnMgaXRzIGZ1bGwgcm91dGVcbiAgICogdGFibGUgKGFnZW50IGluZmVyZW5jZSBwbHVzIGFkbWluIC8gbXV0YXRpbmcgcm91dGVzOiBkaXJlY3QgdG9vbFxuICAgKiBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnkgcmVhZC93cml0ZSwgdGVsZW1ldHJ5LCBsb2dzLFxuICAgKiBzY29yZXMpLiBBcHBLaXQgYWxyZWFkeSBhdXRoZW50aWNhdGVzIGV2ZXJ5IHJlcXVlc3QgYXMgdGhlIE9CTyB1c2VyLFxuICAgKiBidXQgbm90aGluZyB0aGVyZSByZXN0cmljdHMgKndoaWNoKiBvZiB0aG9zZSBvcGVyYXRpb25zIHRoZSBicm93c2VyXG4gICAqIGNsaWVudCBtYXkgaW52b2tlLlxuICAgKlxuICAgKiAtIGBcInNjb3BlZFwiYCAoZGVmYXVsdCk6IG9ubHkgdGhlIHJvdXRlcyB0aGUgY2hhdCBjbGllbnQgbGVnaXRpbWF0ZWx5XG4gICAqICAgbmVlZHMgYXJlIGRpc3BhdGNoZWQgdG8gTWFzdHJhIC0gYWdlbnQgaW5mZXJlbmNlXG4gICAqICAgKGBzdHJlYW1gIC8gYGdlbmVyYXRlYCAvIGBuZXR3b3JrYCksIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpc1xuICAgKiAgIHBsdWdpbidzIG93biBPQk8tIGFuZCByZXNvdXJjZS1zY29wZWQgYC9yb3V0ZS8qYCByb3V0ZXMgKGhpc3RvcnkgL1xuICAgKiAgIHRocmVhZHMpLCBhbmQsIHdoZW4ge0BsaW5rIG1jcH0gaXMgZW5hYmxlZCwgdGhlIE1DUCB0cmFuc3BvcnQuXG4gICAqICAgRXZlcnl0aGluZyBlbHNlICh0b29sIGV4ZWN1dGlvbiwgd29ya2Zsb3cgY29udHJvbCwgcmF3IG1lbW9yeSxcbiAgICogICB0ZWxlbWV0cnksIGxvZ3MsIHNjb3JlcywgYW5kIG90aGVyIG11dGF0aW9ucykgaXMgcmVqZWN0ZWQgd2l0aFxuICAgKiAgIGA0MDNgIGJlZm9yZSBpdCByZWFjaGVzIE1hc3RyYS5cbiAgICogLSBgXCJmdWxsXCJgOiBkaXNwYXRjaCB0aGUgZW50aXJlIHN0b2NrIE1hc3RyYSBBUEkuIFVzZSBvbmx5IGZvciBhXG4gICAqICAgdHJ1c3RlZCBmaXJzdC1wYXJ0eSBjb25zb2xlIHRoYXQgZ2VudWluZWx5IG5lZWRzIHRoZSBtYW5hZ2VtZW50XG4gICAqICAgc3VyZmFjZS5cbiAgICovXG4gIGFwaUFjY2Vzcz86IFwic2NvcGVkXCIgfCBcImZ1bGxcIjtcbiAgLyoqXG4gICAqIFdoaWNoIERhdGFicmlja3MgaWRlbnRpdHkgdGhlIGFnZW50cycgd29ya3NwYWNlIGNhbGxzIHJ1biBhczogdGhlXG4gICAqIHNlcnZpbmctZW5kcG9pbnQgY2F0YWxvZ3VlIGJlaGluZCB0aGUgbW9kZWwgcGlja2VyLCBHZW5pZSBzdWdnZXN0aW9ucyxcbiAgICogYGFza19nZW5pZWAsIGFuZCB0aGUgU3RhdGVtZW50IEV4ZWN1dGlvbiBmZXRjaCBiZWhpbmQgYSBgW2RhdGE6PGlkPl1gXG4gICAqIGVtYmVkLiBGYWxscyBiYWNrIHRvIGBNQVNUUkFfR0VOSUVfSURFTlRJVFlgLCB0aGVuIGBcInVzZXJcImAuXG4gICAqXG4gICAqIE9uLWJlaGFsZi1vZiAoT0JPKSBhdXRoIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gYmUgYSBtZW1iZXIgb2YgdGhlXG4gICAqIFdPUktTUEFDRSwgbm90IGp1c3Qgb2YgdGhlIERhdGFicmlja3MgYWNjb3VudC4gQW4gYXBwIHNoYXJlZCB3aXRoIGFuXG4gICAqIGFjY291bnQtbGV2ZWwgZ3JvdXAgY2FuIGJlIG9wZW5lZCBieSBzb21lb25lIHdob3NlIHRva2VuIGlzIHZhbGlkIGJ1dCB3aG9zZVxuICAgKiBldmVyeSB3b3Jrc3BhY2UgY2FsbCBmYWlscyB3aXRoIGBVbmF1dGhvcml6ZWQgYWNjZXNzIHRvIE9yZzogPGlkPmAgLSBhbmRcbiAgICogZ3JhbnRpbmcgd29ya3NwYWNlIG1lbWJlcnNoaXAgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSwgc2luY2UgYSB3b3Jrc3BhY2VcbiAgICogY2FwcyBtZW1iZXJzaGlwIHdlbGwgYmVsb3cgdGhlIHNpemUgb2YgYSBsYXJnZSBhY2NvdW50J3MgdXNlciBncm91cC4gVGhlXG4gICAqIGFwcCdzIHNlcnZpY2UgcHJpbmNpcGFsIGFscmVhZHkgaG9sZHMgdGhlIGdyYW50cyB0aGUgYXBwIHdhcyBkZXBsb3llZCB3aXRoLlxuICAgKlxuICAgKiAtIGBcInVzZXJcImAgKGRlZmF1bHQpOiBhbHdheXMgT0JPLiBQZXItdXNlciBhdHRyaWJ1dGlvbiwgYW5kIEdlbmllIC8gVW5pdHlcbiAgICogICBDYXRhbG9nIHJvdyBmaWx0ZXJzIGFwcGx5IHBlciB1c2VyLiBDb3JyZWN0IHdoZW4gZXZlcnkgY2FsbGVyIGlzIGFcbiAgICogICB3b3Jrc3BhY2UgbWVtYmVyLCBhbmQgdW5jaGFuZ2VkIGZyb20gYmVmb3JlIHRoaXMgb3B0aW9uIGV4aXN0ZWQuXG4gICAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImA6IGFsd2F5cyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLiBOZWVkcyBubyBPQk9cbiAgICogICBzY29wZXMgYW5kIHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBhdCB0aGUgY29zdCBvZlxuICAgKiAgIHBlci11c2VyIGF0dHJpYnV0aW9uIGluIEdlbmllIC8gVW5pdHkgQ2F0YWxvZy5cbiAgICogLSBgXCJhdXRvXCJgOiBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAqICAgd2hlbiBpdCBkb2VzIG5vdC4gRm9yIGFuIGFwcCBzZXJ2aW5nIEJPVEggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGFcbiAgICogICBkb29yIHRoYXQgaGFzIG5vIHRva2VuIHRvIGZvcndhcmQgLSBhIGBAZGJ4LXRvb2xzL2NsaS10dW5uZWxgIGdhdGUsIGFcbiAgICogICBUZWFtcyBjaGFubmVsIC0gd2hlcmUgQXBwS2l0J3MgYGFzVXNlcmAgd291bGQgb3RoZXJ3aXNlIHRocm93XG4gICAqICAgYEF1dGhlbnRpY2F0aW9uRXJyb3JgIG91dHNpZGUgYE5PREVfRU5WPWRldmVsb3BtZW50YC5cbiAgICpcbiAgICogVGhlIHNlcnZpY2UtcHJpbmNpcGFsIHBhdGggY2hhbmdlcyBvbmx5IHRoZSBEYXRhYnJpY2tzIENSRURFTlRJQUwuIE1lbW9yeVxuICAgKiB0aHJlYWRzLCB0aGUgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlLCBhbmQgdHJhY2UgbWV0YWRhdGEgc3RpbGwga2V5IG9mZiB0aGVcbiAgICogZm9yd2FyZGVkIHVzZXIsIHNvIGNhbGxlcnMgc2hhcmluZyB0aGUgc2VydmljZSBwcmluY2lwYWwncyBkYXRhIGFjY2VzcyBrZWVwXG4gICAqIHNlcGFyYXRlIGNvbnZlcnNhdGlvbnMgYW5kIGNhbm5vdCByZWFkIGVhY2ggb3RoZXIncyB0aHJlYWRzIG9yIGNoYXJ0cy5cbiAgICpcbiAgICogQGV4YW1wbGUgQW4gYXBwIGFueSBhY2NvdW50IHVzZXIgY2FuIG9wZW5cbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJzZXJ2aWNlLXByaW5jaXBhbFwiLCBnZW5pZVNwYWNlczogeyBkZWZhdWx0OiBzcGFjZUlkIH0gfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBPbmUgYXBwIGJlaGluZCBib3RoIHRoZSBmcm9udCBkb29yIGFuZCBhIHB1YmxpYyB0dW5uZWxcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJhdXRvXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqL1xuICBnZW5pZUlkZW50aXR5PzogTWFzdHJhSWRlbnRpdHlNb2RlO1xuICAvKipcbiAgICogT3B0aW9uYWwgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGNoYXJ0cyBwcm9kdWNlZCBieSB0aGUgYnVpbHQtaW5cbiAgICogYHJlbmRlcl9kYXRhYCAvIGBwcmVwYXJlX2NoYXJ0YCB0b29scy4gV2hlbiBzZXQsIHRoZSBjaGFydCBwbGFubmVyJ3NcbiAgICogRWNoYXJ0cyBvdXRwdXQgaXMgdGhlbWVkIHdpdGggdGhlIGJyYW5kJ3MgcGFsZXR0ZSAoc2VyaWVzIGNvbG9ycyBkZXJpdmVkXG4gICAqIGZyb20gYGNvbG9ycy5wcmltYXJ5YCAvIGBjb2xvcnMuYWNjZW50YCkgYW5kIHNhbnMgZm9udFxuICAgKiAoYHR5cG9ncmFwaHkuc2Fuc2ApIGluc3RlYWQgb2YgRWNoYXJ0cycgZGVmYXVsdHMuIE9taXQgZm9yIHRoZSBkZWZhdWx0XG4gICAqIEVjaGFydHMgbG9vay5cbiAgICpcbiAgICogUGFzcyB0aGUgcG9ydGFibGUge0BsaW5rIEJyYW5kQ29udGV4dH0gc2hhcmVkIGFjcm9zcyB0aGUgVUkgYW5kXG4gICAqIGxpYnJhcmllcyAoZS5nLiBgYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dGAgZnJvbSBgQGRieC10b29scy9zaGFyZWQtY29yZWAsXG4gICAqIG9yIGEgY3VzdG9tZXIgYnJhbmQpIC0gdGhlIHNhbWUgb2JqZWN0IHRoZSBlbWFpbCBhZGQtb24gYW5kIHRoZSBVSVxuICAgKiBgQnJhbmRQcm92aWRlcmAgY29uc3VtZSwgc28gYSBob3N0IHRoZW1lcyBjaGFydHMsIGVtYWlsLCBhbmQgVUkgZnJvbSBvbmVcbiAgICogc291cmNlLlxuICAgKi9cbiAgYnJhbmQ/OiBCcmFuZENvbnRleHQ7XG4gIC8qKlxuICAgKiBSZW1vdGUgQWdlbnQtU2tpbGwgc291cmNlcyBtYXRlcmlhbGl6ZWQgb25jZSBhdCBhcHAgc3RhcnR1cC4gQSBzaW5nbGVcbiAgICogc291cmNlLCBhIGxpc3QsIG9yIGEgYHsgc291cmNlcywgZmFpbE9uRXJyb3I/LCAuLi4gfWAgYmFnLlxuICAgKlxuICAgKiBFYWNoIHNvdXJjZSBpcyBhIEdpdEh1YiBgb3duZXIvcmVwb2AsIGEgZ2l0IC8gR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3RcbiAgICogYFNLSUxMLm1kYCAvIGFyY2hpdmUgZG93bmxvYWQgVVJMLiBSZXNvbHV0aW9uIHByZWZlcnMgdGhlIE9QVElPTkFMIGBza2lsbHNgXG4gICAqIG5wbSBDTEkgKGEgcGVlciBkZXApIHdoaWNoIGlzIGNvcGllZCBpbnRvIGEgdGVtcCBkaXIgYW5kIHRoZW4gcGVyc2lzdGVkO1xuICAgKiB3aXRob3V0IGl0LCBhIFVSTCBzb3VyY2UgaXMgZmV0Y2hlZCBkaXJlY3RseS4gQSBzb3VyY2UgdGhhdCByZXNvbHZlc1xuICAgKiB0aHJvdWdoIG5laXRoZXIgZmFpbHMgc3RhcnR1cCB1bmxlc3MgYGZhaWxPbkVycm9yOiBmYWxzZWAuXG4gICAqXG4gICAqIFByb3Zpc2lvbmVkIHNraWxscyBhcmUgd3JpdHRlbiB0byB0aGUgRGF0YWJyaWNrcyB1c2VyJ3MgQXNzaXN0YW50IHNraWxsc1xuICAgKiBmb2xkZXIgKGAvVXNlcnMvPGVtYWlsPi8uYXNzaXN0YW50L3NraWxsc2AsIHRoZSBcInNhdmUgdGhpcyBhcyBhIHNraWxsXCJcbiAgICogdGFyZ2V0KSBzbyB0aGV5IHBlcnNpc3QgYW5kIGFyZSBwaWNrZWQgdXAgYnkgdGhlIGJ1aWx0LWluIEFzc2lzdGFudC1za2lsbHNcbiAgICogbW91bnQuIFdpdGggbm8gd3JpdGFibGUgd29ya3NwYWNlLCB0aGV5IGdvIHRvIGEgbG9jYWwgdGVtcCBkaXIgaW5zdGVhZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgcmVtb3RlU2tpbGxzOiBcInZlcmNlbC1sYWJzL2FnZW50LXNraWxsc1wiIH0pO1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIHJlbW90ZVNraWxsczoge1xuICAgKiAgICAgc291cmNlczogW1widmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIsIFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9za2lsbC5tZFwiXSxcbiAgICogICAgIGZhaWxPbkVycm9yOiBmYWxzZSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICByZW1vdGVTa2lsbHM/OiBSZW1vdGVTa2lsbHNPcHRpb247XG59XG5cbi8qKlxuICogSlNPTiBTY2hlbWEgcHVibGlzaGVkIG9uIHRoZSBtYW5pZmVzdCdzIGBjb25maWcuc2NoZW1hYCwgbWlycm9yaW5nIHRoZVxuICogZG9jdW1lbnRlZCBkZWZhdWx0cyBhbmQgZW52aXJvbm1lbnQgZmFsbGJhY2tzIG9mIHtAbGluayBNYXN0cmFQbHVnaW5Db25maWd9LlxuICpcbiAqIENvdmVycyB0aGUgSlNPTi1leHByZXNzaWJsZSBvcHRpb25zIG9ubHkuIGBhZ2VudHNgLCBgdG9vbHNgLCBhbmQgYVxuICogYGRlZmF1bHRNb2RlbGAgcGFzc2VkIGFzIGEgTWFzdHJhIGBEeW5hbWljQXJndW1lbnRgIGFyZSBjb2RlLWRlZmluZWRcbiAqIChmdW5jdGlvbnMgLyBjbGFzcyBpbnN0YW5jZXMpLCBzbyB0aGV5IGNhcnJ5IG5vIHNjaGVtYSBlbnRyeTsgdGhlXG4gKiBgZGVmYXVsdE1vZGVsYCBwcm9wZXJ0eSBiZWxvdyBkZXNjcmliZXMgaXRzIHN0cmluZyBmb3JtLlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX0NPTkZJR19TQ0hFTUE6IENvbmZpZ1NjaGVtYSA9IHtcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgcHJvcGVydGllczoge1xuICAgIHByb3ZpZGVySWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjogJ01hc3RyYSBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlciBpZC4gRGVmYXVsdHMgdG8gXCJkYXRhYnJpY2tzXCIuJyxcbiAgICB9LFxuICAgIHJlbW90ZVNraWxsczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYXJyYXlcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1JlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIHByb3Zpc2lvbmVkIGF0IHN0YXJ0dXA6IFwiYWl0b29sc1wiIGZvciBEYXRhYnJpY2tzXFwnIG93biBza2lsbCBzZXQgKHJlYWQgZnJvbSB0aGUgcHVibGljIGRhdGFicmlja3MvZGF0YWJyaWNrcy1hZ2VudC1za2lsbHMgcmVwbywgbm8gQ0xJIG5lZWRlZCksIGEgR2l0SHViIG93bmVyL3JlcG8sIGEgZ2l0L0dpdExhYiBVUkwsIG9yIGEgZGlyZWN0IFNLSUxMLm1kL2FyY2hpdmUgVVJMLiBOb24tYWl0b29scyBzb3VyY2VzIHByZWZlciB0aGUgb3B0aW9uYWwgYHNraWxsc2AgbnBtIENMSSwgZWxzZSBhIGRpcmVjdCBmZXRjaDsgZmFpbHMgc3RhcnR1cCBvbiBlcnJvciB1bmxlc3MgZmFpbE9uRXJyb3I6ZmFsc2UuIFdyaXR0ZW4gdG8gdGhlIERhdGFicmlja3MgdXNlciBBc3Npc3RhbnQgc2tpbGxzIGZvbGRlciwgb3IgYSBsb2NhbCB0ZW1wIGRpciB3aGVuIG5vIHdvcmtzcGFjZSBpcyB3cml0YWJsZS4nLFxuICAgIH0sXG4gICAgc3RvcmFnZToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBvc3RncmVzU3RvcmUgZm9yIE1hc3RyYSB0aHJlYWRzIC8gbWVzc2FnZXMuIGB0cnVlYCByZXVzZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbCwgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIG1lbW9yeToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgc2VtYW50aWMgcmVjYWxsLiBgdHJ1ZWAgcmV1c2VzIHRoZSBgbGFrZWJhc2VgIHBsdWdpbidzIHBvb2wsIGFuIG9iamVjdCBvcGVucyBhIGRlZGljYXRlZCBzdG9yZS4gQXV0by1lbmFibGVkIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHJlZ2lzdGVyZWQuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0QWdlbnQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJBZ2VudCBpZCB1c2VkIHdoZW4gdGhlIGNsaWVudCBuYW1lcyBub25lLiBEZWZhdWx0cyB0byB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBhZ2VudCwgZWxzZSB0aGUgYnVpbHQtaW4gYGRlZmF1bHRgLlwiLFxuICAgIH0sXG4gICAgZGVmYXVsdE1vZGVsOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU2VydmluZyBlbmRwb2ludCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzIG93biBtb2RlbC4gRmFsbHMgYmFjayB0byBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRSwgdGhlbiB0aGUgYXV0by1yZXNvbHZlZCBjYXRhbG9ndWUuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWxGYWxsYmFja3M6IHtcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByaW9yaXR5LW9yZGVyZWQgZW5kcG9pbnQgbmFtZXMgdHJpZWQgYmVmb3JlIHRoZSBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZSB3aGVuIG5vdGhpbmcgZWxzZSBwaW5zIGEgbW9kZWwuXCIsXG4gICAgfSxcbiAgICBtb2RlbEZ1enp5TWF0Y2g6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgYWdhaW5zdCB0aGUgd29ya3NwYWNlIGNhdGFsb2d1ZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlUaHJlc2hvbGQ6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBmb3IgdGhlIGZ1enp5IG1hdGNoZXIsIDAgKGV4YWN0KSB0byAxIChhbnl0aGluZykuIERlZmF1bHRzIHRvIDAuNC5cIixcbiAgICB9LFxuICAgIG1vZGVsQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlRUTCBpbiBtcyBmb3IgdGhlIHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIHBlciB3b3Jrc3BhY2UgaG9zdC4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLlwiLFxuICAgIH0sXG4gICAgbW9kZWxPdmVycmlkZToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJIb25vciBhIHBlci1yZXF1ZXN0IG1vZGVsIG92ZXJyaWRlIGZyb20gdGhlIFgtTWFzdHJhLU1vZGVsIGhlYWRlciwgP21vZGVsPSBxdWVyeSwgb3IgYSBgbW9kZWxgIGJvZHkgZmllbGQuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlczoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6IFtcInN0cmluZ1wiLCBcIm9iamVjdFwiXSB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiR2VuaWUgc3BhY2VzIHRoZSBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLCBrZXllZCBieSBhbGlhcyAodGhlIHRvb2wtbmFtZSBzdWZmaXgpLiBFYWNoIHZhbHVlIGlzIGEgc3BhY2UgaWQgb3IgYHsgc3BhY2VJZCwgaGludCB9YC4gRmFsbHMgYmFjayB0byB0aGUgYGdlbmllYCBwbHVnaW4ncyBvd24gYHNwYWNlc2AgY29uZmlnLCB0aGVuIERBVEFCUklDS1NfR0VOSUVfU1BBQ0VfSUQgdW5kZXIgdGhlIGBkZWZhdWx0YCBhbGlhcy5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVFRMIGluIG1zIGZvciB0aGUgR2VuaWUgc3BhY2UgbWV0YWRhdGEgY2FjaGUuIERlZmF1bHRzIHRvIDUgbWludXRlcy5cIixcbiAgICB9LFxuICAgIGFnZW50TWF4U3RlcHM6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNYXhpbXVtIExMTSBzdGVwcyBlYWNoIGFnZW50IGdldHMgcGVyIHR1cm4gKGEgdG9vbCBjYWxsIGFuZCB0aGUgZmluYWwgcmVwbHkgZWFjaCBjb25zdW1lIG9uZSkuIERlZmF1bHRzIHRvIDI1LlwiLFxuICAgIH0sXG4gICAgc3RyaXBTdGFsZUNoYXJ0czoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTdHJpcCBjaGFydElkcyBmcm9tIHJlY2FsbGVkIGFzc2lzdGFudCB0b29sIHJlc3VsdHMgc28gdGhlIG1vZGVsIGNhbm5vdCByZXVzZSBhIHR1cm4tc2NvcGVkIGNoYXJ0IG1hcmtlci4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHN0eWxlSW5zdHJ1Y3Rpb25zOiB7XG4gICAgICB0eXBlOiBbXCJzdHJpbmdcIiwgXCJib29sZWFuXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3R5bGUgZ3VhcmRyYWlscyBhcHBlbmRlZCB0byBldmVyeSBhZ2VudCdzIGluc3RydWN0aW9ucy4gQSBzdHJpbmcgcmVwbGFjZXMgdGhlIGJ1aWx0LWluIGJsb2NrLCBgZmFsc2VgIGRpc2FibGVzIGl0LlwiLFxuICAgIH0sXG4gICAgb2JzZXJ2YWJpbGl0eToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJCcmlkZ2UgTWFzdHJhIHNwYW5zIGludG8gQXBwS2l0J3MgT1RlbCBwaXBlbGluZS4gRGVmYXVsdHMgdG8gb24gb25seSB3aGVuIE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCBvciBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UIGlzIHNldC5cIixcbiAgICB9LFxuICAgIGZlZWRiYWNrOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkxvZyB0aHVtYnMgLyBjb21tZW50IGFzc2Vzc21lbnRzIHRvIE1MZmxvdyBhbmQgc3VyZmFjZSB0aGUgZmVlZGJhY2sgY29udHJvbHMuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBhbiBPVExQIGVuZHBvaW50IGFuZCBNTEZMT1dfRVhQRVJJTUVOVF9JRCBvciBNTEZMT1dfRVhQRVJJTUVOVF9OQU1FIGFyZSBzZXQuXCIsXG4gICAgfSxcbiAgICBtY3A6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJFeHBvc2UgdGhlIHJlZ2lzdGVyZWQgYWdlbnRzIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBhZ2VudHMtb25seTsgYW4gb2JqZWN0IHR1bmVzIHRoZSBzZXJ2ZXIgaWQsIGFkdmVydGlzZWQgbWV0YWRhdGEsIGFuZCB3aGV0aGVyIGFtYmllbnQgdG9vbHMgYXJlIGV4cG9zZWQuXCIsXG4gICAgfSxcbiAgICBnZW5pZUlkZW50aXR5OiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgLy8gRGVyaXZlZCBmcm9tIHRoZSByZXNvbHZlcidzIG93biBsaXN0LCBzbyBhIG1vZGUgY2FuIG5ldmVyIGJlIGFjY2VwdGVkIGF0XG4gICAgICAvLyBydW50aW1lIHdoaWxlIHRoZSBwdWJsaXNoZWQgc2NoZW1hIChhbmQgdGhlIFVJIGJ1aWx0IGZyb20gaXQpIG9taXRzIGl0LlxuICAgICAgZW51bTogWy4uLklERU5USVRZX01PREVTXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSB0aGUgYWdlbnRzXFwnIHdvcmtzcGFjZSBjYWxscyAoc2VydmluZyBjYXRhbG9ndWUsIEdlbmllLCBzdGF0ZW1lbnQgZXhlY3V0aW9uKSBydW4gYXMuIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUJBQW1CLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixnQkFBNkMsRUFDN0MsZUFBd0I7SUFFeEIsSUFBSSxlQUFlLElBQUksZ0JBQWdCO1FBQUUsT0FBTyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sZUFBZSxJQUFJLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLGNBQStCO0lBQzVELE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFxQixDQUFDO0lBQ3RFLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQXNjRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFpQjtJQUNoRCxJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLGlFQUFpRTtTQUMvRTtRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO1lBQ25DLFdBQVcsRUFDVCxnZUFBZ2U7U0FDbmU7UUFDRCxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQzNCLFdBQVcsRUFDVCxvTEFBb0w7U0FDdkw7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQzNCLFdBQVcsRUFDVCxrTEFBa0w7U0FDckw7UUFDRCxZQUFZLEVBQUU7WUFDWixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFDVCxnSEFBZ0g7U0FDbkg7UUFDRCxZQUFZLEVBQUU7WUFDWixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFDVCxxSkFBcUo7U0FDeEo7UUFDRCxxQkFBcUIsRUFBRTtZQUNyQixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDekIsV0FBVyxFQUNULDZHQUE2RztTQUNoSDtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULGtGQUFrRjtTQUNyRjtRQUNELG1CQUFtQixFQUFFO1lBQ25CLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDRGQUE0RjtTQUMvRjtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDRGQUE0RjtTQUMvRjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULDhIQUE4SDtTQUNqSTtRQUNELFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2Qsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDcEQsV0FBVyxFQUNULG9QQUFvUDtTQUN2UDtRQUNELG9CQUFvQixFQUFFO1lBQ3BCLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLHNFQUFzRTtTQUNwRjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULGdIQUFnSDtTQUNuSDtRQUNELGdCQUFnQixFQUFFO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULDZIQUE2SDtTQUNoSTtRQUNELGlCQUFpQixFQUFFO1lBQ2pCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7WUFDM0IsV0FBVyxFQUNULHFIQUFxSDtTQUN4SDtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULHFKQUFxSjtTQUN4SjtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULHFMQUFxTDtTQUN4TDtRQUNELEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDM0IsV0FBVyxFQUNULDRKQUE0SjtTQUMvSjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsMkVBQTJFO1lBQzNFLDBFQUEwRTtZQUMxRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN6QixXQUFXLEVBQ1QsNmZBQTZmO1NBQ2hnQjtRQUNELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN4QixXQUFXLEVBQ1QscU9BQXFPO1NBQ3hPO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsMElBQTBJO1NBQzdJO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQbHVnaW4gY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgc2hhcmVkIGBSZXF1ZXN0Q29udGV4dGAga2V5cy5cbiAqXG4gKiBPd25zIHRoZSB0eXBlZCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfSAodGhlIHBsdWdpbidzIHNsaWNlIG9mIEFwcEtpdFxuICogY29uZmlnKSBhbmQge0BsaW5rIE1BU1RSQV9DT05GSUdfU0NIRU1BfSwgdGhlIEpTT04gU2NoZW1hIHRoZSBtYW5pZmVzdFxuICogcHVibGlzaGVzIGZvciBpdCBzbyBzY2FmZm9sZGluZyB0b29scyBhbmQgYWdlbnRzIGNhbiByZWFkIHRoZSBvcHRpb24gc2V0LlxuICpcbiAqIFByZWNlZGVuY2UgcGVyIGZpZWxkIGlzIGV4cGxpY2l0IHBsdWdpbiBjb25maWcsIHRoZW4gdGhlIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZSBuYW1lZCBvbiB0aGUgZmllbGQsIHRoZW4gYSBidWlsdC1pbiBkZWZhdWx0LlxuICpcbiAqIEtlcHQgaW4gYSBsZWFmIG1vZHVsZSBzbyBgcGx1Z2luLnRzYCwgYHNlcnZlci50c2AsIGBtb2RlbC50c2AsIGFuZFxuICogYG1lbW9yeS50c2AgY2FuIGltcG9ydCB0aGVtIHdpdGhvdXQgY3JlYXRpbmcgYSBjeWNsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZ2V0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIENvbmZpZ1NjaGVtYSB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBBZ2VudENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvYWdlbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuaW1wb3J0IHsgTUFTVFJBX1JFU09VUkNFX0lEX0tFWSwgTUFTVFJBX1RIUkVBRF9JRF9LRVkgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQZ1ZlY3RvckNvbmZpZywgUG9zdGdyZXNTdG9yZUNvbmZpZyB9IGZyb20gXCJAbWFzdHJhL3BnXCI7XG5cbmltcG9ydCB0eXBlIHsgTWFzdHJhQWdlbnREZWZpbml0aW9uLCBNYXN0cmFUb29scyB9IGZyb20gXCIuL2FnZW50cy50c1wiO1xuaW1wb3J0IHR5cGUgeyBHZW5pZVNwYWNlc0NvbmZpZyB9IGZyb20gXCIuL2dlbmllLnRzXCI7XG5pbXBvcnQgeyBJREVOVElUWV9NT0RFUywgdHlwZSBNYXN0cmFJZGVudGl0eU1vZGUgfSBmcm9tIFwiLi9pZGVudGl0eS50c1wiO1xuaW1wb3J0IHR5cGUgeyBSZW1vdGVTa2lsbHNPcHRpb24gfSBmcm9tIFwiLi9yZW1vdGUtc2tpbGxzLnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9FTUFJTF9LRVkgPSBcIm1hc3RyYV9fdXNlckVtYWlsXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIC8vIE1vZGVsIG92ZXJyaWRlIGtleSBpcyBvd25lZCBieSBgc2VydmluZy50c2A7IHNwZWxsZWQgaW5saW5lIGhlcmVcbiAgLy8gc28gdGhpcyBtb2R1bGUgc3RheXMgbGVhZi1sZXZlbCAobm8gY3ljbGVzIHdpdGggYHNlcnZpbmcudHNgKS5cbiAgXCJtYXN0cmFfX21vZGVsX292ZXJyaWRlXCIsXG5dO1xuXG4vKiogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHBsdXMgdGhlIGNhbm9uaWNhbCB1c2VyIGlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBpZGVudGl0eSBmb3IgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0OiB0aGUgT0JPIHVzZXIgaWQgb24gYVxuICogdXNlci1zY29wZWQgY2FsbCwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoY29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFwidXNlcklkXCIgaW4gY29udGV4dCA/IGNvbnRleHQudXNlcklkIDogY29udGV4dC5zZXJ2aWNlVXNlcklkO1xufVxuXG4vKipcbiAqIFdobyBhIHR1cm4gaXMgQVRUUklCVVRFRCB0bywgd2hpY2ggaXMgbm90IGFsd2F5cyB3aG9zZSBEYXRhYnJpY2tzIGNyZWRlbnRpYWxcbiAqIHJ1bnMgaXQuIEFuIE9CTyBjb250ZXh0J3Mgb3duIHVzZXIgaWQgaXMgYXV0aG9yaXRhdGl2ZS4gVW5kZXIgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCwgZXZlcnkgY2FsbGVyIHNoYXJlcyBvbmUgY3JlZGVudGlhbCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlkIGlzXG4gKiB3aGF0IGtlZXBzIG1lbW9yeSB0aHJlYWRzIGFuZCBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2VzIGRpc3RpbmN0OyB0aGUgc2VydmljZVxuICogcHJpbmNpcGFsIGlkIGlzIHRoZSBmbG9vciB3aGVuIG5vIHVzZXIgd2FzIGZvcndhcmRlZC5cbiAqXG4gKiBUaGlzIHJ1bGUgaGFzIHRvIGJlIGlkZW50aWNhbCBldmVyeXdoZXJlIGEgY2FjaGUga2V5IGlzIGJ1aWx0LCBzbyBib3RoIHRoZVxuICogd3JpdGUgc2lkZSAodGhlIGBSZXF1ZXN0Q29udGV4dGAgdXNlciBzdGFtcGVkIGJ5IGBzdGFtcFJlcXVlc3RDb250ZXh0VXNlcmApXG4gKiBhbmQgdGhlIHJlYWQgc2lkZSAodGhlIHBsdWdpbidzIG93biBBcHBLaXQgcm91dGVzLCB3aGljaCBoYXZlIGEgcmVxdWVzdCBidXRcbiAqIG5vIGBSZXF1ZXN0Q29udGV4dGApIGRlcml2ZSB0aGVpciBrZXkgZnJvbSB0aGlzIG9uZSBmdW5jdGlvbi4gV2hlbiB0aGUgdHdvXG4gKiBkaXNhZ3JlZWQsIGEgY2hhcnQgd3JpdHRlbiB1bmRlciB0aGUgZm9yd2FyZGVkIHVzZXIgaWQgd2FzIHJlYWQgYmFjayB1bmRlclxuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIGFuZCB0aGUgZW1iZWQgcm91dGUgYW5zd2VyZWQgNDA0LCB3aGljaCB0aGUgY2hhdCBVSVxuICogcmVuZGVycyBhcyBhbiBleHBpcmVkIGNoYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlZFVzZXJJZChcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBmb3J3YXJkZWRVc2VySWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBpZiAoXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCkgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gIHJldHVybiBmb3J3YXJkZWRVc2VySWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChleGVjdXRpb25Db250ZXh0KTtcbn1cblxuLyoqXG4gKiBJZGVudGl0eSBldmVyeSBwZXItdXNlciBjYWNoZSBlbnRyeSBpcyBuYW1lc3BhY2VkIHVuZGVyLCBzbyBhbiBPQk8gcmVzdWx0XG4gKiBjYW5ub3QgYmUgcmVhZCBiYWNrIGJ5IGFub3RoZXIgY2FsbGVyLlxuICpcbiAqIFByZWZlcnMgdGhlIHtAbGluayBVc2VyfSB0aGF0IHtAbGluayBNYXN0cmFTZXJ2ZXJ9IHN0YW1wcyBvbiB0aGUgcmVxdWVzdFxuICogY29udGV4dCwgd2hvc2UgaWQgYWxyZWFkeSBmb2xsb3dzIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfS4gVGhlIE1DUCB0cmFuc3BvcnRcbiAqIHJvdXRlcyBkbyBub3QgdGhyZWFkIHRoYXQgY29udGV4dCBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyB0aG9zZSBmYWxsIGJhY2sgdG9cbiAqIHRoZSBhbWJpZW50IGV4ZWN1dGlvbiBjb250ZXh0ICh0aGUgYWN0aXZlIE9CTyBzY29wZSwgb3IgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCkuIEEgY2FsbGVyIGhvbGRpbmcgYW4gZXhwcmVzcyByZXF1ZXN0IHNob3VsZCBidWlsZCBpdHMga2V5IGZyb21cbiAqIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfSBpbnN0ZWFkLCBzbyB0aGUgZm9yd2FyZGVkIHVzZXIgaXMgbm90IGxvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlcktleShyZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gdXNlcj8uaWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChnZXRFeGVjdXRpb25Db250ZXh0KCkpO1xufVxuXG4vKiogUGdWZWN0b3IgY29uZmlnIHdpdGggYW4gb3B0aW9uYWwgTWFzdHJhIHN0b3JlIGlkLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhTWVtb3J5Q29uZmlnID0gUGdWZWN0b3JDb25maWcgJiB7XG4gIGlkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGaW5lLWdyYWluZWQgY29udHJvbCBmb3IgdGhlIG9wdGlvbmFsIE1DUCBzZXJ2ZXIgZXhwb3N1cmVcbiAqICh7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLm1jcH0pLiBFdmVyeSBmaWVsZCBpcyBvcHRpb25hbDsgdGhlIG9iamVjdFxuICogZm9ybSBvbmx5IG5lZWRzIHRvIHNldCB3aGF0IGRpZmZlcnMgZnJvbSB0aGUgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhTWNwQ29uZmlnIHtcbiAgLyoqXG4gICAqIFNlcnZlciBpZCB1c2VkIGluIHRoZSByb3V0ZSBwYXRoIChgL21jcC88c2VydmVySWQ+Ly4uLmApIGFuZCBhcyB0aGVcbiAgICogTUNQIHJlZ2lzdHJ5IGlkLiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luJ3MgcmVnaXN0ZXJlZCBuYW1lLlxuICAgKi9cbiAgc2VydmVySWQ/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiPGRpc3BsYXlOYW1lPiBNQ1BcImAuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBTZW1hbnRpYyB2ZXJzaW9uIGFkdmVydGlzZWQgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGBcIjEuMC4wXCJgLiAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhcyBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYCAtIHRoaXMgaXMgdGhlIFwibGV2ZXJhZ2UgdGhlIE1hc3RyYSBhZ2VudHMgb3ZlclxuICAgKiBNQ1BcIiBiZWhhdmlvciBtb3N0IGNhbGxlcnMgd2FudC5cbiAgICovXG4gIGFnZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbHNvIGV4cG9zZSB0aGUgcGx1Z2luJ3MgYW1iaWVudCB0b29scyAodGhlIGJ1aWx0LWluIGByZW5kZXJfZGF0YWBcbiAgICogcGx1cyBhbnl0aGluZyBpbiBgY29uZmlnLnRvb2xzYCkgYXMgTUNQIHRvb2xzLiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiB0aGUgYW1iaWVudCB0b29scyBhc3N1bWUgYW4gaW4tcHJvY2VzcyBjaGF0IHR1cm4gKHRoZXkgcHVibGlzaFxuICAgKiB3cml0ZXIgZXZlbnRzIHRoZSBjaGF0IFVJIGNvbnN1bWVzKSwgc28gdGhleSBhcmVuJ3QgdXNlZnVsIHRvIGFcbiAgICogc3RhbmRhbG9uZSBNQ1AgY2xpZW50LiBUdXJuIHRoaXMgb24gb25seSB3aGVuIHRob3NlIHRvb2xzIGFyZSBzYWZlXG4gICAqIHRvIGNhbGwgb3V0LW9mLWJhbmQuXG4gICAqL1xuICB0b29scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHRyYSB0b29scyB0byBleHBvc2Ugb3ZlciBNQ1AgYmV5b25kIHRoZSBhZ2VudCAvIGFtYmllbnQgc2V0cy5cbiAgICogVXNlIHRoaXMgZm9yIHRvb2xzIHdyaXR0ZW4gc3BlY2lmaWNhbGx5IGZvciBNQ1AgY29uc3VtZXJzLlxuICAgKi9cbiAgZXh0cmFUb29scz86IE1hc3RyYVRvb2xzO1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBhY2NlcHRlZCBieSB0aGUgTWFzdHJhIEFwcEtpdCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYVBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKiogTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBgXCJkYXRhYnJpY2tzXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGVcbiAgICogYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuXG4gICAqL1xuICBzdG9yYWdlPzogYm9vbGVhbiB8IFBvc3RncmVzU3RvcmVDb25maWc7XG4gIC8qKlxuICAgKiBQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIG1lbW9yeSByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLlxuICAgKi9cbiAgbWVtb3J5PzogYm9vbGVhbiB8IE1hc3RyYU1lbW9yeUNvbmZpZztcbiAgLyoqXG4gICAqIENvZGUtZGVmaW5lZCBhZ2VudHMuIEFjY2VwdHMgdGhyZWUgc2hhcGVzIGZvciBjb252ZW5pZW5jZTpcbiAgICpcbiAgICogLSAqKlJlY29yZCoqOiBgeyBhbmFseXN0OiBkZWYsIGhlbHBlcjogZGVmIH1gIC0ga2V5cyBiZWNvbWUgdGhlXG4gICAqICAgcmVnaXN0ZXJlZCBpZHMgYW5kIHRoZSBmaXJzdCBrZXkgaXMgdGhlIGRlZmF1bHQuXG4gICAqIC0gKipTaW5nbGUgZGVmaW5pdGlvbioqOiBgZGVmYCAtIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgXCJkZWZhdWx0XCJgIHdoZW4gYG5hbWVgIGlzIG9taXR0ZWQpIGFuZFxuICAgKiAgIGF1dG9tYXRpY2FsbHkgbWFya2VkIGFzIHRoZSBkZWZhdWx0IGFnZW50LlxuICAgKiAtICoqQXJyYXkqKjogYFtkZWYxLCBkZWYyXWAgLSBlYWNoIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgYWdlbnRfJHtpfWAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCk7XG4gICAqICAgdGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBkZWZhdWx0LlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGJlY29tZXMgYSBNYXN0cmEgYEFnZW50YCByZWFjaGFibGUgYXRcbiAgICogYC9hcGkvPHBsdWdpbj4vcm91dGUvY2hhdC88aWQ+YCAodGhlIGNoYXQgcm91dGUgYWxzbyBtYXRjaGVzXG4gICAqIGA6YWdlbnRJZGApLiBXaGVuIGBhZ2VudHNgIGlzIG9taXR0ZWQgZW50aXJlbHksIHRoZSBwbHVnaW5cbiAgICogcmVnaXN0ZXJzIGEgc2luZ2xlIGJ1aWx0LWluIGBkZWZhdWx0YCBhbmFseXN0IHNvIHRoZSBiYXJlXG4gICAqIGBtYXN0cmEoKWAgY2FsbCBzdGlsbCBtb3VudHMgYSB3b3JraW5nIGNoYXQgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBleGFtcGxlIFNpbmdsZS1hZ2VudCBzaG9ydGhhbmRcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIEFycmF5XG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiBbXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiYW5hbHlzdFwiLCBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiaGVscGVyXCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICBdLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIFJlY29yZCAoZXhwbGljaXQgaWRzKVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czoge1xuICAgKiAgICAgYW5hbHlzdDogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBoZWxwZXI6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIH0sXG4gICAqICAgZGVmYXVsdEFnZW50OiBcImFuYWx5c3RcIixcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWdlbnRzPzogUmVjb3JkPHN0cmluZywgTWFzdHJhQWdlbnREZWZpbml0aW9uPiB8IE1hc3RyYUFnZW50RGVmaW5pdGlvbiB8IE1hc3RyYUFnZW50RGVmaW5pdGlvbltdO1xuICAvKipcbiAgICogQW1iaWVudCB0b29scyBzcHJlYWQgaW50byBldmVyeSByZWdpc3RlcmVkIGFnZW50J3MgdG9vbHMgcmVjb3JkO1xuICAgKiBwZXItYWdlbnQgdG9vbHMgd2luIG9uIGtleSBjb2xsaXNpb24uIFVzZSBmb3IgYSBzbWFsbCBzaGFyZWRcbiAgICogbGlicmFyeTsgZm9yIHBlci1hZ2VudCB0b29scyBzZXQgYGFnZW50c1tpZF0udG9vbHNgIGluc3RlYWQuXG4gICAqL1xuICB0b29scz86IE1hc3RyYVRvb2xzO1xuICAvKipcbiAgICogQWdlbnQgaWQgdXNlZCB3aGVuIHRoZSBjbGllbnQgZG9lc24ndCBzcGVjaWZ5IG9uZSAodGhlIGJhcmUsXG4gICAqIHVuLXN1ZmZpeGVkIGhpc3RvcnkgLyBzdWdnZXN0aW9ucyByb3V0ZXMgcmVzb2x2ZSB0byBpdCkuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBrZXkgaW4gYGFnZW50c2AgKG9yIGBcImRlZmF1bHRcImAgd2hlblxuICAgKiBgYWdlbnRzYCBpcyBvbWl0dGVkKS4gTXVzdCBtYXRjaCBhbiBpZCBpbiBgYWdlbnRzYCB3aGVuIGJvdGggYXJlXG4gICAqIHNldDsgYSBtaXNtYXRjaCB0aHJvd3MgYXQgc2V0dXAgd2l0aCB0aGUgYXZhaWxhYmxlIGNhbmRpZGF0ZXMuXG4gICAqL1xuICBkZWZhdWx0QWdlbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQbHVnaW4tbGV2ZWwgZGVmYXVsdCBtb2RlbCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzXG4gICAqIG93biBgbW9kZWxgLiBNaXJyb3JzIEFwcEtpdCdzIGBhZ2VudHMoeyBkZWZhdWx0TW9kZWwgfSlgLlxuICAgKlxuICAgKiAtIGBzdHJpbmdgOiBzaG9ydGhhbmQgZm9yIFwidXNlIHRoZSBPQk8gYXV0by1yZXNvbHZlciBidXQgc3dhcCB0aGVcbiAgICogICBgbW9kZWxJZGBcIiAoZS5nLiBgXCJkYXRhYnJpY2tzLWNsYXVkZS1zb25uZXQtNC02XCJgKS5cbiAgICogLSBBbnkgb3RoZXIgTWFzdHJhIGBEeW5hbWljQXJndW1lbnQ8TWFzdHJhTW9kZWxDb25maWc+YDogcGFzc2VkXG4gICAqICAgdGhyb3VnaCB2ZXJiYXRpbS4gVXNlIHRoaXMgd2hlbiB5b3UgbmVlZCBmdWxsIGNvbnRyb2wgb3ZlciBhdXRoXG4gICAqICAgb3IgYHByb3ZpZGVySWRgLlxuICAgKlxuICAgKiBSZXNvbHV0aW9uIG9yZGVyIHBlciBhZ2VudDogYGRlZi5tb2RlbGAg4oaSIGBkZWZhdWx0TW9kZWxgIOKGklxuICAgKiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgIOKGkiBidWlsdC1pbiBgL3NlcnZpbmctZW5kcG9pbnRzYFxuICAgKiByZXNvbHZlci5cbiAgICovXG4gIGRlZmF1bHRNb2RlbD86IEFnZW50Q29uZmlnW1wibW9kZWxcIl0gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyAoYFwiY2xhdWRlIHNvbm5ldFwiYCkgYWdhaW5zdCB0aGUgd29ya3NwYWNlJ3NcbiAgICogTW9kZWwgU2VydmluZyBlbmRwb2ludHMuIERlZmF1bHRzIHRvIGB0cnVlYDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBTZXQgYGZhbHNlYCB0byByZXF1aXJlIGV4YWN0IGVuZHBvaW50IG5hbWVzIGV2ZXJ5d2hlcmUuXG4gICAqL1xuICBtb2RlbEZ1enp5TWF0Y2g/OiBib29sZWFuO1xuICAvKipcbiAgICogRnVzZS5qcyBzY29yZSB0aHJlc2hvbGQgZm9yIHRoZSBmdXp6eSBtYXRjaGVyLCAwIChleGFjdCkgdG8gMSAoYW55dGhpbmcpLlxuICAgKiBEZWZhdWx0cyB0byBgMC40YDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBMb3dlciB2YWx1ZXMgcmVqZWN0IGxvb3NlIG1hdGNoZXM7IHJhaXNlIGl0IGlmIHlvdSBoYXZlIGEgc3ByYXdsaW5nXG4gICAqIGVuZHBvaW50IGNhdGFsb2d1ZSB3aXRoIHNpbWlsYXItbG9va2luZyBuYW1lcy5cbiAgICovXG4gIG1vZGVsRnV6enlUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBEZWZhdWx0cyB0byA1IG1pbnV0ZXM7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogVGhlIGNhY2hlIGlzIHBlciB3b3Jrc3BhY2UgaG9zdCBhbmQgc2hhcmVkIGFjcm9zcyB1c2VyczsgY29uY3VycmVudFxuICAgKiBjYWxsZXJzIGNvYWxlc2NlIG9uIGEgc2luZ2xlIGluLWZsaWdodCBmZXRjaC5cbiAgICovXG4gIG1vZGVsQ2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIExldCBjbGllbnRzIHBpY2sgdGhlIGJhY2tpbmcgZW5kcG9pbnQgcGVyIHJlcXVlc3QuIERlZmF1bHRzIHRvIGB0cnVlYDtcbiAgICogbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBSZWFkcyB0aGUgYFgtTWFzdHJhLU1vZGVsYCBoZWFkZXIsIHRoZSBgP21vZGVsPWAgcXVlcnkgc3RyaW5nLCBvciBhXG4gICAqIGBtb2RlbGAgYm9keSBmaWVsZCwgaW4gdGhhdCBvcmRlci4gRGlzYWJsZSB3aGVuIHJ1bm5pbmcgbXVsdGktdGVuYW50XG4gICAqIHdoZXJlIHVudHJ1c3RlZCBjbGllbnRzIHNob3VsZG4ndCBjaG9vc2UgdGhlIGVuZHBvaW50LlxuICAgKi9cbiAgbW9kZWxPdmVycmlkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmlvcml0eS1vcmRlcmVkIGxpc3Qgb2YgZW5kcG9pbnQgbmFtZXMgdHJpZWQgKmZpcnN0KiB3aGVuIG5vXG4gICAqIGFnZW50IC8gcGx1Z2luIC8gZW52IC8gcmVxdWVzdC1vdmVycmlkZSBtb2RlbCBpZCBpcyBzZXQsIGFoZWFkIG9mXG4gICAqIHRoZSBkeW5hbWljIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLiBUaGUgcmVzb2x2ZXIgcGlja3MgdGhlXG4gICAqIGZpcnN0IGlkIHRoYXQgaXMgYWN0dWFsbHkgcHJlc2VudCBpbiB0aGUgd29ya3NwYWNlJ3NcbiAgICogYC9zZXJ2aW5nLWVuZHBvaW50c2AgbGlzdGluZy5cbiAgICpcbiAgICogV2hlbiB1bnNldCwgcmVzb2x1dGlvbiBpcyBkcml2ZW4gYnkgdGhlIGxpdmUgRm91bmRhdGlvbiBNb2RlbCBBUElcbiAgICogYHF1YWxpdHlgIC8gYHNwZWVkYCAvIGBjb3N0YCBzY29yZXM6IGVuZHBvaW50cyBhcmUgY2xhc3NpZmllZCBpbnRvXG4gICAqIGNoYXQgY2xhc3NlcyAoYGNsYXNzaWZ5RW5kcG9pbnRzYCkgYW5kIHdhbGtlZCBiZXN0LWZpcnN0XG4gICAqIChDaGF0VGhpbmtpbmcgLT4gQ2hhdEJhbGFuY2VkIC0+IENoYXRGYXN0KSwgd2l0aCB0aGUgc21hbGwgYnVpbHQtaW5cbiAgICogYEZBTExCQUNLX01PREVMX0lEU2AgbGlzdCBhcyB0aGUgZmxvb3Igd2hlbiB0aGUgY2F0YWxvZ3VlIGNhbid0IGJlXG4gICAqIHJlYWQuIFNldCB0aGlzIHRvXG4gICAqIHBpbiBhIHJlZ3VsYXRlZCB3b3Jrc3BhY2UgdG8gYW4gYXBwcm92ZWQgc3Vic2V0LCBvciB0byBwdXQgY3VzdG9tXG4gICAqIGVuZHBvaW50cyBpbiBmcm9udCBvZiB0aGUgYXV0by1jbGFzc2lmaWVkIGNhdGFsb2d1ZS5cbiAgICovXG4gIGRlZmF1bHRNb2RlbEZhbGxiYWNrcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAgKGRlZmF1bHQpLCBldmVyeSBhZ2VudCBnZXRzIGEgYnVpbHQtaW4gaW5wdXRcbiAgICogcHJvY2Vzc29yIHRoYXQgc3RyaXBzIGBjaGFydElkYCBmaWVsZHMgZnJvbSBwcmlvciBhc3Npc3RhbnRcbiAgICogdG9vbC1pbnZvY2F0aW9uIHJlc3VsdHMgYmVmb3JlIHRoZXkgcmVhY2ggdGhlIG1vZGVsLiBUaGlzXG4gICAqIHByZXZlbnRzIHRoZSBtb2RlbCBmcm9tIHJldXNpbmcgdHVybi1zY29wZWQgY2hhcnRJZHMgaXQgc2Vlc1xuICAgKiBpbiBtZW1vcnkgcmVjYWxsICh3aGljaCB3b3VsZCBsZWF2ZSBgW2NoYXJ0OjxpZD5dYCBtYXJrZXJzXG4gICAqIHBvaW50aW5nIGF0IHdyaXRlciBldmVudHMgdGhhdCBubyBsb25nZXIgZXhpc3QpLlxuICAgKlxuICAgKiBTZXQgdG8gYGZhbHNlYCB0byBvcHQgb3V0IC0gdXNlZnVsIGlmIGEgbm9uLWRlZmF1bHQgYWdlbnRcbiAgICogbmVlZHMgZnVsbCB2aXNpYmlsaXR5IGludG8gcHJpb3IgY2hhcnRJZHMgKGUuZy4gYW4gYXVkaXRcbiAgICogYWdlbnQgcmVhc29uaW5nIGFib3V0IGNoYXJ0IGxpbmVhZ2UpLlxuICAgKi9cbiAgc3RyaXBTdGFsZUNoYXJ0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdHlsZSBndWFyZHJhaWxzIGFwcGVuZGVkIHRvIGV2ZXJ5IGFnZW50J3MgYGluc3RydWN0aW9uc2AgdG8gY3VyYlxuICAgKiBjb21tb24gTExNLWlzbXMgKGVtIGRhc2hlcywgZW1vamlzLCBzeWNvcGhhbnRpYyBvcGVuZXJzLCB0aHJvd2F3YXlcbiAgICogY2xvc2VycywgZXhjZXNzaXZlIGhlZGdpbmcpLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KTogdXNlIHRoZSBidWlsdC1pblxuICAgKiAgIGBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OU2AgZnJvbSBgYWdlbnRzLnRzYC5cbiAgICogLSBgc3RyaW5nYDogcmVwbGFjZSB0aGUgZGVmYXVsdCB3aXRoIHRoZSBzdXBwbGllZCBibG9jay5cbiAgICogLSBgZmFsc2VgOiBkaXNhYmxlIGVudGlyZWx5IChhZ2VudHMgc2VlIG9ubHkgdGhlaXIgYmVzcG9rZVxuICAgKiAgIGBpbnN0cnVjdGlvbnNgKS5cbiAgICpcbiAgICogQXBwZW5kZWQgKG5vdCBwcmVwZW5kZWQpIHNvIHRoZSBhZ2VudCdzIHJvbGUgYW5kIHJ1bGVzIGNvbWUgZmlyc3RcbiAgICogYW5kIHRoZSBzdHlsZSBibG9jayBsZWFucyBvbiB0aGUgbW9kZWwncyByZWNlbmN5IGJpYXMuXG4gICAqL1xuICBzdHlsZUluc3RydWN0aW9ucz86IHN0cmluZyB8IGZhbHNlO1xuICAvKipcbiAgICogR2VuaWUgc3BhY2VzIHRoaXMgcGx1Z2luJ3MgYWdlbnRzIGNhbiBkZWxlZ2F0ZSB0by4gT25lIE1hc3RyYVxuICAgKiB0b29sIGlzIHJlZ2lzdGVyZWQgcGVyIGFsaWFzIChgZ2VuaWVgIGZvciB0aGUgd2VsbC1rbm93blxuICAgKiBgZGVmYXVsdGAgYWxpYXMsIGBnZW5pZV88YWxpYXM+YCBvdGhlcndpc2UpLiBFYWNoIHRvb2wgc3BpbnNcbiAgICogdXAgYSBwZXItcXVlc3Rpb24gR2VuaWUgc3ViLWFnZW50IHRoYXQgcnVucyBEYXRhYnJpY2tzXG4gICAqIFwiYWdlbnQgbW9kZVwiIGFnYWluc3QgdGhlIHNwYWNlLCBicm9hZGNhc3RzIHdpcmUgZXZlbnRzIHRvIHRoZVxuICAgKiBVSSwgZmV0Y2hlcyBzdGF0ZW1lbnQgcm93cyBmb3Igbm9uLWVtcHR5IHJlc3VsdHMsIGFuZCByZXR1cm5zXG4gICAqIGEgYChzdHJpbmcgfCBkYXRhIHwgY2hhcnQpW11gIHN1bW1hcnkgdGhlIGhvc3QgVUkgcmVuZGVyc1xuICAgKiBpbmxpbmUuXG4gICAqXG4gICAqIEVudHJpZXMgYWNjZXB0IGVpdGhlciBhIGZ1bGwge0BsaW5rIEdlbmllU3BhY2VDb25maWd9IG9iamVjdFxuICAgKiBvciBhIGJhcmUgYHNwYWNlX2lkYCBzdHJpbmcgd2hlbiBubyBleHRyYXMgYXJlIG5lZWRlZDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBnZW5pZVNwYWNlczoge1xuICAgKiAgICAgZGVmYXVsdDogXCIwMWVmMGQzYzBlMWIxZjRhOGQyYzNlNGY1YTZiN2M4ZFwiLFxuICAgKiAgICAgZm9yZWNhc3RzOiB7IHNwYWNlSWQ6IFwiMDFlZi4uLlwiLCBoaW50OiBcIndlZWtseSBkZW1hbmQgZm9yZWNhc3RzXCIgfSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFJlYWNoIHRoZSBzcGFjZXMgZnJvbSBhbiBhZ2VudCdzIGB0b29scyhwbHVnaW5zKWAgY2FsbGJhY2sgdmlhXG4gICAqIGBwbHVnaW5zLmdlbmllPy50b29sa2l0KClgOyB0aGUgcmVzdWx0aW5nIHRvb2xzIGFjY2VwdFxuICAgKiBgeyBjb250ZW50LCBjb252ZXJzYXRpb25JZD8gfWAgYW5kIHJldHVybiBhIGh5ZHJhdGVkIHN1bW1hcnkuXG4gICAqXG4gICAqICoqRmFsbGJhY2sgZGlzY292ZXJ5KiogKGhpZ2hlc3QgcHJlY2VkZW5jZSBmaXJzdCk6IGlmIHRoaXNcbiAgICogZmllbGQgaXMgb21pdHRlZCwgdGhlIEdlbmllIGFnZW50IGFsc28gcGlja3MgdXAgc3BhY2VzIGZyb21cbiAgICogKDEpIHRoZSBBcHBLaXQgYGdlbmllKHsgc3BhY2VzOiB7IC4uLiB9IH0pYCBwbHVnaW4gaW5zdGFuY2VcbiAgICogd2hlbiByZWdpc3RlcmVkLCBhbmQgKDIpIHRoZSBgREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRGBcbiAgICogZW52IHZhciAocmVnaXN0ZXJlZCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzKS4gVGhpcyBrZWVwc1xuICAgKiBleGlzdGluZyBBcHBLaXQgZGVwbG95bWVudHMgd29ya2luZyB3aXRob3V0IHJlc3RhdGluZyB0aGVcbiAgICogc3BhY2VzIGNvbmZpZyBpbiB0d28gcGxhY2VzLlxuICAgKi9cbiAgZ2VuaWVTcGFjZXM/OiBHZW5pZVNwYWNlc0NvbmZpZztcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZSwgaW5cbiAgICogbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuIFRoZSBHZW5pZSBhZ2VudCBjYWxsc1xuICAgKiBgY2xpZW50LmdlbmllLmdldFNwYWNlKC4uLilgIG9uIGV2ZXJ5IGNvbGQtc3RhcnQgdG8gZ2V0IHRoZVxuICAgKiB0aXRsZSAvIGRlc2NyaXB0aW9uIC8gd2FyZWhvdXNlIGlkOyBjYWNoZWQgcmVzcG9uc2VzIHNraXAgdGhlXG4gICAqIHJvdW5kLXRyaXAgYW5kIGNvbmN1cnJlbnQgY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZVxuICAgKiBpbi1mbGlnaHQgZmV0Y2guIERyb3AgdG8gYSBzbWFsbGVyIHZhbHVlIHdoZW4gYW5hbHlzdHMgYXJlXG4gICAqIGFjdGl2ZWx5IGVkaXRpbmcgc3BhY2UgbWV0YWRhdGEgYW5kIHlvdSB3YW50IGNoYW5nZXMgdmlzaWJsZVxuICAgKiB3aXRoaW4gc2Vjb25kczsgcmFpc2UgaXQgdG8gYW1vcnRpc2UgdGhlIHJvdW5kLXRyaXAgd2hlblxuICAgKiBzcGFjZSBtZXRhZGF0YSBpcyBlZmZlY3RpdmVseSBmcm96ZW4uXG4gICAqXG4gICAqIEJhY2tlZCBieSBBcHBLaXQncyBgQ2FjaGVNYW5hZ2VyYCwgc28gdGhlIGNhY2hlIHBhcnRpY2lwYXRlc1xuICAgKiBpbiB0ZWxlbWV0cnkgc3BhbnMgKGBjYWNoZS5nZXRPckV4ZWN1dGVgKSBhbmQgYmVuZWZpdHMgZnJvbVxuICAgKiBMYWtlYmFzZSBwZXJzaXN0ZW5jZSB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyB3aXJlZCB1cC5cbiAgICovXG4gIGdlbmllU3BhY2VDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuLiBPbmUgc3RlcCA9IG9uZVxuICAgKiByb3VuZC10cmlwIHRvIHRoZSB1bmRlcmx5aW5nIG1vZGVsIChhIHRvb2wgY2FsbCBjb25zdW1lcyBhXG4gICAqIHN0ZXAsIHRoZSBmaW5hbC10ZXh0IHJlcGx5IGNvbnN1bWVzIG9uZSB0b28pLiBBcHBsaWVzIHRvXG4gICAqIGV2ZXJ5IGFnZW50IHJlZ2lzdGVyZWQgdGhyb3VnaCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLmFnZW50c31cbiAgICogLSBwZXItYWdlbnQgb3ZlcnJpZGVzIGFyZW4ndCBzdXJmYWNlZCB5ZXQgYmVjYXVzZSB0aGUgc2FtZVxuICAgKiBjZWlsaW5nIGhhcyBiZWVuIHN1ZmZpY2llbnQgYWNyb3NzIGV2ZXJ5IHdvcmtsb2FkIHdlJ3ZlIHJ1bi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfQUdFTlRfTUFYX1NURVBTfSAoMjUpLCBzaXplZCB0byBmaXRcbiAgICogYSBkZWNvbXBvc2VkIEdlbmllIHR1cm4gKGdyb3VuZGluZyArIHNldmVyYWwgYGFza19nZW5pZWAgY2FsbHNcbiAgICogKyBgcHJlcGFyZV9jaGFydGAgcGVyIGRhdGFzZXQgKyB0aGUgZmluYWwtdGV4dCByZXBseSkgd2l0aFxuICAgKiBoZWFkcm9vbSBmb3IgdGhlIG1vZGVsIHRvIGNoYWluIGEgY291cGxlIG9mIGZvbGxvdy11cHMgYmVmb3JlXG4gICAqIGFuc3dlcmluZy4gTWFzdHJhJ3Mgb3duIGBhZ2VudC5nZW5lcmF0ZWAgZGVmYXVsdCBvZiA1IHdvdWxkXG4gICAqIGN1dCBtdWx0aS1zdGVwIG9yY2hlc3RyYXRpb24gb2ZmIGFmdGVyIDItMyB0b29sIGNhbGxzLCBzb1xuICAgKiBleHBsaWNpdGx5IHJhaXNpbmcgdGhlIGNlaWxpbmcgaGVyZSBpcyB3aGF0IGxldHMgdGhlXG4gICAqIGFnZW50LW1vZGUgbG9vcCBwbGF5IG91dC5cbiAgICpcbiAgICogTG93ZXIgd2hlbiBhbiB1bnVzdWFsbHkgc2xvdyBvciBleHBlbnNpdmUgbW9kZWwgbWFrZXMgbG9uZ1xuICAgKiB0dXJucyB1bmFmZm9yZGFibGU7IHJhaXNlIGZvciBleHBsb3JhdG9yeSB3b3JrbG9hZHMgdGhhdCBuZWVkXG4gICAqIHRvIGRyaWxsIGRlZXAgaW50byBhIGRhdGFzZXQgd2l0aGluIGEgc2luZ2xlIHR1cm4uXG4gICAqL1xuICBhZ2VudE1heFN0ZXBzPzogbnVtYmVyO1xuICAvKipcbiAgICogV2lyZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBnbG9iYWwgT1RlbCBwaXBlbGluZSB2aWFcbiAgICogYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogb24gb25seSB3aGVuXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgb3JcbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVGAgaXMgc2V0LiBXaGVuIHVuc2V0LCB0aGVcbiAgICogICBicmlkZ2UgaXMgc2tpcHBlZCBzbyBNYXN0cmEgZG9lcyBub3QgbG9nXG4gICAqICAgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW4gZm91bmRgIG9uIHRoZSBub29wIHRyYWNlci5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uIGV2ZW4gd2l0aG91dCBhbiBPVExQIGVuZHBvaW50LlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi5cbiAgICovXG4gIG9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuICAvKipcbiAgICogTG9nIHVzZXIgZmVlZGJhY2sgKHRodW1icyB1cC9kb3duICsgZnJlZWZvcm0gY29tbWVudHMpIHRvIE1MZmxvdyBhc1xuICAgKiB0cmFjZSBhc3Nlc3NtZW50cywgYW5kIHN1cmZhY2UgdGhlIGZlZWRiYWNrIGNvbnRyb2xzIGluIHRoZSBjaGF0IFVJLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogZW5hYmxlZCBvbmx5IHdoZW4gTUxmbG93IHRyYWNpbmcgaXNcbiAgICogICB3aXJlZCAtIGFuIE9UTFAgZXhwb3J0ZXIgZW5kcG9pbnQgaXMgc2V0IGFuZCBhbiBNTGZsb3cgZXhwZXJpbWVudFxuICAgKiAgIGlzIG5hbWVkICh0aGUgc2FtZSBzaWduYWxzIHRoZSBvYnNlcnZhYmlsaXR5IHBpcGVsaW5lIG5lZWRzIHRvXG4gICAqICAgc2hpcCB0cmFjZXMgdG8gTUxmbG93KS4gT3RoZXJ3aXNlIG9mZiwgc2luY2UgdGhlcmUnZCBiZSBubyB0cmFjZVxuICAgKiAgIHRvIGF0dGFjaCBmZWVkYmFjayB0by5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uLiBGZWVkYmFjayBjb250cm9scyBzaG93IGFuZCB3cml0ZXMgYXJlIGF0dGVtcHRlZFxuICAgKiAgIHJlZ2FyZGxlc3Mgb2YgZW52IGRldGVjdGlvbiAodXNlIHdoZW4gdGhlIGVudiBpcyBjb25maWd1cmVkIGluIGFcbiAgICogICB3YXkgdGhlIGF1dG8tcHJvYmUgZG9lc24ndCByZWNvZ25pemUpLlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi4gTm8gdHJhY2UtaWQgaGVhZGVyLCBubyBmZWVkYmFjayByb3V0ZSwgbm8gVUkuXG4gICAqXG4gICAqIEZlZWRiYWNrIGF0dGFjaGVzIHRvIGEgdHVybidzIE1MZmxvdyB0cmFjZSB2aWEgdGhlIE9wZW5UZWxlbWV0cnlcbiAgICogdHJhY2UgaWQgdGhlIHNlcnZlciBzdGFtcHMgb24gZWFjaCByZXNwb25zZTsgc2VlIGBtbGZsb3cudHNgLlxuICAgKi9cbiAgZmVlZGJhY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogRXhwb3NlIHRoZSBwbHVnaW4ncyBhZ2VudHMgKGFuZCBvcHRpb25hbGx5IHRvb2xzKSBhcyBhIE1hc3RyYSBNQ1BcbiAgICogc2VydmVyIHNvIGV4dGVybmFsIE1DUCBjbGllbnRzIC0gQ2xhdWRlIERlc2t0b3AsIEN1cnNvciwgdGhlIE1hc3RyYVxuICAgKiBwbGF5Z3JvdW5kLCBvciBhbm90aGVyIGFnZW50IC0gY2FuIGNhbGwgdGhlbSBvdmVyIHRoZSBzdGFuZGFyZCBNQ1BcbiAgICogdHJhbnNwb3J0cy4gRW5hYmxlZCBieSBkZWZhdWx0IChhZ2VudHMgb25seSk6IHdyYXBwaW5nIHRoZVxuICAgKiBhbHJlYWR5LXJlZ2lzdGVyZWQgYWdlbnRzIGNvc3RzIG5vdGhpbmcgZXh0cmEsIHNvIHRoZSBlbmRwb2ludCBpcyBvblxuICAgKiBvdXQgb2YgdGhlIGJveDsgb25seSB0aGUgYW1iaWVudCB0b29scyAod2hpY2ggYXNzdW1lIGFuIGluLXByb2Nlc3NcbiAgICogY2hhdCB0dXJuKSBzdGF5IG9mZiB1bmxlc3MgZXhwbGljaXRseSBvcHRlZCBpbi5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgLyBgdHJ1ZWA6IGV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzXG4gICAqICAgYW4gYGFza188YWdlbnRJZD5gIE1DUCB0b29sIHVuZGVyIGEgc2VydmVyIHdob3NlIGlkIGlzIHRoZSBwbHVnaW5cbiAgICogICBuYW1lLlxuICAgKiAtIGBmYWxzZWA6IG5vIE1DUCBlbmRwb2ludHMuXG4gICAqIC0ge0BsaW5rIE1hc3RyYU1jcENvbmZpZ306IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIHNlcnZlciBpZCxcbiAgICogICBhZHZlcnRpc2VkIG1ldGFkYXRhLCBhbmQgd2hpY2ggYWdlbnRzIC8gdG9vbHMgYXJlIGV4cG9zZWQuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgdGhlIHN0b2NrIE1hc3RyYSBNQ1Agcm91dGVzIG1vdW50IHVuZGVyIHRoZSBwbHVnaW4nc1xuICAgKiBiYXNlIHBhdGggKG5vIGJlc3Bva2Ugcm91dGUgaXMgYWRkZWQgLSB0aGUgc2VydmVyIGlzIGhhbmRlZCB0byB0aGVcbiAgICogYE1hc3RyYWAgaW5zdGFuY2UgdmlhIGBtY3BTZXJ2ZXJzYCwgd2hpY2ggYEBtYXN0cmEvZXhwcmVzc2Agc2VydmVzKTpcbiAgICpcbiAgICogLSBTdHJlYW1hYmxlIEhUVFA6IGBQT1NUIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vbWNwYFxuICAgKiAtIFNTRSAobGVnYWN5KTogICAgYEdFVCAgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9zc2VgXG4gICAqICAgICAgICAgICAgICAgICAgICBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21lc3NhZ2VzYFxuICAgKlxuICAgKiBSZXF1ZXN0cyBydW4gdW5kZXIgdGhlIHNhbWUgQXBwS2l0IE9CTyBzY29wZSBhcyB0aGUgY2hhdCByb3V0ZXMsIHNvXG4gICAqIGFuIGFnZW50IGludm9rZWQgb3ZlciBNQ1AgcmVzb2x2ZXMgaXRzIG1vZGVsIGFuZCB0b29scyBhcyB0aGVcbiAgICogY2FsbGluZyB1c2VyLlxuICAgKi9cbiAgbWNwPzogYm9vbGVhbiB8IE1hc3RyYU1jcENvbmZpZztcbiAgLyoqXG4gICAqIEhvdyBtdWNoIG9mIHRoZSBzdG9jayBgQG1hc3RyYS9leHByZXNzYCBtYW5hZ2VtZW50IEFQSSBpcyByZWFjaGFibGVcbiAgICogdGhyb3VnaCB0aGUgcGx1Z2luIG1vdW50LiBgQG1hc3RyYS9leHByZXNzYCByZWdpc3RlcnMgaXRzIGZ1bGwgcm91dGVcbiAgICogdGFibGUgKGFnZW50IGluZmVyZW5jZSBwbHVzIGFkbWluIC8gbXV0YXRpbmcgcm91dGVzOiBkaXJlY3QgdG9vbFxuICAgKiBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnkgcmVhZC93cml0ZSwgdGVsZW1ldHJ5LCBsb2dzLFxuICAgKiBzY29yZXMpLiBBcHBLaXQgYWxyZWFkeSBhdXRoZW50aWNhdGVzIGV2ZXJ5IHJlcXVlc3QgYXMgdGhlIE9CTyB1c2VyLFxuICAgKiBidXQgbm90aGluZyB0aGVyZSByZXN0cmljdHMgKndoaWNoKiBvZiB0aG9zZSBvcGVyYXRpb25zIHRoZSBicm93c2VyXG4gICAqIGNsaWVudCBtYXkgaW52b2tlLlxuICAgKlxuICAgKiAtIGBcInNjb3BlZFwiYCAoZGVmYXVsdCk6IG9ubHkgdGhlIHJvdXRlcyB0aGUgY2hhdCBjbGllbnQgbGVnaXRpbWF0ZWx5XG4gICAqICAgbmVlZHMgYXJlIGRpc3BhdGNoZWQgdG8gTWFzdHJhIC0gYWdlbnQgaW5mZXJlbmNlXG4gICAqICAgKGBzdHJlYW1gIC8gYGdlbmVyYXRlYCAvIGBuZXR3b3JrYCksIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpc1xuICAgKiAgIHBsdWdpbidzIG93biBPQk8tIGFuZCByZXNvdXJjZS1zY29wZWQgYC9yb3V0ZS8qYCByb3V0ZXMgKGhpc3RvcnkgL1xuICAgKiAgIHRocmVhZHMpLCBhbmQsIHdoZW4ge0BsaW5rIG1jcH0gaXMgZW5hYmxlZCwgdGhlIE1DUCB0cmFuc3BvcnQuXG4gICAqICAgRXZlcnl0aGluZyBlbHNlICh0b29sIGV4ZWN1dGlvbiwgd29ya2Zsb3cgY29udHJvbCwgcmF3IG1lbW9yeSxcbiAgICogICB0ZWxlbWV0cnksIGxvZ3MsIHNjb3JlcywgYW5kIG90aGVyIG11dGF0aW9ucykgaXMgcmVqZWN0ZWQgd2l0aFxuICAgKiAgIGA0MDNgIGJlZm9yZSBpdCByZWFjaGVzIE1hc3RyYS5cbiAgICogLSBgXCJmdWxsXCJgOiBkaXNwYXRjaCB0aGUgZW50aXJlIHN0b2NrIE1hc3RyYSBBUEkuIFVzZSBvbmx5IGZvciBhXG4gICAqICAgdHJ1c3RlZCBmaXJzdC1wYXJ0eSBjb25zb2xlIHRoYXQgZ2VudWluZWx5IG5lZWRzIHRoZSBtYW5hZ2VtZW50XG4gICAqICAgc3VyZmFjZS5cbiAgICovXG4gIGFwaUFjY2Vzcz86IFwic2NvcGVkXCIgfCBcImZ1bGxcIjtcbiAgLyoqXG4gICAqIFdoaWNoIERhdGFicmlja3MgaWRlbnRpdHkgdGhlIGFnZW50cycgd29ya3NwYWNlIGNhbGxzIHJ1biBhczogdGhlXG4gICAqIHNlcnZpbmctZW5kcG9pbnQgY2F0YWxvZ3VlIGJlaGluZCB0aGUgbW9kZWwgcGlja2VyLCBHZW5pZSBzdWdnZXN0aW9ucyxcbiAgICogYGFza19nZW5pZWAsIGFuZCB0aGUgU3RhdGVtZW50IEV4ZWN1dGlvbiBmZXRjaCBiZWhpbmQgYSBgW2RhdGE6PGlkPl1gXG4gICAqIGVtYmVkLiBGYWxscyBiYWNrIHRvIGBNQVNUUkFfR0VOSUVfSURFTlRJVFlgLCB0aGVuIGBcInVzZXJcImAuXG4gICAqXG4gICAqIE9uLWJlaGFsZi1vZiAoT0JPKSBhdXRoIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gYmUgYSBtZW1iZXIgb2YgdGhlXG4gICAqIFdPUktTUEFDRSwgbm90IGp1c3Qgb2YgdGhlIERhdGFicmlja3MgYWNjb3VudC4gQW4gYXBwIHNoYXJlZCB3aXRoIGFuXG4gICAqIGFjY291bnQtbGV2ZWwgZ3JvdXAgY2FuIGJlIG9wZW5lZCBieSBzb21lb25lIHdob3NlIHRva2VuIGlzIHZhbGlkIGJ1dCB3aG9zZVxuICAgKiBldmVyeSB3b3Jrc3BhY2UgY2FsbCBmYWlscyB3aXRoIGBVbmF1dGhvcml6ZWQgYWNjZXNzIHRvIE9yZzogPGlkPmAgLSBhbmRcbiAgICogZ3JhbnRpbmcgd29ya3NwYWNlIG1lbWJlcnNoaXAgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSwgc2luY2UgYSB3b3Jrc3BhY2VcbiAgICogY2FwcyBtZW1iZXJzaGlwIHdlbGwgYmVsb3cgdGhlIHNpemUgb2YgYSBsYXJnZSBhY2NvdW50J3MgdXNlciBncm91cC4gVGhlXG4gICAqIGFwcCdzIHNlcnZpY2UgcHJpbmNpcGFsIGFscmVhZHkgaG9sZHMgdGhlIGdyYW50cyB0aGUgYXBwIHdhcyBkZXBsb3llZCB3aXRoLlxuICAgKlxuICAgKiAtIGBcInVzZXJcImAgKGRlZmF1bHQpOiBhbHdheXMgT0JPLiBQZXItdXNlciBhdHRyaWJ1dGlvbiwgYW5kIEdlbmllIC8gVW5pdHlcbiAgICogICBDYXRhbG9nIHJvdyBmaWx0ZXJzIGFwcGx5IHBlciB1c2VyLiBDb3JyZWN0IHdoZW4gZXZlcnkgY2FsbGVyIGlzIGFcbiAgICogICB3b3Jrc3BhY2UgbWVtYmVyLCBhbmQgdW5jaGFuZ2VkIGZyb20gYmVmb3JlIHRoaXMgb3B0aW9uIGV4aXN0ZWQuXG4gICAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImA6IGFsd2F5cyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLiBOZWVkcyBubyBPQk9cbiAgICogICBzY29wZXMgYW5kIHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBhdCB0aGUgY29zdCBvZlxuICAgKiAgIHBlci11c2VyIGF0dHJpYnV0aW9uIGluIEdlbmllIC8gVW5pdHkgQ2F0YWxvZy5cbiAgICogLSBgXCJhdXRvXCJgOiBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAqICAgd2hlbiBpdCBkb2VzIG5vdC4gRm9yIGFuIGFwcCBzZXJ2aW5nIEJPVEggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGFcbiAgICogICBkb29yIHRoYXQgaGFzIG5vIHRva2VuIHRvIGZvcndhcmQgLSBhIGBAZGJ4LXRvb2xzL3R1bm5lbGAgZ2F0ZSwgYVxuICAgKiAgIFRlYW1zIGNoYW5uZWwgLSB3aGVyZSBBcHBLaXQncyBgYXNVc2VyYCB3b3VsZCBvdGhlcndpc2UgdGhyb3dcbiAgICogICBgQXV0aGVudGljYXRpb25FcnJvcmAgb3V0c2lkZSBgTk9ERV9FTlY9ZGV2ZWxvcG1lbnRgLlxuICAgKlxuICAgKiBUaGUgc2VydmljZS1wcmluY2lwYWwgcGF0aCBjaGFuZ2VzIG9ubHkgdGhlIERhdGFicmlja3MgQ1JFREVOVElBTC4gTWVtb3J5XG4gICAqIHRocmVhZHMsIHRoZSBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2UsIGFuZCB0cmFjZSBtZXRhZGF0YSBzdGlsbCBrZXkgb2ZmIHRoZVxuICAgKiBmb3J3YXJkZWQgdXNlciwgc28gY2FsbGVycyBzaGFyaW5nIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCdzIGRhdGEgYWNjZXNzIGtlZXBcbiAgICogc2VwYXJhdGUgY29udmVyc2F0aW9ucyBhbmQgY2Fubm90IHJlYWQgZWFjaCBvdGhlcidzIHRocmVhZHMgb3IgY2hhcnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBBbiBhcHAgYW55IGFjY291bnQgdXNlciBjYW4gb3BlblxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcInNlcnZpY2UtcHJpbmNpcGFsXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIE9uZSBhcHAgYmVoaW5kIGJvdGggdGhlIGZyb250IGRvb3IgYW5kIGEgcHVibGljIHR1bm5lbFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcImF1dG9cIiwgZ2VuaWVTcGFjZXM6IHsgZGVmYXVsdDogc3BhY2VJZCB9IH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmllSWRlbnRpdHk/OiBNYXN0cmFJZGVudGl0eU1vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBicmFuZCBjb250ZXh0IGFwcGxpZWQgdG8gY2hhcnRzIHByb2R1Y2VkIGJ5IHRoZSBidWlsdC1pblxuICAgKiBgcmVuZGVyX2RhdGFgIC8gYHByZXBhcmVfY2hhcnRgIHRvb2xzLiBXaGVuIHNldCwgdGhlIGNoYXJ0IHBsYW5uZXInc1xuICAgKiBFY2hhcnRzIG91dHB1dCBpcyB0aGVtZWQgd2l0aCB0aGUgYnJhbmQncyBwYWxldHRlIChzZXJpZXMgY29sb3JzIGRlcml2ZWRcbiAgICogZnJvbSBgY29sb3JzLnByaW1hcnlgIC8gYGNvbG9ycy5hY2NlbnRgKSBhbmQgc2FucyBmb250XG4gICAqIChgdHlwb2dyYXBoeS5zYW5zYCkgaW5zdGVhZCBvZiBFY2hhcnRzJyBkZWZhdWx0cy4gT21pdCBmb3IgdGhlIGRlZmF1bHRcbiAgICogRWNoYXJ0cyBsb29rLlxuICAgKlxuICAgKiBQYXNzIHRoZSBwb3J0YWJsZSB7QGxpbmsgQnJhbmRDb250ZXh0fSBzaGFyZWQgYWNyb3NzIHRoZSBVSSBhbmRcbiAgICogbGlicmFyaWVzIChlLmcuIGBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0YCBmcm9tIGBAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlYCxcbiAgICogb3IgYSBjdXN0b21lciBicmFuZCkgLSB0aGUgc2FtZSBvYmplY3QgdGhlIGVtYWlsIGFkZC1vbiBhbmQgdGhlIFVJXG4gICAqIGBCcmFuZFByb3ZpZGVyYCBjb25zdW1lLCBzbyBhIGhvc3QgdGhlbWVzIGNoYXJ0cywgZW1haWwsIGFuZCBVSSBmcm9tIG9uZVxuICAgKiBzb3VyY2UuXG4gICAqL1xuICBicmFuZD86IEJyYW5kQ29udGV4dDtcbiAgLyoqXG4gICAqIFJlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIG1hdGVyaWFsaXplZCBvbmNlIGF0IGFwcCBzdGFydHVwLiBBIHNpbmdsZVxuICAgKiBzb3VyY2UsIGEgbGlzdCwgb3IgYSBgeyBzb3VyY2VzLCBmYWlsT25FcnJvcj8sIC4uLiB9YCBiYWcuXG4gICAqXG4gICAqIEVhY2ggc291cmNlIGlzIGEgR2l0SHViIGBvd25lci9yZXBvYCwgYSBnaXQgLyBHaXRMYWIgVVJMLCBvciBhIGRpcmVjdFxuICAgKiBgU0tJTEwubWRgIC8gYXJjaGl2ZSBkb3dubG9hZCBVUkwuIFJlc29sdXRpb24gcHJlZmVycyB0aGUgT1BUSU9OQUwgYHNraWxsc2BcbiAgICogbnBtIENMSSAoYSBwZWVyIGRlcCkgd2hpY2ggaXMgY29waWVkIGludG8gYSB0ZW1wIGRpciBhbmQgdGhlbiBwZXJzaXN0ZWQ7XG4gICAqIHdpdGhvdXQgaXQsIGEgVVJMIHNvdXJjZSBpcyBmZXRjaGVkIGRpcmVjdGx5LiBBIHNvdXJjZSB0aGF0IHJlc29sdmVzXG4gICAqIHRocm91Z2ggbmVpdGhlciBmYWlscyBzdGFydHVwIHVubGVzcyBgZmFpbE9uRXJyb3I6IGZhbHNlYC5cbiAgICpcbiAgICogUHJvdmlzaW9uZWQgc2tpbGxzIGFyZSB3cml0dGVuIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIncyBBc3Npc3RhbnQgc2tpbGxzXG4gICAqIGZvbGRlciAoYC9Vc2Vycy88ZW1haWw+Ly5hc3Npc3RhbnQvc2tpbGxzYCwgdGhlIFwic2F2ZSB0aGlzIGFzIGEgc2tpbGxcIlxuICAgKiB0YXJnZXQpIHNvIHRoZXkgcGVyc2lzdCBhbmQgYXJlIHBpY2tlZCB1cCBieSB0aGUgYnVpbHQtaW4gQXNzaXN0YW50LXNraWxsc1xuICAgKiBtb3VudC4gV2l0aCBubyB3cml0YWJsZSB3b3Jrc3BhY2UsIHRoZXkgZ28gdG8gYSBsb2NhbCB0ZW1wIGRpciBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyByZW1vdGVTa2lsbHM6IFwidmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIgfSk7XG4gICAqIG1hc3RyYSh7XG4gICAqICAgcmVtb3RlU2tpbGxzOiB7XG4gICAqICAgICBzb3VyY2VzOiBbXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiwgXCJodHRwczovL2V4YW1wbGUuY29tL3NraWxsLm1kXCJdLFxuICAgKiAgICAgZmFpbE9uRXJyb3I6IGZhbHNlLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHJlbW90ZVNraWxscz86IFJlbW90ZVNraWxsc09wdGlvbjtcbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSBwdWJsaXNoZWQgb24gdGhlIG1hbmlmZXN0J3MgYGNvbmZpZy5zY2hlbWFgLCBtaXJyb3JpbmcgdGhlXG4gKiBkb2N1bWVudGVkIGRlZmF1bHRzIGFuZCBlbnZpcm9ubWVudCBmYWxsYmFja3Mgb2Yge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30uXG4gKlxuICogQ292ZXJzIHRoZSBKU09OLWV4cHJlc3NpYmxlIG9wdGlvbnMgb25seS4gYGFnZW50c2AsIGB0b29sc2AsIGFuZCBhXG4gKiBgZGVmYXVsdE1vZGVsYCBwYXNzZWQgYXMgYSBNYXN0cmEgYER5bmFtaWNBcmd1bWVudGAgYXJlIGNvZGUtZGVmaW5lZFxuICogKGZ1bmN0aW9ucyAvIGNsYXNzIGluc3RhbmNlcyksIHNvIHRoZXkgY2Fycnkgbm8gc2NoZW1hIGVudHJ5OyB0aGVcbiAqIGBkZWZhdWx0TW9kZWxgIHByb3BlcnR5IGJlbG93IGRlc2NyaWJlcyBpdHMgc3RyaW5nIGZvcm0uXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfQ09ORklHX1NDSEVNQTogQ29uZmlnU2NoZW1hID0ge1xuICB0eXBlOiBcIm9iamVjdFwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgcHJvdmlkZXJJZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTWFzdHJhIE9wZW5BSS1jb21wYXRpYmxlIHByb3ZpZGVyIGlkLiBEZWZhdWx0cyB0byBcImRhdGFicmlja3NcIi4nLFxuICAgIH0sXG4gICAgcmVtb3RlU2tpbGxzOiB7XG4gICAgICB0eXBlOiBbXCJzdHJpbmdcIiwgXCJhcnJheVwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnUmVtb3RlIEFnZW50LVNraWxsIHNvdXJjZXMgcHJvdmlzaW9uZWQgYXQgc3RhcnR1cDogXCJhaXRvb2xzXCIgZm9yIERhdGFicmlja3NcXCcgb3duIHNraWxsIHNldCAocmVhZCBmcm9tIHRoZSBwdWJsaWMgZGF0YWJyaWNrcy9kYXRhYnJpY2tzLWFnZW50LXNraWxscyByZXBvLCBubyBDTEkgbmVlZGVkKSwgYSBHaXRIdWIgb3duZXIvcmVwbywgYSBnaXQvR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3QgU0tJTEwubWQvYXJjaGl2ZSBVUkwuIE5vbi1haXRvb2xzIHNvdXJjZXMgcHJlZmVyIHRoZSBvcHRpb25hbCBgc2tpbGxzYCBucG0gQ0xJLCBlbHNlIGEgZGlyZWN0IGZldGNoOyBmYWlscyBzdGFydHVwIG9uIGVycm9yIHVubGVzcyBmYWlsT25FcnJvcjpmYWxzZS4gV3JpdHRlbiB0byB0aGUgRGF0YWJyaWNrcyB1c2VyIEFzc2lzdGFudCBza2lsbHMgZm9sZGVyLCBvciBhIGxvY2FsIHRlbXAgZGlyIHdoZW4gbm8gd29ya3NwYWNlIGlzIHdyaXRhYmxlLicsXG4gICAgfSxcbiAgICBzdG9yYWdlOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9zdGdyZXNTdG9yZSBmb3IgTWFzdHJhIHRocmVhZHMgLyBtZXNzYWdlcy4gYHRydWVgIHJldXNlcyB0aGUgYGxha2ViYXNlYCBwbHVnaW4ncyBwb29sLCBhbiBvYmplY3Qgb3BlbnMgYSBkZWRpY2F0ZWQgc3RvcmUuIEF1dG8tZW5hYmxlZCB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLlwiLFxuICAgIH0sXG4gICAgbWVtb3J5OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUGdWZWN0b3Igc3RvcmUgZm9yIE1hc3RyYSBzZW1hbnRpYyByZWNhbGwuIGB0cnVlYCByZXVzZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgcG9vbCwgYW4gb2JqZWN0IG9wZW5zIGEgZGVkaWNhdGVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRBZ2VudDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IG5hbWVzIG5vbmUuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIGFnZW50LCBlbHNlIHRoZSBidWlsdC1pbiBgZGVmYXVsdGAuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWw6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTZXJ2aW5nIGVuZHBvaW50IGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHMgb3duIG1vZGVsLiBGYWxscyBiYWNrIHRvIERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FLCB0aGVuIHRoZSBhdXRvLXJlc29sdmVkIGNhdGFsb2d1ZS5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRNb2RlbEZhbGxiYWNrczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJpb3JpdHktb3JkZXJlZCBlbmRwb2ludCBuYW1lcyB0cmllZCBiZWZvcmUgdGhlIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlIHdoZW4gbm90aGluZyBlbHNlIHBpbnMgYSBtb2RlbC5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlNYXRjaDoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2UgY2F0YWxvZ3VlLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eVRocmVzaG9sZDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS4gRGVmYXVsdHMgdG8gMC40LlwiLFxuICAgIH0sXG4gICAgbW9kZWxDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVFRMIGluIG1zIGZvciB0aGUgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgcGVyIHdvcmtzcGFjZSBob3N0LiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBtb2RlbE92ZXJyaWRlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhvbm9yIGEgcGVyLXJlcXVlc3QgbW9kZWwgb3ZlcnJpZGUgZnJvbSB0aGUgWC1NYXN0cmEtTW9kZWwgaGVhZGVyLCA/bW9kZWw9IHF1ZXJ5LCBvciBhIGBtb2RlbGAgYm9keSBmaWVsZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogW1wic3RyaW5nXCIsIFwib2JqZWN0XCJdIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJHZW5pZSBzcGFjZXMgdGhlIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8sIGtleWVkIGJ5IGFsaWFzICh0aGUgdG9vbC1uYW1lIHN1ZmZpeCkuIEVhY2ggdmFsdWUgaXMgYSBzcGFjZSBpZCBvciBgeyBzcGFjZUlkLCBoaW50IH1gLiBGYWxscyBiYWNrIHRvIHRoZSBgZ2VuaWVgIHBsdWdpbidzIG93biBgc3BhY2VzYCBjb25maWcsIHRoZW4gREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVTcGFjZUNhY2hlVHRsTXM6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUVEwgaW4gbXMgZm9yIHRoZSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZS4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLlwiLFxuICAgIH0sXG4gICAgYWdlbnRNYXhTdGVwczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1heGltdW0gTExNIHN0ZXBzIGVhY2ggYWdlbnQgZ2V0cyBwZXIgdHVybiAoYSB0b29sIGNhbGwgYW5kIHRoZSBmaW5hbCByZXBseSBlYWNoIGNvbnN1bWUgb25lKS4gRGVmYXVsdHMgdG8gMjUuXCIsXG4gICAgfSxcbiAgICBzdHJpcFN0YWxlQ2hhcnRzOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0cmlwIGNoYXJ0SWRzIGZyb20gcmVjYWxsZWQgYXNzaXN0YW50IHRvb2wgcmVzdWx0cyBzbyB0aGUgbW9kZWwgY2Fubm90IHJldXNlIGEgdHVybi1zY29wZWQgY2hhcnQgbWFya2VyLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgc3R5bGVJbnN0cnVjdGlvbnM6IHtcbiAgICAgIHR5cGU6IFtcInN0cmluZ1wiLCBcImJvb2xlYW5cIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTdHlsZSBndWFyZHJhaWxzIGFwcGVuZGVkIHRvIGV2ZXJ5IGFnZW50J3MgaW5zdHJ1Y3Rpb25zLiBBIHN0cmluZyByZXBsYWNlcyB0aGUgYnVpbHQtaW4gYmxvY2ssIGBmYWxzZWAgZGlzYWJsZXMgaXQuXCIsXG4gICAgfSxcbiAgICBvYnNlcnZhYmlsaXR5OiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkJyaWRnZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBPVGVsIHBpcGVsaW5lLiBEZWZhdWx0cyB0byBvbiBvbmx5IHdoZW4gT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIG9yIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlQgaXMgc2V0LlwiLFxuICAgIH0sXG4gICAgZmVlZGJhY2s6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTG9nIHRodW1icyAvIGNvbW1lbnQgYXNzZXNzbWVudHMgdG8gTUxmbG93IGFuZCBzdXJmYWNlIHRoZSBmZWVkYmFjayBjb250cm9scy4gRGVmYXVsdHMgdG8gb24gb25seSB3aGVuIGFuIE9UTFAgZW5kcG9pbnQgYW5kIE1MRkxPV19FWFBFUklNRU5UX0lEIG9yIE1MRkxPV19FWFBFUklNRU5UX05BTUUgYXJlIHNldC5cIixcbiAgICB9LFxuICAgIG1jcDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSB0aGUgcmVnaXN0ZXJlZCBhZ2VudHMgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGFnZW50cy1vbmx5OyBhbiBvYmplY3QgdHVuZXMgdGhlIHNlcnZlciBpZCwgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoZXRoZXIgYW1iaWVudCB0b29scyBhcmUgZXhwb3NlZC5cIixcbiAgICB9LFxuICAgIGdlbmllSWRlbnRpdHk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAvLyBEZXJpdmVkIGZyb20gdGhlIHJlc29sdmVyJ3Mgb3duIGxpc3QsIHNvIGEgbW9kZSBjYW4gbmV2ZXIgYmUgYWNjZXB0ZWQgYXRcbiAgICAgIC8vIHJ1bnRpbWUgd2hpbGUgdGhlIHB1Ymxpc2hlZCBzY2hlbWEgKGFuZCB0aGUgVUkgYnVpbHQgZnJvbSBpdCkgb21pdHMgaXQuXG4gICAgICBlbnVtOiBbLi4uSURFTlRJVFlfTU9ERVNdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IHRoZSBhZ2VudHNcXCcgd29ya3NwYWNlIGNhbGxzIChzZXJ2aW5nIGNhdGFsb2d1ZSwgR2VuaWUsIHN0YXRlbWVudCBleGVjdXRpb24pIHJ1biBhcy4gXCJ1c2VyXCIgKGRlZmF1bHQpIGlzIGFsd2F5cyBPQk8sIHNvIGNhbGxlcnMgbXVzdCBiZSB3b3Jrc3BhY2UgbWVtYmVyczsgXCJzZXJ2aWNlLXByaW5jaXBhbFwiIGFsd2F5cyB1c2VzIHRoZSBhcHAgc2VydmljZSBwcmluY2lwYWwsIHNvIGFueSBjYWxsZXIgd2hvIGNhbiBvcGVuIHRoZSBhcHAgd29ya3MsIGF0IHRoZSBjb3N0IG9mIHBlci11c2VyIGF0dHJpYnV0aW9uOyBcImF1dG9cIiB1c2VzIE9CTyB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgYW4gT0JPIHRva2VuIGFuZCB0aGUgc2VydmljZSBwcmluY2lwYWwgd2hlbiBpdCBkb2VzIG5vdCwgZm9yIGFuIGFwcCB0aGF0IGFsc28gc2VydmVzIGEgdHVubmVsIG9yIHdlYmhvb2sgZG9vci4gRmFsbHMgYmFjayB0byBNQVNUUkFfR0VOSUVfSURFTlRJVFkuJyxcbiAgICB9LFxuICAgIGFwaUFjY2Vzczoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGVudW06IFtcInNjb3BlZFwiLCBcImZ1bGxcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0hvdyBtdWNoIG9mIHRoZSBzdG9jayBAbWFzdHJhL2V4cHJlc3MgQVBJIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBtb3VudC4gXCJzY29wZWRcIiAoZGVmYXVsdCkgYWxsb3dzIGFnZW50IGluZmVyZW5jZSwgcmVhZC1vbmx5IGFnZW50IG1ldGFkYXRhLCB0aGlzIHBsdWdpblxcJ3Mgb3duIHJvdXRlcywgYW5kIE1DUDsgXCJmdWxsXCIgZGlzcGF0Y2hlcyB0aGUgZW50aXJlIG1hbmFnZW1lbnQgc3VyZmFjZS4nLFxuICAgIH0sXG4gICAgYnJhbmQ6IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQb3J0YWJsZSBicmFuZCBjb250ZXh0IGFwcGxpZWQgdG8gZ2VuZXJhdGVkIGNoYXJ0cyAoc2VyaWVzIHBhbGV0dGUgZnJvbSBjb2xvcnMucHJpbWFyeSAvIGNvbG9ycy5hY2NlbnQsIGJhc2UgZm9udCBmcm9tIHR5cG9ncmFwaHkuc2FucykuXCIsXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
package/lib/src/identity.d.ts
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* per-user attribution in Genie / Unity Catalog.
|
|
38
38
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
39
39
|
* when it does not. The mode for an app that serves BOTH the platform front
|
|
40
|
-
* door and a door with no OBO token to forward (a `@dbx-tools/
|
|
40
|
+
* door and a door with no OBO token to forward (a `@dbx-tools/tunnel`
|
|
41
41
|
* gate, a Teams channel), since a single container serves both at once.
|
|
42
42
|
*
|
|
43
43
|
* What the service-principal path does NOT change is WHO the turn belongs to.
|
package/lib/src/identity.js
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* per-user attribution in Genie / Unity Catalog.
|
|
38
38
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
39
39
|
* when it does not. The mode for an app that serves BOTH the platform front
|
|
40
|
-
* door and a door with no OBO token to forward (a `@dbx-tools/
|
|
40
|
+
* door and a door with no OBO token to forward (a `@dbx-tools/tunnel`
|
|
41
41
|
* gate, a Teams channel), since a single container serves both at once.
|
|
42
42
|
*
|
|
43
43
|
* What the service-principal path does NOT change is WHO the turn belongs to.
|
|
@@ -84,4 +84,4 @@ export const requestUserEmail = identity.requestUserEmail;
|
|
|
84
84
|
* `"auto"` only when the request carries no OBO token for AppKit to use.
|
|
85
85
|
*/
|
|
86
86
|
export const useServicePrincipal = identity.useServicePrincipal;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzdDLHVEQUF1RDtBQUN2RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFFcEQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0FBRXREOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztBQUVwRSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFFdEQsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztBQUU1RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBOEI7SUFDaEUsT0FBTyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBRXBELHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFFMUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSBhIGNoYXQgdHVybidzIHdvcmtzcGFjZSBjYWxscyBydW4gYXMuXG4gKlxuICogRXZlcnkgRGF0YWJyaWNrcyBjYWxsIGEgdHVybiBtYWtlcyAtIHRoZSBgL3NlcnZpbmctZW5kcG9pbnRzYCBjYXRhbG9ndWUgdGhlXG4gKiBtb2RlbCBwaWNrZXIgcmVhZHMsIEdlbmllIHN1Z2dlc3Rpb25zLCBgYXNrX2dlbmllYCwgYW5kIHRoZSBTdGF0ZW1lbnRcbiAqIEV4ZWN1dGlvbiBmZXRjaCBiZWhpbmQgYSBgW2RhdGE6PGlkPl1gIGVtYmVkIC0gZ29lcyB0aHJvdWdoIHRoZSB3b3Jrc3BhY2VcbiAqIGNsaWVudCBvbiB0aGUgYW1iaWVudCBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQuIFRoYXQgY29udGV4dCBpcyB1c2VyLXNjb3BlZFxuICogKE9CTykgd2hlbmV2ZXIgdGhlIHBsdWdpbiBlbnRlcnMgYGFzVXNlcihyZXEpYCBhbmQgdGhlIGFwcCdzIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiBvdGhlcndpc2UsIHNvIE9ORSBkZWNpc2lvbiAtIGRvIHdlIGVudGVyIHRoYXQgc2NvcGUgZm9yIHRoaXMgcmVxdWVzdCAtIG1vdmVzXG4gKiBldmVyeSBjYWxsIHNpdGUgdG9nZXRoZXIuXG4gKlxuICogVGhlIGRlY2lzaW9uIGl0c2VsZiBpcyBOT1QgTWFzdHJhLXNwZWNpZmljICh0aGUgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50IGFuZFxuICogdGhlIHR1bm5lbCBnYXRlIGZhY2UgaXQgdG9vKSwgc28gaXQgbGl2ZXMgaW4gYEBkYngtdG9vbHMvYXBwa2l0YCdzIGBpZGVudGl0eWBcbiAqIG1vZHVsZSAtIHdoaWNoIGFsc28gZG9jdW1lbnRzIHRoZSBtZWFzdXJlZCBBcHBLaXQgYmVoYXZpb3IgdGhhdCBtYWtlcyBgXCJhdXRvXCJgXG4gKiBuZWNlc3NhcnkuIFRoaXMgbW9kdWxlIGlzIHRoZSBNYXN0cmEtZmFjaW5nIGJpbmRpbmc6IHRoZSBwbHVnaW4ncyBvd24gY29uZmlnXG4gKiBmaWVsZCBhbmQgZW52IHZhciwgcmUtZXhwb3J0aW5nIHRoZSBzaGFyZWQgdm9jYWJ1bGFyeSBzbyBhIGNvbnN1bWVyIGltcG9ydGluZ1xuICogYEBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYWAgbmVlZHMgbm8gc2Vjb25kIGltcG9ydC5cbiAqXG4gKiBXaHkgdGhlIG9wdGlvbiBleGlzdHM6IE9CTyByZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgbWVtYmVyIG9mIHRoZVxuICogV09SS1NQQUNFLCBub3QgbWVyZWx5IG9mIHRoZSBEYXRhYnJpY2tzIGFjY291bnQuIEFuIGFwcCBzaGFyZWQgd2l0aCBhblxuICogYWNjb3VudC1sZXZlbCBncm91cCBjYW4gdGhlcmVmb3JlIGJlIG9wZW5lZCBieSBzb21lb25lIHdob3NlIE9CTyB0b2tlbiBpc1xuICogcGVyZmVjdGx5IHZhbGlkIGJ1dCB3aG9zZSBldmVyeSB3b3Jrc3BhY2UgY2FsbCBmYWlscyB3aXRoIGBVbmF1dGhvcml6ZWRcbiAqIGFjY2VzcyB0byBPcmc6IDx3b3Jrc3BhY2UtaWQ+
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzdDLHVEQUF1RDtBQUN2RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFFcEQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0FBRXREOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztBQUVwRSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFFdEQsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztBQUU1RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBOEI7SUFDaEUsT0FBTyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBRXBELHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFFMUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSBhIGNoYXQgdHVybidzIHdvcmtzcGFjZSBjYWxscyBydW4gYXMuXG4gKlxuICogRXZlcnkgRGF0YWJyaWNrcyBjYWxsIGEgdHVybiBtYWtlcyAtIHRoZSBgL3NlcnZpbmctZW5kcG9pbnRzYCBjYXRhbG9ndWUgdGhlXG4gKiBtb2RlbCBwaWNrZXIgcmVhZHMsIEdlbmllIHN1Z2dlc3Rpb25zLCBgYXNrX2dlbmllYCwgYW5kIHRoZSBTdGF0ZW1lbnRcbiAqIEV4ZWN1dGlvbiBmZXRjaCBiZWhpbmQgYSBgW2RhdGE6PGlkPl1gIGVtYmVkIC0gZ29lcyB0aHJvdWdoIHRoZSB3b3Jrc3BhY2VcbiAqIGNsaWVudCBvbiB0aGUgYW1iaWVudCBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQuIFRoYXQgY29udGV4dCBpcyB1c2VyLXNjb3BlZFxuICogKE9CTykgd2hlbmV2ZXIgdGhlIHBsdWdpbiBlbnRlcnMgYGFzVXNlcihyZXEpYCBhbmQgdGhlIGFwcCdzIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiBvdGhlcndpc2UsIHNvIE9ORSBkZWNpc2lvbiAtIGRvIHdlIGVudGVyIHRoYXQgc2NvcGUgZm9yIHRoaXMgcmVxdWVzdCAtIG1vdmVzXG4gKiBldmVyeSBjYWxsIHNpdGUgdG9nZXRoZXIuXG4gKlxuICogVGhlIGRlY2lzaW9uIGl0c2VsZiBpcyBOT1QgTWFzdHJhLXNwZWNpZmljICh0aGUgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50IGFuZFxuICogdGhlIHR1bm5lbCBnYXRlIGZhY2UgaXQgdG9vKSwgc28gaXQgbGl2ZXMgaW4gYEBkYngtdG9vbHMvYXBwa2l0YCdzIGBpZGVudGl0eWBcbiAqIG1vZHVsZSAtIHdoaWNoIGFsc28gZG9jdW1lbnRzIHRoZSBtZWFzdXJlZCBBcHBLaXQgYmVoYXZpb3IgdGhhdCBtYWtlcyBgXCJhdXRvXCJgXG4gKiBuZWNlc3NhcnkuIFRoaXMgbW9kdWxlIGlzIHRoZSBNYXN0cmEtZmFjaW5nIGJpbmRpbmc6IHRoZSBwbHVnaW4ncyBvd24gY29uZmlnXG4gKiBmaWVsZCBhbmQgZW52IHZhciwgcmUtZXhwb3J0aW5nIHRoZSBzaGFyZWQgdm9jYWJ1bGFyeSBzbyBhIGNvbnN1bWVyIGltcG9ydGluZ1xuICogYEBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYWAgbmVlZHMgbm8gc2Vjb25kIGltcG9ydC5cbiAqXG4gKiBXaHkgdGhlIG9wdGlvbiBleGlzdHM6IE9CTyByZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgbWVtYmVyIG9mIHRoZVxuICogV09SS1NQQUNFLCBub3QgbWVyZWx5IG9mIHRoZSBEYXRhYnJpY2tzIGFjY291bnQuIEFuIGFwcCBzaGFyZWQgd2l0aCBhblxuICogYWNjb3VudC1sZXZlbCBncm91cCBjYW4gdGhlcmVmb3JlIGJlIG9wZW5lZCBieSBzb21lb25lIHdob3NlIE9CTyB0b2tlbiBpc1xuICogcGVyZmVjdGx5IHZhbGlkIGJ1dCB3aG9zZSBldmVyeSB3b3Jrc3BhY2UgY2FsbCBmYWlscyB3aXRoIGBVbmF1dGhvcml6ZWRcbiAqIGFjY2VzcyB0byBPcmc6IDx3b3Jrc3BhY2UtaWQ+YCwgYW5kIGdyYW50aW5nIHdvcmtzcGFjZSBtZW1iZXJzaGlwIGlzIG5vdFxuICogYWx3YXlzIGF2YWlsYWJsZSAtIGEgd29ya3NwYWNlIGNhcHMgbWVtYmVyc2hpcCBmYXIgYmVsb3cgdGhlIHNpemUgb2YgYSBsYXJnZVxuICogYWNjb3VudCdzIHVzZXIgZ3JvdXAuIFRoZSBhcHAncyBvd24gc2VydmljZSBwcmluY2lwYWwgYWxyZWFkeSBob2xkcyB0aGUgR2VuaWVcbiAqIC8gd2FyZWhvdXNlIC8gc2VydmluZyAvIFVuaXR5IENhdGFsb2cgZ3JhbnRzIHRoZSBhcHAgd2FzIGRlcGxveWVkIHdpdGgsIGFuZFxuICogd29ya3MgZm9yIGV2ZXJ5IGNhbGxlci5cbiAqXG4gKiBUaGUgbW9kZXMsIGZyb20gYGNvbmZpZy5nZW5pZUlkZW50aXR5YCAoZW52OiB7QGxpbmsgSURFTlRJVFlfRU5WfSk6XG4gKlxuICogICAtIGBcInVzZXJcImAgKGRlZmF1bHQpOiBhbHdheXMgT0JPLiBDYWxscyBhcmUgYXR0cmlidXRlZCBwZXIgdXNlciBhbmQgR2VuaWUgL1xuICogICAgIFVuaXR5IENhdGFsb2cgcm93IGZpbHRlcnMgYXBwbHkgcGVyIHVzZXIuIENvcnJlY3Qgd2hlbmV2ZXIgZXZlcnkgY2FsbGVyIGlzXG4gKiAgICAgYSB3b3Jrc3BhY2UgbWVtYmVyLiBUaGlzIGlzIHRoZSBoaXN0b3JpY2FsIGJlaGF2aW9yLCBzbyB0aGUgb3B0aW9uIGlzXG4gKiAgICAgcHVyZWx5IGFkZGl0aXZlIC0gYW4gYXBwIHRoYXQgbmV2ZXIgc2V0cyBpdCBpcyB1bmNoYW5nZWQuXG4gKiAgIC0gYFwic2VydmljZS1wcmluY2lwYWxcImA6IGFsd2F5cyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLiBOZWVkcyBubyBPQk9cbiAqICAgICBzY29wZXMgYW5kIHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBhdCB0aGUgY29zdCBvZlxuICogICAgIHBlci11c2VyIGF0dHJpYnV0aW9uIGluIEdlbmllIC8gVW5pdHkgQ2F0YWxvZy5cbiAqICAgLSBgXCJhdXRvXCJgOiBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiAgICAgd2hlbiBpdCBkb2VzIG5vdC4gVGhlIG1vZGUgZm9yIGFuIGFwcCB0aGF0IHNlcnZlcyBCT1RIIHRoZSBwbGF0Zm9ybSBmcm9udFxuICogICAgIGRvb3IgYW5kIGEgZG9vciB3aXRoIG5vIE9CTyB0b2tlbiB0byBmb3J3YXJkIChhIGBAZGJ4LXRvb2xzL3R1bm5lbGBcbiAqICAgICBnYXRlLCBhIFRlYW1zIGNoYW5uZWwpLCBzaW5jZSBhIHNpbmdsZSBjb250YWluZXIgc2VydmVzIGJvdGggYXQgb25jZS5cbiAqXG4gKiBXaGF0IHRoZSBzZXJ2aWNlLXByaW5jaXBhbCBwYXRoIGRvZXMgTk9UIGNoYW5nZSBpcyBXSE8gdGhlIHR1cm4gYmVsb25ncyB0by5cbiAqIFRoZSBtZW1vcnkgdGhyZWFkJ3MgYHJlc291cmNlSWRgLCB0aGUgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlLCBhbmQgdGhlIHVzZXJcbiAqIG1ldGFkYXRhIG9uIHRyYWNlcyBzdGlsbCBjb21lIGZyb20gdGhlIGZvcndhcmRlZCByZXF1ZXN0IGhlYWRlcnMsIHNvIHR3b1xuICogYWNjb3VudCB1c2VycyBzaGFyaW5nIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCdzIGRhdGEgYWNjZXNzIHN0aWxsIGdldCBzZXBhcmF0ZVxuICogY29udmVyc2F0aW9ucyBhbmQgY2Fubm90IHJlYWQgZWFjaCBvdGhlcidzIHRocmVhZHMgb3IgY2FjaGVkIGNoYXJ0cy4gT25seSB0aGVcbiAqIERhdGFicmlja3MgY3JlZGVudGlhbCBpcyBzaGFyZWQuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGlkZW50aXR5IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5cbi8qKiBJZGVudGl0eSBhIGNoYXQgdHVybidzIERhdGFicmlja3MgY2FsbHMgcnVuIGFzLiBTZWUgdGhlIG1vZHVsZSBkb2NzLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlID0gaWRlbnRpdHkuSWRlbnRpdHlNb2RlO1xuXG4vKiogRW52aXJvbm1lbnQgZmFsbGJhY2sgZm9yIGBjb25maWcuZ2VuaWVJZGVudGl0eWAuICovXG5leHBvcnQgY29uc3QgSURFTlRJVFlfRU5WID0gXCJNQVNUUkFfR0VOSUVfSURFTlRJVFlcIjtcblxuLyoqIEV2ZXJ5IGFjY2VwdGVkIHtAbGluayBNYXN0cmFJZGVudGl0eU1vZGV9LiAqL1xuZXhwb3J0IGNvbnN0IElERU5USVRZX01PREVTID0gaWRlbnRpdHkuSURFTlRJVFlfTU9ERVM7XG5cbi8qKlxuICogRGVmYXVsdCBtb2RlLiBgXCJ1c2VyXCJgIGtlZXBzIE9CTyB0aGUgb25seSBpZGVudGl0eSB1bmxlc3MgYW4gYXBwIG9wdHMgaW4sIHNvXG4gKiBhZG9wdGluZyB0aGlzIG9wdGlvbiBjYW4gbmV2ZXIgc2lsZW50bHkgd2lkZW4gYW4gZXhpc3RpbmcgYXBwJ3MgZGF0YSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lERU5USVRZX01PREUgPSBpZGVudGl0eS5ERUZBVUxUX0lERU5USVRZX01PREU7XG5cbi8qKiBIZWFkZXIgRGF0YWJyaWNrcyBBcHBzIGZvcndhcmQgdGhlIHNpZ25lZC1pbiB1c2VyJ3MgaWQgb24uICovXG5leHBvcnQgY29uc3QgVVNFUl9JRF9IRUFERVIgPSBpZGVudGl0eS5VU0VSX0lEX0hFQURFUjtcblxuLyoqIEhlYWRlciBEYXRhYnJpY2tzIEFwcHMgZm9yd2FyZCB0aGUgc2lnbmVkLWluIHVzZXIncyBlbWFpbCBvbi4gKi9cbmV4cG9ydCBjb25zdCBVU0VSX0VNQUlMX0hFQURFUiA9IGlkZW50aXR5LlVTRVJfRU1BSUxfSEVBREVSO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIGNvbmZpZ3VyZWQgbW9kZTogZXhwbGljaXQgcGx1Z2luIGNvbmZpZywgdGhlbiB7QGxpbmsgSURFTlRJVFlfRU5WfSxcbiAqIHRoZW4ge0BsaW5rIERFRkFVTFRfSURFTlRJVFlfTU9ERX0uIEFuIHVucmVjb2duaXplZCB2YWx1ZSB0aHJvd3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSWRlbnRpdHlNb2RlKGNvbmZpZ3VyZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IE1hc3RyYUlkZW50aXR5TW9kZSB7XG4gIHJldHVybiBpZGVudGl0eS5yZXNvbHZlSWRlbnRpdHlNb2RlKGNvbmZpZ3VyZWQsIElERU5USVRZX0VOViwgXCJnZW5pZUlkZW50aXR5XCIpO1xufVxuXG4vKipcbiAqIFRoZSBmb3J3YXJkZWQgdXNlciBpZCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuIFVzZWQgdG8gYXR0cmlidXRlIGEgdHVybiB0b1xuICogdGhlIHJlYWwgY2FsbGVyIHdoZW4gdGhlIERhdGFicmlja3MgY2xpZW50IGlzIHRoZSBhcHAgU1AgYnV0IG1lbW9yeSAvIGNhY2hlIC9cbiAqIHRyYWNlcyBtdXN0IHN0aWxsIGtleSBvZmYgdGhlIHVzZXIuXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1ZXN0VXNlcklkID0gaWRlbnRpdHkucmVxdWVzdFVzZXJJZDtcblxuLyoqIFRoZSBmb3J3YXJkZWQgdXNlciBlbWFpbCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdFVzZXJFbWFpbCA9IGlkZW50aXR5LnJlcXVlc3RVc2VyRW1haWw7XG5cbi8qKlxuICogV2hldGhlciB0aGlzIHJlcXVlc3Qgc2hvdWxkIHJ1biBpdHMgRGF0YWJyaWNrcyBjYWxscyBhcyB0aGUgYXBwIHNlcnZpY2VcbiAqIHByaW5jaXBhbCByYXRoZXIgdGhhbiBPQk8gLSBgXCJzZXJ2aWNlLXByaW5jaXBhbFwiYCBhbHdheXMsIGBcInVzZXJcImAgbmV2ZXIsIGFuZFxuICogYFwiYXV0b1wiYCBvbmx5IHdoZW4gdGhlIHJlcXVlc3QgY2FycmllcyBubyBPQk8gdG9rZW4gZm9yIEFwcEtpdCB0byB1c2UuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTZXJ2aWNlUHJpbmNpcGFsID0gaWRlbnRpdHkudXNlU2VydmljZVByaW5jaXBhbDtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@databricks/appkit": "^0.43.0",
|
|
33
33
|
"@databricks/sdk-experimental": "^0.17.0",
|
|
34
|
-
"@dbx-tools/appkit": "0.6.
|
|
35
|
-
"@dbx-tools/core": "0.6.
|
|
36
|
-
"@dbx-tools/databricks": "0.6.
|
|
37
|
-
"@dbx-tools/fs": "0.6.
|
|
38
|
-
"@dbx-tools/genie": "0.6.
|
|
39
|
-
"@dbx-tools/model": "0.6.
|
|
40
|
-
"@dbx-tools/path": "0.6.
|
|
41
|
-
"@dbx-tools/shared-core": "0.6.
|
|
42
|
-
"@dbx-tools/shared-fs": "0.6.
|
|
43
|
-
"@dbx-tools/shared-genie": "0.6.
|
|
44
|
-
"@dbx-tools/shared-mastra": "0.6.
|
|
45
|
-
"@dbx-tools/shared-model": "0.6.
|
|
34
|
+
"@dbx-tools/appkit": "0.6.60",
|
|
35
|
+
"@dbx-tools/core": "0.6.60",
|
|
36
|
+
"@dbx-tools/databricks": "0.6.60",
|
|
37
|
+
"@dbx-tools/fs": "0.6.60",
|
|
38
|
+
"@dbx-tools/genie": "0.6.60",
|
|
39
|
+
"@dbx-tools/model": "0.6.60",
|
|
40
|
+
"@dbx-tools/path": "0.6.60",
|
|
41
|
+
"@dbx-tools/shared-core": "0.6.60",
|
|
42
|
+
"@dbx-tools/shared-fs": "0.6.60",
|
|
43
|
+
"@dbx-tools/shared-genie": "0.6.60",
|
|
44
|
+
"@dbx-tools/shared-mastra": "0.6.60",
|
|
45
|
+
"@dbx-tools/shared-model": "0.6.60",
|
|
46
46
|
"@mastra/ai-sdk": "^1.6.0",
|
|
47
47
|
"@mastra/core": "^1.47.0",
|
|
48
48
|
"@mastra/express": "^1.4.2",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"./package.json": "./package.json"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"version": "0.6.
|
|
74
|
+
"version": "0.6.60",
|
|
75
75
|
"types": "./lib/index.d.ts",
|
|
76
76
|
"type": "module",
|
|
77
77
|
"exports": {
|
package/src/config.ts
CHANGED
|
@@ -528,7 +528,7 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
528
528
|
* per-user attribution in Genie / Unity Catalog.
|
|
529
529
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
530
530
|
* when it does not. For an app serving BOTH the platform front door and a
|
|
531
|
-
* door that has no token to forward - a `@dbx-tools/
|
|
531
|
+
* door that has no token to forward - a `@dbx-tools/tunnel` gate, a
|
|
532
532
|
* Teams channel - where AppKit's `asUser` would otherwise throw
|
|
533
533
|
* `AuthenticationError` outside `NODE_ENV=development`.
|
|
534
534
|
*
|
package/src/identity.ts
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* per-user attribution in Genie / Unity Catalog.
|
|
38
38
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
39
39
|
* when it does not. The mode for an app that serves BOTH the platform front
|
|
40
|
-
* door and a door with no OBO token to forward (a `@dbx-tools/
|
|
40
|
+
* door and a door with no OBO token to forward (a `@dbx-tools/tunnel`
|
|
41
41
|
* gate, a Teams channel), since a single container serves both at once.
|
|
42
42
|
*
|
|
43
43
|
* What the service-principal path does NOT change is WHO the turn belongs to.
|