@k8slens/drop-down-menu-contracts 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -9
- package/dist/src/drop-down-menu-container-component.d.ts +2 -2
- package/dist/src/drop-down-menu-container-component.d.ts.map +1 -1
- package/dist/src/drop-down-menu-item.d.ts +112 -14
- package/dist/src/drop-down-menu-item.d.ts.map +1 -1
- package/dist/src/drop-down-menu-spec.d.ts +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/context-menu-items.d.ts +0 -77
- package/dist/src/context-menu-items.d.ts.map +0 -1
- package/dist/src/menu-item-activated-context.d.ts +0 -6
- package/dist/src/menu-item-activated-context.d.ts.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { getDropDownMenuKind } from "./src/drop-down-menu-kind";
|
|
2
2
|
export { type DropDownMenuKindDeclaration, type DropDownMenuKindDeclarationFactory, type DropDownMenuKindInjectableParams, dropDownMenuKindInjectionToken, getDropDownMenuKindInjectableBunch, } from "./src/drop-down-menu-kind-injection-token";
|
|
3
3
|
export type { DropDownMenuData, DropDownMenuKind } from "./src/drop-down-menu-kind";
|
|
4
|
-
export { dropDownMenuItemInjectionToken, getDropDownMenuItemInjectableBunch, } from "./src/drop-down-menu-item";
|
|
5
|
-
export type { DropDownMenuItem, DropDownMenuItemBunchParams, DropDownMenuItemFactory, DropDownMenuItemTokenFor, } from "./src/drop-down-menu-item";
|
|
4
|
+
export { dropDownMenuItemInjectionToken, getDropDownMenuItemInjectableBunch, getDropDownMenuItemsInjectableBunch, } from "./src/drop-down-menu-item";
|
|
5
|
+
export type { AcquireDropDownMenuItems, DropDownMenuItem, DropDownMenuItemBunchParams, DropDownMenuItemFactory, DropDownMenuItemPropsFor, DropDownMenuItemsBunchParams, DropDownMenuItemTokenFor, DropDownMenuItemVisibility, } from "./src/drop-down-menu-item";
|
|
6
6
|
export { dropDownMenu } from "./src/drop-down-menu-spec";
|
|
7
7
|
export type { DropDownMenuGap, DropDownMenuOpenOn, DropDownMenuOptions, DropDownMenuPosition, DropDownMenuSpec, } from "./src/drop-down-menu-spec";
|
|
8
8
|
export { DefaultDropDownMenuContainer, dropDownMenuContainerComponentInjectionToken, } from "./src/drop-down-menu-container-component";
|
|
@@ -12,10 +12,4 @@ export type { DropDownMenuProps } from "./src/drop-down-menu-component";
|
|
|
12
12
|
export { closeAllDropDownMenusInjectionToken, closeDropDownMenuInjectionToken, } from "./src/close-drop-down-menu";
|
|
13
13
|
export type { CloseAllDropDownMenus, CloseDropDownMenu } from "./src/close-drop-down-menu";
|
|
14
14
|
export { contextForClosingDropDownMenu, useCloseDropDownMenu } from "./src/close-drop-down-menu-context";
|
|
15
|
-
/**
|
|
16
|
-
* The authoring model of the context menu and the anchored menu, which draw their own rows.
|
|
17
|
-
* Drop-down menus proper have no such model — their items are arbitrary components.
|
|
18
|
-
*/
|
|
19
|
-
export type { ActionMenuItem, ComponentLabelable, ComponentMenuItem, GroupOfMenuItems, LabelPropsFor, MenuItem, ReactLabelable, SubMenuItem, TextLabelable, } from "./src/context-menu-items";
|
|
20
|
-
export { menuItemActivatedContext } from "./src/menu-item-activated-context";
|
|
21
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,2CAA2C,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,2CAA2C,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,4CAA4C,GAC7C,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,8BAA8B,EAC9B,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -30,9 +30,9 @@ __export(index_exports, {
|
|
|
30
30
|
dropDownMenuItemInjectionToken: () => dropDownMenuItemInjectionToken,
|
|
31
31
|
dropDownMenuKindInjectionToken: () => dropDownMenuKindInjectionToken,
|
|
32
32
|
getDropDownMenuItemInjectableBunch: () => getDropDownMenuItemInjectableBunch,
|
|
33
|
+
getDropDownMenuItemsInjectableBunch: () => getDropDownMenuItemsInjectableBunch,
|
|
33
34
|
getDropDownMenuKind: () => getDropDownMenuKind,
|
|
34
35
|
getDropDownMenuKindInjectableBunch: () => getDropDownMenuKindInjectableBunch,
|
|
35
|
-
menuItemActivatedContext: () => menuItemActivatedContext,
|
|
36
36
|
useCloseDropDownMenu: () => useCloseDropDownMenu
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -72,15 +72,26 @@ var dropDownMenuItemInjectionToken = (0, import_injectable3.getInjectionToken2)(
|
|
|
72
72
|
var getDropDownMenuItemInjectableBunch = (params) => (0, import_injectable3.getInjectableBunch)({
|
|
73
73
|
dropDownMenuItem: (0, import_injectable3.getInjectable2)({
|
|
74
74
|
id: params.id,
|
|
75
|
-
instantiate: () => () => ({
|
|
75
|
+
instantiate: () => () => (input) => ({
|
|
76
76
|
id: params.id,
|
|
77
77
|
orderNumber: params.orderNumber,
|
|
78
|
-
isVisible: params.isVisible,
|
|
78
|
+
isVisible: typeof params.isVisible === "function" ? params.isVisible(input) : params.isVisible,
|
|
79
79
|
Component: params.Component
|
|
80
80
|
}),
|
|
81
81
|
injectionToken: dropDownMenuItemInjectionToken.for(params.kind)
|
|
82
82
|
})
|
|
83
83
|
});
|
|
84
|
+
var getDropDownMenuItemsInjectableBunch = (params) => (0, import_injectable3.getInjectableBunch)({
|
|
85
|
+
dropDownMenuItems: (0, import_injectable3.getInjectable2)({
|
|
86
|
+
id: params.id,
|
|
87
|
+
consumptions: params.consumptions,
|
|
88
|
+
instantiate: (di) => {
|
|
89
|
+
const acquireItems = params.instantiate(di);
|
|
90
|
+
return () => acquireItems;
|
|
91
|
+
},
|
|
92
|
+
injectionToken: dropDownMenuItemInjectionToken.for(params.kind)
|
|
93
|
+
})
|
|
94
|
+
});
|
|
84
95
|
|
|
85
96
|
// src/drop-down-menu-spec.ts
|
|
86
97
|
function dropDownMenu(kind, options) {
|
|
@@ -125,10 +136,6 @@ var import_public_utilities = require("@k8slens/public-utilities");
|
|
|
125
136
|
var import_react = require("react");
|
|
126
137
|
var contextForClosingDropDownMenu = (0, import_react.createContext)(void 0);
|
|
127
138
|
var useCloseDropDownMenu = () => (0, import_public_utilities.expectDefined)((0, import_react.useContext)(contextForClosingDropDownMenu), "Tried to close a drop-down menu while not inside one.");
|
|
128
|
-
|
|
129
|
-
// src/menu-item-activated-context.ts
|
|
130
|
-
var import_react2 = require("react");
|
|
131
|
-
var menuItemActivatedContext = (0, import_react2.createContext)(void 0);
|
|
132
139
|
// Annotate the CommonJS export names for ESM import in node:
|
|
133
140
|
0 && (module.exports = {
|
|
134
141
|
DefaultDropDownMenuContainer,
|
|
@@ -141,9 +148,9 @@ var menuItemActivatedContext = (0, import_react2.createContext)(void 0);
|
|
|
141
148
|
dropDownMenuItemInjectionToken,
|
|
142
149
|
dropDownMenuKindInjectionToken,
|
|
143
150
|
getDropDownMenuItemInjectableBunch,
|
|
151
|
+
getDropDownMenuItemsInjectableBunch,
|
|
144
152
|
getDropDownMenuKind,
|
|
145
153
|
getDropDownMenuKindInjectableBunch,
|
|
146
|
-
menuItemActivatedContext,
|
|
147
154
|
useCloseDropDownMenu
|
|
148
155
|
});
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmQudHMiLCAiLi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmQtaW5qZWN0aW9uLXRva2VuLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1pdGVtLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1zcGVjLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50LnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1jb21wb25lbnQudHMiLCAiLi4vc3JjL2Nsb3NlLWRyb3AtZG93bi1tZW51LnRzIiwgIi4uL3NyYy9jbG9zZS1kcm9wLWRvd24tbWVudS1jb250ZXh0LnRzIiwgIi4uL3NyYy9tZW51LWl0ZW0tYWN0aXZhdGVkLWNvbnRleHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IGdldERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUta2luZFwiO1xuZXhwb3J0IHtcbiAgdHlwZSBEcm9wRG93bk1lbnVLaW5kRGVjbGFyYXRpb24sXG4gIHR5cGUgRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uRmFjdG9yeSxcbiAgdHlwZSBEcm9wRG93bk1lbnVLaW5kSW5qZWN0YWJsZVBhcmFtcyxcbiAgZHJvcERvd25NZW51S2luZEluamVjdGlvblRva2VuLFxuICBnZXREcm9wRG93bk1lbnVLaW5kSW5qZWN0YWJsZUJ1bmNoLFxufSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUta2luZC1pbmplY3Rpb24tdG9rZW5cIjtcbmV4cG9ydCB0eXBlIHsgRHJvcERvd25NZW51RGF0YSwgRHJvcERvd25NZW51S2luZCB9IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5leHBvcnQge1xuICBkcm9wRG93bk1lbnVJdGVtSW5qZWN0aW9uVG9rZW4sXG4gIGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2gsXG59IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1pdGVtXCI7XG5leHBvcnQgdHlwZSB7XG4gIERyb3BEb3duTWVudUl0ZW0sXG4gIERyb3BEb3duTWVudUl0ZW1CdW5jaFBhcmFtcyxcbiAgRHJvcERvd25NZW51SXRlbUZhY3RvcnksXG4gIERyb3BEb3duTWVudUl0ZW1Ub2tlbkZvcixcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWl0ZW1cIjtcbmV4cG9ydCB7IGRyb3BEb3duTWVudSB9IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1zcGVjXCI7XG5leHBvcnQgdHlwZSB7XG4gIERyb3BEb3duTWVudUdhcCxcbiAgRHJvcERvd25NZW51T3Blbk9uLFxuICBEcm9wRG93bk1lbnVPcHRpb25zLFxuICBEcm9wRG93bk1lbnVQb3NpdGlvbixcbiAgRHJvcERvd25NZW51U3BlYyxcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LXNwZWNcIjtcbmV4cG9ydCB7XG4gIERlZmF1bHREcm9wRG93bk1lbnVDb250YWluZXIsXG4gIGRyb3BEb3duTWVudUNvbnRhaW5lckNvbXBvbmVudEluamVjdGlvblRva2VuLFxufSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUtY29udGFpbmVyLWNvbXBvbmVudFwiO1xuZXhwb3J0IHR5cGUge1xuICBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQsXG4gIERyb3BEb3duTWVudUNvbnRhaW5lclByb3BzLFxuICBEcm9wRG93bk1lbnVDb250YWluZXJUb2tlbkZvcixcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWNvbnRhaW5lci1jb21wb25lbnRcIjtcbmV4cG9ydCB7IERyb3BEb3duTWVudSB9IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1jb21wb25lbnRcIjtcbmV4cG9ydCB0eXBlIHsgRHJvcERvd25NZW51UHJvcHMgfSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUtY29tcG9uZW50XCI7XG5leHBvcnQge1xuICBjbG9zZUFsbERyb3BEb3duTWVudXNJbmplY3Rpb25Ub2tlbixcbiAgY2xvc2VEcm9wRG93bk1lbnVJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSBcIi4vc3JjL2Nsb3NlLWRyb3AtZG93bi1tZW51XCI7XG5leHBvcnQgdHlwZSB7IENsb3NlQWxsRHJvcERvd25NZW51cywgQ2xvc2VEcm9wRG93bk1lbnUgfSBmcm9tIFwiLi9zcmMvY2xvc2UtZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JDbG9zaW5nRHJvcERvd25NZW51LCB1c2VDbG9zZURyb3BEb3duTWVudSB9IGZyb20gXCIuL3NyYy9jbG9zZS1kcm9wLWRvd24tbWVudS1jb250ZXh0XCI7XG5cbi8qKlxuICogVGhlIGF1dGhvcmluZyBtb2RlbCBvZiB0aGUgY29udGV4dCBtZW51IGFuZCB0aGUgYW5jaG9yZWQgbWVudSwgd2hpY2ggZHJhdyB0aGVpciBvd24gcm93cy5cbiAqIERyb3AtZG93biBtZW51cyBwcm9wZXIgaGF2ZSBubyBzdWNoIG1vZGVsIFx1MjAxNCB0aGVpciBpdGVtcyBhcmUgYXJiaXRyYXJ5IGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQWN0aW9uTWVudUl0ZW0sXG4gIENvbXBvbmVudExhYmVsYWJsZSxcbiAgQ29tcG9uZW50TWVudUl0ZW0sXG4gIEdyb3VwT2ZNZW51SXRlbXMsXG4gIExhYmVsUHJvcHNGb3IsXG4gIE1lbnVJdGVtLFxuICBSZWFjdExhYmVsYWJsZSxcbiAgU3ViTWVudUl0ZW0sXG4gIFRleHRMYWJlbGFibGUsXG59IGZyb20gXCIuL3NyYy9jb250ZXh0LW1lbnUtaXRlbXNcIjtcbmV4cG9ydCB7IG1lbnVJdGVtQWN0aXZhdGVkQ29udGV4dCB9IGZyb20gXCIuL3NyYy9tZW51LWl0ZW0tYWN0aXZhdGVkLWNvbnRleHRcIjtcbiIsICJpbXBvcnQgeyBnZXRUeXBlZFNwZWNpZmllciwgdHlwZSBUeXBlZFNwZWNpZmllciwgdHlwZSBUeXBlZFNwZWNpZmllclR5cGUgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuXG4vKipcbiAqIElkZW50aWZpZXMgb25lIGZhbWlseSBvZiBkcm9wLWRvd24gbWVudSBpdGVtcy4gSXRlbXMgYXJlIGNvbnRyaWJ1dGVkIGFnYWluc3RcbiAqIGEga2luZCB2aWEgYGRyb3BEb3duTWVudUl0ZW1JbmplY3Rpb25Ub2tlbi5mb3Ioa2luZClgLCBhbmQgYSBob3N0IGVsZW1lbnRcbiAqIG9wZW5zIHRoZSBtZW51IG9mIGEga2luZCB3aXRoIGAkZHJvcERvd25NZW51PXtkcm9wRG93bk1lbnUoa2luZCl9YC5cbiAqXG4gKiBgVERhdGFgIGlzIHRoZSBkYXRhIHRoZSBob3N0IGVsZW1lbnQgc3VwcGxpZXMgd2hlbiBvcGVuaW5nIHRoZSBtZW51OyBpdGVtXG4gKiBmYWN0b3JpZXMgb2YgdGhlIGtpbmQgcmVjZWl2ZSBpdC4gQSBraW5kIGNyZWF0ZWQgd2l0aG91dCBgVERhdGFgIG5lZWRzIG5vXG4gKiBkYXRhLlxuICpcbiAqIEF0IHJ1bnRpbWUgYSBraW5kIGlzIGEgYnJhbmRlZCBzdHJpbmcsIHNvIGl0IGlzIHVzYWJsZSBhcyBhIGAuZm9yKClgIGtleS5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51S2luZDxURGF0YSA9IHZvaWQ+ID0gVHlwZWRTcGVjaWZpZXI8c3RyaW5nLCB7IGRyb3BEb3duTWVudURhdGE6IFREYXRhIH0+O1xuXG4vKipcbiAqIFJlY292ZXJzIHRoZSBkYXRhIHR5cGUgYm91bmQgdG8gYSB7QGxpbmsgRHJvcERvd25NZW51S2luZH0uXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudURhdGE8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4gPSBUeXBlZFNwZWNpZmllclR5cGU8XCJkcm9wRG93bk1lbnVEYXRhXCIsIEs+O1xuXG4vKipcbiAqIEN1cnJpZWQgY3JlYXRvciBmb3IgYSB7QGxpbmsgRHJvcERvd25NZW51S2luZH0uIFRoZSBmaXJzdCBjYWxsIGJpbmRzIHRoZSBkYXRhXG4gKiB0eXBlOyB0aGUgc2Vjb25kIHRoZSBnbG9iYWxseSB1bmlxdWUgc3BlY2lmaWVyIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEEgbWVudSB3aG9zZSBpdGVtcyBuZWVkIG5vIGRhdGE6XG4gKiBleHBvcnQgY29uc3QgYWlUb29sc01lbnVLaW5kID0gZ2V0RHJvcERvd25NZW51S2luZCgpKFwiYWktdG9vbHMtbWVudVwiKTtcbiAqXG4gKiAvLyBBIG1lbnUgd2hvc2UgaXRlbXMgZGVyaXZlIGZyb20gdGhlIGhvc3QgZWxlbWVudCdzIGRhdGE6XG4gKiBleHBvcnQgY29uc3QgcG9kQWN0aW9uc01lbnVLaW5kID0gZ2V0RHJvcERvd25NZW51S2luZDx7IHBvZE5hbWU6IHN0cmluZyB9PigpKFwicG9kLWFjdGlvbnMtbWVudVwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZ2V0RHJvcERvd25NZW51S2luZCA9XG4gIDxURGF0YSA9IHZvaWQ+KCkgPT5cbiAgPFMgZXh0ZW5kcyBzdHJpbmc+KHNwZWNpZmllcjogUykgPT5cbiAgICBnZXRUeXBlZFNwZWNpZmllcjx7IGRyb3BEb3duTWVudURhdGE6IFREYXRhIH0+KCkoc3BlY2lmaWVyKTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0YWJsZUJ1bmNoLCBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBEcm9wRG93bk1lbnVLaW5kIH0gZnJvbSBcIi4vZHJvcC1kb3duLW1lbnUta2luZFwiO1xuXG4vKipcbiAqIE9uZSBkcm9wLWRvd24gbWVudSB0aGF0IGV4aXN0cywgYW5ub3VuY2VkIHNvIGl0IGNhbiBiZSBkaXNjb3ZlcmVkIHJhdGhlclxuICogdGhhbiBmb3VuZCBieSByZWFkaW5nIHRoZSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uIHtcbiAgLyoqIFRoZSBraW5kIGl0c2VsZiwgYXMgYGRyb3BEb3duTWVudUl0ZW1JbmplY3Rpb25Ub2tlbi5mb3Ioa2luZClgIHRha2VzIGl0LiAqL1xuICByZWFkb25seSBraW5kOiBEcm9wRG93bk1lbnVLaW5kPGFueT47XG4gIC8qKiBPbmUgbGluZSBvbiB3aGF0IHRoZSBtZW51IGlzLCBmb3IgYSByZWFkZXIgZGVjaWRpbmcgd2hldGhlciB0byBjb250cmlidXRlLiAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKiogUHJvZHVjZXMgb25lIGRlY2xhcmF0aW9uLCBwb3NzaWJseSBsYXRlci4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudUtpbmREZWNsYXJhdGlvbkZhY3RvcnkgPSAoKSA9PiBEcm9wRG93bk1lbnVLaW5kRGVjbGFyYXRpb247XG5cbi8qKlxuICogRXZlcnkgZHJvcC1kb3duIG1lbnUga2luZCB0aGUgcnVubmluZyBidWlsZCBrbm93cyBhYm91dC5cbiAqXG4gKiBJbmplY3RpbmcgbWFueSBvZiB0aGVzZSBpcyBob3cgYSBzdXJmYWNlIGVudW1lcmF0ZXMgdGhlIG1lbnVzIHRoYXQgZXhpc3QgXHUyMDE0XG4gKiB0aGUgZXh0ZW5zaW9uLWRldmVsb3BtZW50IGluc3RydWN0aW9ucyByZW5kZXIgdGhlaXIgbGlzdCBmcm9tIGl0LCBzbyBhIG5ld1xuICogbWVudSBiZWNvbWVzIGRvY3VtZW50ZWQgYnkgcmVnaXN0ZXJpbmcgaGVyZSByYXRoZXIgdGhhbiBieSBzb21lb25lXG4gKiByZW1lbWJlcmluZyB0byBlZGl0IHByb3NlLlxuICovXG5leHBvcnQgY29uc3QgZHJvcERvd25NZW51S2luZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uRmFjdG9yeTtcbn0+KHtcbiAgaWQ6IFwiZHJvcC1kb3duLW1lbnUta2luZFwiLFxuICBjYXJkaW5hbGl0eTogXCJ6ZXJvLW9yLW1hbnlcIixcbn0pKCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcERvd25NZW51S2luZEluamVjdGFibGVQYXJhbXMge1xuICAvKiogVW5pcXVlIGlkIGZvciB0aGUgcmVnaXN0ZXJlZCBpbmplY3RhYmxlLiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICAvKiogVGhlIGtpbmQgYmVpbmcgYW5ub3VuY2VkLiAqL1xuICByZWFkb25seSBraW5kOiBEcm9wRG93bk1lbnVLaW5kPGFueT47XG4gIC8qKiBPbmUgbGluZSBvbiB3aGF0IHRoZSBtZW51IGlzLiAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFubm91bmNlIGEgZHJvcC1kb3duIG1lbnUga2luZCwgc28gYW55dGhpbmcgZW51bWVyYXRpbmcgdGhlIG1lbnVzIGZpbmRzIGl0LlxuICpcbiAqIFJlZ2lzdGVyIHRoaXMgd2hlcmV2ZXIgdGhlIG1lbnUncyBvd24gc3VyZmFjZSBpcyByZWdpc3RlcmVkIFx1MjAxNCBhIGNvbnRyYWN0c1xuICogcGFja2FnZSBleHBvcnRzIHRoZSBraW5kLCBidXQgbm90IHRoZSByZWdpc3RyYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBleHBvcnQgZGVmYXVsdCBnZXREcm9wRG93bk1lbnVLaW5kSW5qZWN0YWJsZUJ1bmNoKHtcbiAqICAgaWQ6IFwiYWktdG9vbC10b3AtYmFyLW1lbnUta2luZFwiLFxuICogICBraW5kOiBhaVRvb2xUb3BCYXJNZW51S2luZCxcbiAqICAgZGVzY3JpcHRpb246IFwiVGhlIG1lbnUgb2YgdGhlIEFJIHRvb2wgYnV0dG9uIGluIHRoZSB0b3AgYmFyLlwiLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERyb3BEb3duTWVudUtpbmRJbmplY3RhYmxlQnVuY2ggPSAocGFyYW1zOiBEcm9wRG93bk1lbnVLaW5kSW5qZWN0YWJsZVBhcmFtcykgPT5cbiAgZ2V0SW5qZWN0YWJsZUJ1bmNoKHtcbiAgICBkcm9wRG93bk1lbnVLaW5kOiBnZXRJbmplY3RhYmxlMih7XG4gICAgICBpZDogcGFyYW1zLmlkLFxuXG4gICAgICBpbnN0YW50aWF0ZTogKCkgPT4gKCk6IERyb3BEb3duTWVudUtpbmREZWNsYXJhdGlvbiA9PiAoe1xuICAgICAgICBraW5kOiBwYXJhbXMua2luZCxcbiAgICAgICAgZGVzY3JpcHRpb246IHBhcmFtcy5kZXNjcmlwdGlvbixcbiAgICAgIH0pLFxuXG4gICAgICBpbmplY3Rpb25Ub2tlbjogZHJvcERvd25NZW51S2luZEluamVjdGlvblRva2VuLFxuICAgIH0pLFxuICB9KTtcbiIsICJpbXBvcnQge1xuICBnZXRJbmplY3RhYmxlMixcbiAgZ2V0SW5qZWN0YWJsZUJ1bmNoLFxuICBnZXRJbmplY3Rpb25Ub2tlbjIsXG4gIHR5cGUgTWFueUZhY3RvcnksXG4gIHR5cGUgTm9uRW1wdHlNYW55RmFjdG9yeSxcbiAgdHlwZSBTcGVjaWZpY0luamVjdGlvblRva2VuMixcbn0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHtcbiAgSWRlbnRpZmlhYmxlLFxuICBNYXliZUNvbXB1dGVkLFxuICBNYXliZUNvbXB1dGVkU2hvd2FibGUsXG4gIE9yZGVyYWJsZSxcbn0gZnJvbSBcIkBrOHNsZW5zL2NvbXBvc2FibGUtcmVzcG9uc2liaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBNYXliZVByb21pc2UgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudURhdGEsIERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5cbi8qKlxuICogT25lIGl0ZW0gb2YgYSBkcm9wLWRvd24gbWVudTogYSBjb21wb25lbnQsIHdoZXJlIGl0IHNpdHMgYW1vbmcgdGhlIG90aGVycywgYW5kIHdoZXRoZXIgaXQgaXNcbiAqIHNob3duIGF0IGFsbC4gV2hhdCB0aGUgaXRlbSBsb29rcyBsaWtlIGFuZCB3aGF0IGl0IGRvZXMgYXJlIGl0cyBvd24gYnVzaW5lc3MgXHUyMDE0IGEgbWVudSBuZWl0aGVyXG4gKiBkcmF3cyBpdCBub3IgZGVjaWRlcyBhbnl0aGluZyBhYm91dCBpdC5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGlzIGdpdmVuIHRoZSBkYXRhIHRoZSBob3N0IGVsZW1lbnQgb3BlbmVkIHRoZSBtZW51IHdpdGgsIGFuZCBtdXN0IGJlIGRlZmluZWQgYXRcbiAqIG1vZHVsZSBzY29wZTsgY2FwdHVyaW5nIGRhdGEgaW4gYSBjbG9zdXJlIHdvdWxkIGNyZWF0ZSBhIG5ldyBjb21wb25lbnQgcmVmZXJlbmNlIG9uIGV2ZXJ5XG4gKiBpbnZvY2F0aW9uIGFuZCBicmVhayBSZWFjdCByZWNvbmNpbGlhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wRG93bk1lbnVJdGVtPFREYXRhID0gdm9pZD4gZXh0ZW5kcyBJZGVudGlmaWFibGUsIE9yZGVyYWJsZSwgTWF5YmVDb21wdXRlZFNob3dhYmxlIHtcbiAgcmVhZG9ubHkgQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPHsgcmVhZG9ubHkgZGF0YTogVERhdGEgfT47XG59XG5cbi8qKiBQcm9kdWNlcyBvbmUgaXRlbSwgcG9zc2libHkgbGF0ZXIuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxURGF0YSA9IGFueT4gPSAoKSA9PiBNYXliZVByb21pc2U8RHJvcERvd25NZW51SXRlbTxURGF0YT4+O1xuXG4vKipcbiAqIFRoZSBzcGVjaWZpYyB0b2tlbiBgLmZvcihraW5kKWAgeWllbGRzOiB0aGUgaXRlbXMgY29udHJpYnV0ZWQgdG8gb25lIG1lbnUga2luZC4gQXQgbGVhc3Qgb25lIG9mXG4gKiB0aGVtLCBzbyB0aGF0IGEga2luZCBub2JvZHkgY29udHJpYnV0ZXMgdG8gaXMgYSBjb21wb3NpdGlvbiBlcnJvciByYXRoZXIgdGhhbiBhIG1lbnUgdGhhdCBuZXZlclxuICogb3BlbnMuXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudUl0ZW1Ub2tlbkZvcjxURGF0YT4gPSBTcGVjaWZpY0luamVjdGlvblRva2VuMjx7XG4gIHNpbmdsZUZhY3Rvcnk6IERyb3BEb3duTWVudUl0ZW1GYWN0b3J5PFREYXRhPjtcbiAgbWFueUZhY3Rvcnk6IE5vbkVtcHR5TWFueUZhY3Rvcnk8RHJvcERvd25NZW51SXRlbUZhY3Rvcnk8VERhdGE+PjtcbiAgc3BlY2lmaWNUb2tlbkZhY3Rvcnk6IHVuZGVmaW5lZDtcbiAgY2FyZGluYWxpdHk6IFwib25lLW9yLW1hbnlcIjtcbn0+O1xuXG4vKipcbiAqIFRoZSBgLmZvcigpYCBmYWN0b3J5LCBhbm5vdGF0ZWQgc28gYSBraW5kJ3Mgb3duIGRhdGEgdHlwZSBzdXJ2aXZlcyBpbnRvIHRoZSBzcGVjaWZpYyB0b2tlbi4gVGhlXG4gKiBhbm5vdGF0aW9uIGNhcnJpZXMgd2hhdCB0aGUgcmV0aXJlZCB0aGlyZCB0eXBlIHBhcmFtZXRlciB1c2VkIHRvOiBpbmZlcmVuY2UgZnJvbSB0aGUgdmFsdWUgYWxvbmVcbiAqIGNhbm5vdCByZWNvbnN0cnVjdCBhIHJldHVybiB0eXBlIHRoYXQgbWVudGlvbnMgdGhlIHNwZWNpZmllcidzIG93biB0eXBlIHBhcmFtZXRlci5cbiAqL1xuY29uc3QgZHJvcERvd25NZW51SXRlbVRva2VuRm9yID0gPEsgZXh0ZW5kcyBEcm9wRG93bk1lbnVLaW5kPGFueT4+KFxuICBraW5kOiBLLFxuKTogRHJvcERvd25NZW51SXRlbVRva2VuRm9yPERyb3BEb3duTWVudURhdGE8Sz4+ID0+XG4gIGdldEluamVjdGlvblRva2VuMjx7XG4gICAgc2luZ2xlRmFjdG9yeTogRHJvcERvd25NZW51SXRlbUZhY3Rvcnk8RHJvcERvd25NZW51RGF0YTxLPj47XG4gICAgbWFueUZhY3Rvcnk6IE5vbkVtcHR5TWFueUZhY3Rvcnk8RHJvcERvd25NZW51SXRlbUZhY3Rvcnk8RHJvcERvd25NZW51RGF0YTxLPj4+O1xuICB9Pih7XG4gICAgaWQ6IGBkcm9wLWRvd24tbWVudS1pdGVtLSR7a2luZH1gLFxuICAgIHNwZWNpYWxpdHk6IGtpbmQsXG4gICAgY2FyZGluYWxpdHk6IFwib25lLW9yLW1hbnlcIixcbiAgfSkoKTtcblxuLyoqXG4gKiBUaGUgY29udHJpYnV0aW9uIHN1cmZhY2Ugb2YgZHJvcC1kb3duIG1lbnVzOiBvbmUgaXRlbSBwZXIgY29udHJpYnV0aW9uLCByZWdpc3RlcmVkIGFnYWluc3QgYVxuICoge0BsaW5rIERyb3BEb3duTWVudUtpbmR9IHZpYSBgLmZvcihraW5kKWAuIFByZWZlciB7QGxpbmsgZ2V0RHJvcERvd25NZW51SXRlbUluamVjdGFibGVCdW5jaH1cbiAqIG92ZXIgcmVnaXN0ZXJpbmcgYnkgaGFuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudUl0ZW1JbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7XG4gIHNpbmdsZUZhY3Rvcnk6IERyb3BEb3duTWVudUl0ZW1GYWN0b3J5PGFueT47XG4gIG1hbnlGYWN0b3J5OiBNYW55RmFjdG9yeTxEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxhbnk+Pjtcbn0+KHtcbiAgaWQ6IFwiZHJvcC1kb3duLW1lbnUtaXRlbVwiLFxuICBjYXJkaW5hbGl0eTogXCJ6ZXJvLW9yLW1hbnlcIixcbn0pKGRyb3BEb3duTWVudUl0ZW1Ub2tlbkZvcik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcERvd25NZW51SXRlbUJ1bmNoUGFyYW1zPEsgZXh0ZW5kcyBEcm9wRG93bk1lbnVLaW5kPGFueT4+IHtcbiAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhlIHJlZ2lzdGVyZWQgaW5qZWN0YWJsZTsgZG91YmxlcyBhcyB0aGUgaXRlbSdzIGlkLiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICAvKiogVGhlIG1lbnUga2luZCB0aGUgaXRlbSBiZWxvbmdzIHRvLiAqL1xuICByZWFkb25seSBraW5kOiBLO1xuICAvKiogTG93ZXIgY29tZXMgZmlyc3QgYW1vbmcgdGhlIGtpbmQncyBpdGVtcy4gKi9cbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdGhlIGl0ZW0gaXMgc2hvd24gYXQgYWxsOyB0aGUgbWVudSByZWFjdHMgdG8gdGhpcyB3aGlsZSBvcGVuLiAqL1xuICByZWFkb25seSBpc1Zpc2libGU/OiBNYXliZUNvbXB1dGVkPGJvb2xlYW4+O1xuICAvKiogUmVuZGVycyB0aGUgaXRlbS4gUmVjZWl2ZXMgdGhlIGRhdGEgdGhlIG1lbnUgd2FzIG9wZW5lZCB3aXRoLiAqL1xuICByZWFkb25seSBDb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8eyByZWFkb25seSBkYXRhOiBEcm9wRG93bk1lbnVEYXRhPEs+IH0+O1xufVxuXG4vKipcbiAqIENvbnRyaWJ1dGUgb25lIGl0ZW0gdG8gYSBkcm9wLWRvd24gbWVudSBraW5kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IFJlc3RhcnRQb2QgPSAoeyBkYXRhIH06IHsgZGF0YTogeyBwb2ROYW1lOiBzdHJpbmcgfSB9KSA9PiAoXG4gKiAgIDxDbGlja2FibGVMaSAkb25DbGljaz17KCkgPT4gcmVzdGFydChkYXRhLnBvZE5hbWUpfT5SZXN0YXJ0IHtkYXRhLnBvZE5hbWV9PC9DbGlja2FibGVMaT5cbiAqICk7XG4gKlxuICogZXhwb3J0IGNvbnN0IHJlc3RhcnRQb2RCdW5jaCA9IGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2goe1xuICogICBpZDogXCJyZXN0YXJ0LXBvZFwiLFxuICogICBraW5kOiBwb2RBY3Rpb25zTWVudUtpbmQsXG4gKiAgIG9yZGVyTnVtYmVyOiAxMCxcbiAqICAgaXNWaXNpYmxlOiBjb21wdXRlZCgoKSA9PiBjYW5SZXN0YXJ0LmdldCgpKSxcbiAqICAgQ29tcG9uZW50OiBSZXN0YXJ0UG9kLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2ggPSA8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4oXG4gIHBhcmFtczogRHJvcERvd25NZW51SXRlbUJ1bmNoUGFyYW1zPEs+LFxuKSA9PlxuICBnZXRJbmplY3RhYmxlQnVuY2goe1xuICAgIGRyb3BEb3duTWVudUl0ZW06IGdldEluamVjdGFibGUyKHtcbiAgICAgIGlkOiBwYXJhbXMuaWQsXG5cbiAgICAgIGluc3RhbnRpYXRlOiAoKSA9PiAoKTogRHJvcERvd25NZW51SXRlbTxEcm9wRG93bk1lbnVEYXRhPEs+PiA9PiAoe1xuICAgICAgICBpZDogcGFyYW1zLmlkLFxuICAgICAgICBvcmRlck51bWJlcjogcGFyYW1zLm9yZGVyTnVtYmVyLFxuICAgICAgICBpc1Zpc2libGU6IHBhcmFtcy5pc1Zpc2libGUsXG4gICAgICAgIENvbXBvbmVudDogcGFyYW1zLkNvbXBvbmVudCxcbiAgICAgIH0pLFxuXG4gICAgICBpbmplY3Rpb25Ub2tlbjogZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLmZvcihwYXJhbXMua2luZCksXG4gICAgfSksXG4gIH0pO1xuIiwgImltcG9ydCB0eXBlIHsgRHJvcERvd25NZW51RGF0YSwgRHJvcERvd25NZW51S2luZCB9IGZyb20gXCIuL2Ryb3AtZG93bi1tZW51LWtpbmRcIjtcblxuLyoqXG4gKiBIb3cgdGhlIG1lbnUgb3BlbnMgZnJvbSBpdHMgaG9zdCBlbGVtZW50LlxuICpcbiAqIC0gYFwiY2xpY2tcImAgKHRoZSBkZWZhdWx0KTogY2xpY2tpbmcgdGhlIGVsZW1lbnQgdG9nZ2xlcyB0aGUgbWVudS5cbiAqIC0gYFwiaG92ZXJcImA6IHRoZSBtZW51IG9wZW5zIHdoaWxlIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIGVsZW1lbnQgb3IgdGhlIG1lbnUuXG4gKiAtIGBcInJpZ2h0LWNsaWNrXCJgOiByaWdodC1jbGlja2luZyB0aGUgZWxlbWVudCB0b2dnbGVzIHRoZSBtZW51LiBUaGUgbWVudSBzdGF5cyBhbmNob3JlZCB0byB0aGVcbiAqICAgZWxlbWVudDsgY3Vyc29yLWFuY2hvcmVkIHJpZ2h0LWNsaWNrIG1lbnVzIGFyZSB0aGUgY29uY2VybiBvZiBgQGxlbnNhcHAvY29udGV4dC1tZW51YC5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51T3Blbk9uID0gXCJjbGlja1wiIHwgXCJob3ZlclwiIHwgXCJyaWdodC1jbGlja1wiO1xuXG4vKipcbiAqIFdoZXJlIHRoZSBtZW51IHNpdHMgcmVsYXRpdmUgdG8gaXRzIGhvc3QgZWxlbWVudDogYSBzaWRlIG9mIHRoZSBob3N0LCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBtZW51IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBtZW51IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmAgYWxpZ25zXG4gKiB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgbWVudSBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIERlZmF1bHRzIHRvIGBcImJvdHRvbSBzcGFuLXJpZ2h0XCJgLiBXaGVuIHRoZSBtZW51IHdvdWxkIG5vdCBmaXQgdGhlIHZpZXdwb3J0LCBpdCBmYWxscyBiYWNrIHRvIHRoZVxuICogbWlycm9yZWQgcG9zaXRpb25zLlxuICpcbiAqIE5vdGU6IGtlcHQgaWRlbnRpY2FsIHRvIGBBbmNob3JQb3NpdGlvbmAgb2YgYEBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50c2AsIHdoaWNoIGNhbm5vdCBiZVxuICogaW1wb3J0ZWQgaGVyZSBcdTIwMTQgaXQgZGVwZW5kcyBvbiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVBvc2l0aW9uID1cbiAgfCBcInRvcFwiXG4gIHwgXCJib3R0b21cIlxuICB8IFwibGVmdFwiXG4gIHwgXCJyaWdodFwiXG4gIHwgXCJ0b3Agc3Bhbi1sZWZ0XCJcbiAgfCBcInRvcCBzcGFuLXJpZ2h0XCJcbiAgfCBcImJvdHRvbSBzcGFuLWxlZnRcIlxuICB8IFwiYm90dG9tIHNwYW4tcmlnaHRcIlxuICB8IFwibGVmdCBzcGFuLXRvcFwiXG4gIHwgXCJsZWZ0IHNwYW4tYm90dG9tXCJcbiAgfCBcInJpZ2h0IHNwYW4tdG9wXCJcbiAgfCBcInJpZ2h0IHNwYW4tYm90dG9tXCI7XG5cbi8qKlxuICogSG93IGZhciBmcm9tIGl0cyBob3N0IHRoZSBtZW51IHNpdHMsIG9uIHRoZSBzaGFyZWQgdC1zaGlydCBzY2FsZS4gRGVmYXVsdHMgdG8gYFwieHNcImAuXG4gKlxuICogTm90ZToga2VwdCBpZGVudGljYWwgdG8gYFRTaGlydFNpemVgIG9mIGBAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudHNgLCB3aGljaCBjYW5ub3QgYmUgaW1wb3J0ZWRcbiAqIGhlcmUgXHUyMDE0IGl0IGRlcGVuZHMgb24gdGhpcyBwYWNrYWdlLlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVHYXAgPVxuICB8IFwiemVyb1wiXG4gIHwgXCI0eHNcIlxuICB8IFwiM3hzXCJcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IFwiM3hsXCJcbiAgfCBcIjR4bFwiXG4gIHwgXCI1eGxcIlxuICB8IFwiNnhsXCJcbiAgfCBcIjd4bFwiXG4gIHwgXCI4eGxcIlxuICB8IFwiOXhsXCJcbiAgfCBcIjEweGxcIlxuICB8IFwiMTF4bFwiO1xuXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYCRkcm9wRG93bk1lbnVgIGVsZW1lbnQgcHJvcDogd2hpY2ggbWVudSBraW5kIHRvIG9wZW4sIHRoZSBkYXRhIGl0cyBpdGVtXG4gKiBmYWN0b3JpZXMgcmVjZWl2ZSwgaG93IHRoZSBtZW51IG9wZW5zIGFuZCB3aGVyZSBpdCBzaXRzLiBDcmVhdGUgd2l0aCB7QGxpbmsgZHJvcERvd25NZW51fSBzbyB0aGVcbiAqIGRhdGEgaXMgdHlwZWQgYnkgdGhlIGtpbmQuXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVNwZWMgPSB7XG4gIHJlYWRvbmx5IGtpbmQ6IERyb3BEb3duTWVudUtpbmQ8YW55PjtcbiAgcmVhZG9ubHkgZGF0YT86IHVua25vd247XG4gIHJlYWRvbmx5IG9wZW5Pbj86IERyb3BEb3duTWVudU9wZW5PbjtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBEcm9wRG93bk1lbnVQb3NpdGlvbjtcbiAgcmVhZG9ubHkgZ2FwPzogRHJvcERvd25NZW51R2FwO1xufTtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51T3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgb3Blbk9uPzogRHJvcERvd25NZW51T3Blbk9uO1xuICByZWFkb25seSBwb3NpdGlvbj86IERyb3BEb3duTWVudVBvc2l0aW9uO1xuICByZWFkb25seSBnYXA/OiBEcm9wRG93bk1lbnVHYXA7XG59O1xuXG4vKipcbiAqIFR5cGVkIGNvbnN0cnVjdG9yIGZvciBhIHtAbGluayBEcm9wRG93bk1lbnVTcGVjfTogYSBraW5kIGNyZWF0ZWQgZm9yIGEgZGF0YSB0eXBlIG1ha2VzIGBkYXRhYFxuICogcmVxdWlyZWQgYW5kIHR5cGVkOyBhIGtpbmQgd2l0aG91dCBkYXRhIGZvcmJpZHMgaXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPEJ1dHRvbiAkZHJvcERvd25NZW51PXtkcm9wRG93bk1lbnUoYWlUb29sc01lbnVLaW5kKX0+T3BlbjwvQnV0dG9uPlxuICogPEJ1dHRvbiAkZHJvcERvd25NZW51PXtkcm9wRG93bk1lbnUocG9kQWN0aW9uc01lbnVLaW5kLCB7IGRhdGE6IHsgcG9kTmFtZSB9IH0pfT5Qb2Q8L0J1dHRvbj5cbiAqIDxCdXR0b24gJGRyb3BEb3duTWVudT17ZHJvcERvd25NZW51KHJvd0FjdGlvbnNNZW51S2luZCwgeyBwb3NpdGlvbjogXCJib3R0b20gc3Bhbi1sZWZ0XCIgfSl9Plx1MjJFRTwvQnV0dG9uPlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcm9wRG93bk1lbnU8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8dm9pZD4+KFxuICBraW5kOiBLLFxuICBvcHRpb25zPzogRHJvcERvd25NZW51T3B0aW9ucyxcbik6IERyb3BEb3duTWVudVNwZWM7XG5leHBvcnQgZnVuY3Rpb24gZHJvcERvd25NZW51PEsgZXh0ZW5kcyBEcm9wRG93bk1lbnVLaW5kPGFueT4+KFxuICBraW5kOiBLLFxuICBvcHRpb25zOiBEcm9wRG93bk1lbnVPcHRpb25zICYgeyByZWFkb25seSBkYXRhOiBEcm9wRG93bk1lbnVEYXRhPEs+IH0sXG4pOiBEcm9wRG93bk1lbnVTcGVjO1xuZXhwb3J0IGZ1bmN0aW9uIGRyb3BEb3duTWVudShcbiAga2luZDogRHJvcERvd25NZW51S2luZDxhbnk+LFxuICBvcHRpb25zPzogRHJvcERvd25NZW51T3B0aW9ucyAmIHsgcmVhZG9ubHkgZGF0YT86IHVua25vd24gfSxcbik6IERyb3BEb3duTWVudVNwZWMge1xuICByZXR1cm4geyBraW5kLCAuLi5vcHRpb25zIH07XG59XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0aW9uVG9rZW4yLCB0eXBlIE1heWJlUmVzdWx0RmFjdG9yeSwgdHlwZSBTcGVjaWZpY0luamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBnZXRJbmplY3Rpb25Ub2tlbkNvbXBvbmVudDIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudURhdGEsIERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudUl0ZW0gfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1pdGVtXCI7XG5cbi8qKlxuICogVGhlIHByb3BzIHRoZSBtZW51IGhhbmRzIGl0cyBjb250YWluZXIuIFRoZXkgcG9zaXRpb24gdGhlIGNvbnRhaW5lciwgcHV0IGl0IGFib3ZlIGV2ZXJ5dGhpbmdcbiAqIGVsc2UsIGFuZCBsZXQgYSBtZW51IG9wZW5lZCBieSBob3ZlcmluZyBrbm93IHRoZSBwb2ludGVyIGlzIG9uIGl0IFx1MjAxNCBzbyB0aGUgY29udGFpbmVyIG11c3Qgc3ByZWFkXG4gKiB0aGVtIG9udG8gd2hpY2hldmVyIGVsZW1lbnQgaXQgcmVuZGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51Q29udGFpbmVyUHJvcHM8VERhdGEgPSB2b2lkPiA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogVGhlIGl0ZW1zIG9mIHRoZSBtZW51LCBhcyBpdHMga2luZCBkZWNsYXJlcyB0aGVtLCBmb3IgYSBjb250YWluZXIgdGhhdCBsYXlzIHRoZW0gb3V0IGl0c2VsZlxuICAgKiByYXRoZXIgdGhhbiByZW5kZXJpbmcgd2hhdCB0aGUgbWVudSBnYXZlIGl0IGFzIGNoaWxkcmVuLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXM/OiByZWFkb25seSBEcm9wRG93bk1lbnVJdGVtPFREYXRhPltdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8VERhdGEgPSB2b2lkPiA9ICgpID0+IFJlYWN0LkNvbXBvbmVudFR5cGU8RHJvcERvd25NZW51Q29udGFpbmVyUHJvcHM8VERhdGE+PjtcblxuLyoqXG4gKiBUaGUgY29udGFpbmVyIGEgbWVudSByZW5kZXJzIGFzIHdoZW4gaXRzIGtpbmQgY29udHJpYnV0ZXMgbm9uZSBvZiBpdHMgb3duLiBJbXBsZW1lbnRlZCBieVxuICogYEBsZW5zYXBwL2Ryb3AtZG93bi1tZW51YDsgb3ZlcnJpZGUgaXQgdG8gY2hhbmdlIHdoYXQgZXZlcnkgbWVudSBpcyBtYWRlIG9mLlxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdERyb3BEb3duTWVudUNvbnRhaW5lciA9IGdldEluamVjdGlvblRva2VuQ29tcG9uZW50MjxcbiAgUmVhY3QuQ29tcG9uZW50VHlwZTxEcm9wRG93bk1lbnVDb250YWluZXJQcm9wcz5cbj4oe1xuICBpZDogXCJkZWZhdWx0LWRyb3AtZG93bi1tZW51LWNvbnRhaW5lclwiLFxufSkoKTtcblxuLyoqIFRoZSBzcGVjaWZpYyB0b2tlbiBgLmZvcihraW5kKWAgeWllbGRzOiBhdCBtb3N0IG9uZSBjb250YWluZXIgZm9yIGEgbWVudSBraW5kLCB0eXBlZCBieSBpdC4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudUNvbnRhaW5lclRva2VuRm9yPFREYXRhPiA9IFNwZWNpZmljSW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50PFREYXRhPjtcbiAgbWF5YmVGYWN0b3J5OiBNYXliZVJlc3VsdEZhY3Rvcnk8RHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50PFREYXRhPj47XG4gIHNwZWNpZmljVG9rZW5GYWN0b3J5OiB1bmRlZmluZWQ7XG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3Itb25lXCI7XG59PjtcblxuLyoqXG4gKiBUaGUgYC5mb3IoKWAgZmFjdG9yeSwgYW5ub3RhdGVkIHNvIGEga2luZCdzIG93biBkYXRhIHR5cGUgc3Vydml2ZXMgaW50byB0aGUgc3BlY2lmaWMgdG9rZW4uIFRoZVxuICogYW5ub3RhdGlvbiBjYXJyaWVzIHdoYXQgdGhlIHJldGlyZWQgdGhpcmQgdHlwZSBwYXJhbWV0ZXIgdXNlZCB0bzogaW5mZXJlbmNlIGZyb20gdGhlIHZhbHVlIGFsb25lXG4gKiBjYW5ub3QgcmVjb25zdHJ1Y3QgYSByZXR1cm4gdHlwZSB0aGF0IG1lbnRpb25zIHRoZSBzcGVjaWZpZXIncyBvd24gdHlwZSBwYXJhbWV0ZXIuXG4gKi9cbmNvbnN0IGRyb3BEb3duTWVudUNvbnRhaW5lckNvbXBvbmVudFRva2VuRm9yID0gPEsgZXh0ZW5kcyBEcm9wRG93bk1lbnVLaW5kPGFueT4+KFxuICBraW5kOiBLLFxuKTogRHJvcERvd25NZW51Q29udGFpbmVyVG9rZW5Gb3I8RHJvcERvd25NZW51RGF0YTxLPj4gPT5cbiAgZ2V0SW5qZWN0aW9uVG9rZW4yPHtcbiAgICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8RHJvcERvd25NZW51RGF0YTxLPj47XG4gICAgbWF5YmVGYWN0b3J5OiBNYXliZVJlc3VsdEZhY3Rvcnk8RHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50PERyb3BEb3duTWVudURhdGE8Sz4+PjtcbiAgfT4oe1xuICAgIGlkOiBgZHJvcC1kb3duLW1lbnUtY29udGFpbmVyLWNvbXBvbmVudC0ke2tpbmR9YCxcbiAgICBzcGVjaWFsaXR5OiBraW5kLFxuICAgIGNhcmRpbmFsaXR5OiBcInplcm8tb3Itb25lXCIsXG4gIH0pKCk7XG5cbi8qKlxuICogVGhlIGVsZW1lbnQgYSBtZW51IG9mIHNvbWUga2luZCByZW5kZXJzIGFzLiBXaXRob3V0IG9uZSwgYSBtZW51IGlzIGEgbGlzdCBcdTIwMTQgd2hpY2ggaXMgd2hhdCBhIG1lbnVcbiAqIG9mIG9yZGluYXJ5IGl0ZW1zIHNob3VsZCBiZS4gQ29udHJpYnV0ZSBvbmUgd2hlbiB0aGUgaXRlbXMgYXJlIG5vdCBhIGxpc3Q6IGEgZ3JpZCBvZiBpY29ucywgc2F5LFxuICogb3IgYSBwYW5lbCB0aGF0IGhhcHBlbnMgdG8gb3BlbiBsaWtlIGEgbWVudS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAvLyBJdGVtcyB0eXBlZCBieSB0aGUga2luZCwgZm9yIGEgY29udGFpbmVyIHRoYXQgbGF5cyB0aGVtIG91dCBpdHNlbGYuXG4gKiBjb25zdCBJY29uR3JpZCA9ICh7IGl0ZW1zID0gW10sIC4uLm1lbnVQcm9wcyB9OiBEcm9wRG93bk1lbnVDb250YWluZXJQcm9wcykgPT4gKFxuICogICA8RGl2IHsuLi5tZW51UHJvcHN9ICRncmlkPXt7IGNvbHVtbnM6IDMgfX0+XG4gKiAgICAge2l0ZW1zLm1hcCgoaXRlbSkgPT4gKFxuICogICAgICAgPGl0ZW0uQ29tcG9uZW50IGtleT17aXRlbS5pZH0gZGF0YT17dW5kZWZpbmVkfSAvPlxuICogICAgICkpfVxuICogICA8L0Rpdj5cbiAqICk7XG4gKlxuICogZXhwb3J0IGNvbnN0IGljb25HcmlkQ29udGFpbmVySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAqICAgaWQ6IFwiaWNvbi1ncmlkLWNvbnRhaW5lclwiLFxuICogICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gSWNvbkdyaWQsXG4gKiAgIGluamVjdGlvblRva2VuOiBkcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnRJbmplY3Rpb25Ub2tlbi5mb3IoaWNvbnNNZW51S2luZCksXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50SW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8e1xuICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8YW55PjtcbiAgbWF5YmVGYWN0b3J5OiBNYXliZVJlc3VsdEZhY3Rvcnk8RHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50PGFueT4+O1xufT4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50XCIsXG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3Itb25lXCIsXG59KShkcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnRUb2tlbkZvcik7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0aW9uVG9rZW5Db21wb25lbnQyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBEcm9wRG93bk1lbnVTcGVjIH0gZnJvbSBcIi4vZHJvcC1kb3duLW1lbnUtc3BlY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BEb3duTWVudVByb3BzIHtcbiAgLyoqIFdoaWNoIG1lbnUgdG8gc2hvdzogdGhlIGtpbmQsIGl0cyBkYXRhLCBob3cgaXQgb3BlbnMgYW5kIHdoZXJlIGl0IHNpdHMuICovXG4gIHJlYWRvbmx5IHNwZWM6IERyb3BEb3duTWVudVNwZWM7XG5cbiAgLyoqXG4gICAqIFZpZXdwb3J0IHBvaW50IHRvIHNpdCBhdCwgaW5zdGVhZCBvZiB0aGUgaG9zdCBlbGVtZW50IFx1MjAxNCBob3cgYSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZ1xuICAgKiBlbmRzIHVwIGF0IHRoZSBjdXJzb3IuXG4gICAqL1xuICByZWFkb25seSBhbmNob3JQb2ludD86IHsgcmVhZG9ubHkgeDogbnVtYmVyOyByZWFkb25seSB5OiBudW1iZXIgfTtcblxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIG1lbnUgY2xvc2VzIGl0c2VsZiAoaXRlbSBhY3RpdmF0aW9uLCBvdXRzaWRlIGNsaWNrLCBFc2NhcGUsIG5vIGl0ZW1zKS4gKi9cbiAgcmVhZG9ubHkgb25DbG9zZTogVm9pZEZ1bmN0aW9uO1xuXG4gIC8qKiBSZXBvcnRzIHBvaW50ZXIgcHJlc2VuY2Ugb3ZlciB0aGUgbWVudSBzdXJmYWNlOyBob3Zlci1vcGVuZWQgaG9zdHMgc3RheSBvcGVuIHdoaWxlIHRydWUuICovXG4gIHJlYWRvbmx5IG9uTWVudUhvdmVyQ2hhbmdlPzogKGlzSG92ZXJlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgbWVudSBjb21wb25lbnQgdGhlIGAkZHJvcERvd25NZW51YCBlbGVtZW50IHByb3AgcmVuZGVycyB3aGlsZSBvcGVuLiBJdCByZW5kZXJzIGluc2lkZSB0aGVcbiAqIGhvc3QgZWxlbWVudCBhbmQgYW5jaG9ycyBpdHNlbGYgdG8gaXQsIHNvIHRoZSBob3N0IG5lZWRzIG5vIHJlZiBhbmQgdGhlIG1lbnUgbmVlZHMgbm8gcG9ydGFsLlxuICpcbiAqIEltcGxlbWVudGVkIGJ5IGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAsIHdob3NlIGZlYXR1cmUgbXVzdCBiZSByZWdpc3RlcmVkIGZvciB0aGUgcHJvcCB0byB3b3JrO1xuICogcmVzb2x2ZWQgdGhyb3VnaCB0aGlzIHRva2VuIHNvIGVsZW1lbnQtY29tcG9uZW50cyBuZWVkcyBubyBkZXBlbmRlbmN5IG9uIHRoZSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERyb3BEb3duTWVudSA9IGdldEluamVjdGlvblRva2VuQ29tcG9uZW50MjxSZWFjdC5Db21wb25lbnRUeXBlPERyb3BEb3duTWVudVByb3BzPj4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudVwiLFxufSkoKTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBEcm9wRG93bk1lbnVLaW5kIH0gZnJvbSBcIi4vZHJvcC1kb3duLW1lbnUta2luZFwiO1xuXG4vKiogQ2xvc2VzIHRoZSBvcGVuIGRyb3AtZG93biBtZW51IG9mIHRoZSBnaXZlbiBraW5kLiAqL1xuZXhwb3J0IHR5cGUgQ2xvc2VEcm9wRG93bk1lbnUgPSAoa2luZDogRHJvcERvd25NZW51S2luZDxhbnk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIFByb2dyYW1tYXRpY2FsbHkgY2xvc2UgdGhlIG9wZW4gZHJvcC1kb3duIG1lbnUgb2Ygb25lIGtpbmQuIE1lbnVzIG9mIG90aGVyIGtpbmRzIHN0YXkgb3Blbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNsb3NlRHJvcERvd25NZW51ID0gZGkuaW5qZWN0KGNsb3NlRHJvcERvd25NZW51SW5qZWN0aW9uVG9rZW4pKCk7XG4gKlxuICogY2xvc2VEcm9wRG93bk1lbnUocG9kQWN0aW9uc01lbnVLaW5kKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgY2xvc2VEcm9wRG93bk1lbnVJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IENsb3NlRHJvcERvd25NZW51IH0+KHtcbiAgaWQ6IFwiY2xvc2UtZHJvcC1kb3duLW1lbnVcIixcbiAgY2FyZGluYWxpdHk6IFwib25lXCIsXG59KSgpO1xuXG4vKiogQ2xvc2VzIGV2ZXJ5IG9wZW4gZHJvcC1kb3duIG1lbnUuICovXG5leHBvcnQgdHlwZSBDbG9zZUFsbERyb3BEb3duTWVudXMgPSBWb2lkRnVuY3Rpb247XG5cbi8qKlxuICogUHJvZ3JhbW1hdGljYWxseSBjbG9zZSBhbGwgb3BlbiBkcm9wLWRvd24gbWVudXMsIHJlZ2FyZGxlc3Mgb2Yga2luZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNsb3NlQWxsRHJvcERvd25NZW51cyA9IGRpLmluamVjdChjbG9zZUFsbERyb3BEb3duTWVudXNJbmplY3Rpb25Ub2tlbikoKTtcbiAqXG4gKiBjbG9zZUFsbERyb3BEb3duTWVudXMoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgY2xvc2VBbGxEcm9wRG93bk1lbnVzSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBDbG9zZUFsbERyb3BEb3duTWVudXMgfT4oe1xuICBpZDogXCJjbG9zZS1hbGwtZHJvcC1kb3duLW1lbnVzXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcbiIsICJpbXBvcnQgeyBleHBlY3REZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBDYXJyaWVzIHRoZSBjbG9zZSBmdW5jdGlvbiBvZiB0aGUgZHJvcC1kb3duIG1lbnUgYSBjb21wb25lbnQgaXMgcmVuZGVyZWQgaW4uIFByb3ZpZGVkIGJ5IHRoZVxuICogbWVudSBpbXBsZW1lbnRhdGlvbiBhcm91bmQgaXRzIGl0ZW1zOyBjb25zdW1lIHRocm91Z2gge0BsaW5rIHVzZUNsb3NlRHJvcERvd25NZW51fS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnRleHRGb3JDbG9zaW5nRHJvcERvd25NZW51ID0gY3JlYXRlQ29udGV4dDxWb2lkRnVuY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbi8qKlxuICogSW5zaWRlIG1lbnUgY29udGVudDogcmV0dXJucyBhIGZ1bmN0aW9uIGNsb3NpbmcgdGhlIG1lbnUgdGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgaW4gXHUyMDE0IG9ubHlcbiAqIHRoYXQgbWVudSwgbm90IGl0cyBhbmNlc3RvcnMuIFRocm93cyB3aGVuIHVzZWQgb3V0c2lkZSBhIGRyb3AtZG93biBtZW51LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IEN1c3RvbVJvdyA9ICgpID0+IHtcbiAqICAgY29uc3QgY2xvc2VEcm9wRG93bk1lbnUgPSB1c2VDbG9zZURyb3BEb3duTWVudSgpO1xuICpcbiAqICAgcmV0dXJuIDxDbGlja2FibGVEaXYgJG9uQ2xpY2s9e2Nsb3NlRHJvcERvd25NZW51fT5Eb25lPC9DbGlja2FibGVEaXY+O1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VEcm9wRG93bk1lbnUgPSAoKSA9PlxuICBleHBlY3REZWZpbmVkKHVzZUNvbnRleHQoY29udGV4dEZvckNsb3NpbmdEcm9wRG93bk1lbnUpLCBcIlRyaWVkIHRvIGNsb3NlIGEgZHJvcC1kb3duIG1lbnUgd2hpbGUgbm90IGluc2lkZSBvbmUuXCIpO1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBUb2xkIGJ5IGFuIGl0ZW0gd2hlbiBpdCBpcyBhY3RpdmF0ZWQsIHNvIHRoZSBtZW51IGl0IGJlbG9uZ3MgdG8gXHUyMDE0IGFuZCB0aGUgbWVudXMgaXQgd2FzIG9wZW5lZFxuICogZnJvbSBcdTIwMTQgY2FuIGNsb3NlLiBJdGVtcyB0aGVtc2VsdmVzIGtub3cgbm90aGluZyBvZiBtZW51cy5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lbnVJdGVtQWN0aXZhdGVkQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Vm9pZEZ1bmN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHdCQUFnRjtBQWlDekUsSUFBTSxzQkFDWCxNQUNBLENBQW1CLGtCQUNqQixxQ0FBK0MsRUFBRSxTQUFTOzs7QUNwQzlELElBQUFBLHFCQUF1RTtBQXlCaEUsSUFBTSxxQ0FBaUMsdUNBRTNDO0FBQUEsRUFDRCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBMEJJLElBQU0scUNBQXFDLENBQUMsZUFDakQsdUNBQW1CO0FBQUEsRUFDakIsc0JBQWtCLG1DQUFlO0FBQUEsSUFDL0IsSUFBSSxPQUFPO0FBQUEsSUFFWCxhQUFhLE1BQU0sT0FBb0M7QUFBQSxNQUNyRCxNQUFNLE9BQU87QUFBQSxNQUNiLGFBQWEsT0FBTztBQUFBLElBQ3RCO0FBQUEsSUFFQSxnQkFBZ0I7QUFBQSxFQUNsQixDQUFDO0FBQ0gsQ0FBQzs7O0FDcEVILElBQUFDLHFCQU9PO0FBNENQLElBQU0sMkJBQTJCLENBQy9CLGFBRUEsdUNBR0c7QUFBQSxFQUNELElBQUksdUJBQXVCLElBQUk7QUFBQSxFQUMvQixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBT0UsSUFBTSxxQ0FBaUMsdUNBRzNDO0FBQUEsRUFDRCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFLHdCQUF3QjtBQWlDcEIsSUFBTSxxQ0FBcUMsQ0FDaEQsZUFFQSx1Q0FBbUI7QUFBQSxFQUNqQixzQkFBa0IsbUNBQWU7QUFBQSxJQUMvQixJQUFJLE9BQU87QUFBQSxJQUVYLGFBQWEsTUFBTSxPQUE4QztBQUFBLE1BQy9ELElBQUksT0FBTztBQUFBLE1BQ1gsYUFBYSxPQUFPO0FBQUEsTUFDcEIsV0FBVyxPQUFPO0FBQUEsTUFDbEIsV0FBVyxPQUFPO0FBQUEsSUFDcEI7QUFBQSxJQUVBLGdCQUFnQiwrQkFBK0IsSUFBSSxPQUFPLElBQUk7QUFBQSxFQUNoRSxDQUFDO0FBQ0gsQ0FBQzs7O0FDckJJLFNBQVMsYUFDZCxNQUNBLFNBQ2tCO0FBQ2xCLFNBQU8sRUFBRSxNQUFNLEdBQUcsUUFBUTtBQUM1Qjs7O0FDM0dBLElBQUFDLHFCQUEwRjtBQUMxRiw4QkFBNEM7QUEwQnJDLElBQU0sbUNBQStCLHFEQUUxQztBQUFBLEVBQ0EsSUFBSTtBQUNOLENBQUMsRUFBRTtBQWVILElBQU0seUNBQXlDLENBQzdDLGFBRUEsdUNBR0c7QUFBQSxFQUNELElBQUksc0NBQXNDLElBQUk7QUFBQSxFQUM5QyxZQUFZO0FBQUEsRUFDWixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBeUJFLElBQU0sbURBQStDLHVDQUd6RDtBQUFBLEVBQ0QsSUFBSTtBQUFBLEVBQ0osYUFBYTtBQUNmLENBQUMsRUFBRSxzQ0FBc0M7OztBQ3ZGekMsSUFBQUMsMkJBQTRDO0FBNEJyQyxJQUFNLG1CQUFlLHNEQUFvRTtBQUFBLEVBQzlGLElBQUk7QUFDTixDQUFDLEVBQUU7OztBQzlCSCxJQUFBQyxxQkFBbUM7QUFnQjVCLElBQU0sc0NBQWtDLHVDQUErRDtBQUFBLEVBQzVHLElBQUk7QUFBQSxFQUNKLGFBQWE7QUFDZixDQUFDLEVBQUU7QUFlSSxJQUFNLDBDQUFzQyx1Q0FBbUU7QUFBQSxFQUNwSCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFOzs7QUNyQ0gsOEJBQThCO0FBQzlCLG1CQUEwQztBQU1uQyxJQUFNLG9DQUFnQyw0QkFBd0MsTUFBUztBQWV2RixJQUFNLHVCQUF1QixVQUNsQywyQ0FBYyx5QkFBVyw2QkFBNkIsR0FBRyx1REFBdUQ7OztBQ3ZCbEgsSUFBQUMsZ0JBQThCO0FBTXZCLElBQU0sK0JBQTJCLDZCQUF3QyxNQUFTOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZV9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmQudHMiLCAiLi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmQtaW5qZWN0aW9uLXRva2VuLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1pdGVtLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1zcGVjLnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50LnRzIiwgIi4uL3NyYy9kcm9wLWRvd24tbWVudS1jb21wb25lbnQudHMiLCAiLi4vc3JjL2Nsb3NlLWRyb3AtZG93bi1tZW51LnRzIiwgIi4uL3NyYy9jbG9zZS1kcm9wLWRvd24tbWVudS1jb250ZXh0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBnZXREcm9wRG93bk1lbnVLaW5kIH0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmRcIjtcbmV4cG9ydCB7XG4gIHR5cGUgRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uLFxuICB0eXBlIERyb3BEb3duTWVudUtpbmREZWNsYXJhdGlvbkZhY3RvcnksXG4gIHR5cGUgRHJvcERvd25NZW51S2luZEluamVjdGFibGVQYXJhbXMsXG4gIGRyb3BEb3duTWVudUtpbmRJbmplY3Rpb25Ub2tlbixcbiAgZ2V0RHJvcERvd25NZW51S2luZEluamVjdGFibGVCdW5jaCxcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWtpbmQtaW5qZWN0aW9uLXRva2VuXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudURhdGEsIERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUta2luZFwiO1xuZXhwb3J0IHtcbiAgZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLFxuICBnZXREcm9wRG93bk1lbnVJdGVtSW5qZWN0YWJsZUJ1bmNoLFxuICBnZXREcm9wRG93bk1lbnVJdGVtc0luamVjdGFibGVCdW5jaCxcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWl0ZW1cIjtcbmV4cG9ydCB0eXBlIHtcbiAgQWNxdWlyZURyb3BEb3duTWVudUl0ZW1zLFxuICBEcm9wRG93bk1lbnVJdGVtLFxuICBEcm9wRG93bk1lbnVJdGVtQnVuY2hQYXJhbXMsXG4gIERyb3BEb3duTWVudUl0ZW1GYWN0b3J5LFxuICBEcm9wRG93bk1lbnVJdGVtUHJvcHNGb3IsXG4gIERyb3BEb3duTWVudUl0ZW1zQnVuY2hQYXJhbXMsXG4gIERyb3BEb3duTWVudUl0ZW1Ub2tlbkZvcixcbiAgRHJvcERvd25NZW51SXRlbVZpc2liaWxpdHksXG59IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1pdGVtXCI7XG5leHBvcnQgeyBkcm9wRG93bk1lbnUgfSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUtc3BlY1wiO1xuZXhwb3J0IHR5cGUge1xuICBEcm9wRG93bk1lbnVHYXAsXG4gIERyb3BEb3duTWVudU9wZW5PbixcbiAgRHJvcERvd25NZW51T3B0aW9ucyxcbiAgRHJvcERvd25NZW51UG9zaXRpb24sXG4gIERyb3BEb3duTWVudVNwZWMsXG59IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1zcGVjXCI7XG5leHBvcnQge1xuICBEZWZhdWx0RHJvcERvd25NZW51Q29udGFpbmVyLFxuICBkcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnRJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWNvbnRhaW5lci1jb21wb25lbnRcIjtcbmV4cG9ydCB0eXBlIHtcbiAgRHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50LFxuICBEcm9wRG93bk1lbnVDb250YWluZXJQcm9wcyxcbiAgRHJvcERvd25NZW51Q29udGFpbmVyVG9rZW5Gb3IsXG59IGZyb20gXCIuL3NyYy9kcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50XCI7XG5leHBvcnQgeyBEcm9wRG93bk1lbnUgfSBmcm9tIFwiLi9zcmMvZHJvcC1kb3duLW1lbnUtY29tcG9uZW50XCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVByb3BzIH0gZnJvbSBcIi4vc3JjL2Ryb3AtZG93bi1tZW51LWNvbXBvbmVudFwiO1xuZXhwb3J0IHtcbiAgY2xvc2VBbGxEcm9wRG93bk1lbnVzSW5qZWN0aW9uVG9rZW4sXG4gIGNsb3NlRHJvcERvd25NZW51SW5qZWN0aW9uVG9rZW4sXG59IGZyb20gXCIuL3NyYy9jbG9zZS1kcm9wLWRvd24tbWVudVwiO1xuZXhwb3J0IHR5cGUgeyBDbG9zZUFsbERyb3BEb3duTWVudXMsIENsb3NlRHJvcERvd25NZW51IH0gZnJvbSBcIi4vc3JjL2Nsb3NlLWRyb3AtZG93bi1tZW51XCI7XG5leHBvcnQgeyBjb250ZXh0Rm9yQ2xvc2luZ0Ryb3BEb3duTWVudSwgdXNlQ2xvc2VEcm9wRG93bk1lbnUgfSBmcm9tIFwiLi9zcmMvY2xvc2UtZHJvcC1kb3duLW1lbnUtY29udGV4dFwiO1xuIiwgImltcG9ydCB7IGdldFR5cGVkU3BlY2lmaWVyLCB0eXBlIFR5cGVkU3BlY2lmaWVyLCB0eXBlIFR5cGVkU3BlY2lmaWVyVHlwZSB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogSWRlbnRpZmllcyBvbmUgZmFtaWx5IG9mIGRyb3AtZG93biBtZW51IGl0ZW1zLiBJdGVtcyBhcmUgY29udHJpYnV0ZWQgYWdhaW5zdFxuICogYSBraW5kIHZpYSBgZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLmZvcihraW5kKWAsIGFuZCBhIGhvc3QgZWxlbWVudFxuICogb3BlbnMgdGhlIG1lbnUgb2YgYSBraW5kIHdpdGggYCRkcm9wRG93bk1lbnU9e2Ryb3BEb3duTWVudShraW5kKX1gLlxuICpcbiAqIGBURGF0YWAgaXMgdGhlIGRhdGEgdGhlIGhvc3QgZWxlbWVudCBzdXBwbGllcyB3aGVuIG9wZW5pbmcgdGhlIG1lbnU7IGl0ZW1cbiAqIGZhY3RvcmllcyBvZiB0aGUga2luZCByZWNlaXZlIGl0LiBBIGtpbmQgY3JlYXRlZCB3aXRob3V0IGBURGF0YWAgbmVlZHMgbm9cbiAqIGRhdGEuXG4gKlxuICogQXQgcnVudGltZSBhIGtpbmQgaXMgYSBicmFuZGVkIHN0cmluZywgc28gaXQgaXMgdXNhYmxlIGFzIGEgYC5mb3IoKWAga2V5LlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVLaW5kPFREYXRhID0gdm9pZD4gPSBUeXBlZFNwZWNpZmllcjxzdHJpbmcsIHsgZHJvcERvd25NZW51RGF0YTogVERhdGEgfT47XG5cbi8qKlxuICogUmVjb3ZlcnMgdGhlIGRhdGEgdHlwZSBib3VuZCB0byBhIHtAbGluayBEcm9wRG93bk1lbnVLaW5kfS5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51RGF0YTxLIGV4dGVuZHMgRHJvcERvd25NZW51S2luZDxhbnk+PiA9IFR5cGVkU3BlY2lmaWVyVHlwZTxcImRyb3BEb3duTWVudURhdGFcIiwgSz47XG5cbi8qKlxuICogQ3VycmllZCBjcmVhdG9yIGZvciBhIHtAbGluayBEcm9wRG93bk1lbnVLaW5kfS4gVGhlIGZpcnN0IGNhbGwgYmluZHMgdGhlIGRhdGFcbiAqIHR5cGU7IHRoZSBzZWNvbmQgdGhlIGdsb2JhbGx5IHVuaXF1ZSBzcGVjaWZpZXIgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gQSBtZW51IHdob3NlIGl0ZW1zIG5lZWQgbm8gZGF0YTpcbiAqIGV4cG9ydCBjb25zdCBhaVRvb2xzTWVudUtpbmQgPSBnZXREcm9wRG93bk1lbnVLaW5kKCkoXCJhaS10b29scy1tZW51XCIpO1xuICpcbiAqIC8vIEEgbWVudSB3aG9zZSBpdGVtcyBkZXJpdmUgZnJvbSB0aGUgaG9zdCBlbGVtZW50J3MgZGF0YTpcbiAqIGV4cG9ydCBjb25zdCBwb2RBY3Rpb25zTWVudUtpbmQgPSBnZXREcm9wRG93bk1lbnVLaW5kPHsgcG9kTmFtZTogc3RyaW5nIH0+KCkoXCJwb2QtYWN0aW9ucy1tZW51XCIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREcm9wRG93bk1lbnVLaW5kID1cbiAgPFREYXRhID0gdm9pZD4oKSA9PlxuICA8UyBleHRlbmRzIHN0cmluZz4oc3BlY2lmaWVyOiBTKSA9PlxuICAgIGdldFR5cGVkU3BlY2lmaWVyPHsgZHJvcERvd25NZW51RGF0YTogVERhdGEgfT4oKShzcGVjaWZpZXIpO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyLCBnZXRJbmplY3RhYmxlQnVuY2gsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5cbi8qKlxuICogT25lIGRyb3AtZG93biBtZW51IHRoYXQgZXhpc3RzLCBhbm5vdW5jZWQgc28gaXQgY2FuIGJlIGRpc2NvdmVyZWQgcmF0aGVyXG4gKiB0aGFuIGZvdW5kIGJ5IHJlYWRpbmcgdGhlIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wRG93bk1lbnVLaW5kRGVjbGFyYXRpb24ge1xuICAvKiogVGhlIGtpbmQgaXRzZWxmLCBhcyBgZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLmZvcihraW5kKWAgdGFrZXMgaXQuICovXG4gIHJlYWRvbmx5IGtpbmQ6IERyb3BEb3duTWVudUtpbmQ8YW55PjtcbiAgLyoqIE9uZSBsaW5lIG9uIHdoYXQgdGhlIG1lbnUgaXMsIGZvciBhIHJlYWRlciBkZWNpZGluZyB3aGV0aGVyIHRvIGNvbnRyaWJ1dGUuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKiBQcm9kdWNlcyBvbmUgZGVjbGFyYXRpb24sIHBvc3NpYmx5IGxhdGVyLiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uRmFjdG9yeSA9ICgpID0+IERyb3BEb3duTWVudUtpbmREZWNsYXJhdGlvbjtcblxuLyoqXG4gKiBFdmVyeSBkcm9wLWRvd24gbWVudSBraW5kIHRoZSBydW5uaW5nIGJ1aWxkIGtub3dzIGFib3V0LlxuICpcbiAqIEluamVjdGluZyBtYW55IG9mIHRoZXNlIGlzIGhvdyBhIHN1cmZhY2UgZW51bWVyYXRlcyB0aGUgbWVudXMgdGhhdCBleGlzdCBcdTIwMTRcbiAqIHRoZSBleHRlbnNpb24tZGV2ZWxvcG1lbnQgaW5zdHJ1Y3Rpb25zIHJlbmRlciB0aGVpciBsaXN0IGZyb20gaXQsIHNvIGEgbmV3XG4gKiBtZW51IGJlY29tZXMgZG9jdW1lbnRlZCBieSByZWdpc3RlcmluZyBoZXJlIHJhdGhlciB0aGFuIGJ5IHNvbWVvbmVcbiAqIHJlbWVtYmVyaW5nIHRvIGVkaXQgcHJvc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBkcm9wRG93bk1lbnVLaW5kSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8e1xuICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVLaW5kRGVjbGFyYXRpb25GYWN0b3J5O1xufT4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudS1raW5kXCIsXG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3ItbWFueVwiLFxufSkoKTtcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wRG93bk1lbnVLaW5kSW5qZWN0YWJsZVBhcmFtcyB7XG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoZSByZWdpc3RlcmVkIGluamVjdGFibGUuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUga2luZCBiZWluZyBhbm5vdW5jZWQuICovXG4gIHJlYWRvbmx5IGtpbmQ6IERyb3BEb3duTWVudUtpbmQ8YW55PjtcbiAgLyoqIE9uZSBsaW5lIG9uIHdoYXQgdGhlIG1lbnUgaXMuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW5ub3VuY2UgYSBkcm9wLWRvd24gbWVudSBraW5kLCBzbyBhbnl0aGluZyBlbnVtZXJhdGluZyB0aGUgbWVudXMgZmluZHMgaXQuXG4gKlxuICogUmVnaXN0ZXIgdGhpcyB3aGVyZXZlciB0aGUgbWVudSdzIG93biBzdXJmYWNlIGlzIHJlZ2lzdGVyZWQgXHUyMDE0IGEgY29udHJhY3RzXG4gKiBwYWNrYWdlIGV4cG9ydHMgdGhlIGtpbmQsIGJ1dCBub3QgdGhlIHJlZ2lzdHJhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGV4cG9ydCBkZWZhdWx0IGdldERyb3BEb3duTWVudUtpbmRJbmplY3RhYmxlQnVuY2goe1xuICogICBpZDogXCJhaS10b29sLXRvcC1iYXItbWVudS1raW5kXCIsXG4gKiAgIGtpbmQ6IGFpVG9vbFRvcEJhck1lbnVLaW5kLFxuICogICBkZXNjcmlwdGlvbjogXCJUaGUgbWVudSBvZiB0aGUgQUkgdG9vbCBidXR0b24gaW4gdGhlIHRvcCBiYXIuXCIsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZ2V0RHJvcERvd25NZW51S2luZEluamVjdGFibGVCdW5jaCA9IChwYXJhbXM6IERyb3BEb3duTWVudUtpbmRJbmplY3RhYmxlUGFyYW1zKSA9PlxuICBnZXRJbmplY3RhYmxlQnVuY2goe1xuICAgIGRyb3BEb3duTWVudUtpbmQ6IGdldEluamVjdGFibGUyKHtcbiAgICAgIGlkOiBwYXJhbXMuaWQsXG5cbiAgICAgIGluc3RhbnRpYXRlOiAoKSA9PiAoKTogRHJvcERvd25NZW51S2luZERlY2xhcmF0aW9uID0+ICh7XG4gICAgICAgIGtpbmQ6IHBhcmFtcy5raW5kLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGFyYW1zLmRlc2NyaXB0aW9uLFxuICAgICAgfSksXG5cbiAgICAgIGluamVjdGlvblRva2VuOiBkcm9wRG93bk1lbnVLaW5kSW5qZWN0aW9uVG9rZW4sXG4gICAgfSksXG4gIH0pO1xuIiwgImltcG9ydCB7XG4gIGdldEluamVjdGFibGUyLFxuICBnZXRJbmplY3RhYmxlQnVuY2gsXG4gIGdldEluamVjdGlvblRva2VuMixcbiAgdHlwZSBDb25zdW1wdGlvbixcbiAgdHlwZSBDb25zdW1wdGlvbkRpLFxuICB0eXBlIE1hbnlGYWN0b3J5LFxuICB0eXBlIE5vbkVtcHR5TWFueUZhY3RvcnksXG4gIHR5cGUgU3BlY2lmaWNJbmplY3Rpb25Ub2tlbjIsXG59IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIElkZW50aWZpYWJsZSxcbiAgTWF5YmVDb21wdXRlZCxcbiAgTWF5YmVDb21wdXRlZFNob3dhYmxlLFxuICBPcmRlcmFibGUsXG59IGZyb20gXCJAazhzbGVucy9jb21wb3NhYmxlLXJlc3BvbnNpYmlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgTWF5YmVQcm9taXNlLCBTaW5nbGVPck1hbnkgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudURhdGEsIERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5cbi8qKlxuICogV2hhdCBhbiBpdGVtJ3MgY29tcG9uZW50IG5lZWRzIGJleW9uZCB0aGUgbWVudSdzIGRhdGEuIFByb3ZpZGluZyBpdCBpcyBtYW5kYXRvcnkgd2hlbiB0aGVcbiAqIGNvbXBvbmVudCByZXF1aXJlcyBwcm9wcywgYW5kIG9wdGlvbmFsIHdoZW4gYWxsIG9mIHRoZW0gYXJlIG9wdGlvbmFsLlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVJdGVtUHJvcHNGb3I8VFByb3BzIGV4dGVuZHMgb2JqZWN0PiA9IHt9IGV4dGVuZHMgVFByb3BzXG4gID8geyByZWFkb25seSBjb21wb25lbnRQcm9wcz86IFRQcm9wcyB9XG4gIDogeyByZWFkb25seSBjb21wb25lbnRQcm9wczogVFByb3BzIH07XG5cbi8qKlxuICogT25lIGl0ZW0gb2YgYSBkcm9wLWRvd24gbWVudTogYSBjb21wb25lbnQsIHdoZXJlIGl0IHNpdHMgYW1vbmcgdGhlIG90aGVycywgYW5kIHdoZXRoZXIgaXQgaXNcbiAqIHNob3duIGF0IGFsbC4gV2hhdCB0aGUgaXRlbSBsb29rcyBsaWtlIGFuZCB3aGF0IGl0IGRvZXMgYXJlIGl0cyBvd24gYnVzaW5lc3MgXHUyMDE0IGEgbWVudSBuZWl0aGVyXG4gKiBkcmF3cyBpdCBub3IgZGVjaWRlcyBhbnl0aGluZyBhYm91dCBpdC5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGlzIGdpdmVuIHRoZSBkYXRhIHRoZSBob3N0IGVsZW1lbnQgb3BlbmVkIHRoZSBtZW51IHdpdGgsIGFuZCBtdXN0IGJlIGRlZmluZWQgYXRcbiAqIG1vZHVsZSBzY29wZTsgY2FwdHVyaW5nIGRhdGEgaW4gYSBjbG9zdXJlIHdvdWxkIGNyZWF0ZSBhIG5ldyBjb21wb25lbnQgcmVmZXJlbmNlIG9uIGV2ZXJ5XG4gKiBpbnZvY2F0aW9uIGFuZCBicmVhayBSZWFjdCByZWNvbmNpbGlhdGlvbi4gV2hhdGV2ZXIgdGhlIGNvbXBvbmVudCBuZWVkcyBvbiB0b3Agb2YgdGhlIG1lbnUnc1xuICogZGF0YSB0cmF2ZWxzIGFzIGBjb21wb25lbnRQcm9wc2AgaW5zdGVhZCBcdTIwMTQgd2hpY2ggaXMgd2hhdCBsZXRzIG9uZSBjb250cmlidXRpb24gYW5zd2VyIHdpdGggYVxuICogcm93IHBlciBjb250YWluZXIsIHBlciBjb2x1bW4gb3IgcGVyIGFjdGlvbiB3aGlsZSBldmVyeSByb3cgc2hhcmVzIHRoZSBvbmUgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVJdGVtPFREYXRhID0gdm9pZCwgVFByb3BzIGV4dGVuZHMgb2JqZWN0ID0ge30+ID0gSWRlbnRpZmlhYmxlICZcbiAgT3JkZXJhYmxlICZcbiAgTWF5YmVDb21wdXRlZFNob3dhYmxlICYge1xuICAgIHJlYWRvbmx5IENvbXBvbmVudDogUmVhY3QuQ29tcG9uZW50VHlwZTx7IHJlYWRvbmx5IGRhdGE6IFREYXRhIH0gJiBUUHJvcHM+O1xuICB9ICYgRHJvcERvd25NZW51SXRlbVByb3BzRm9yPFRQcm9wcz47XG5cbi8qKlxuICogQWNxdWlyZXMgdGhlIGl0ZW1zIG9uZSBjb250cmlidXRvciBoYXMgZm9yIGEgZ2l2ZW4gbWVudSBpbnB1dCBcdTIwMTQgdGhlIGRhdGEgdGhlIGhvc3QgZWxlbWVudCBvcGVuZWRcbiAqIHRoZSBtZW51IG9mIHRoaXMga2luZCB3aXRoLCB0eXBlZCBieSB0aGUga2luZC5cbiAqXG4gKiBBIGNvbnRyaWJ1dG9yIGlzIGZyZWUgdG8gYW5zd2VyIHdpdGggb25lIGl0ZW0sIHNldmVyYWwsIG9yIG5vbmUsIHRvIGFuc3dlciBsYXRlciwgYW5kIHRvIGFuc3dlclxuICogd2l0aCBhIGNvbXB1dGVkIHRoZSBtZW51IHJlLXJlYWRzIHdoaWxlIGl0IGlzIG9wZW4uIFRoYXQgaXMgd2hhdCBtYWtlcyBhIGNvbnRyaWJ1dGlvbiBhYmxlIHRvXG4gKiAqYWNxdWlyZSogaXRzIGl0ZW1zIGZyb20gdGhlIGlucHV0IHJhdGhlciB0aGFuIG1lcmVseSBiZSBvbmU6IHRoZSBjb250YWluZXJzIG9mIGEgcG9kLCB0aGVcbiAqIGNvbHVtbnMgb2YgYSB0YWJsZSwgdGhlIGFjdGlvbnMgb2Ygd2hhdGV2ZXIgb2JqZWN0IHRoZSBtZW51IHdhcyBvcGVuZWQgb3Zlci5cbiAqL1xuZXhwb3J0IHR5cGUgQWNxdWlyZURyb3BEb3duTWVudUl0ZW1zPFREYXRhID0gYW55PiA9IChcbiAgaW5wdXQ6IFREYXRhLFxuKSA9PiBNYXliZVByb21pc2U8TWF5YmVDb21wdXRlZDxTaW5nbGVPck1hbnk8RHJvcERvd25NZW51SXRlbTxURGF0YSwgYW55Pj4+PjtcblxuLyoqXG4gKiBXaGF0IGEgY29udHJpYnV0aW9uIHJlZ2lzdGVyczogYnVpbHQgb25jZSwgYW5kIHRoZW4gYXNrZWQgZm9yIHRoZSBpdGVtcyBvZiBldmVyeSBtZW51IG9mIGl0cyBraW5kXG4gKiB0aGF0IG9wZW5zLlxuICpcbiAqIFRoZSBpbnB1dCBiZWxvbmdzIHRvIHRoZSBtZW51IHJhdGhlciB0aGFuIHRvIHRoZSBjb250cmlidXRpb24sIHdoaWNoIGlzIHdoeSBpdCBhcnJpdmVzIGF0XG4gKiB7QGxpbmsgQWNxdWlyZURyb3BEb3duTWVudUl0ZW1zfSBpbnN0ZWFkIG9mIGhlcmUuIEEgY29udHJpYnV0aW9uIHRha2luZyBpdCBkaXJlY3RseSB3b3VsZCBiZVxuICogcmVidWlsdCBmb3IgZXZlcnkgbWVudSB0aGF0IG9wZW5zLCBzaW5jZSB0aGUgY29udGFpbmVyIGtleXMgYSBjb250cmlidXRpb24ncyBpbnN0YW5jZSBieSB0aGVcbiAqIGFyZ3VtZW50cyBpdCBpcyByZXNvbHZlZCB3aXRoIFx1MjAxNCBhbmQgYSBob3N0IHRoYXQgYnVpbGRzIGl0cyBgZGF0YWAgaW5saW5lIGhhbmRzIG92ZXIgYSBuZXcgb2JqZWN0XG4gKiBldmVyeSB0aW1lLlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxURGF0YSA9IGFueT4gPSAoKSA9PiBBY3F1aXJlRHJvcERvd25NZW51SXRlbXM8VERhdGE+O1xuXG4vKipcbiAqIFdoZXRoZXIgYW4gaXRlbSBpcyBzaG93biBhdCBhbGwuIEdpdmVuIGFzIGEgdmFsdWUgb3IgYSBjb21wdXRlZCB0aGUgbWVudSByZWFjdHMgdG8sIG9yIGFzIGFcbiAqIGZ1bmN0aW9uIG9mIHRoZSBtZW51J3MgaW5wdXQgXHUyMDE0IHdoaWNoIGlzIGhvdyBhbiBpdGVtIHNob3duIG9ubHkgZm9yIHNvbWUgb2YgdGhlIHRoaW5ncyBpdHMga2luZFxuICogb2YgbWVudSBvcGVucyBvdmVyIHNheXMgc28uXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudUl0ZW1WaXNpYmlsaXR5PFREYXRhPiA9IE1heWJlQ29tcHV0ZWQ8Ym9vbGVhbj4gfCAoKGlucHV0OiBURGF0YSkgPT4gTWF5YmVDb21wdXRlZDxib29sZWFuPik7XG5cbi8qKlxuICogVGhlIHNwZWNpZmljIHRva2VuIGAuZm9yKGtpbmQpYCB5aWVsZHM6IHRoZSBpdGVtcyBjb250cmlidXRlZCB0byBvbmUgbWVudSBraW5kLiBBdCBsZWFzdCBvbmUgb2ZcbiAqIHRoZW0sIHNvIHRoYXQgYSBraW5kIG5vYm9keSBjb250cmlidXRlcyB0byBpcyBhIGNvbXBvc2l0aW9uIGVycm9yIHJhdGhlciB0aGFuIGEgbWVudSB0aGF0IG5ldmVyXG4gKiBvcGVucy5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51SXRlbVRva2VuRm9yPFREYXRhPiA9IFNwZWNpZmljSW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRHJvcERvd25NZW51SXRlbUZhY3Rvcnk8VERhdGE+O1xuICBtYW55RmFjdG9yeTogTm9uRW1wdHlNYW55RmFjdG9yeTxEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxURGF0YT4+O1xuICBzcGVjaWZpY1Rva2VuRmFjdG9yeTogdW5kZWZpbmVkO1xuICBjYXJkaW5hbGl0eTogXCJvbmUtb3ItbWFueVwiO1xufT47XG5cbi8qKlxuICogVGhlIGAuZm9yKClgIGZhY3RvcnksIGFubm90YXRlZCBzbyBhIGtpbmQncyBvd24gZGF0YSB0eXBlIHN1cnZpdmVzIGludG8gdGhlIHNwZWNpZmljIHRva2VuLiBUaGVcbiAqIGFubm90YXRpb24gY2FycmllcyB3aGF0IHRoZSByZXRpcmVkIHRoaXJkIHR5cGUgcGFyYW1ldGVyIHVzZWQgdG86IGluZmVyZW5jZSBmcm9tIHRoZSB2YWx1ZSBhbG9uZVxuICogY2Fubm90IHJlY29uc3RydWN0IGEgcmV0dXJuIHR5cGUgdGhhdCBtZW50aW9ucyB0aGUgc3BlY2lmaWVyJ3Mgb3duIHR5cGUgcGFyYW1ldGVyLlxuICovXG5jb25zdCBkcm9wRG93bk1lbnVJdGVtVG9rZW5Gb3IgPSA8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4oXG4gIGtpbmQ6IEssXG4pOiBEcm9wRG93bk1lbnVJdGVtVG9rZW5Gb3I8RHJvcERvd25NZW51RGF0YTxLPj4gPT5cbiAgZ2V0SW5qZWN0aW9uVG9rZW4yPHtcbiAgICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxEcm9wRG93bk1lbnVEYXRhPEs+PjtcbiAgICBtYW55RmFjdG9yeTogTm9uRW1wdHlNYW55RmFjdG9yeTxEcm9wRG93bk1lbnVJdGVtRmFjdG9yeTxEcm9wRG93bk1lbnVEYXRhPEs+Pj47XG4gIH0+KHtcbiAgICBpZDogYGRyb3AtZG93bi1tZW51LWl0ZW0tJHtraW5kfWAsXG4gICAgc3BlY2lhbGl0eToga2luZCxcbiAgICBjYXJkaW5hbGl0eTogXCJvbmUtb3ItbWFueVwiLFxuICB9KSgpO1xuXG4vKipcbiAqIFRoZSBjb250cmlidXRpb24gc3VyZmFjZSBvZiBkcm9wLWRvd24gbWVudXM6IGVhY2ggY29udHJpYnV0aW9uIGFuc3dlcnMgd2l0aCB0aGUgaXRlbXMgaXQgaGFzIGZvclxuICogdGhlIG1lbnUncyBpbnB1dCwgcmVnaXN0ZXJlZCBhZ2FpbnN0IGEge0BsaW5rIERyb3BEb3duTWVudUtpbmR9IHZpYSBgLmZvcihraW5kKWAuIFByZWZlclxuICoge0BsaW5rIGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2h9IGZvciBhIHNpbmdsZSBpdGVtLCBhbmRcbiAqIHtAbGluayBnZXREcm9wRG93bk1lbnVJdGVtc0luamVjdGFibGVCdW5jaH0gZm9yIGl0ZW1zIGFjcXVpcmVkIGZyb20gdGhlIGlucHV0LCBvdmVyIHJlZ2lzdGVyaW5nXG4gKiBieSBoYW5kLlxuICovXG5leHBvcnQgY29uc3QgZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRHJvcERvd25NZW51SXRlbUZhY3Rvcnk8YW55PjtcbiAgbWFueUZhY3Rvcnk6IE1hbnlGYWN0b3J5PERyb3BEb3duTWVudUl0ZW1GYWN0b3J5PGFueT4+O1xufT4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudS1pdGVtXCIsXG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3ItbWFueVwiLFxufSkoZHJvcERvd25NZW51SXRlbVRva2VuRm9yKTtcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wRG93bk1lbnVJdGVtQnVuY2hQYXJhbXM8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4ge1xuICAvKiogVW5pcXVlIGlkIGZvciB0aGUgcmVnaXN0ZXJlZCBpbmplY3RhYmxlOyBkb3VibGVzIGFzIHRoZSBpdGVtJ3MgaWQuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgbWVudSBraW5kIHRoZSBpdGVtIGJlbG9uZ3MgdG8uICovXG4gIHJlYWRvbmx5IGtpbmQ6IEs7XG4gIC8qKiBMb3dlciBjb21lcyBmaXJzdCBhbW9uZyB0aGUga2luZCdzIGl0ZW1zLiAqL1xuICByZWFkb25seSBvcmRlck51bWJlcjogbnVtYmVyO1xuICAvKiogV2hldGhlciB0aGUgaXRlbSBpcyBzaG93biBhdCBhbGw7IHRoZSBtZW51IHJlYWN0cyB0byB0aGlzIHdoaWxlIG9wZW4uICovXG4gIHJlYWRvbmx5IGlzVmlzaWJsZT86IERyb3BEb3duTWVudUl0ZW1WaXNpYmlsaXR5PERyb3BEb3duTWVudURhdGE8Sz4+O1xuICAvKiogUmVuZGVycyB0aGUgaXRlbS4gUmVjZWl2ZXMgdGhlIGRhdGEgdGhlIG1lbnUgd2FzIG9wZW5lZCB3aXRoLiAqL1xuICByZWFkb25seSBDb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8eyByZWFkb25seSBkYXRhOiBEcm9wRG93bk1lbnVEYXRhPEs+IH0+O1xufVxuXG4vKipcbiAqIENvbnRyaWJ1dGUgb25lIGl0ZW0gdG8gYSBkcm9wLWRvd24gbWVudSBraW5kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IFJlc3RhcnRQb2QgPSAoeyBkYXRhIH06IHsgZGF0YTogeyBwb2ROYW1lOiBzdHJpbmcgfSB9KSA9PiAoXG4gKiAgIDxDbGlja2FibGVMaSAkb25DbGljaz17KCkgPT4gcmVzdGFydChkYXRhLnBvZE5hbWUpfT5SZXN0YXJ0IHtkYXRhLnBvZE5hbWV9PC9DbGlja2FibGVMaT5cbiAqICk7XG4gKlxuICogZXhwb3J0IGNvbnN0IHJlc3RhcnRQb2RCdW5jaCA9IGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2goe1xuICogICBpZDogXCJyZXN0YXJ0LXBvZFwiLFxuICogICBraW5kOiBwb2RBY3Rpb25zTWVudUtpbmQsXG4gKiAgIG9yZGVyTnVtYmVyOiAxMCxcbiAqICAgaXNWaXNpYmxlOiBjb21wdXRlZCgoKSA9PiBjYW5SZXN0YXJ0LmdldCgpKSxcbiAqICAgQ29tcG9uZW50OiBSZXN0YXJ0UG9kLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbiBpdGVtIHNob3duIG9ubHkgZm9yIHNvbWUgb2YgdGhlIHRoaW5ncyB0aGUgbWVudSBvcGVucyBvdmVyOlxuICogYGBgdHN4XG4gKiBleHBvcnQgY29uc3QgY29ubmVjdENsdXN0ZXJCdW5jaCA9IGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2goe1xuICogICBpZDogXCJjb25uZWN0LWNsdXN0ZXJcIixcbiAqICAga2luZDogbmF2aWdhdG9ySXRlbURyb3BEb3duTWVudUtpbmQsXG4gKiAgIG9yZGVyTnVtYmVyOiAxMCxcbiAqICAgaXNWaXNpYmxlOiAoaXRlbSkgPT4gaXRlbS5raW5kID09PSBrdWJlcm5ldGVzQ2x1c3RlckNvbnRleHRLaW5kLFxuICogICBDb21wb25lbnQ6IENvbm5lY3RDbHVzdGVyLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERyb3BEb3duTWVudUl0ZW1JbmplY3RhYmxlQnVuY2ggPSA8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4oXG4gIHBhcmFtczogRHJvcERvd25NZW51SXRlbUJ1bmNoUGFyYW1zPEs+LFxuKSA9PlxuICBnZXRJbmplY3RhYmxlQnVuY2goe1xuICAgIGRyb3BEb3duTWVudUl0ZW06IGdldEluamVjdGFibGUyKHtcbiAgICAgIGlkOiBwYXJhbXMuaWQsXG5cbiAgICAgIGluc3RhbnRpYXRlOlxuICAgICAgICAoKSA9PlxuICAgICAgICAoKSA9PlxuICAgICAgICAoaW5wdXQ6IERyb3BEb3duTWVudURhdGE8Sz4pOiBEcm9wRG93bk1lbnVJdGVtPERyb3BEb3duTWVudURhdGE8Sz4+ID0+ICh7XG4gICAgICAgICAgaWQ6IHBhcmFtcy5pZCxcbiAgICAgICAgICBvcmRlck51bWJlcjogcGFyYW1zLm9yZGVyTnVtYmVyLFxuICAgICAgICAgIGlzVmlzaWJsZTogdHlwZW9mIHBhcmFtcy5pc1Zpc2libGUgPT09IFwiZnVuY3Rpb25cIiA/IHBhcmFtcy5pc1Zpc2libGUoaW5wdXQpIDogcGFyYW1zLmlzVmlzaWJsZSxcbiAgICAgICAgICBDb21wb25lbnQ6IHBhcmFtcy5Db21wb25lbnQsXG4gICAgICAgIH0pLFxuXG4gICAgICBpbmplY3Rpb25Ub2tlbjogZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLmZvcihwYXJhbXMua2luZCksXG4gICAgfSksXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BEb3duTWVudUl0ZW1zQnVuY2hQYXJhbXM8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55PiwgQ29ucyBleHRlbmRzIENvbnN1bXB0aW9uPiB7XG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoZSByZWdpc3RlcmVkIGluamVjdGFibGUuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgbWVudSBraW5kIHRoZSBpdGVtcyBiZWxvbmcgdG8uICovXG4gIHJlYWRvbmx5IGtpbmQ6IEs7XG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGZ1bmN0aW9uIHRoYXQgYWNxdWlyZXMgdGhlIGl0ZW1zIHRoaXMgY29udHJpYnV0aW9uIGhhcyBmb3IgdGhlIG1lbnUncyBpbnB1dC4gQ2FsbGVkXG4gICAqIG9uY2U7IHdoYXRldmVyIGl0IGluamVjdHMgYW5kIHByZXBhcmVzIGlzIHRoZXJlZm9yZSBzaGFyZWQgYnkgZXZlcnkgbWVudSBvZiB0aGUga2luZCB0aGF0XG4gICAqIG9wZW5zLiBFYWNoIGl0ZW0gYnJpbmdzIGl0cyBvd24gaWQsIG9yZGVyIG51bWJlciBhbmQgdmlzaWJpbGl0eSwgc28gdGhlIGl0ZW1zIGxhbmQgYW1vbmcgdGhlXG4gICAqIGtpbmQncyBvdGhlciBjb250cmlidXRpb25zIHJhdGhlciB0aGFuIGFzIGEgYmxvY2sgb2YgdGhlaXIgb3duLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFudGlhdGU6IChkaTogQ29uc3VtcHRpb25EaTxDb25zPikgPT4gQWNxdWlyZURyb3BEb3duTWVudUl0ZW1zPERyb3BEb3duTWVudURhdGE8Sz4+O1xuICAvKiogVGhlIGluamVjdGlvbiB0b2tlbnMgYGluc3RhbnRpYXRlYCBtYXkgaW5qZWN0LiAqL1xuICByZWFkb25seSBjb25zdW1wdGlvbnM/OiBSZWFkb25seUFycmF5PENvbnM+O1xufVxuXG4vKipcbiAqIENvbnRyaWJ1dGUgdGhlIGl0ZW1zIGEgbWVudSBoYXMgZm9yIGl0cyBpbnB1dCwgd2hlbiBob3cgbWFueSB0aGVyZSBhcmUgaXMgdXAgdG8gdGhlIGlucHV0IHJhdGhlclxuICogdGhhbiBrbm93biBpbiBhZHZhbmNlIFx1MjAxNCBvbmUgcm93IHBlciBjb250YWluZXIgb2YgYSBwb2QsIHBlciBjb2x1bW4gb2YgYSB0YWJsZSwgcGVyIGFjdGlvbiBzb21lXG4gKiBvdGhlciByZWdpc3RyeSBob2xkcy5cbiAqXG4gKiBUaGUgaXRlbXMgbWF5IGFycml2ZSBsYXRlciBhbmQgbWF5IGJlIGEgY29tcHV0ZWQgdGhlIG1lbnUgcmUtcmVhZHMgd2hpbGUgaXQgaXMgb3Blbi4gVGhleSBhcmVcbiAqIG9yZGluYXJ5IGl0ZW1zIG9mIHRoZSBraW5kLCBzbyBhbnl0aGluZyBjb250cmlidXRlZCB3aXRoXG4gKiB7QGxpbmsgZ2V0RHJvcERvd25NZW51SXRlbUluamVjdGFibGVCdW5jaH0gYXBwZWFycyBhbW9uZyB0aGVtIGJ5IG9yZGVyIG51bWJlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBTaGVsbFRvQ29udGFpbmVyID0gKHsgZGF0YSwgY29udGFpbmVyIH06IHsgZGF0YTogUG9kOyBjb250YWluZXI6IHN0cmluZyB9KSA9PiAoXG4gKiAgIDxEcm9wRG93bk1lbnVBY3Rpb24gJG9uQ2xpY2s9eygpID0+IG9wZW5TaGVsbChkYXRhLCBjb250YWluZXIpfT57Y29udGFpbmVyfTwvRHJvcERvd25NZW51QWN0aW9uPlxuICogKTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBnZXREcm9wRG93bk1lbnVJdGVtc0luamVjdGFibGVCdW5jaCh7XG4gKiAgIGlkOiBcInBvZC1jb250YWluZXItc2hlbGxzXCIsXG4gKiAgIGtpbmQ6IHBvZEFjdGlvbnNNZW51S2luZCxcbiAqICAgY29uc3VtcHRpb25zOiBbb3BlblNoZWxsSW5qZWN0aW9uVG9rZW5dLFxuICogICBpbnN0YW50aWF0ZTogKCkgPT4gKHBvZCkgPT5cbiAqICAgICBjb21wdXRlZCgoKSA9PlxuICogICAgICAgY29udGFpbmVyc09mKHBvZCkubWFwKChjb250YWluZXIsIGluZGV4KSA9PiAoe1xuICogICAgICAgICBpZDogYHNoZWxsLXRvLSR7Y29udGFpbmVyfWAsXG4gKiAgICAgICAgIG9yZGVyTnVtYmVyOiBwb2RBY3Rpb25zTWVudU9yZGVyTnVtYmVycy5zaGVsbHMgKyBpbmRleCxcbiAqICAgICAgICAgQ29tcG9uZW50OiBTaGVsbFRvQ29udGFpbmVyLFxuICogICAgICAgICBjb21wb25lbnRQcm9wczogeyBjb250YWluZXIgfSxcbiAqICAgICAgIH0pKSxcbiAqICAgICApLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERyb3BEb3duTWVudUl0ZW1zSW5qZWN0YWJsZUJ1bmNoID0gPFxuICBLIGV4dGVuZHMgRHJvcERvd25NZW51S2luZDxhbnk+LFxuICBjb25zdCBDb25zIGV4dGVuZHMgQ29uc3VtcHRpb24gPSBuZXZlcixcbj4oXG4gIHBhcmFtczogRHJvcERvd25NZW51SXRlbXNCdW5jaFBhcmFtczxLLCBDb25zPixcbikgPT5cbiAgZ2V0SW5qZWN0YWJsZUJ1bmNoKHtcbiAgICBkcm9wRG93bk1lbnVJdGVtczogZ2V0SW5qZWN0YWJsZTIoe1xuICAgICAgaWQ6IHBhcmFtcy5pZCxcbiAgICAgIGNvbnN1bXB0aW9uczogcGFyYW1zLmNvbnN1bXB0aW9ucyxcblxuICAgICAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgICAgICBjb25zdCBhY3F1aXJlSXRlbXMgPSBwYXJhbXMuaW5zdGFudGlhdGUoZGkpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiBhY3F1aXJlSXRlbXM7XG4gICAgICB9LFxuXG4gICAgICBpbmplY3Rpb25Ub2tlbjogZHJvcERvd25NZW51SXRlbUluamVjdGlvblRva2VuLmZvcihwYXJhbXMua2luZCksXG4gICAgfSksXG4gIH0pO1xuIiwgImltcG9ydCB0eXBlIHsgRHJvcERvd25NZW51RGF0YSwgRHJvcERvd25NZW51S2luZCB9IGZyb20gXCIuL2Ryb3AtZG93bi1tZW51LWtpbmRcIjtcblxuLyoqXG4gKiBIb3cgdGhlIG1lbnUgb3BlbnMgZnJvbSBpdHMgaG9zdCBlbGVtZW50LlxuICpcbiAqIC0gYFwiY2xpY2tcImAgKHRoZSBkZWZhdWx0KTogY2xpY2tpbmcgdGhlIGVsZW1lbnQgdG9nZ2xlcyB0aGUgbWVudS5cbiAqIC0gYFwiaG92ZXJcImA6IHRoZSBtZW51IG9wZW5zIHdoaWxlIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIGVsZW1lbnQgb3IgdGhlIG1lbnUuXG4gKiAtIGBcInJpZ2h0LWNsaWNrXCJgOiByaWdodC1jbGlja2luZyB0aGUgZWxlbWVudCB0b2dnbGVzIHRoZSBtZW51LCBhdCB0aGUgY3Vyc29yIHJhdGhlciB0aGFuIGF0IHRoZVxuICogICBlbGVtZW50IFx1MjAxNCBhIGNvbnRleHQgbWVudSBpcyBhIGRyb3AtZG93biBtZW51IG9wZW5lZCB0aGlzIHdheS5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51T3Blbk9uID0gXCJjbGlja1wiIHwgXCJob3ZlclwiIHwgXCJyaWdodC1jbGlja1wiO1xuXG4vKipcbiAqIFdoZXJlIHRoZSBtZW51IHNpdHMgcmVsYXRpdmUgdG8gaXRzIGhvc3QgZWxlbWVudDogYSBzaWRlIG9mIHRoZSBob3N0LCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBtZW51IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBtZW51IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmAgYWxpZ25zXG4gKiB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgbWVudSBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIERlZmF1bHRzIHRvIGBcImJvdHRvbSBzcGFuLXJpZ2h0XCJgLiBXaGVuIHRoZSBtZW51IHdvdWxkIG5vdCBmaXQgdGhlIHZpZXdwb3J0LCBpdCBmYWxscyBiYWNrIHRvIHRoZVxuICogbWlycm9yZWQgcG9zaXRpb25zLlxuICpcbiAqIE5vdGU6IGtlcHQgaWRlbnRpY2FsIHRvIGBBbmNob3JQb3NpdGlvbmAgb2YgYEBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50c2AsIHdoaWNoIGNhbm5vdCBiZVxuICogaW1wb3J0ZWQgaGVyZSBcdTIwMTQgaXQgZGVwZW5kcyBvbiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVBvc2l0aW9uID1cbiAgfCBcInRvcFwiXG4gIHwgXCJib3R0b21cIlxuICB8IFwibGVmdFwiXG4gIHwgXCJyaWdodFwiXG4gIHwgXCJ0b3Agc3Bhbi1sZWZ0XCJcbiAgfCBcInRvcCBzcGFuLXJpZ2h0XCJcbiAgfCBcImJvdHRvbSBzcGFuLWxlZnRcIlxuICB8IFwiYm90dG9tIHNwYW4tcmlnaHRcIlxuICB8IFwibGVmdCBzcGFuLXRvcFwiXG4gIHwgXCJsZWZ0IHNwYW4tYm90dG9tXCJcbiAgfCBcInJpZ2h0IHNwYW4tdG9wXCJcbiAgfCBcInJpZ2h0IHNwYW4tYm90dG9tXCI7XG5cbi8qKlxuICogSG93IGZhciBmcm9tIGl0cyBob3N0IHRoZSBtZW51IHNpdHMsIG9uIHRoZSBzaGFyZWQgdC1zaGlydCBzY2FsZS4gRGVmYXVsdHMgdG8gYFwieHNcImAuXG4gKlxuICogTm90ZToga2VwdCBpZGVudGljYWwgdG8gYFRTaGlydFNpemVgIG9mIGBAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudHNgLCB3aGljaCBjYW5ub3QgYmUgaW1wb3J0ZWRcbiAqIGhlcmUgXHUyMDE0IGl0IGRlcGVuZHMgb24gdGhpcyBwYWNrYWdlLlxuICovXG5leHBvcnQgdHlwZSBEcm9wRG93bk1lbnVHYXAgPVxuICB8IFwiemVyb1wiXG4gIHwgXCI0eHNcIlxuICB8IFwiM3hzXCJcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IFwiM3hsXCJcbiAgfCBcIjR4bFwiXG4gIHwgXCI1eGxcIlxuICB8IFwiNnhsXCJcbiAgfCBcIjd4bFwiXG4gIHwgXCI4eGxcIlxuICB8IFwiOXhsXCJcbiAgfCBcIjEweGxcIlxuICB8IFwiMTF4bFwiO1xuXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYCRkcm9wRG93bk1lbnVgIGVsZW1lbnQgcHJvcDogd2hpY2ggbWVudSBraW5kIHRvIG9wZW4sIHRoZSBkYXRhIGl0cyBpdGVtXG4gKiBmYWN0b3JpZXMgcmVjZWl2ZSwgaG93IHRoZSBtZW51IG9wZW5zIGFuZCB3aGVyZSBpdCBzaXRzLiBDcmVhdGUgd2l0aCB7QGxpbmsgZHJvcERvd25NZW51fSBzbyB0aGVcbiAqIGRhdGEgaXMgdHlwZWQgYnkgdGhlIGtpbmQuXG4gKi9cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVNwZWMgPSB7XG4gIHJlYWRvbmx5IGtpbmQ6IERyb3BEb3duTWVudUtpbmQ8YW55PjtcbiAgcmVhZG9ubHkgZGF0YT86IHVua25vd247XG4gIHJlYWRvbmx5IG9wZW5Pbj86IERyb3BEb3duTWVudU9wZW5PbjtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBEcm9wRG93bk1lbnVQb3NpdGlvbjtcbiAgcmVhZG9ubHkgZ2FwPzogRHJvcERvd25NZW51R2FwO1xufTtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51T3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgb3Blbk9uPzogRHJvcERvd25NZW51T3Blbk9uO1xuICByZWFkb25seSBwb3NpdGlvbj86IERyb3BEb3duTWVudVBvc2l0aW9uO1xuICByZWFkb25seSBnYXA/OiBEcm9wRG93bk1lbnVHYXA7XG59O1xuXG4vKipcbiAqIFR5cGVkIGNvbnN0cnVjdG9yIGZvciBhIHtAbGluayBEcm9wRG93bk1lbnVTcGVjfTogYSBraW5kIGNyZWF0ZWQgZm9yIGEgZGF0YSB0eXBlIG1ha2VzIGBkYXRhYFxuICogcmVxdWlyZWQgYW5kIHR5cGVkOyBhIGtpbmQgd2l0aG91dCBkYXRhIGZvcmJpZHMgaXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPEJ1dHRvbiAkZHJvcERvd25NZW51PXtkcm9wRG93bk1lbnUoYWlUb29sc01lbnVLaW5kKX0+T3BlbjwvQnV0dG9uPlxuICogPEJ1dHRvbiAkZHJvcERvd25NZW51PXtkcm9wRG93bk1lbnUocG9kQWN0aW9uc01lbnVLaW5kLCB7IGRhdGE6IHsgcG9kTmFtZSB9IH0pfT5Qb2Q8L0J1dHRvbj5cbiAqIDxCdXR0b24gJGRyb3BEb3duTWVudT17ZHJvcERvd25NZW51KHJvd0FjdGlvbnNNZW51S2luZCwgeyBwb3NpdGlvbjogXCJib3R0b20gc3Bhbi1sZWZ0XCIgfSl9Plx1MjJFRTwvQnV0dG9uPlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcm9wRG93bk1lbnU8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8dm9pZD4+KFxuICBraW5kOiBLLFxuICBvcHRpb25zPzogRHJvcERvd25NZW51T3B0aW9ucyxcbik6IERyb3BEb3duTWVudVNwZWM7XG5leHBvcnQgZnVuY3Rpb24gZHJvcERvd25NZW51PEsgZXh0ZW5kcyBEcm9wRG93bk1lbnVLaW5kPGFueT4+KFxuICBraW5kOiBLLFxuICBvcHRpb25zOiBEcm9wRG93bk1lbnVPcHRpb25zICYgeyByZWFkb25seSBkYXRhOiBEcm9wRG93bk1lbnVEYXRhPEs+IH0sXG4pOiBEcm9wRG93bk1lbnVTcGVjO1xuZXhwb3J0IGZ1bmN0aW9uIGRyb3BEb3duTWVudShcbiAga2luZDogRHJvcERvd25NZW51S2luZDxhbnk+LFxuICBvcHRpb25zPzogRHJvcERvd25NZW51T3B0aW9ucyAmIHsgcmVhZG9ubHkgZGF0YT86IHVua25vd24gfSxcbik6IERyb3BEb3duTWVudVNwZWMge1xuICByZXR1cm4geyBraW5kLCAuLi5vcHRpb25zIH07XG59XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0aW9uVG9rZW4yLCB0eXBlIE1heWJlUmVzdWx0RmFjdG9yeSwgdHlwZSBTcGVjaWZpY0luamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBnZXRJbmplY3Rpb25Ub2tlbkNvbXBvbmVudDIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudURhdGEsIERyb3BEb3duTWVudUtpbmQgfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1raW5kXCI7XG5pbXBvcnQgdHlwZSB7IERyb3BEb3duTWVudUl0ZW0gfSBmcm9tIFwiLi9kcm9wLWRvd24tbWVudS1pdGVtXCI7XG5cbi8qKlxuICogVGhlIHByb3BzIHRoZSBtZW51IGhhbmRzIGl0cyBjb250YWluZXIuIFRoZXkgcG9zaXRpb24gdGhlIGNvbnRhaW5lciwgcHV0IGl0IGFib3ZlIGV2ZXJ5dGhpbmdcbiAqIGVsc2UsIGFuZCBsZXQgYSBtZW51IG9wZW5lZCBieSBob3ZlcmluZyBrbm93IHRoZSBwb2ludGVyIGlzIG9uIGl0IFx1MjAxNCBzbyB0aGUgY29udGFpbmVyIG11c3Qgc3ByZWFkXG4gKiB0aGVtIG9udG8gd2hpY2hldmVyIGVsZW1lbnQgaXQgcmVuZGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51Q29udGFpbmVyUHJvcHM8VERhdGEgPSB2b2lkPiA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogVGhlIGl0ZW1zIG9mIHRoZSBtZW51LCBhcyBpdHMga2luZCBkZWNsYXJlcyB0aGVtLCBmb3IgYSBjb250YWluZXIgdGhhdCBsYXlzIHRoZW0gb3V0IGl0c2VsZlxuICAgKiByYXRoZXIgdGhhbiByZW5kZXJpbmcgd2hhdCB0aGUgbWVudSBnYXZlIGl0IGFzIGNoaWxkcmVuLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXM/OiByZWFkb25seSBEcm9wRG93bk1lbnVJdGVtPFREYXRhLCBhbnk+W107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudUNvbnRhaW5lckNvbXBvbmVudDxURGF0YSA9IHZvaWQ+ID0gKCkgPT4gUmVhY3QuQ29tcG9uZW50VHlwZTxEcm9wRG93bk1lbnVDb250YWluZXJQcm9wczxURGF0YT4+O1xuXG4vKipcbiAqIFRoZSBjb250YWluZXIgYSBtZW51IHJlbmRlcnMgYXMgd2hlbiBpdHMga2luZCBjb250cmlidXRlcyBub25lIG9mIGl0cyBvd24uIEltcGxlbWVudGVkIGJ5XG4gKiBgQGxlbnNhcHAvZHJvcC1kb3duLW1lbnVgOyBvdmVycmlkZSBpdCB0byBjaGFuZ2Ugd2hhdCBldmVyeSBtZW51IGlzIG1hZGUgb2YuXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0RHJvcERvd25NZW51Q29udGFpbmVyID0gZ2V0SW5qZWN0aW9uVG9rZW5Db21wb25lbnQyPFxuICBSZWFjdC5Db21wb25lbnRUeXBlPERyb3BEb3duTWVudUNvbnRhaW5lclByb3BzPlxuPih7XG4gIGlkOiBcImRlZmF1bHQtZHJvcC1kb3duLW1lbnUtY29udGFpbmVyXCIsXG59KSgpO1xuXG4vKiogVGhlIHNwZWNpZmljIHRva2VuIGAuZm9yKGtpbmQpYCB5aWVsZHM6IGF0IG1vc3Qgb25lIGNvbnRhaW5lciBmb3IgYSBtZW51IGtpbmQsIHR5cGVkIGJ5IGl0LiAqL1xuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51Q29udGFpbmVyVG9rZW5Gb3I8VERhdGE+ID0gU3BlY2lmaWNJbmplY3Rpb25Ub2tlbjI8e1xuICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8VERhdGE+O1xuICBtYXliZUZhY3Rvcnk6IE1heWJlUmVzdWx0RmFjdG9yeTxEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8VERhdGE+PjtcbiAgc3BlY2lmaWNUb2tlbkZhY3Rvcnk6IHVuZGVmaW5lZDtcbiAgY2FyZGluYWxpdHk6IFwiemVyby1vci1vbmVcIjtcbn0+O1xuXG4vKipcbiAqIFRoZSBgLmZvcigpYCBmYWN0b3J5LCBhbm5vdGF0ZWQgc28gYSBraW5kJ3Mgb3duIGRhdGEgdHlwZSBzdXJ2aXZlcyBpbnRvIHRoZSBzcGVjaWZpYyB0b2tlbi4gVGhlXG4gKiBhbm5vdGF0aW9uIGNhcnJpZXMgd2hhdCB0aGUgcmV0aXJlZCB0aGlyZCB0eXBlIHBhcmFtZXRlciB1c2VkIHRvOiBpbmZlcmVuY2UgZnJvbSB0aGUgdmFsdWUgYWxvbmVcbiAqIGNhbm5vdCByZWNvbnN0cnVjdCBhIHJldHVybiB0eXBlIHRoYXQgbWVudGlvbnMgdGhlIHNwZWNpZmllcidzIG93biB0eXBlIHBhcmFtZXRlci5cbiAqL1xuY29uc3QgZHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50VG9rZW5Gb3IgPSA8SyBleHRlbmRzIERyb3BEb3duTWVudUtpbmQ8YW55Pj4oXG4gIGtpbmQ6IEssXG4pOiBEcm9wRG93bk1lbnVDb250YWluZXJUb2tlbkZvcjxEcm9wRG93bk1lbnVEYXRhPEs+PiA9PlxuICBnZXRJbmplY3Rpb25Ub2tlbjI8e1xuICAgIHNpbmdsZUZhY3Rvcnk6IERyb3BEb3duTWVudUNvbnRhaW5lckNvbXBvbmVudDxEcm9wRG93bk1lbnVEYXRhPEs+PjtcbiAgICBtYXliZUZhY3Rvcnk6IE1heWJlUmVzdWx0RmFjdG9yeTxEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8RHJvcERvd25NZW51RGF0YTxLPj4+O1xuICB9Pih7XG4gICAgaWQ6IGBkcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50LSR7a2luZH1gLFxuICAgIHNwZWNpYWxpdHk6IGtpbmQsXG4gICAgY2FyZGluYWxpdHk6IFwiemVyby1vci1vbmVcIixcbiAgfSkoKTtcblxuLyoqXG4gKiBUaGUgZWxlbWVudCBhIG1lbnUgb2Ygc29tZSBraW5kIHJlbmRlcnMgYXMuIFdpdGhvdXQgb25lLCBhIG1lbnUgaXMgYSBsaXN0IFx1MjAxNCB3aGljaCBpcyB3aGF0IGEgbWVudVxuICogb2Ygb3JkaW5hcnkgaXRlbXMgc2hvdWxkIGJlLiBDb250cmlidXRlIG9uZSB3aGVuIHRoZSBpdGVtcyBhcmUgbm90IGEgbGlzdDogYSBncmlkIG9mIGljb25zLCBzYXksXG4gKiBvciBhIHBhbmVsIHRoYXQgaGFwcGVucyB0byBvcGVuIGxpa2UgYSBtZW51LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEl0ZW1zIHR5cGVkIGJ5IHRoZSBraW5kLCBmb3IgYSBjb250YWluZXIgdGhhdCBsYXlzIHRoZW0gb3V0IGl0c2VsZi5cbiAqIGNvbnN0IEljb25HcmlkID0gKHsgaXRlbXMgPSBbXSwgLi4ubWVudVByb3BzIH06IERyb3BEb3duTWVudUNvbnRhaW5lclByb3BzKSA9PiAoXG4gKiAgIDxEaXYgey4uLm1lbnVQcm9wc30gJGdyaWQ9e3sgY29sdW1uczogMyB9fT5cbiAqICAgICB7aXRlbXMubWFwKChpdGVtKSA9PiAoXG4gKiAgICAgICA8aXRlbS5Db21wb25lbnQga2V5PXtpdGVtLmlkfSBkYXRhPXt1bmRlZmluZWR9IHsuLi5pdGVtLmNvbXBvbmVudFByb3BzfSAvPlxuICogICAgICkpfVxuICogICA8L0Rpdj5cbiAqICk7XG4gKlxuICogZXhwb3J0IGNvbnN0IGljb25HcmlkQ29udGFpbmVySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAqICAgaWQ6IFwiaWNvbi1ncmlkLWNvbnRhaW5lclwiLFxuICogICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gSWNvbkdyaWQsXG4gKiAgIGluamVjdGlvblRva2VuOiBkcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnRJbmplY3Rpb25Ub2tlbi5mb3IoaWNvbnNNZW51S2luZCksXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50SW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8e1xuICBzaW5nbGVGYWN0b3J5OiBEcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnQ8YW55PjtcbiAgbWF5YmVGYWN0b3J5OiBNYXliZVJlc3VsdEZhY3Rvcnk8RHJvcERvd25NZW51Q29udGFpbmVyQ29tcG9uZW50PGFueT4+O1xufT4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudS1jb250YWluZXItY29tcG9uZW50XCIsXG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3Itb25lXCIsXG59KShkcm9wRG93bk1lbnVDb250YWluZXJDb21wb25lbnRUb2tlbkZvcik7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0aW9uVG9rZW5Db21wb25lbnQyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBEcm9wRG93bk1lbnVTcGVjIH0gZnJvbSBcIi4vZHJvcC1kb3duLW1lbnUtc3BlY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BEb3duTWVudVByb3BzIHtcbiAgLyoqIFdoaWNoIG1lbnUgdG8gc2hvdzogdGhlIGtpbmQsIGl0cyBkYXRhLCBob3cgaXQgb3BlbnMgYW5kIHdoZXJlIGl0IHNpdHMuICovXG4gIHJlYWRvbmx5IHNwZWM6IERyb3BEb3duTWVudVNwZWM7XG5cbiAgLyoqXG4gICAqIFZpZXdwb3J0IHBvaW50IHRvIHNpdCBhdCwgaW5zdGVhZCBvZiB0aGUgaG9zdCBlbGVtZW50IFx1MjAxNCBob3cgYSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZ1xuICAgKiBlbmRzIHVwIGF0IHRoZSBjdXJzb3IuXG4gICAqL1xuICByZWFkb25seSBhbmNob3JQb2ludD86IHsgcmVhZG9ubHkgeDogbnVtYmVyOyByZWFkb25seSB5OiBudW1iZXIgfTtcblxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIG1lbnUgY2xvc2VzIGl0c2VsZiAoaXRlbSBhY3RpdmF0aW9uLCBvdXRzaWRlIGNsaWNrLCBFc2NhcGUsIG5vIGl0ZW1zKS4gKi9cbiAgcmVhZG9ubHkgb25DbG9zZTogVm9pZEZ1bmN0aW9uO1xuXG4gIC8qKiBSZXBvcnRzIHBvaW50ZXIgcHJlc2VuY2Ugb3ZlciB0aGUgbWVudSBzdXJmYWNlOyBob3Zlci1vcGVuZWQgaG9zdHMgc3RheSBvcGVuIHdoaWxlIHRydWUuICovXG4gIHJlYWRvbmx5IG9uTWVudUhvdmVyQ2hhbmdlPzogKGlzSG92ZXJlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgbWVudSBjb21wb25lbnQgdGhlIGAkZHJvcERvd25NZW51YCBlbGVtZW50IHByb3AgcmVuZGVycyB3aGlsZSBvcGVuLiBJdCByZW5kZXJzIGluc2lkZSB0aGVcbiAqIGhvc3QgZWxlbWVudCBhbmQgYW5jaG9ycyBpdHNlbGYgdG8gaXQsIHNvIHRoZSBob3N0IG5lZWRzIG5vIHJlZiBhbmQgdGhlIG1lbnUgbmVlZHMgbm8gcG9ydGFsLlxuICpcbiAqIEltcGxlbWVudGVkIGJ5IGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAsIHdob3NlIGZlYXR1cmUgbXVzdCBiZSByZWdpc3RlcmVkIGZvciB0aGUgcHJvcCB0byB3b3JrO1xuICogcmVzb2x2ZWQgdGhyb3VnaCB0aGlzIHRva2VuIHNvIGVsZW1lbnQtY29tcG9uZW50cyBuZWVkcyBubyBkZXBlbmRlbmN5IG9uIHRoZSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERyb3BEb3duTWVudSA9IGdldEluamVjdGlvblRva2VuQ29tcG9uZW50MjxSZWFjdC5Db21wb25lbnRUeXBlPERyb3BEb3duTWVudVByb3BzPj4oe1xuICBpZDogXCJkcm9wLWRvd24tbWVudVwiLFxufSkoKTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBEcm9wRG93bk1lbnVLaW5kIH0gZnJvbSBcIi4vZHJvcC1kb3duLW1lbnUta2luZFwiO1xuXG4vKiogQ2xvc2VzIHRoZSBvcGVuIGRyb3AtZG93biBtZW51IG9mIHRoZSBnaXZlbiBraW5kLiAqL1xuZXhwb3J0IHR5cGUgQ2xvc2VEcm9wRG93bk1lbnUgPSAoa2luZDogRHJvcERvd25NZW51S2luZDxhbnk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIFByb2dyYW1tYXRpY2FsbHkgY2xvc2UgdGhlIG9wZW4gZHJvcC1kb3duIG1lbnUgb2Ygb25lIGtpbmQuIE1lbnVzIG9mIG90aGVyIGtpbmRzIHN0YXkgb3Blbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNsb3NlRHJvcERvd25NZW51ID0gZGkuaW5qZWN0KGNsb3NlRHJvcERvd25NZW51SW5qZWN0aW9uVG9rZW4pKCk7XG4gKlxuICogY2xvc2VEcm9wRG93bk1lbnUocG9kQWN0aW9uc01lbnVLaW5kKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgY2xvc2VEcm9wRG93bk1lbnVJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IENsb3NlRHJvcERvd25NZW51IH0+KHtcbiAgaWQ6IFwiY2xvc2UtZHJvcC1kb3duLW1lbnVcIixcbiAgY2FyZGluYWxpdHk6IFwib25lXCIsXG59KSgpO1xuXG4vKiogQ2xvc2VzIGV2ZXJ5IG9wZW4gZHJvcC1kb3duIG1lbnUuICovXG5leHBvcnQgdHlwZSBDbG9zZUFsbERyb3BEb3duTWVudXMgPSBWb2lkRnVuY3Rpb247XG5cbi8qKlxuICogUHJvZ3JhbW1hdGljYWxseSBjbG9zZSBhbGwgb3BlbiBkcm9wLWRvd24gbWVudXMsIHJlZ2FyZGxlc3Mgb2Yga2luZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNsb3NlQWxsRHJvcERvd25NZW51cyA9IGRpLmluamVjdChjbG9zZUFsbERyb3BEb3duTWVudXNJbmplY3Rpb25Ub2tlbikoKTtcbiAqXG4gKiBjbG9zZUFsbERyb3BEb3duTWVudXMoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgY2xvc2VBbGxEcm9wRG93bk1lbnVzSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBDbG9zZUFsbERyb3BEb3duTWVudXMgfT4oe1xuICBpZDogXCJjbG9zZS1hbGwtZHJvcC1kb3duLW1lbnVzXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcbiIsICJpbXBvcnQgeyBleHBlY3REZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBDYXJyaWVzIHRoZSBjbG9zZSBmdW5jdGlvbiBvZiB0aGUgZHJvcC1kb3duIG1lbnUgYSBjb21wb25lbnQgaXMgcmVuZGVyZWQgaW4uIFByb3ZpZGVkIGJ5IHRoZVxuICogbWVudSBpbXBsZW1lbnRhdGlvbiBhcm91bmQgaXRzIGl0ZW1zOyBjb25zdW1lIHRocm91Z2gge0BsaW5rIHVzZUNsb3NlRHJvcERvd25NZW51fS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnRleHRGb3JDbG9zaW5nRHJvcERvd25NZW51ID0gY3JlYXRlQ29udGV4dDxWb2lkRnVuY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbi8qKlxuICogSW5zaWRlIG1lbnUgY29udGVudDogcmV0dXJucyBhIGZ1bmN0aW9uIGNsb3NpbmcgdGhlIG1lbnUgdGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgaW4gXHUyMDE0IG9ubHlcbiAqIHRoYXQgbWVudSwgbm90IGl0cyBhbmNlc3RvcnMuIFRocm93cyB3aGVuIHVzZWQgb3V0c2lkZSBhIGRyb3AtZG93biBtZW51LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IEN1c3RvbVJvdyA9ICgpID0+IHtcbiAqICAgY29uc3QgY2xvc2VEcm9wRG93bk1lbnUgPSB1c2VDbG9zZURyb3BEb3duTWVudSgpO1xuICpcbiAqICAgcmV0dXJuIDxDbGlja2FibGVEaXYgJG9uQ2xpY2s9e2Nsb3NlRHJvcERvd25NZW51fT5Eb25lPC9DbGlja2FibGVEaXY+O1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VEcm9wRG93bk1lbnUgPSAoKSA9PlxuICBleHBlY3REZWZpbmVkKHVzZUNvbnRleHQoY29udGV4dEZvckNsb3NpbmdEcm9wRG93bk1lbnUpLCBcIlRyaWVkIHRvIGNsb3NlIGEgZHJvcC1kb3duIG1lbnUgd2hpbGUgbm90IGluc2lkZSBvbmUuXCIpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHdCQUFnRjtBQWlDekUsSUFBTSxzQkFDWCxNQUNBLENBQW1CLGtCQUNqQixxQ0FBK0MsRUFBRSxTQUFTOzs7QUNwQzlELElBQUFBLHFCQUF1RTtBQXlCaEUsSUFBTSxxQ0FBaUMsdUNBRTNDO0FBQUEsRUFDRCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBMEJJLElBQU0scUNBQXFDLENBQUMsZUFDakQsdUNBQW1CO0FBQUEsRUFDakIsc0JBQWtCLG1DQUFlO0FBQUEsSUFDL0IsSUFBSSxPQUFPO0FBQUEsSUFFWCxhQUFhLE1BQU0sT0FBb0M7QUFBQSxNQUNyRCxNQUFNLE9BQU87QUFBQSxNQUNiLGFBQWEsT0FBTztBQUFBLElBQ3RCO0FBQUEsSUFFQSxnQkFBZ0I7QUFBQSxFQUNsQixDQUFDO0FBQ0gsQ0FBQzs7O0FDcEVILElBQUFDLHFCQVNPO0FBcUZQLElBQU0sMkJBQTJCLENBQy9CLGFBRUEsdUNBR0c7QUFBQSxFQUNELElBQUksdUJBQXVCLElBQUk7QUFBQSxFQUMvQixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBU0UsSUFBTSxxQ0FBaUMsdUNBRzNDO0FBQUEsRUFDRCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFLHdCQUF3QjtBQTRDcEIsSUFBTSxxQ0FBcUMsQ0FDaEQsZUFFQSx1Q0FBbUI7QUFBQSxFQUNqQixzQkFBa0IsbUNBQWU7QUFBQSxJQUMvQixJQUFJLE9BQU87QUFBQSxJQUVYLGFBQ0UsTUFDQSxNQUNBLENBQUMsV0FBdUU7QUFBQSxNQUN0RSxJQUFJLE9BQU87QUFBQSxNQUNYLGFBQWEsT0FBTztBQUFBLE1BQ3BCLFdBQVcsT0FBTyxPQUFPLGNBQWMsYUFBYSxPQUFPLFVBQVUsS0FBSyxJQUFJLE9BQU87QUFBQSxNQUNyRixXQUFXLE9BQU87QUFBQSxJQUNwQjtBQUFBLElBRUYsZ0JBQWdCLCtCQUErQixJQUFJLE9BQU8sSUFBSTtBQUFBLEVBQ2hFLENBQUM7QUFDSCxDQUFDO0FBaURJLElBQU0sc0NBQXNDLENBSWpELGVBRUEsdUNBQW1CO0FBQUEsRUFDakIsdUJBQW1CLG1DQUFlO0FBQUEsSUFDaEMsSUFBSSxPQUFPO0FBQUEsSUFDWCxjQUFjLE9BQU87QUFBQSxJQUVyQixhQUFhLENBQUMsT0FBTztBQUNuQixZQUFNLGVBQWUsT0FBTyxZQUFZLEVBQUU7QUFFMUMsYUFBTyxNQUFNO0FBQUEsSUFDZjtBQUFBLElBRUEsZ0JBQWdCLCtCQUErQixJQUFJLE9BQU8sSUFBSTtBQUFBLEVBQ2hFLENBQUM7QUFDSCxDQUFDOzs7QUNwSkksU0FBUyxhQUNkLE1BQ0EsU0FDa0I7QUFDbEIsU0FBTyxFQUFFLE1BQU0sR0FBRyxRQUFRO0FBQzVCOzs7QUMzR0EsSUFBQUMscUJBQTBGO0FBQzFGLDhCQUE0QztBQTBCckMsSUFBTSxtQ0FBK0IscURBRTFDO0FBQUEsRUFDQSxJQUFJO0FBQ04sQ0FBQyxFQUFFO0FBZUgsSUFBTSx5Q0FBeUMsQ0FDN0MsYUFFQSx1Q0FHRztBQUFBLEVBQ0QsSUFBSSxzQ0FBc0MsSUFBSTtBQUFBLEVBQzlDLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFDZixDQUFDLEVBQUU7QUF5QkUsSUFBTSxtREFBK0MsdUNBR3pEO0FBQUEsRUFDRCxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFLHNDQUFzQzs7O0FDdkZ6QyxJQUFBQywyQkFBNEM7QUE0QnJDLElBQU0sbUJBQWUsc0RBQW9FO0FBQUEsRUFDOUYsSUFBSTtBQUNOLENBQUMsRUFBRTs7O0FDOUJILElBQUFDLHFCQUFtQztBQWdCNUIsSUFBTSxzQ0FBa0MsdUNBQStEO0FBQUEsRUFDNUcsSUFBSTtBQUFBLEVBQ0osYUFBYTtBQUNmLENBQUMsRUFBRTtBQWVJLElBQU0sMENBQXNDLHVDQUFtRTtBQUFBLEVBQ3BILElBQUk7QUFBQSxFQUNKLGFBQWE7QUFDZixDQUFDLEVBQUU7OztBQ3JDSCw4QkFBOEI7QUFDOUIsbUJBQTBDO0FBTW5DLElBQU0sb0NBQWdDLDRCQUF3QyxNQUFTO0FBZXZGLElBQU0sdUJBQXVCLFVBQ2xDLDJDQUFjLHlCQUFXLDZCQUE2QixHQUFHLHVEQUF1RDsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGVfcmVhY3QiLCAiaW1wb3J0X2luamVjdGFibGUiXQp9Cg==
|
|
@@ -13,7 +13,7 @@ export type DropDownMenuContainerProps<TData = void> = {
|
|
|
13
13
|
* The items of the menu, as its kind declares them, for a container that lays them out itself
|
|
14
14
|
* rather than rendering what the menu gave it as children.
|
|
15
15
|
*/
|
|
16
|
-
readonly items?: readonly DropDownMenuItem<TData>[];
|
|
16
|
+
readonly items?: readonly DropDownMenuItem<TData, any>[];
|
|
17
17
|
} & Record<string, unknown>;
|
|
18
18
|
export type DropDownMenuContainerComponent<TData = void> = () => React.ComponentType<DropDownMenuContainerProps<TData>>;
|
|
19
19
|
/**
|
|
@@ -47,7 +47,7 @@ declare const dropDownMenuContainerComponentTokenFor: <K extends DropDownMenuKin
|
|
|
47
47
|
* const IconGrid = ({ items = [], ...menuProps }: DropDownMenuContainerProps) => (
|
|
48
48
|
* <Div {...menuProps} $grid={{ columns: 3 }}>
|
|
49
49
|
* {items.map((item) => (
|
|
50
|
-
* <item.Component key={item.id} data={undefined} />
|
|
50
|
+
* <item.Component key={item.id} data={undefined} {...item.componentProps} />
|
|
51
51
|
* ))}
|
|
52
52
|
* </Div>
|
|
53
53
|
* );
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-down-menu-container-component.d.ts","sourceRoot":"","sources":["../../src/drop-down-menu-container-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEhH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CAAC,KAAK,GAAG,IAAI,IAAI;IACrD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"drop-down-menu-container-component.d.ts","sourceRoot":"","sources":["../../src/drop-down-menu-container-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEhH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CAAC,KAAK,GAAG,IAAI,IAAI;IACrD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;CAC1D,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,MAAM,8BAA8B,CAAC,KAAK,GAAG,IAAI,IAAI,MAAM,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;AAExH;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;CAIrC,CAAC;AAEL,kGAAkG;AAClG,MAAM,MAAM,6BAA6B,CAAC,KAAK,IAAI,uBAAuB,CAAC;IACzE,aAAa,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACrD,YAAY,EAAE,kBAAkB,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,oBAAoB,EAAE,SAAS,CAAC;IAChC,WAAW,EAAE,aAAa,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,sCAAsC,GAAI,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,QACvE,CAAC,KACN,6BAA6B,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAQ9C,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,4CAA4C;;;CAMf,CAAC"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import { type NonEmptyManyFactory, type SpecificInjectionToken2 } from "@k8slens/injectable";
|
|
1
|
+
import { type Consumption, type ConsumptionDi, type NonEmptyManyFactory, type SpecificInjectionToken2 } from "@k8slens/injectable";
|
|
2
2
|
import type { Identifiable, MaybeComputed, MaybeComputedShowable, Orderable } from "@k8slens/composable-responsibilities";
|
|
3
|
-
import type { MaybePromise } from "@k8slens/public-utilities";
|
|
3
|
+
import type { MaybePromise, SingleOrMany } from "@k8slens/public-utilities";
|
|
4
4
|
import type React from "react";
|
|
5
5
|
import type { DropDownMenuData, DropDownMenuKind } from "./drop-down-menu-kind";
|
|
6
|
+
/**
|
|
7
|
+
* What an item's component needs beyond the menu's data. Providing it is mandatory when the
|
|
8
|
+
* component requires props, and optional when all of them are optional.
|
|
9
|
+
*/
|
|
10
|
+
export type DropDownMenuItemPropsFor<TProps extends object> = {} extends TProps ? {
|
|
11
|
+
readonly componentProps?: TProps;
|
|
12
|
+
} : {
|
|
13
|
+
readonly componentProps: TProps;
|
|
14
|
+
};
|
|
6
15
|
/**
|
|
7
16
|
* One item of a drop-down menu: a component, where it sits among the others, and whether it is
|
|
8
17
|
* shown at all. What the item looks like and what it does are its own business — a menu neither
|
|
@@ -10,15 +19,42 @@ import type { DropDownMenuData, DropDownMenuKind } from "./drop-down-menu-kind";
|
|
|
10
19
|
*
|
|
11
20
|
* The component is given the data the host element opened the menu with, and must be defined at
|
|
12
21
|
* module scope; capturing data in a closure would create a new component reference on every
|
|
13
|
-
* invocation and break React reconciliation.
|
|
22
|
+
* invocation and break React reconciliation. Whatever the component needs on top of the menu's
|
|
23
|
+
* data travels as `componentProps` instead — which is what lets one contribution answer with a
|
|
24
|
+
* row per container, per column or per action while every row shares the one component.
|
|
14
25
|
*/
|
|
15
|
-
export
|
|
26
|
+
export type DropDownMenuItem<TData = void, TProps extends object = {}> = Identifiable & Orderable & MaybeComputedShowable & {
|
|
16
27
|
readonly Component: React.ComponentType<{
|
|
17
28
|
readonly data: TData;
|
|
18
|
-
}>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
|
|
29
|
+
} & TProps>;
|
|
30
|
+
} & DropDownMenuItemPropsFor<TProps>;
|
|
31
|
+
/**
|
|
32
|
+
* Acquires the items one contributor has for a given menu input — the data the host element opened
|
|
33
|
+
* the menu of this kind with, typed by the kind.
|
|
34
|
+
*
|
|
35
|
+
* A contributor is free to answer with one item, several, or none, to answer later, and to answer
|
|
36
|
+
* with a computed the menu re-reads while it is open. That is what makes a contribution able to
|
|
37
|
+
* *acquire* its items from the input rather than merely be one: the containers of a pod, the
|
|
38
|
+
* columns of a table, the actions of whatever object the menu was opened over.
|
|
39
|
+
*/
|
|
40
|
+
export type AcquireDropDownMenuItems<TData = any> = (input: TData) => MaybePromise<MaybeComputed<SingleOrMany<DropDownMenuItem<TData, any>>>>;
|
|
41
|
+
/**
|
|
42
|
+
* What a contribution registers: built once, and then asked for the items of every menu of its kind
|
|
43
|
+
* that opens.
|
|
44
|
+
*
|
|
45
|
+
* The input belongs to the menu rather than to the contribution, which is why it arrives at
|
|
46
|
+
* {@link AcquireDropDownMenuItems} instead of here. A contribution taking it directly would be
|
|
47
|
+
* rebuilt for every menu that opens, since the container keys a contribution's instance by the
|
|
48
|
+
* arguments it is resolved with — and a host that builds its `data` inline hands over a new object
|
|
49
|
+
* every time.
|
|
50
|
+
*/
|
|
51
|
+
export type DropDownMenuItemFactory<TData = any> = () => AcquireDropDownMenuItems<TData>;
|
|
52
|
+
/**
|
|
53
|
+
* Whether an item is shown at all. Given as a value or a computed the menu reacts to, or as a
|
|
54
|
+
* function of the menu's input — which is how an item shown only for some of the things its kind
|
|
55
|
+
* of menu opens over says so.
|
|
56
|
+
*/
|
|
57
|
+
export type DropDownMenuItemVisibility<TData> = MaybeComputed<boolean> | ((input: TData) => MaybeComputed<boolean>);
|
|
22
58
|
/**
|
|
23
59
|
* The specific token `.for(kind)` yields: the items contributed to one menu kind. At least one of
|
|
24
60
|
* them, so that a kind nobody contributes to is a composition error rather than a menu that never
|
|
@@ -37,11 +73,13 @@ export type DropDownMenuItemTokenFor<TData> = SpecificInjectionToken2<{
|
|
|
37
73
|
*/
|
|
38
74
|
declare const dropDownMenuItemTokenFor: <K extends DropDownMenuKind<any>>(kind: K) => DropDownMenuItemTokenFor<DropDownMenuData<K>>;
|
|
39
75
|
/**
|
|
40
|
-
* The contribution surface of drop-down menus:
|
|
41
|
-
* {@link DropDownMenuKind} via `.for(kind)`. Prefer
|
|
42
|
-
*
|
|
76
|
+
* The contribution surface of drop-down menus: each contribution answers with the items it has for
|
|
77
|
+
* the menu's input, registered against a {@link DropDownMenuKind} via `.for(kind)`. Prefer
|
|
78
|
+
* {@link getDropDownMenuItemInjectableBunch} for a single item, and
|
|
79
|
+
* {@link getDropDownMenuItemsInjectableBunch} for items acquired from the input, over registering
|
|
80
|
+
* by hand.
|
|
43
81
|
*/
|
|
44
|
-
export declare const dropDownMenuItemInjectionToken: import("@k8slens/injectable").InjectionToken2Base<DropDownMenuItemFactory<any>, () =>
|
|
82
|
+
export declare const dropDownMenuItemInjectionToken: import("@k8slens/injectable").InjectionToken2Base<DropDownMenuItemFactory<any>, () => AcquireDropDownMenuItems<any>[], "zero-or-many", () => import("@k8slens/injectable").InjectionInstanceWithMeta<AcquireDropDownMenuItems<any>>, () => import("@k8slens/injectable").InjectionInstanceWithMeta<AcquireDropDownMenuItems<any>>[]> & {
|
|
45
83
|
readonly __abstract: true;
|
|
46
84
|
for: typeof dropDownMenuItemTokenFor;
|
|
47
85
|
};
|
|
@@ -53,7 +91,7 @@ export interface DropDownMenuItemBunchParams<K extends DropDownMenuKind<any>> {
|
|
|
53
91
|
/** Lower comes first among the kind's items. */
|
|
54
92
|
readonly orderNumber: number;
|
|
55
93
|
/** Whether the item is shown at all; the menu reacts to this while open. */
|
|
56
|
-
readonly isVisible?:
|
|
94
|
+
readonly isVisible?: DropDownMenuItemVisibility<DropDownMenuData<K>>;
|
|
57
95
|
/** Renders the item. Receives the data the menu was opened with. */
|
|
58
96
|
readonly Component: React.ComponentType<{
|
|
59
97
|
readonly data: DropDownMenuData<K>;
|
|
@@ -76,9 +114,69 @@ export interface DropDownMenuItemBunchParams<K extends DropDownMenuKind<any>> {
|
|
|
76
114
|
* Component: RestartPod,
|
|
77
115
|
* });
|
|
78
116
|
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example An item shown only for some of the things the menu opens over:
|
|
119
|
+
* ```tsx
|
|
120
|
+
* export const connectClusterBunch = getDropDownMenuItemInjectableBunch({
|
|
121
|
+
* id: "connect-cluster",
|
|
122
|
+
* kind: navigatorItemDropDownMenuKind,
|
|
123
|
+
* orderNumber: 10,
|
|
124
|
+
* isVisible: (item) => item.kind === kubernetesClusterContextKind,
|
|
125
|
+
* Component: ConnectCluster,
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
79
128
|
*/
|
|
80
129
|
export declare const getDropDownMenuItemInjectableBunch: <K extends DropDownMenuKind<any>>(params: DropDownMenuItemBunchParams<K>) => {
|
|
81
|
-
dropDownMenuItem: import("@k8slens/injectable").Injectable2<() => DropDownMenuItem<DropDownMenuData<K>>>;
|
|
130
|
+
dropDownMenuItem: import("@k8slens/injectable").Injectable2<() => (input: DropDownMenuData<K>) => DropDownMenuItem<DropDownMenuData<K>>>;
|
|
131
|
+
};
|
|
132
|
+
export interface DropDownMenuItemsBunchParams<K extends DropDownMenuKind<any>, Cons extends Consumption> {
|
|
133
|
+
/** Unique id for the registered injectable. */
|
|
134
|
+
readonly id: string;
|
|
135
|
+
/** The menu kind the items belong to. */
|
|
136
|
+
readonly kind: K;
|
|
137
|
+
/**
|
|
138
|
+
* Builds the function that acquires the items this contribution has for the menu's input. Called
|
|
139
|
+
* once; whatever it injects and prepares is therefore shared by every menu of the kind that
|
|
140
|
+
* opens. Each item brings its own id, order number and visibility, so the items land among the
|
|
141
|
+
* kind's other contributions rather than as a block of their own.
|
|
142
|
+
*/
|
|
143
|
+
readonly instantiate: (di: ConsumptionDi<Cons>) => AcquireDropDownMenuItems<DropDownMenuData<K>>;
|
|
144
|
+
/** The injection tokens `instantiate` may inject. */
|
|
145
|
+
readonly consumptions?: ReadonlyArray<Cons>;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Contribute the items a menu has for its input, when how many there are is up to the input rather
|
|
149
|
+
* than known in advance — one row per container of a pod, per column of a table, per action some
|
|
150
|
+
* other registry holds.
|
|
151
|
+
*
|
|
152
|
+
* The items may arrive later and may be a computed the menu re-reads while it is open. They are
|
|
153
|
+
* ordinary items of the kind, so anything contributed with
|
|
154
|
+
* {@link getDropDownMenuItemInjectableBunch} appears among them by order number.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```tsx
|
|
158
|
+
* const ShellToContainer = ({ data, container }: { data: Pod; container: string }) => (
|
|
159
|
+
* <DropDownMenuAction $onClick={() => openShell(data, container)}>{container}</DropDownMenuAction>
|
|
160
|
+
* );
|
|
161
|
+
*
|
|
162
|
+
* export default getDropDownMenuItemsInjectableBunch({
|
|
163
|
+
* id: "pod-container-shells",
|
|
164
|
+
* kind: podActionsMenuKind,
|
|
165
|
+
* consumptions: [openShellInjectionToken],
|
|
166
|
+
* instantiate: () => (pod) =>
|
|
167
|
+
* computed(() =>
|
|
168
|
+
* containersOf(pod).map((container, index) => ({
|
|
169
|
+
* id: `shell-to-${container}`,
|
|
170
|
+
* orderNumber: podActionsMenuOrderNumbers.shells + index,
|
|
171
|
+
* Component: ShellToContainer,
|
|
172
|
+
* componentProps: { container },
|
|
173
|
+
* })),
|
|
174
|
+
* ),
|
|
175
|
+
* });
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export declare const getDropDownMenuItemsInjectableBunch: <K extends DropDownMenuKind<any>, const Cons extends Consumption = never>(params: DropDownMenuItemsBunchParams<K, Cons>) => {
|
|
179
|
+
dropDownMenuItems: import("@k8slens/injectable").Injectable2<() => AcquireDropDownMenuItems<import("@k8slens/injectable").TypedSpecifierType<"dropDownMenuData", K>>>;
|
|
82
180
|
};
|
|
83
181
|
export {};
|
|
84
182
|
//# sourceMappingURL=drop-down-menu-item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-down-menu-item.d.ts","sourceRoot":"","sources":["../../src/drop-down-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"drop-down-menu-item.d.ts","sourceRoot":"","sources":["../../src/drop-down-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,SAAS,EACV,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,CAAC,MAAM,SAAS,MAAM,IAAI,EAAE,SAAS,MAAM,GAC3E;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,SAAS,MAAM,GAAG,EAAE,IAAI,YAAY,GACnF,SAAS,GACT,qBAAqB,GAAG;IACtB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG,MAAM,CAAC,CAAC;CAC5E,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,GAAG,IAAI,CAClD,KAAK,EAAE,KAAK,KACT,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CAAC,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpH;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,uBAAuB,CAAC;IACpE,aAAa,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC9C,WAAW,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,oBAAoB,EAAE,SAAS,CAAC;IAChC,WAAW,EAAE,aAAa,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,wBAAwB,GAAI,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,QACzD,CAAC,KACN,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAQzC,CAAC;AAEP;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B;;;CAMf,CAAC;AAE7B,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC;IAC1E,yEAAyE;IACzE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CACjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,kCAAkC,GAAI,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,UACxE,2BAA2B,CAAC,CAAC,CAAC;8EASxB,gBAAgB,CAAC,CAAC,CAAC,KAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CASvE,CAAC;AAEL,MAAM,WAAW,4BAA4B,CAAC,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS,WAAW;IACrG,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,qDAAqD;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,mCAAmC,GAC9C,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAC/B,KAAK,CAAC,IAAI,SAAS,WAAW,GAAG,KAAK,UAE9B,4BAA4B,CAAC,CAAC,EAAE,IAAI,CAAC;;CAe3C,CAAC"}
|
|
@@ -4,8 +4,8 @@ import type { DropDownMenuData, DropDownMenuKind } from "./drop-down-menu-kind";
|
|
|
4
4
|
*
|
|
5
5
|
* - `"click"` (the default): clicking the element toggles the menu.
|
|
6
6
|
* - `"hover"`: the menu opens while the pointer is over the element or the menu.
|
|
7
|
-
* - `"right-click"`: right-clicking the element toggles the menu
|
|
8
|
-
* element
|
|
7
|
+
* - `"right-click"`: right-clicking the element toggles the menu, at the cursor rather than at the
|
|
8
|
+
* element — a context menu is a drop-down menu opened this way.
|
|
9
9
|
*/
|
|
10
10
|
export type DropDownMenuOpenOn = "click" | "hover" | "right-click";
|
|
11
11
|
/**
|