angular-tree-component
Version:
A simple yet powerful tree component for Angular2
1 lines • 24.2 kB
JavaScript
sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2RlZnMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlbGNvbWUgdG8gbmcydHJlZVxuICovXG5leHBvcnQgdHlwZSBJRFR5cGUgPSBzdHJpbmcgfCBudW1iZXI7XG5leHBvcnQgdHlwZSBJRFR5cGVEaWN0aW9uYXJ5ID0geyBbaWQ6IHN0cmluZ106IGJvb2xlYW4sIFtpZDogbnVtYmVyXTogYm9vbGVhbiB9O1xuXG4vKipcbiAqIFNlZSBJVHJlZU5vZGUgZm9yIGRvY3VtZW50YXRpb25cbiAqL1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBUcmVlTm9kZSA9IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBJQWxsb3dEcm9wRm4ge1xuICAoZWxlbWVudDogYW55LCB0bzoge3BhcmVudDogVHJlZU5vZGUsIGluZGV4OiBudW1iZXJ9LCAkZXZlbnQ/OiBhbnkpOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlSGVpZ2h0Rm4ge1xuICAobm9kZTogVHJlZU5vZGUpOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFsbG93RHJhZ0ZuIHtcbiAgKG5vZGU6IFRyZWVOb2RlKTogYm9vbGVhbjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlU3RhdGUge1xuICBleHBhbmRlZE5vZGVJZHM/OiBJRFR5cGVEaWN0aW9uYXJ5O1xuICBzZWxlY3RlZE5vZGVJZHM/OiBJRFR5cGVEaWN0aW9uYXJ5O1xuICBhY3RpdmVOb2RlSWRzPzogSURUeXBlRGljdGlvbmFyeTtcbiAgaGlkZGVuTm9kZUlkcz86IElEVHlwZURpY3Rpb25hcnk7XG4gIHNlbGVjdGVkTGVhZk5vZGVJZHM/OiBJRFR5cGVEaWN0aW9uYXJ5O1xuICBmb2N1c2VkTm9kZUlkPzogSURUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlT3B0aW9ucyB7XG4gICAvKipcbiAgICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYXR0cmlidXRlIG9mIHRoZSBub2RlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlcmUgYXJlIGNoaWxkIG5vZGVzLlxuXG4gICAgKiAqKkRlZmF1bHQgdmFsdWU6IGBoYXNDaGlsZHJlbmAuKipcblxuICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIG5vZGVzIGhhdmUgYW4gYGlzRGlyZWN0b3J5YCBhdHRyaWJ1dGUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgY2hpbGRyZW4sIHVzZTpcbiAgICBgYGBcbiAgICAgIG9wdGlvbnMgPSB7IGhhc0NoaWxkcmVuRmllbGQ6ICdpc0RpcmVjdG9yeScgfVxuICAgIGBgYFxuICAgICovXG4gICBoYXNDaGlsZHJlbkZpZWxkPzogc3RyaW5nO1xuICAgLyoqXG4gICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZSBhcnJheSBvZiBjaGlsZHJlbi5cblxuICAgICogKipEZWZhdWx0IHZhbHVlOiBgY2hpbGRyZW5gLioqXG5cbiAgICBGb3IgZXhhbXBsZSwgaWYgeW91ciBub2RlcyBoYXZlIGEgYG5vZGVzYCBhdHRyaWJ1dGUsIHRoYXQgY29udGFpbnMgdGhlIGNoaWxkcmVuLCB1c2U6XG4gICAgYGBgXG4gICAgICBvcHRpb25zID0geyBjaGlsZHJlbkZpZWxkOiAnbm9kZXMnIH1cbiAgICBgYGBcbiAgICAqL1xuICAgY2hpbGRyZW5GaWVsZD86IHN0cmluZztcbiAgIC8qKlxuICAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG5vZGUgdG8gZGlzcGxheS5cblxuICAgICogKipEZWZhdWx0IHZhbHVlOiBgbmFtZWAqKlxuXG4gICAgICBGb3IgZXhhbXBsZSwgaWYgeW91ciBub2RlcyBoYXZlIGEgYHRpdGxlYCBhdHRyaWJ1dGUgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkLCB1c2U6XG4gICAgICBgYGBcbiAgICAgICAgb3B0aW9ucyA9IHsgZGlzcGxheUZpZWxkOiAndGl0bGUnIH1cbiAgICAgIGBgYFxuICAgICovXG4gICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gICAvKipcbiAgICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYXR0cmlidXRlIG9mIHRoZSBub2RlIHRoYXQgY29udGFpbnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgYHBhdGhgLCB3aGljaCBpcyBhbiBhcnJheSBvZiBJRHMgdGhhdCBwb2ludCB0byB0aGUgbm9kZS5cblxuICAgICAgKiAqKkRlZmF1bHQgdmFsdWU6IGBpZGAuKipcblxuICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbm9kZXMgaGF2ZSBhIGB1dWlkYCBhdHRyaWJ1dGUsIHRoYXQgY29udGFpbnMgdGhlIHVuaXF1ZSBrZXksIHVzZTpcbiAgICAgIGBgYFxuICAgICAgICBvcHRpb25zID0geyBpZEZpZWxkOiAndXVpZCcgfVxuICAgICAgYGBgXG4gICAgKi9cbiAgIGlkRmllbGQ/OiBzdHJpbmc7XG4gICAvKipcbiAgICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYXR0cmlidXRlIG9mIHRoZSBub2RlIHRoYXQgY29udGFpbnMgd2hldGhlciB0aGUgbm9kZSBzdGFydHMgYXMgZXhwYW5kZWQuXG5cbiAgICAgICogKipEZWZhdWx0IHZhbHVlOiBgaXNFeHBhbmRlZGAuKipcblxuICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbm9kZXMgaGF2ZSBhbiBgZXhwYW5kZWRgIGF0dHJpYnV0ZSwgdGhhdCBjb250YWlucyBhIGJvb2xlYW4gdmFsdWUsIHVzZTpcbiAgICAgIGBgYFxuICAgICAgICBvcHRpb25zID0geyBpc0V4cGFuZGVkRmllbGQ6ICdleHBhbmRlZCcgfVxuICAgICAgYGBgXG4gICAgKi9cbiAgIGlzRXhwYW5kZWRGaWVsZD86IHN0cmluZztcbiAgIC8qKlxuICAgICogRnVuY3Rpb24gZm9yIGxvYWRpbmcgYSBub2RlJ3MgY2hpbGRyZW4uXG4gICAgICBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgYSBUcmVlTm9kZSwgYW5kIHJldHVybnMgYSB2YWx1ZSBvciBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbm9kZSdzIGNoaWxkcmVuLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbm9kZSBpcyBleHBhbmRlZCwgdGhlIGBoYXNDaGlsZHJlbmAgKGBvcHRpb25zLmhhc0NoaWxkcmVuRmllbGRgKVxuICAgICAgZmllbGQgaXMgdHJ1ZSwgYW5kIHRoZSBgY2hpbGRyZW5gIGZpZWxkIGlzIGVtcHR5LlxuICAgICAgVGhlIHJlc3VsdCB3aWxsIGJlIGxvYWRlZCBpbnRvIHRoZSBub2RlJ3MgY2hpbGRyZW4gYXR0cmlidXRlLlxuXG4gICAgICBFeGFtcGxlOlxuICAgICAgYGBgXG4gICAgICAqIG9wdGlvbnMgPSB7XG4gICAgICAqICAgZ2V0Q2hpbGRyZW46IChub2RlOlRyZWVOb2RlKSA9PiB7XG4gICAgICAqICAgICByZXR1cm4gcmVxdWVzdCgnL2FwaS9jaGlsZHJlbi8nICsgbm9kZS5pZCk7XG4gICAgICAqICAgfVxuICAgICAgKiB9XG4gICAgICBgYGBcbiAgICAqL1xuICAgZ2V0Q2hpbGRyZW4/OiAobm9kZTogVHJlZU5vZGUpID0+IGFueTtcbiAgIC8qKlxuICAgICogUmV3aXJlIHdoaWNoIHRyaWdnZXIgY2F1c2VzIHdoaWNoIGFjdGlvbiB1c2luZyB0aGlzIGF0dHJpYnV0ZSwgb3IgY3JlYXRlIGN1c3RvbSBhY3Rpb25zIC8gZXZlbnQgYmluZGluZ3MuXG4gICAgKiBTZWUgdGhlIFtBY3Rpb24gTWFwcGluZyBTZWN0aW9uXShodHRwczovL2FuZ3VsYXIyLXRyZWUucmVhZG1lLmlvL2RvY3MvYWN0aW9uLW1hcHBpbmcpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgKi9cbiAgIGFjdGlvbk1hcHBpbmc/OiBhbnk7XG4gICAvKipcbiAgICAqIFNwZWNpZnkgaWYgZHJhZ2dpbmcgdHJlZSBub2RlcyBpcyBhbGxvd2VkLlxuICAgICogVGhpcyBjb3VsZCBiZSBhIGJvb2xlYW4sIG9yIGEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIFRyZWVOb2RlIGFuZCByZXR1cm5zIGEgYm9vbGVhblxuXG4gICAgKiAqKkRlZmF1bHQgdmFsdWU6IGZhbHNlKipcblxuICAgIEV4YW1wbGU6XG4gICAgYGBgXG4gICAgKiBvcHRpb25zID0ge1xuICAgICogIGFsbG93RHJhZzogdHJ1ZVxuICAgICogfVxuICAgIGBgYFxuICAgICovXG4gICBhbGxvd0RyYWc/OiBib29sZWFuIHwgSUFsbG93RHJhZ0ZuO1xuICAgLyoqXG4gICAgKiBTcGVjaWZ5IHdoZXRoZXIgZHJvcHBpbmcgaW5zaWRlIHRoZSB0cmVlIGlzIGFsbG93ZWQuIE9wdGlvbmFsIHR5cGVzOlxuICAgICogIC0gYm9vbGVhblxuICAgICogIC0gKGVsZW1lbnQ6YW55LCB0bzp7cGFyZW50OlRyZWVOb2RlLCBpbmRleDpudW1iZXJ9KTpib29sZWFuXG4gICAgICAgICBBIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgdGhlIGRyYWdnZWQgZWxlbWVudCwgYW5kIHRoZSBkcm9wIGxvY2F0aW9uIChwYXJlbnQgbm9kZSBhbmQgaW5kZXggaW5zaWRlIHRoZSBwYXJlbnQpLFxuICAgICAgICAgYW5kIHJldHVybnMgdHJ1ZSBvciBmYWxzZS5cblxuICAgICogKipEZWZhdWx0IFZhbHVlOiB0cnVlKipcblxuICAgIGV4YW1wbGU6XG4gICAgYGBgXG4gICAgKiBvcHRpb25zID0ge1xuICAgICogIGFsbG93RHJvcDogKGVsZW1lbnQsIHtwYXJlbnQsIGluZGV4fSkgPT4gcGFyZW50LmlzTGVhZlxuICAgICogfVxuICAgIGBgYFxuICAgKi9cbiAgIGFsbG93RHJvcD86IGJvb2xlYW4gfCBJQWxsb3dEcm9wRm47XG4gICAgLyoqXG4gICAgQm9vbGVhbiBmbGFnIHRvIGFsbG93IGFkZGluZyBhbmQgcmVtb3ZpbmcgaXMtZHJhZ2dpbmctb3ZlciBhbmQgaXMtZHJhZ2dpbmctb3Zlci1kaXNhYmxlZCBjbGFzc2VzLlxuXG4gICAgSWYgc2V0IHRvIGZhbHNlIGl0IHdpbGwgbm90IGFkZCB0aGUgYWJvdmUgbWVudGlvbmVkIGNsYXNzZXMgYW5kIHlvdSBzaG91bGQgaGFuZGxlIHRoZSBzdHlsaW5nIHlvdXJzZWxmIHdpdGggY3NzIGFuZCBpblxuICAgIHRoZSBhY3Rpb25NYXBwaW5nIC0+IG1vdXNlIC0+IGRyYWdFbnRlciwgZHJhZ0xlYXZlXG5cbiAgICAqICoqRGVmYXVsdCBWYWx1ZTogdHJ1ZSoqXG5cbiAgICBleGFtcGxlOlxuICAgIGBgYFxuICAgICogb3B0aW9ucyA9IHtcbiAgICAqICAgYWxsb3dEcm9wOiB0cnVlLFxuICAgICogICBhbGxvd0RyYWdvdmVyU3R5bGluZzogZmFsc2VcbiAgICAqIH1cbiAgICBgYGBcbiAgICAqL1xuICAgYWxsb3dEcmFnb3ZlclN0eWxpbmc/OiBib29sZWFuO1xuICAgLyoqXG4gICAqIFNwZWNpZnkgcGFkZGluZyBwZXIgbm9kZSAoaW50ZWdlcikuXG4gICAgRWFjaCBub2RlIHdpbGwgaGF2ZSBwYWRkaW5nLWxlZnQgdmFsdWUgb2YgbGV2ZWwgKiBsZXZlbFBhZGRpbmcsIGluc3RlYWQgb2YgdXNpbmcgdGhlIGRlZmF1bHQgcGFkZGluZyBmb3IgY2hpbGRyZW4uXG5cbiAgICBUaGlzIG9wdGlvbiBpcyBnb29kIGZvciBleGFtcGxlIGZvciBhbGxvd2luZyB3aG9sZSByb3cgc2VsZWN0aW9uLCBldGMuXG5cbiAgICBZb3UgY2FuIGFsdGVybmF0aXZlbHkgdXNlIHRoZSB0cmVlLW5vZGUtbGV2ZWwtWCBjbGFzc2VzIHRvIGdpdmUgcGFkZGluZyBvbiBhIHBlci1sZXZlbCBiYXNpcy5cblxuICAgICogKipEZWZhdWx0IHZhbHVlOiAwKipcbiAgICovXG4gICBsZXZlbFBhZGRpbmc/OiBudW1iZXI7XG4gICAvKipcbiAgICAqIFNwZWNpZnkgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBjbGFzcyBwZXIgbm9kZS4gVXNlZnVsIGZvciBzdHlsaW5nIHRoZSBub2RlcyBpbmRpdmlkdWFsbHkuXG5cbiAgICAgIEV4YW1wbGU6XG4gICAgICBgYGBcbiAgICAgICogb3B0aW9ucyA9IHtcbiAgICAgICogICBub2RlQ2xhc3M6IChub2RlOlRyZWVOb2RlKSA9PiB7XG4gICAgICAqICAgICByZXR1cm4gJ2ljb24tJyArIG5vZGUuZGF0YS5pY29uO1xuICAgICAgKiAgIH1cbiAgICAgICogfVxuICAgICAgYGBgXG4gICAgKi9cbiAgIG5vZGVDbGFzcz86IChub2RlOiBUcmVlTm9kZSkgPT4gc3RyaW5nO1xuICAgLyoqXG4gICAgQm9vbGVhbiBmbGFnIHRvIHVzZSB0aGUgdmlydHVhbCBzY3JvbGwgb3B0aW9uLlxuXG4gICAgVG8gdXNlIHRoaXMgb3B0aW9uLCB5b3UgbXVzdCBzdXBwbHkgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmVyLCBhbmQgdGhlIGhlaWdodCBvZiBlYWNoIG5vZGUgaW4gdGhlIHRyZWUuXG5cbiAgICBZb3UgY2FuIGFsc28gc3BlY2lmeSBoZWlnaHQgZm9yIHRoZSBkcm9wU2xvdCB3aGljaCBpcyBsb2NhdGVkIGJldHdlZW4gbm9kZXMuXG5cbiAgICAqICoqRGVmYXVsdCBWYWx1ZTogZmFsc2UqKlxuXG4gICAgZXhhbXBsZTpcbiAgICBgYGBcbiAgICAqIG9wdGlvbnMgPSB7XG4gICAgKiAgIHVzZVZpcnR1YWxTY3JvbGw6IHRydWUsXG4gICAgKiAgIG5vZGVIZWlnaHQ6IChub2RlOiBUcmVlTm9kZSkgPT4gbm9kZS5teUhlaWdodCxcbiAgICAqICAgZHJvcFNsb3RIZWlnaHQ6IDNcbiAgICAqIH1cbiAgICBgYGBcbiAgICAqL1xuICAgdXNlVmlydHVhbFNjcm9sbD86IGJvb2xlYW47XG4gICAvKipcbiAgICAqIEZvciB1c2Ugd2l0aCBgdXNlVmlydHVhbFNjcm9sbGAgb3B0aW9uLlxuICAgICogU3BlY2lmeSBhIGhlaWdodCBmb3Igbm9kZXMgaW4gcGl4ZWxzLiBDb3VsZCBiZSBlaXRoZXI6XG4gICAgKiAtIG51bWJlclxuICAgICogLSAobm9kZTogVHJlZU5vZGUpID0+IG51bWJlclxuXG4gICAgKiAqKkRlZmF1bHQgVmFsdWU6IDIyKipcbiAgICAqL1xuICAgbm9kZUhlaWdodD86IG51bWJlciB8IElOb2RlSGVpZ2h0Rm47XG4gICAvKipcbiAgICAqIEZvciB1c2Ugd2l0aCBgdXNlVmlydHVhbFNjcm9sbGAgb3B0aW9uLlxuICAgICogU3BlY2lmeSBhIGhlaWdodCBmb3IgZHJvcCBzbG90cyAobG9jYXRlZCBiZXR3ZWVuIG5vZGVzKSBpbiBwaXhlbHNcblxuICAgICogKipEZWZhdWx0IFZhbHVlOiAyKipcbiAgICAqL1xuICAgZHJvcFNsb3RIZWlnaHQ/OiBudW1iZXI7XG4gICAvKipcbiAgICAqIEJvb2xlYW4gd2hldGhlciBvciBub3QgdG8gYW5pbWF0ZSBleHBhbmQgLyBjb2xsYXBzZSBvZiBub2Rlcy5cblxuICAgICogKipEZWZhdWx0IFZhbHVlOiBmYWxzZSoqXG4gICAgKi9cbiAgIGFuaW1hdGVFeHBhbmQ/OiBib29sZWFuO1xuICAgLyoqXG4gICAgKiBTcGVlZCBvZiBleHBhbmQgYW5pbWF0aW9uIChkZXNjcmliZWQgaW4gcGl4ZWxzIHBlciAxNyBtcykuXG5cbiAgICAqICoqRGVmYXVsdCBWYWx1ZTogMzAqKlxuICAgICovXG4gICBhbmltYXRlU3BlZWQ/OiBudW1iZXI7XG4gICAvKipcbiAgICAqIEluY3JlYXNlIG9mIGV4cGFuZCBhbmltYXRpb24gc3BlZWQgKGRlc2NyaWJlZCBpbiBtdWx0aXBseSBwZXIgMTcgbXMpLlxuXG4gICAgKiAqKkRlZmF1bHQgVmFsdWU6IDEuMioqXG4gICAgKi9cbiAgIGFuaW1hdGVBY2NlbGVyYXRpb24/OiBudW1iZXI7XG4gICAvKipcbiAgICAqIFdoZXRoZXIgdG8gc2Nyb2xsIHRvIHRoZSBub2RlIHRvIG1ha2UgaXQgdmlzaWJsZSB3aGVuIGl0IGlzIGFjdGl2YXRlZC5cblxuICAgICogKipEZWZhdWx0IFZhbHVlOiB0cnVlKipcbiAgICAqL1xuICAgc2Nyb2xsT25BY3RpdmF0ZT86IGJvb2xlYW47XG4gICAvKipcbiAgICAqIEZ1bmN0aW9uIHRvIGNsb25lIGEgbm9kZS5cbiAgICAqIFJlY2VpdmVzIGEgVHJlZU5vZGUgb2JqZWN0LCBhbmQgcmV0dXJucyBhIG5vZGUgb2JqZWN0IChvbmx5IHRoZSBkYXRhKS5cbiAgICAqIFRoaXMgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2hlbiBjb3B5aW5nIGEgbm9kZSBpbnNpZGUgdGhlIHRyZWUsXG4gICAgKiBieSBlaXRoZXIgY2FsbGluZyBjb3B5Tm9kZSwgb3IgYnkgZHJhZ2dpbmcgYW5kIGhvbGRpbmcgdGhlIGN0cmwga2V5XG4gICAgKlxuICAgICogRm9yIGV4YW1wbGU6XG4gICAgICBgYGBcbiAgICAgICAgb3B0aW9uczogSVRyZWVPcHRpb25zID0ge1xuICAgICAgICAgIGdldE5vZGVDbG9uZTogKG5vZGUpID0+ICh7XG4gICAgICAgICAgICAuLi5ub2RlLmRhdGEsXG4gICAgICAgICAgICBpZDogdXVpZC52NCgpLFxuICAgICAgICAgICAgbmFtZTogYGNvcHkgb2YgJHtub2RlLmRhdGEubmFtZX1gXG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIGBgYFxuICAgICpcbiAgICAqICoqRGVmYXVsdCBWYWx1ZTogY2xvbmUgdGhlIG5vZGUgdXNpbmcgT2JqZWN0LmFzc2lnbiwgYW5kIHJlbW92ZSAnaWQnIHByb3BlcnR5KipcbiAgICAqL1xuICAgIGdldE5vZGVDbG9uZT86IChub2RlOiBUcmVlTm9kZSkgPT4gYW55O1xuICAgIC8qKlxuICAgICAqIE1ha2VzIHRoZSB0cmVlIHJpZ2h0LXRvLWxlZnQuXG4gICAgICogVGhpcyBpbmNsdWRlIGRpcmVjdGlvbiwgZXhwYW5kZXIgc3R5bGUsIGFuZCBjaGFuZ2Uga2V5IGJpbmRpbmcgKHJpZ2h0IGtleSBjb2xsYXBzZSBhbmQgbGVmdCBrZXkgZXhwYW5kcyBpbnN0ZWFkIG9mIHZpY2UtdmVyc2EpXG4gICAgICovXG4gICAgcnRsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWQgb2Ygcm9vdCBub2RlICh2aXJ0dWFsUm9vdClcbiAgICAgKi9cbiAgICByb290SWQ/OiBhbnk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5IGEgY2hlY2tib3ggbmV4dCB0byB0aGUgbm9kZSBvciBub3RcbiAgICAgKi9cbiAgICB1c2VDaGVja2JveD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2UgbWFzdGVyIGNoZWNrYm94ZXMgbWVjaGFuaXNtIGlmIHRoZSB1c2VDaGVja2JveCBpcyBzZXQgdG8gdHJ1ZVxuICAgICAqL1xuICAgIHVzZVRyaVN0YXRlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgSFRNTCBlbGVtZW50IHRoYXQgaXMgdGhlIHNjcm9sbCBjb250YWluZXIgZm9yIHRoZSB0cmVlLlxuICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byB3cmFwIHRoZSB0cmVlIHdpdGggYSBjb250YWluZXIgdGhhdCBoYXMgb3ZlcmZsb3c6IGhpZGRlbixcbiAgICAgKiBhbmQgdGhlbiB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lciBpcyB0aGUgdmlld3BvcnQgaW5zaWRlIHRoZSB0cmVlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIHNjcm9sbENvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xuIH1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZU5vZGUge1xuICAvLyBwcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBQYXJlbnQgbm9kZVxuICAgKi9cbiAgcGFyZW50OiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5vZGUncyBmaWVsZCB0aGF0IGlzIHVzZWQgZm9yIGRpc3BsYXlpbmcgaXRzIGNvbnRlbnQuXG4gICAqIEJ5IGRlZmF1bHQgJ25hbWUnLCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgZGlzcGxheUZpZWxkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGRyZW4gb2YgdGhlIG5vZGUuXG4gICAqIEJ5IGRlZmF1bHQgaXMgZGV0ZXJtaW5lZCBieSAnbm9kZS5kYXRhLmNoaWxkcmVuJywgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UgaW4gdGhlIG9wdGlvbnNcbiAgICovXG4gIGNoaWxkcmVuOiBJVHJlZU5vZGVbXTtcbiAgLyoqXG4gICAqIFBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIGRhdGEuXG4gICAqL1xuICBkYXRhOiBhbnk7XG4gIC8qKlxuICAgKiBQb2ludGVyIHRvIHRoZSBFbGVtZW50UmVmIG9mIHRoZSBUcmVlTm9kZUNvbXBvbmVudCB0aGF0J3MgZGlzcGxheWluZyB0aGlzIG5vZGVcbiAgICovXG4gIGVsZW1lbnRSZWY6IGFueTtcbiAgLyoqXG4gICAqIExldmVsIGluIHRoZSB0cmVlIChzdGFydHMgZnJvbSAxKS5cbiAgICovXG4gIGxldmVsOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIGluIHRoZSB0cmVlOiBBcnJheSBvZiBJRHMuXG4gICAqL1xuICBwYXRoOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIGluZGV4IG9mIHRoZSBub2RlIGluc2lkZSBpdHMgcGFyZW50J3MgY2hpbGRyZW5cbiAgICovXG4gIGluZGV4OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBrZXkgb2YgdGhpcyBub2RlIGFtb25nIGl0cyBzaWJsaW5ncy5cbiAgICogQnkgZGVmYXVsdCBpdCdzIHRoZSAnaWQnIG9mIHRoZSBvcmlnaW5hbCBub2RlLCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSBpbiBvcHRpb25zLmlkRmllbGRcbiAgICovXG4gIGlkOiBJRFR5cGU7XG5cbiAgLy8gaGVscGVyc1xuICBpc0V4cGFuZGVkOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgaXNMZWFmOiBib29sZWFuO1xuICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbiAgaXNSb290OiBib29sZWFuO1xuXG4gIC8vIHRyYXZlcnNpbmdcbiAgLyoqXG4gICAqIEBwYXJhbSBza2lwSGlkZGVuIHdoZXRoZXIgdG8gc2tpcCBoaWRkZW4gbm9kZXNcbiAgICogQHJldHVybnMgbmV4dCBzaWJsaW5nIChvciBudWxsKVxuICAgKi9cbiAgZmluZE5leHRTaWJsaW5nKHNraXBIaWRkZW4pOiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBAcGFyYW0gc2tpcEhpZGRlbiB3aGV0aGVyIHRvIHNraXAgaGlkZGVuIG5vZGVzXG4gICAqIEByZXR1cm5zIHByZXZpb3VzIHNpYmxpbmcgKG9yIG51bGwpXG4gICAqL1xuICBmaW5kUHJldmlvdXNTaWJsaW5nKHNraXBIaWRkZW4pOiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBAcGFyYW0gc2tpcEhpZGRlbiB3aGV0aGVyIHRvIHNraXAgaGlkZGVuIG5vZGVzXG4gICAqIEByZXR1cm5zIGZpcnN0IGNoaWxkIChvciBudWxsKVxuICAgKi9cbiAgZ2V0Rmlyc3RDaGlsZChza2lwSGlkZGVuKTogSVRyZWVOb2RlO1xuICAvKipcbiAgICogQHBhcmFtIHNraXBIaWRkZW4gd2hldGhlciB0byBza2lwIGhpZGRlbiBub2Rlc1xuICAgKiBAcmV0dXJucyBsYXN0IGNoaWxkIChvciBudWxsKVxuICAgKi9cbiAgZ2V0TGFzdENoaWxkKHNraXBIaWRkZW4pOiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgdmlzdWFsbHkgbmV4dCBub2RlIGluIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gZ29JbnNpZGUgd2hldGhlciB0byBsb29rIGZvciBjaGlsZHJlbiBvciBqdXN0IHNpYmxpbmdzXG4gICAqIEByZXR1cm5zIG5leHQgbm9kZS5cbiAgICovXG4gIGZpbmROZXh0Tm9kZShnb0luc2lkZTogYm9vbGVhbik6IElUcmVlTm9kZTtcbiAgLyoqXG4gICAqIEZpbmRzIHRoZSB2aXN1YWxseSBwcmV2aW91cyBub2RlIGluIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gc2tpcEhpZGRlbiB3aGV0aGVyIHRvIHNraXAgaGlkZGVuIG5vZGVzXG4gICAqIEByZXR1cm5zIHByZXZpb3VzIG5vZGUuXG4gICAqL1xuICBmaW5kUHJldmlvdXNOb2RlKHNraXBIaWRkZW4pOiBJVHJlZU5vZGU7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zICAgICAgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBwYXJhbWV0ZXIgbm9kZVxuICAgKi9cbiAgaXNEZXNjZW5kYW50T2Yobm9kZTogSVRyZWVOb2RlKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMgICAgICBpbiBjYXNlIGxldmVsUGFkZGluZyBvcHRpb24gaXMgc3VwcGxpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgbm9kZSdzIHBhZGRpbmdcbiAgICovXG4gIGdldE5vZGVQYWRkaW5nKCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMgICAgICBpbiBjYXNlIG5vZGVDbGFzcyBvcHRpb24gaXMgc3VwcGxpZWQsIHJldHVybnMgdGhlIGN1cnJlbnQgbm9kZSdzIGNsYXNzXG4gICAqL1xuICBnZXRDbGFzcygpOiBzdHJpbmc7XG5cbiAgLy8gYWN0aW9uc1xuICAvKipcbiAgICogRXhwYW5kcyAvIENvbGxhcHNlcyB0aGUgbm9kZVxuICAgKi9cbiAgdG9nZ2xlRXhwYW5kZWQoKTtcbiAgLyoqXG4gICAqIEV4cGFuZHMgdGhlIG5vZGVcbiAgICovXG4gIGV4cGFuZCgpO1xuICAvKipcbiAgICogQ29sbGFwc2VzIHRoZSBub2RlXG4gICAqL1xuICBjb2xsYXBzZSgpO1xuICAvKipcbiAgICogRXhwYW5kcyBhbGwgYW5jZXN0b3JzIG9mIHRoZSBub2RlXG4gICAqL1xuICBlbnN1cmVWaXNpYmxlKCk7XG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgLyBEZWFjdGl2YXRlcyB0aGUgbm9kZSAoc2VsZWN0cyAvIGRlc2VsZWN0cylcbiAgICovXG4gIHRvZ2dsZUFjdGl2YXRlZChtdWx0aSk7XG4gIC8qKlxuICAgKiBGb2N1cyBvbiB0aGUgbm9kZVxuICAgKi9cbiAgZm9jdXMoKTtcbiAgLyoqXG4gICAqIEJsdXIgKHVuZm9jdXMpIHRoZSBub2RlXG4gICAqL1xuICBibHVyKCk7XG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgbm9kZVxuICAgKi9cbiAgaGlkZSgpO1xuICAvKipcbiAgICogTWFrZXMgdGhlIG5vZGUgdmlzaWJsZVxuICAgKi9cbiAgc2hvdygpO1xuICAvKipcbiAgICogQHBhcmFtIHZhbHVlICBpZiB0cnVlIG1ha2VzIHRoZSBub2RlIGhpZGRlbiwgb3RoZXJ3aXNlIHZpc2libGVcbiAgICovXG4gIHNldElzSGlkZGVuKHZhbHVlOiBib29sZWFuKTtcbiAgLyoqXG4gICAqIFNjcm9sbCB0aGUgc2NyZWVuIHRvIG1ha2UgdGhlIG5vZGUgdmlzaWJsZVxuICAgKi9cbiAgc2Nyb2xsSW50b1ZpZXcoKTtcbiAgLyoqXG4gICAqIEZpcmUgYW4gZXZlbnQgdG8gdGhlIHJlbmRlcmVyIG9mIHRoZSB0cmVlIChpZiBpdCB3YXMgcmVnaXN0ZXJlZClcbiAgICovXG4gIGZpcmVFdmVudChldmVudDogYW55KTtcbiAgLyoqXG4gICAqIEludm9rZXMgYSBtZXRob2QgZm9yIGV2ZXJ5IG5vZGUgdW5kZXIgdGhpcyBvbmUgLSBkZXB0aCBmaXJzdFxuICAgKiBAcGFyYW0gZm4gIGEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgbm9kZVxuICAgKi9cbiAgZG9Gb3JBbGwoZm46IChub2RlOiBJVHJlZU5vZGUpID0+IGFueSk7XG4gIC8qKlxuICAgKiBleHBhbmQgYWxsIG5vZGVzIHVuZGVyIHRoaXMgb25lXG4gICAqL1xuICBleHBhbmRBbGwoKTtcbiAgLyoqXG4gICAqIGNvbGxhcHNlIGFsbCBub2RlcyB1bmRlciB0aGlzIG9uZVxuICAgKi9cbiAgY29sbGFwc2VBbGwoKTtcbiAgLyoqXG4gICAqIHNldHMgdGhlIG5vZGUgdG8gYWN0aXZlIC8gaW5hY3RpdmUgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZS5cbiAgICogSWYgbXVsdGkgaXMgdHJ1ZSAoZGVmYXVsdCBmYWxzZSkgLSBkb2VzIGEgbXVsdGlzZWxlY3QuXG4gICAqL1xuICBzZXRJc0FjdGl2ZSh2YWx1ZTogYm9vbGVhbiwgbXVsdGk/OiBib29sZWFuKTtcbiAgLyoqXG4gICAqIHNldHMgdGhlIG5vZGUgdG8gYmUgYWN0aXZlIGFuZCBtYWtlcyBzdXJlIGl0J3MgdmlzaWJsZSBieSBleHBhbmRpbmcgYWxsIG5vZGVzIGFib3ZlIGl0IGFuZCBzY3JvbGxpbmcgaXQgaW50byB2aWV3LlxuICAgKiBWZXJ5IHNpbWlsYXIgdG8gY2FsbGluZyBgYWN0aXZhdGVgLCBgZW5zdXJlVmlzaWJsZWAgYW5kIGBzY3JvbGxJbnRvVmlld2AgbWV0aG9kcy5cbiAgICogSWYgbXVsdGkgaXMgdHJ1ZSAoZGVmYXVsdCBmYWxzZSkgLSBkb2VzIGEgbXVsdGlzZWxlY3QuXG4gICAqL1xuICBzZXRBY3RpdmVBbmRWaXNpYmxlKG11bHRpOiBib29sZWFuKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZU1vZGVsIHtcbiAgLy8gcHJvcGVydGllc1xuICAvKipcbiAgICogQWxsIHJvb3Qgbm9kZXNcbiAgICovXG4gIHJvb3RzOiBJVHJlZU5vZGVbXTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgZm9jdXNlZCBub2RlXG4gICAqL1xuICBmb2N1c2VkTm9kZTogSVRyZWVOb2RlO1xuICAvKipcbiAgICogT3B0aW9ucyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSB0cmVlIGNvbXBvbmVudFxuICAgKi9cbiAgb3B0aW9uczogSVRyZWVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBJcyB0aGUgdHJlZSBjdXJyZW50bHkgZm9jdXNlZFxuICAgKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMgQ3VycmVudCBhY3RpdmUgbm9kZXNcbiAgICovXG4gIGFjdGl2ZU5vZGVzOiBJVHJlZU5vZGVbXTtcbiAgLyoqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgZXhwYW5kZWQgbm9kZXNcbiAgICovXG4gIGV4cGFuZGVkTm9kZXM6IElUcmVlTm9kZVtdO1xuXG4gIC8vIGhlbHBlcnNcbiAgLyoqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgYWN0aXZlIG5vZGUuIElmIG11bHRpcGxlIG5vZGVzIGFyZSBhY3RpdmUgLSByZXR1cm5zIHRoZSBmaXJzdCBvbmUuXG4gICAqL1xuICBnZXRBY3RpdmVOb2RlKCk6IElUcmVlTm9kZTtcbiAgLyoqXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgZm9jdXNlZCBub2RlIChlaXRoZXIgaG92ZXJlZCBvciB0cmF2ZXJzZWQgd2l0aCBrZXlzKVxuICAgKi9cbiAgZ2V0Rm9jdXNlZE5vZGUoKTogSVRyZWVOb2RlO1xuICAvKipcbiAgICogU2V0IGZvY3VzIG9uIGEgbm9kZVxuICAgKiBAcGFyYW0gdmFsdWUgIHRydWUgb3IgZmFsc2UgLSB3aGV0aGVyIHRvIHNldCBmb2N1cyBvciBibHVyLlxuICAgKi9cbiAgc2V0Rm9jdXNlZE5vZGUobm9kZTogSVRyZWVOb2RlKTtcbiAgLyoqXG4gICAqIEBwYXJhbSBza2lwSGlkZGVuICB0cnVlIG9yIGZhbHNlIC0gd2hldGhlciB0byBza2lwIGhpZGRlbiBub2Rlc1xuICAgKiBAcmV0dXJucyAgICAgIGZpcnN0IHJvb3Qgb2YgdGhlIHRyZWVcbiAgICovXG4gIGdldEZpcnN0Um9vdChza2lwSGlkZGVuPzogYm9vbGVhbik6IElUcmVlTm9kZTtcbiAgLyoqXG4gICAqIEBwYXJhbSBza2lwSGlkZGVuICB0cnVlIG9yIGZhbHNlIC0gd2hldGhlciB0byBza2lwIGhpZGRlbiBub2Rlc1xuICAgKiBAcmV0dXJucyAgICAgIGxhc3Qgcm9vdCBvZiB0aGUgdHJlZVxuICAgKi9cbiAgZ2V0TGFzdFJvb3Qoc2tpcEhpZGRlbj86IGJvb2xlYW4pOiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBAcmV0dXJucyAgICAgIHRydWUgaWYgdGhlIHRyZWUgaXMgZW1wdHlcbiAgICovXG4gIGlzRW1wdHlUcmVlKCk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcmV0dXJucyBBbGwgcm9vdCBub2RlcyB0aGF0IHBhc3MgdGhlIGN1cnJlbnQgZmlsdGVyXG4gICAqL1xuICBnZXRWaXNpYmxlUm9vdHMoKTogSVRyZWVOb2RlW107XG4gIC8qKlxuICAgKiBAcGFyYW0gICAgIHBhdGggIGFycmF5IG9mIG5vZGUgSURzIHRvIGJlIHRyYXZlcnNlZCByZXNwZWN0aXZlbHlcbiAgICogQHBhcmFtICAgICBzdGF0ck5vZGUgIG9wdGlvbmFsLiBXaGljaCBub2RlIHRvIHN0YXJ0IHRyYXZlcnNpbmcgZnJvbVxuICAgKiBAcmV0dXJucyAgIFRoZSBub2RlLCBpZiBmb3VuZCAtIG51bGwgb3RoZXJ3aXNlXG4gICAqL1xuICBnZXROb2RlQnlQYXRoKHBhdGg6IGFueVtdLCBzdGFydE5vZGU/OiBJVHJlZU5vZGUpOiBJVHJlZU5vZGU7XG4gIC8qKlxuICAgKiBAcGFyYW0gICAgIGlkICBub2RlIElEIHRvIGZpbmRcbiAgICogQHJldHVybnMgICBUaGUgbm9kZSwgaWYgZm91bmQgLSBudWxsIG90aGVyd2lzZVxuICAgKi9cbiAgZ2V0Tm9kZUJ5SWQoaWQ6IElEVHlwZSk6IElUcmVlTm9kZTtcbiAgLyoqXG4gICAqIEBwYXJhbSAgICAgcHJlZGljYXRlIC0gZWl0aGVyIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9uLCB1c2VkIGFzIGEgdGVzdCBjb25kaXRpb24gb24gYWxsIG5vZGVzLlxuICAgKiAgICAgICAgICAgIENvdWxkIGJlIGV2ZXJ5IHByZWRpY2F0ZSB0aGF0J3Mgc3VwcG9ydGVkIGJ5IGxvZGFzaCdzIGBmaW5kYCBtZXRob2RcbiAgICogQHBhcmFtICAgICBzdGF0ck5vZGUgIG9wdGlvbmFsLiBXaGljaCBub2RlIHRvIHN0YXJ0IHRyYXZlcnNpbmcgZnJvbVxuICAgKiBAcmV0dXJucyAgIEZpcnN0IG5vZGUgdGhhdCBtYXRjaGVzIHRoZSBwcmVkaWNhdGUsIGlmIGZvdW5kIC0gbnVsbCBvdGhlcndpc2VcbiAgICovXG4gIGdldE5vZGVCeShwcmVkaWNhdGU6IGFueSwgc3RhcnROb2RlPzogSVRyZWVOb2RlKTogSVRyZWVOb2RlO1xuICAvKipcbiAgICogZ2V0IHRyZWUgc3RhdGVcbiAgICovXG4gIGdldFN0YXRlKCk6IElUcmVlU3RhdGU7XG5cbiAgLy8gYWN0aW9uc1xuICAvKipcbiAgICogRm9jdXNlcyBvciBibHVycyB0aGUgdHJlZVxuICAgKiBAcGFyYW0gdmFsdWUgIHRydWUgb3IgZmFsc2UgLSB3aGV0aGVyIHRvIHNldCBmb2N1cyBvciBibHVyLlxuICAgKi9cbiAgc2V0Rm9jdXModmFsdWU6IGJvb2xlYW4pO1xuICAvKipcbiAgICogRm9jdXNlcyBvbiB0aGUgbmV4dCBub2RlIGluIHRoZSB0cmVlIChzYW1lIGFzIGRvd24gYXJyb3cpXG4gICAqL1xuICBmb2N1c05leHROb2RlKCk7XG4gIC8qKlxuICAgKiBGb2N1c2VzIG9uIHRoZSBwcmV2aW91cyBub2RlIGluIHRoZSB0cmVlIChzYW1lIGFzIHVwIGFycm93KVxuICAgKi9cbiAgZm9jdXNQcmV2aW91c05vZGUoKTtcbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGlubmVyIGNoaWxkIG9mIHRoZSBjdXJyZW50IGZvY3VzZWQgbm9kZSAoc2FtZSBhcyByaWdodCBhcnJvdyBvbiBhbiBleHBhbmRlZCBub2RlKVxuICAgKi9cbiAgZm9jdXNEcmlsbERvd24oKTtcbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIHBhcmVudCBvZiB0aGUgY3VycmVudCBmb2N1c2VkIG5vZGUgKHNhbWUgYXMgbGVmdCBhcnJvdyBvbiBhIGNvbGxhcHNlZCBub2RlKVxuICAgKi9cbiAgZm9jdXNEcmlsbFVwKCk7XG4gIC8qKlxuICAgKiBNYXJrcyBpc0hpZGRlbiBmaWVsZCBpbiBhbGwgbm9kZXMgcmVjdXJzaXZlbHkgYWNjb3JkaW5nIHRvIHRoZSBmaWx0ZXIgcGFyYW0uXG4gICAqIElmIGEgbm9kZSBpcyBtYXJrZWQgdmlzaWJsZSwgYWxsIG9mIGl0cyBhbmNlc3RvcnMgd2lsbCBiZSBtYXJrZWQgdmlzaWJsZSBhcyB3ZWxsLlxuICAgKiBAcGFyYW0gZmlsdGVyICBlaXRoZXIgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbi5cbiAgICogICBJbiBjYXNlIGl0J3MgYSBzdHJpbmcsIGl0IHdpbGwgYmUgc2VhcmNoZWQgY2FzZSBpbnNlbnNpdGl2ZWx5IGluIHRoZSBub2RlJ3MgZGlzcGxheSBhdHRyaWJ1dGVcbiAgICogICBJbiBjYXNlIGl0J3MgYSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG5vZGUsIGFuZCBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIHZpc2libGUsIGZhbHNlIG90aGVyd2lzZVxuICAgKiBAcGFyYW0gYXV0b1Nob3cgIGlmIHRydWUsIG1ha2Ugc3VyZSBhbGwgbm9kZXMgdGhhdCBwYXNzZWQgdGhlIGZpbHRlciBhcmUgdmlzaWJsZVxuICAgKi9cbiAgZmlsdGVyTm9kZXMoZmlsdGVyLCBhdXRvU2hvdz86IGJvb2xlYW4pO1xuICAvKipcbiAgICogTWFya3MgYWxsIG5vZGVzIGlzSGlkZGVuID0gZmFsc2VcbiAgICovXG4gIGNsZWFyRmlsdGVyKCk7XG4gIC8qKlxuICAgKiBtb3ZlcyBhIG5vZGUgZnJvbSBvbmUgbG9jYXRpb24gaW4gdGhlIHRyZWUgdG8gYW5vdGhlclxuICAgKiBAcGFyYW0gbm9kZSBkZXNjcmliZXMgd2hpY2ggbm9kZSBuZWVkcyB0byBiZSBtb3ZlZFxuICAgKiBAcGFyYW0gdG8gZGVzY3JpYmVzIHdoZXJlIHRvIG1vdmUgdGhlIG5vZGUgdG8uXG4gICAqIEBwYXJhbSBmcm9tIGRlc2NyaWJlcyB3aGVyZSB0byBtb3ZlIHRoZSBub2RlIGZyb20uXG4gICAqIENvbnRhaW5zIGEgJ3BhcmVudCcgbm9kZSwgYW4gJ2luZGV4JywgYW5kIGEgJ2Ryb3BPbk5vZGUnIC0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkcm9wcGluZyBiZXR3ZWVuIG5vZGVzIG9yIG9uIHRoZSBub2RlXG4gICAqL1xuICBtb3ZlTm9kZShub2RlOiBJVHJlZU5vZGUsIHRvOiB7cGFyZW50OiBJVHJlZU5vZGUsIGluZGV4OiBudW1iZXIsIGRyb3BPbk5vZGU6IGJvb2xlYW59LCBmcm9tOiB7cGFyZW50OiBJVHJlZU5vZGUsIGluZGV4OiBudW1iZXJ9KTtcbiAgLyoqXG4gICAqIEludm9rZXMgYSBtZXRob2QgZm9yIGV2ZXJ5IG5vZGUgb2YgdGhlIHRyZWUgLSBkZXB0aCBmaXJzdFxuICAgKiBAcGFyYW0gZm4gIGEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgbm9kZVxuICAgKi9cbiAgZG9Gb3JBbGwoZm46IChub2RlOiBJVHJlZU5vZGUpID0+IGFueSk7XG4gIC8qKlxuICAgKiBleHBhbmQgYWxsIG5vZGVzXG4gICAqL1xuICBleHBhbmRBbGwoKTtcbiAgLyoqXG4gICAqIGNvbGxhcHNlIGFsbCBub2Rlc1xuICAgKi9cbiAgY29sbGFwc2VBbGwoKTtcbiAgLyoqXG4gICAqIHNldCB0cmVlIHN0YXRlXG4gICAqL1xuICBzZXRTdGF0ZShzdGF0ZTogSVRyZWVTdGF0ZSk7XG5cbiAgc3Vic2NyaWJlVG9TdGF0ZShmbjogKHN0YXRlOiBJVHJlZVN0YXRlKSA9PiBhbnkpO1xufVxuLyoqXG4gKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIFRyZWVOb2RlRHJhZyBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWVOb2RlRHJhZyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGRyYWdnZWQgbm9kZS4gVXNlZnVsIGZvciBvdmVycmlkaW5nIHRoZSBkcm9wIGFjdGlvbi5cbiAgICogQHBhcmFtIG5vZGUgIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgY3VycmVudCBkcmFnZ2VkIG5vZGVcbiAgICogQHBhcmFtIGluZGV4ICBUaGUgaW5kZXggaW5zaWRlIHBhcmVudCdzIGNoaWxkcmVuLCBvZiB0aGUgY3VycmVudCBkcmFnZ2VkIG5vZGVcbiAgICovXG4gIGdldERyYWdOb2RlKCk6IHsgbm9kZTogVHJlZU5vZGUsIGluZGV4OiBudW1iZXIgfTtcbn1cbiJdfQ==