UNPKG

@hxui/angular

Version:

* * *

484 lines 29.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; var SelectizeConfig = /** @class */ (function () { function SelectizeConfig() { var _this = this; /** * Form label text * * Default: 'Selectize Label' */ this.label = 'Selectize Label'; /** * Helper text shown on focus or error * * Default: 'Selectize help text' */ this.help = 'Selectize help text'; /** * Force caret to show. * Only applies to multi select. * * Default: false */ this.hasCaret = false; /** * Mandatory boolean controls whether the * is shown in the label or not. * Has nothing to do with formControl. * * * Default: false */ this.mandatory = false; /** * Array of css class names that can be appended to the input control element * * Default: [] */ this.inputControlClasses = []; /** * The string to separate items by. When typing an item in a multi-selection control * allowing creation, then the delimiter, the item is added. If you paste * delimiter-separated items in such control, the items are added at once. * The delimiter is also used in the getValue API call on a text <input> tag to * separate the multiple values. * * Default: ',' */ this.delimiter = ','; /** * Allows the user to create new items that aren't in the initial list of options. * This setting can be any of the following: true, false (disabled), or a function * to process input. The function can take one of two forms: synchronous * (with signature function(input){} or asynchronous * (with signature function(input, callback). In the synchronous case, the function * should return an object for the options * (eg, with defaults: return { 'value': value, 'text': text };). * The asynchronous version should invoke the callback with the result in the same * format as the object above (eg, callback( { 'value': value, 'text': text});) * * Default: false */ this.create = false; /** * If true, when user exits the field (clicks outside of input), a new option * is created and selected (if create setting is enabled). * * Default: false */ this.createOnBlur = false; /** * Specifies a RegExp or a string containing a regular expression that the current * search filter must match to be allowed to be created. May also be a predicate * function that takes the filter text and returns whether it is allowed. * * Default: null */ this.createFilter = null; /** * Toggles match highlighting within the dropdown menu. * * Default: true */ this.highlight = true; /** * If false, items created by the user will not show up as available options once * they are unselected. * * Default: false */ this.persist = true; /** * Show the dropdown immediately when the control receives focus. * * Default: true */ this.openOnFocus = true; /** * The max number of items to render at once in the dropdown list of options. * * Default: 1000 */ this.maxOptions = 1000; /** * The max number of items the user can select. 1 makes the control mono-selection, * null allows an unlimited number of items. * * Default: 1 */ this.maxItems = 1; /** * If true, the items that are currently selected will not be shown in the dropdown * list of available options. * * Default: false */ this.hideSelected = false; /** * If true, the dropdown will be closed after a selection is made. * * Default: false */ this.closeAfterSelect = false; /** * If true, Selectize will treat any options with a "" value like normal. * This defaults to false to accomodate the common <select> practice of * having the first empty option to act as a placeholder. * * Default: false */ this.allowEmptyOption = false; /** * The animation duration (in milliseconds) of the scroll animation * triggered when going [up] and [down] in the options dropdown. * * Default: 60 */ this.scrollDuration = 60; /** * The number of milliseconds to wait before requesting options from the * server or null. If null, throttling is disabled. Useful when loading * options dynamically while the user types a search / filter expression. * * Default: 300 */ this.loadThrottle = 300; /** * The class name added to the wrapper element while awaiting the * fulfillment of load requests. * * Default: 'loading' */ this.loadingClass = 'loading'; /** * The placeholder of the control (displayed when nothing is selected / typed). * Defaults to input element's placeholder, unless this one is specified. * * Default: null */ this.placeholder = null; /** * If true, the load function will be called upon control * initialization (with an empty search). * * Default: false */ this.preload = false; /** * The element the dropdown menu is appended to. This should be 'body' or null. * If null, the dropdown will be appended as a child of the Selectize control. * * Default: null */ this.dropdownParent = null; /** * If true, the "Add..." option is the default selection in the dropdown. * * Default: false */ this.addPrecedence = false; /** * If true, the tab key will choose the currently selected item. * * Default: false */ this.selectOnTab = false; /** * Enable or disable international character support. * * Default: true */ this.diacritics = true; /** * The property name of the label in the options array * * Default: 'label' */ this.labelField = 'label'; /** * The property name of the value in the options array * * Default: 'value' */ this.valueField = 'value'; /** * An array of property names to analyze when filtering options. */ this.searchField = ['label']; /** * Default override item render function */ this.render = { item: function (item, escape) { /** @type {?} */ var multi = "<span class=\"hx-badge is-medium\">\n <span class=\"hx-badge-content\">" + escape(item.label) + "</span>\n </span>"; /** @type {?} */ var single = "<div class=\"item\">" + escape(item.label) + "</div>"; return (!_this.maxItems) ? multi : single; } }; /** * Selectize plugins to use */ this.plugins = { 'remove_button': { label: '', title: 'Remove', className: 'hx-delete', append: true } }; } SelectizeConfig.decorators = [ { type: Injectable }, ]; return SelectizeConfig; }()); export { SelectizeConfig }; if (false) { /** * Form label text * * Default: 'Selectize Label' * @type {?} */ SelectizeConfig.prototype.label; /** * Helper text shown on focus or error * * Default: 'Selectize help text' * @type {?} */ SelectizeConfig.prototype.help; /** * Force caret to show. * Only applies to multi select. * * Default: false * @type {?} */ SelectizeConfig.prototype.hasCaret; /** * Mandatory boolean controls whether the * is shown in the label or not. * Has nothing to do with formControl. * * * Default: false * @type {?} */ SelectizeConfig.prototype.mandatory; /** * Array of css class names that can be appended to the input control element * * Default: [] * @type {?} */ SelectizeConfig.prototype.inputControlClasses; /** * The string to separate items by. When typing an item in a multi-selection control * allowing creation, then the delimiter, the item is added. If you paste * delimiter-separated items in such control, the items are added at once. * The delimiter is also used in the getValue API call on a text <input> tag to * separate the multiple values. * * Default: ',' * @type {?} */ SelectizeConfig.prototype.delimiter; /** * Allows the user to create new items that aren't in the initial list of options. * This setting can be any of the following: true, false (disabled), or a function * to process input. The function can take one of two forms: synchronous * (with signature function(input){} or asynchronous * (with signature function(input, callback). In the synchronous case, the function * should return an object for the options * (eg, with defaults: return { 'value': value, 'text': text };). * The asynchronous version should invoke the callback with the result in the same * format as the object above (eg, callback( { 'value': value, 'text': text});) * * Default: false * @type {?} */ SelectizeConfig.prototype.create; /** * If true, when user exits the field (clicks outside of input), a new option * is created and selected (if create setting is enabled). * * Default: false * @type {?} */ SelectizeConfig.prototype.createOnBlur; /** * Specifies a RegExp or a string containing a regular expression that the current * search filter must match to be allowed to be created. May also be a predicate * function that takes the filter text and returns whether it is allowed. * * Default: null * @type {?} */ SelectizeConfig.prototype.createFilter; /** * Toggles match highlighting within the dropdown menu. * * Default: true * @type {?} */ SelectizeConfig.prototype.highlight; /** * If false, items created by the user will not show up as available options once * they are unselected. * * Default: false * @type {?} */ SelectizeConfig.prototype.persist; /** * Show the dropdown immediately when the control receives focus. * * Default: true * @type {?} */ SelectizeConfig.prototype.openOnFocus; /** * The max number of items to render at once in the dropdown list of options. * * Default: 1000 * @type {?} */ SelectizeConfig.prototype.maxOptions; /** * The max number of items the user can select. 1 makes the control mono-selection, * null allows an unlimited number of items. * * Default: 1 * @type {?} */ SelectizeConfig.prototype.maxItems; /** * If true, the items that are currently selected will not be shown in the dropdown * list of available options. * * Default: false * @type {?} */ SelectizeConfig.prototype.hideSelected; /** * If true, the dropdown will be closed after a selection is made. * * Default: false * @type {?} */ SelectizeConfig.prototype.closeAfterSelect; /** * If true, Selectize will treat any options with a "" value like normal. * This defaults to false to accomodate the common <select> practice of * having the first empty option to act as a placeholder. * * Default: false * @type {?} */ SelectizeConfig.prototype.allowEmptyOption; /** * The animation duration (in milliseconds) of the scroll animation * triggered when going [up] and [down] in the options dropdown. * * Default: 60 * @type {?} */ SelectizeConfig.prototype.scrollDuration; /** * The number of milliseconds to wait before requesting options from the * server or null. If null, throttling is disabled. Useful when loading * options dynamically while the user types a search / filter expression. * * Default: 300 * @type {?} */ SelectizeConfig.prototype.loadThrottle; /** * The class name added to the wrapper element while awaiting the * fulfillment of load requests. * * Default: 'loading' * @type {?} */ SelectizeConfig.prototype.loadingClass; /** * The placeholder of the control (displayed when nothing is selected / typed). * Defaults to input element's placeholder, unless this one is specified. * * Default: null * @type {?} */ SelectizeConfig.prototype.placeholder; /** * If true, the load function will be called upon control * initialization (with an empty search). * * Default: false * @type {?} */ SelectizeConfig.prototype.preload; /** * The element the dropdown menu is appended to. This should be 'body' or null. * If null, the dropdown will be appended as a child of the Selectize control. * * Default: null * @type {?} */ SelectizeConfig.prototype.dropdownParent; /** * If true, the "Add..." option is the default selection in the dropdown. * * Default: false * @type {?} */ SelectizeConfig.prototype.addPrecedence; /** * If true, the tab key will choose the currently selected item. * * Default: false * @type {?} */ SelectizeConfig.prototype.selectOnTab; /** * Enable or disable international character support. * * Default: true * @type {?} */ SelectizeConfig.prototype.diacritics; /** * The property name of the label in the options array * * Default: 'label' * @type {?} */ SelectizeConfig.prototype.labelField; /** * The property name of the value in the options array * * Default: 'value' * @type {?} */ SelectizeConfig.prototype.valueField; /** * An array of property names to analyze when filtering options. * @type {?} */ SelectizeConfig.prototype.searchField; /** * Default override item render function * @type {?} */ SelectizeConfig.prototype.render; /** * Selectize plugins to use * @type {?} */ SelectizeConfig.prototype.plugins; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aXplLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvc2VsZWN0aXplL3NlbGVjdGl6ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0M7SUFBQTtRQUFBLGlCQXNRQzs7Ozs7O1FBOVBDLFVBQUssR0FBRyxpQkFBaUIsQ0FBQzs7Ozs7O1FBTzFCLFNBQUksR0FBRyxxQkFBcUIsQ0FBQzs7Ozs7OztRQVE3QixhQUFRLEdBQUcsS0FBSyxDQUFDOzs7Ozs7O1FBUWpCLGNBQVMsR0FBRyxLQUFLLENBQUM7Ozs7OztRQVFsQix3QkFBbUIsR0FBRyxFQUFFLENBQUM7Ozs7Ozs7Ozs7UUFXekIsY0FBUyxHQUFHLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7UUFlaEIsV0FBTSxHQUF1QixLQUFLLENBQUM7Ozs7Ozs7UUFRbkMsaUJBQVksR0FBRyxLQUFLLENBQUM7Ozs7Ozs7O1FBU3JCLGlCQUFZLEdBQVcsSUFBSSxDQUFDOzs7Ozs7UUFPNUIsY0FBUyxHQUFHLElBQUksQ0FBQzs7Ozs7OztRQVFqQixZQUFPLEdBQUcsSUFBSSxDQUFDOzs7Ozs7UUFPZixnQkFBVyxHQUFHLElBQUksQ0FBQzs7Ozs7O1FBT25CLGVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7Ozs7UUFRbEIsYUFBUSxHQUFHLENBQUMsQ0FBQzs7Ozs7OztRQVFiLGlCQUFZLEdBQUcsS0FBSyxDQUFDOzs7Ozs7UUFPckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDOzs7Ozs7OztRQVN6QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7Ozs7Ozs7UUFRekIsbUJBQWMsR0FBRyxFQUFFLENBQUM7Ozs7Ozs7O1FBU3BCLGlCQUFZLEdBQUcsR0FBRyxDQUFDOzs7Ozs7O1FBUVgsaUJBQVksR0FBRyxTQUFTLENBQUM7Ozs7Ozs7UUFRekIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7Ozs7Ozs7UUFRbkMsWUFBTyxHQUFHLEtBQUssQ0FBQzs7Ozs7OztRQVFoQixtQkFBYyxHQUFXLElBQUksQ0FBQzs7Ozs7O1FBTzlCLGtCQUFhLEdBQUcsS0FBSyxDQUFDOzs7Ozs7UUFPZCxnQkFBVyxHQUFHLEtBQUssQ0FBQzs7Ozs7O1FBT3BCLGVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7OztRQU9uQixlQUFVLEdBQUcsT0FBTyxDQUFDOzs7Ozs7UUFPckIsZUFBVSxHQUFHLE9BQU8sQ0FBQzs7OztRQUtyQixnQkFBVyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Ozs7UUFLeEIsV0FBTSxHQUFHO1lBQ2QsSUFBSSxFQUFFLFVBQUMsSUFBb0IsRUFBRSxNQUFnQjs7b0JBQ3JDLEtBQUssR0FBRyx3RkFDNEI7c0JBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUN4QixnQ0FDTTs7b0JBQ1YsTUFBTSxHQUFHLHNCQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUTtnQkFDbkUsT0FBTyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUMzQyxDQUFDO1NBQ0YsQ0FBQzs7OztRQU1NLFlBQU8sR0FBRztZQUNoQixlQUFlLEVBQUU7Z0JBQ2YsS0FBSyxFQUFPLEVBQUU7Z0JBQ2QsS0FBSyxFQUFPLFFBQVE7Z0JBQ3BCLFNBQVMsRUFBRyxXQUFXO2dCQUN2QixNQUFNLEVBQU0sSUFBSTthQUNqQjtTQUNGLENBQUM7SUFFSixDQUFDOztnQkF0UUEsVUFBVTs7SUFzUVgsc0JBQUM7Q0FBQSxBQXRRRCxJQXNRQztTQXJRWSxlQUFlOzs7Ozs7OztJQU8xQixnQ0FBMEI7Ozs7Ozs7SUFPMUIsK0JBQTZCOzs7Ozs7OztJQVE3QixtQ0FBaUI7Ozs7Ozs7O0lBUWpCLG9DQUFrQjs7Ozs7OztJQVFsQiw4Q0FBeUI7Ozs7Ozs7Ozs7O0lBV3pCLG9DQUFnQjs7Ozs7Ozs7Ozs7Ozs7O0lBZWhCLGlDQUFtQzs7Ozs7Ozs7SUFRbkMsdUNBQXFCOzs7Ozs7Ozs7SUFTckIsdUNBQTRCOzs7Ozs7O0lBTzVCLG9DQUFpQjs7Ozs7Ozs7SUFRakIsa0NBQWU7Ozs7Ozs7SUFPZixzQ0FBbUI7Ozs7Ozs7SUFPbkIscUNBQWtCOzs7Ozs7OztJQVFsQixtQ0FBYTs7Ozs7Ozs7SUFRYix1Q0FBcUI7Ozs7Ozs7SUFPckIsMkNBQXlCOzs7Ozs7Ozs7SUFTekIsMkNBQXlCOzs7Ozs7OztJQVF6Qix5Q0FBb0I7Ozs7Ozs7OztJQVNwQix1Q0FBbUI7Ozs7Ozs7O0lBUW5CLHVDQUFpQzs7Ozs7Ozs7SUFRakMsc0NBQW1DOzs7Ozs7OztJQVFuQyxrQ0FBZ0I7Ozs7Ozs7O0lBUWhCLHlDQUE4Qjs7Ozs7OztJQU85Qix3Q0FBc0I7Ozs7Ozs7SUFPdEIsc0NBQTRCOzs7Ozs7O0lBTzVCLHFDQUEwQjs7Ozs7OztJQU8xQixxQ0FBNEI7Ozs7Ozs7SUFPNUIscUNBQTRCOzs7OztJQUs1QixzQ0FBK0I7Ozs7O0lBSy9CLGlDQVVFOzs7OztJQU1GLGtDQU9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lTZWxlY3RpemVJdGVtfSBmcm9tICcuL3NlbGVjdGl6ZS1pdGVtLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RpemVDb25maWcgIHtcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybSBsYWJlbCB0ZXh0XHJcbiAgICpcclxuICAgKiBEZWZhdWx0OiAnU2VsZWN0aXplIExhYmVsJ1xyXG4gICAqL1xyXG4gIGxhYmVsID0gJ1NlbGVjdGl6ZSBMYWJlbCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciB0ZXh0IHNob3duIG9uIGZvY3VzIG9yIGVycm9yXHJcbiAgICpcclxuICAgKiBEZWZhdWx0OiAnU2VsZWN0aXplIGhlbHAgdGV4dCdcclxuICAgKi9cclxuICBoZWxwID0gJ1NlbGVjdGl6ZSBoZWxwIHRleHQnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JjZSBjYXJldCB0byBzaG93LlxyXG4gICAqIE9ubHkgYXBwbGllcyB0byBtdWx0aSBzZWxlY3QuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIGhhc0NhcmV0ID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hbmRhdG9yeSBib29sZWFuIGNvbnRyb2xzIHdoZXRoZXIgdGhlICogaXMgc2hvd24gaW4gdGhlIGxhYmVsIG9yIG5vdC5cclxuICAgKiBIYXMgbm90aGluZyB0byBkbyB3aXRoIGZvcm1Db250cm9sLlxyXG4gICAqXHJcbiAgICogICogRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBtYW5kYXRvcnkgPSBmYWxzZTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEFycmF5IG9mIGNzcyBjbGFzcyBuYW1lcyB0aGF0IGNhbiBiZSBhcHBlbmRlZCB0byB0aGUgaW5wdXQgY29udHJvbCBlbGVtZW50XHJcbiAgICpcclxuICAgKiBEZWZhdWx0OiBbXVxyXG4gICAqL1xyXG4gIGlucHV0Q29udHJvbENsYXNzZXMgPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogIFRoZSBzdHJpbmcgdG8gc2VwYXJhdGUgaXRlbXMgYnkuIFdoZW4gdHlwaW5nIGFuIGl0ZW0gaW4gYSBtdWx0aS1zZWxlY3Rpb24gY29udHJvbFxyXG4gICAqICBhbGxvd2luZyBjcmVhdGlvbiwgdGhlbiB0aGUgZGVsaW1pdGVyLCB0aGUgaXRlbSBpcyBhZGRlZC4gSWYgeW91IHBhc3RlXHJcbiAgICogIGRlbGltaXRlci1zZXBhcmF0ZWQgaXRlbXMgaW4gc3VjaCBjb250cm9sLCB0aGUgaXRlbXMgYXJlIGFkZGVkIGF0IG9uY2UuXHJcbiAgICogIFRoZSBkZWxpbWl0ZXIgaXMgYWxzbyB1c2VkIGluIHRoZSBnZXRWYWx1ZSBBUEkgY2FsbCBvbiBhIHRleHQgPGlucHV0PiB0YWcgdG9cclxuICAgKiAgc2VwYXJhdGUgdGhlIG11bHRpcGxlIHZhbHVlcy5cclxuICAgKlxyXG4gICAqICBEZWZhdWx0OiAnLCdcclxuICAgKi9cclxuICBkZWxpbWl0ZXIgPSAnLCc7XHJcblxyXG4gIC8qKlxyXG4gICAqICBBbGxvd3MgdGhlIHVzZXIgdG8gY3JlYXRlIG5ldyBpdGVtcyB0aGF0IGFyZW4ndCBpbiB0aGUgaW5pdGlhbCBsaXN0IG9mIG9wdGlvbnMuXHJcbiAgICogIFRoaXMgc2V0dGluZyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmc6IHRydWUsIGZhbHNlIChkaXNhYmxlZCksIG9yIGEgZnVuY3Rpb25cclxuICAgKiAgdG8gcHJvY2VzcyBpbnB1dC4gVGhlIGZ1bmN0aW9uIGNhbiB0YWtlIG9uZSBvZiB0d28gZm9ybXM6IHN5bmNocm9ub3VzXHJcbiAgICogICh3aXRoIHNpZ25hdHVyZSBmdW5jdGlvbihpbnB1dCl7fSBvciBhc3luY2hyb25vdXNcclxuICAgKiAgKHdpdGggc2lnbmF0dXJlIGZ1bmN0aW9uKGlucHV0LCBjYWxsYmFjaykuIEluIHRoZSBzeW5jaHJvbm91cyBjYXNlLCB0aGUgZnVuY3Rpb25cclxuICAgKiAgc2hvdWxkIHJldHVybiBhbiBvYmplY3QgZm9yIHRoZSBvcHRpb25zXHJcbiAgICogIChlZywgd2l0aCBkZWZhdWx0czogcmV0dXJuIHsgJ3ZhbHVlJzogdmFsdWUsICd0ZXh0JzogdGV4dCB9OykuXHJcbiAgICogIFRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBzaG91bGQgaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIHRoZSByZXN1bHQgaW4gdGhlIHNhbWVcclxuICAgKiAgZm9ybWF0IGFzIHRoZSBvYmplY3QgYWJvdmUgKGVnLCBjYWxsYmFjayggeyAndmFsdWUnOiB2YWx1ZSwgJ3RleHQnOiB0ZXh0fSk7KVxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgY3JlYXRlOiBib29sZWFuIHwgRnVuY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogIElmIHRydWUsIHdoZW4gdXNlciBleGl0cyB0aGUgZmllbGQgKGNsaWNrcyBvdXRzaWRlIG9mIGlucHV0KSwgYSBuZXcgb3B0aW9uXHJcbiAgICogIGlzIGNyZWF0ZWQgYW5kIHNlbGVjdGVkIChpZiBjcmVhdGUgc2V0dGluZyBpcyBlbmFibGVkKS5cclxuICAgKlxyXG4gICAqICBEZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIGNyZWF0ZU9uQmx1ciA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiAgU3BlY2lmaWVzIGEgUmVnRXhwIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgY3VycmVudFxyXG4gICAqICBzZWFyY2ggZmlsdGVyIG11c3QgbWF0Y2ggdG8gYmUgYWxsb3dlZCB0byBiZSBjcmVhdGVkLiBNYXkgYWxzbyBiZSBhIHByZWRpY2F0ZVxyXG4gICAqICBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBmaWx0ZXIgdGV4dCBhbmQgcmV0dXJucyB3aGV0aGVyIGl0IGlzIGFsbG93ZWQuXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogbnVsbFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZpbHRlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogIFRvZ2dsZXMgbWF0Y2ggaGlnaGxpZ2h0aW5nIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudS5cclxuICAgKlxyXG4gICAqICBEZWZhdWx0OiB0cnVlXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0ID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogIElmIGZhbHNlLCBpdGVtcyBjcmVhdGVkIGJ5IHRoZSB1c2VyIHdpbGwgbm90IHNob3cgdXAgYXMgYXZhaWxhYmxlIG9wdGlvbnMgb25jZVxyXG4gICAqICB0aGV5IGFyZSB1bnNlbGVjdGVkLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgcGVyc2lzdCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqICBTaG93IHRoZSBkcm9wZG93biBpbW1lZGlhdGVseSB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGZvY3VzLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IHRydWVcclxuICAgKi9cclxuICBvcGVuT25Gb2N1cyA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqICBUaGUgbWF4IG51bWJlciBvZiBpdGVtcyB0byByZW5kZXIgYXQgb25jZSBpbiB0aGUgZHJvcGRvd24gbGlzdCBvZiBvcHRpb25zLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IDEwMDBcclxuICAgKi9cclxuICBtYXhPcHRpb25zID0gMTAwMDtcclxuXHJcbiAgLyoqXHJcbiAgICogIFRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIHRoZSB1c2VyIGNhbiBzZWxlY3QuIDEgbWFrZXMgdGhlIGNvbnRyb2wgbW9uby1zZWxlY3Rpb24sXHJcbiAgICogIG51bGwgYWxsb3dzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgaXRlbXMuXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogMVxyXG4gICAqL1xyXG4gIG1heEl0ZW1zID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogIElmIHRydWUsIHRoZSBpdGVtcyB0aGF0IGFyZSBjdXJyZW50bHkgc2VsZWN0ZWQgd2lsbCBub3QgYmUgc2hvd24gaW4gdGhlIGRyb3Bkb3duXHJcbiAgICogIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBoaWRlU2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogIElmIHRydWUsIHRoZSBkcm9wZG93biB3aWxsIGJlIGNsb3NlZCBhZnRlciBhIHNlbGVjdGlvbiBpcyBtYWRlLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgY2xvc2VBZnRlclNlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiAgSWYgdHJ1ZSwgU2VsZWN0aXplIHdpbGwgdHJlYXQgYW55IG9wdGlvbnMgd2l0aCBhIFwiXCIgdmFsdWUgbGlrZSBub3JtYWwuXHJcbiAgICogIFRoaXMgZGVmYXVsdHMgdG8gZmFsc2UgdG8gYWNjb21vZGF0ZSB0aGUgY29tbW9uIDxzZWxlY3Q+IHByYWN0aWNlIG9mXHJcbiAgICogIGhhdmluZyB0aGUgZmlyc3QgZW1wdHkgb3B0aW9uIHRvIGFjdCBhcyBhIHBsYWNlaG9sZGVyLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgYWxsb3dFbXB0eU9wdGlvbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiAgVGhlIGFuaW1hdGlvbiBkdXJhdGlvbiAoaW4gbWlsbGlzZWNvbmRzKSBvZiB0aGUgc2Nyb2xsIGFuaW1hdGlvblxyXG4gICAqICB0cmlnZ2VyZWQgd2hlbiBnb2luZyBbdXBdIGFuZCBbZG93bl0gaW4gdGhlIG9wdGlvbnMgZHJvcGRvd24uXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogNjBcclxuICAgKi9cclxuICBzY3JvbGxEdXJhdGlvbiA9IDYwO1xyXG5cclxuICAvKipcclxuICAgKiAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgcmVxdWVzdGluZyBvcHRpb25zIGZyb20gdGhlXHJcbiAgICogIHNlcnZlciBvciBudWxsLiBJZiBudWxsLCB0aHJvdHRsaW5nIGlzIGRpc2FibGVkLiBVc2VmdWwgd2hlbiBsb2FkaW5nXHJcbiAgICogIG9wdGlvbnMgZHluYW1pY2FsbHkgd2hpbGUgdGhlIHVzZXIgdHlwZXMgYSBzZWFyY2ggLyBmaWx0ZXIgZXhwcmVzc2lvbi5cclxuICAgKlxyXG4gICAqICBEZWZhdWx0OiAzMDBcclxuICAgKi9cclxuICBsb2FkVGhyb3R0bGUgPSAzMDA7XHJcblxyXG4gIC8qKlxyXG4gICAqICBUaGUgY2xhc3MgbmFtZSBhZGRlZCB0byB0aGUgd3JhcHBlciBlbGVtZW50IHdoaWxlIGF3YWl0aW5nIHRoZVxyXG4gICAqICBmdWxmaWxsbWVudCBvZiBsb2FkIHJlcXVlc3RzLlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6ICdsb2FkaW5nJ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9hZGluZ0NsYXNzID0gJ2xvYWRpbmcnO1xyXG5cclxuICAvKipcclxuICAgKiAgVGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBjb250cm9sIChkaXNwbGF5ZWQgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkIC8gdHlwZWQpLlxyXG4gICAqICBEZWZhdWx0cyB0byBpbnB1dCBlbGVtZW50J3MgcGxhY2Vob2xkZXIsIHVubGVzcyB0aGlzIG9uZSBpcyBzcGVjaWZpZWQuXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogbnVsbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqICBJZiB0cnVlLCB0aGUgbG9hZCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB1cG9uIGNvbnRyb2xcclxuICAgKiAgaW5pdGlhbGl6YXRpb24gKHdpdGggYW4gZW1wdHkgc2VhcmNoKS5cclxuICAgKlxyXG4gICAqICBEZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIHByZWxvYWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogIFRoZSBlbGVtZW50IHRoZSBkcm9wZG93biBtZW51IGlzIGFwcGVuZGVkIHRvLiBUaGlzIHNob3VsZCBiZSAnYm9keScgb3IgbnVsbC5cclxuICAgKiAgSWYgbnVsbCwgdGhlIGRyb3Bkb3duIHdpbGwgYmUgYXBwZW5kZWQgYXMgYSBjaGlsZCBvZiB0aGUgU2VsZWN0aXplIGNvbnRyb2wuXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogbnVsbFxyXG4gICAqL1xyXG4gIGRyb3Bkb3duUGFyZW50OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiAgSWYgdHJ1ZSwgdGhlIFwiQWRkLi4uXCIgb3B0aW9uIGlzIHRoZSBkZWZhdWx0IHNlbGVjdGlvbiBpbiB0aGUgZHJvcGRvd24uXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBhZGRQcmVjZWRlbmNlID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqICBJZiB0cnVlLCB0aGUgdGFiIGtleSB3aWxsIGNob29zZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uXHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBwcml2YXRlIHNlbGVjdE9uVGFiID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqICBFbmFibGUgb3IgZGlzYWJsZSBpbnRlcm5hdGlvbmFsIGNoYXJhY3RlciBzdXBwb3J0LlxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6IHRydWVcclxuICAgKi9cclxuICBwcml2YXRlIGRpYWNyaXRpY3MgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiAgVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIGxhYmVsIGluIHRoZSBvcHRpb25zIGFycmF5XHJcbiAgICpcclxuICAgKiAgRGVmYXVsdDogJ2xhYmVsJ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBsYWJlbEZpZWxkID0gJ2xhYmVsJztcclxuXHJcbiAgLyoqXHJcbiAgICogIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSB2YWx1ZSBpbiB0aGUgb3B0aW9ucyBhcnJheVxyXG4gICAqXHJcbiAgICogIERlZmF1bHQ6ICd2YWx1ZSdcclxuICAgKi9cclxuICBwdWJsaWMgdmFsdWVGaWVsZCA9ICd2YWx1ZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIGFuYWx5emUgd2hlbiBmaWx0ZXJpbmcgb3B0aW9ucy5cclxuICAgKi9cclxuICBwdWJsaWMgc2VhcmNoRmllbGQgPSBbJ2xhYmVsJ107XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgb3ZlcnJpZGUgaXRlbSByZW5kZXIgZnVuY3Rpb25cclxuICAgKi9cclxuICBwdWJsaWMgcmVuZGVyID0ge1xyXG4gICAgaXRlbTogKGl0ZW06IElTZWxlY3RpemVJdGVtLCBlc2NhcGU6IEZ1bmN0aW9uKTogc3RyaW5nID0+IHtcclxuICAgICAgY29uc3QgbXVsdGkgPSBgPHNwYW4gY2xhc3M9XCJoeC1iYWRnZSBpcy1tZWRpdW1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaHgtYmFkZ2UtY29udGVudFwiPmBcclxuICAgICAgICAgICAgICAgICAgICArIGVzY2FwZShpdGVtLmxhYmVsKSArXHJcbiAgICAgICAgICAgICAgICBgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5gO1xyXG4gICAgICBjb25zdCBzaW5nbGUgPSBgPGRpdiBjbGFzcz1cIml0ZW1cIj5gICsgZXNjYXBlKGl0ZW0ubGFiZWwpICsgYDwvZGl2PmA7XHJcbiAgICAgIHJldHVybiAoIXRoaXMubWF4SXRlbXMpID8gbXVsdGkgOiBzaW5nbGU7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICBTZWxlY3RpemUgcGx1Z2lucyB0byB1c2VcclxuICAgKi9cclxuICBwcml2YXRlIHBsdWdpbnMgPSB7XHJcbiAgICAncmVtb3ZlX2J1dHRvbic6IHtcclxuICAgICAgbGFiZWwgICAgIDogJycsXHJcbiAgICAgIHRpdGxlICAgICA6ICdSZW1vdmUnLFxyXG4gICAgICBjbGFzc05hbWUgOiAnaHgtZGVsZXRlJyxcclxuICAgICAgYXBwZW5kICAgIDogdHJ1ZVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG59XHJcbiJdfQ==