angular-three 2.9.0 → 2.10.1

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuXHRDYW1lcmEsXG5cdENsb2NrLFxuXHRFdmVudERpc3BhdGNoZXIsXG5cdEludGVyc2VjdGlvbixcblx0T2JqZWN0M0QsXG5cdE9ydGhvZ3JhcGhpY0NhbWVyYSxcblx0UGVyc3BlY3RpdmVDYW1lcmEsXG5cdFJheSxcblx0UmF5Y2FzdGVyLFxuXHRTY2VuZSxcblx0VmVjdG9yMixcblx0VmVjdG9yMyxcblx0V2ViR0xSZW5kZXJlcixcblx0V2ViR0xSZW5kZXJlclBhcmFtZXRlcnMsXG5cdFdlYkdMU2hhZG93TWFwLFxufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RPYmplY3QzRE5vZGUgfSBmcm9tICcuL3RocmVlLXR5cGVzJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuXG5leHBvcnQgdHlwZSBOZ3RQcm9wZXJ0aWVzPFQ+ID0geyBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55ID8gbmV2ZXIgOiBLXTogVFtLXSB9O1xuZXhwb3J0IHR5cGUgTmd0QW55UmVjb3JkID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuZXhwb3J0IHR5cGUgTmd0RXF1Q29uZmlnID0ge1xuXHQvKiogQ29tcGFyZSBhcnJheXMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG5cdGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuXHQvKiogQ29tcGFyZSBvYmplY3RzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuXHRvYmplY3RzPzogJ3JlZmVyZW5jZScgfCAnc2hhbGxvdyc7XG5cdC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuXHRzdHJpY3Q/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0R0xPcHRpb25zID1cblx0fCBOZ3RSZW5kZXJlckxpa2Vcblx0fCAoKGNhbnZhczogTmd0Q2FudmFzRWxlbWVudCkgPT4gTmd0UmVuZGVyZXJMaWtlKVxuXHR8IFBhcnRpYWw8Tmd0UHJvcGVydGllczxXZWJHTFJlbmRlcmVyPiB8IFdlYkdMUmVuZGVyZXJQYXJhbWV0ZXJzPlxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RDYW52YXNPcHRpb25zIHtcblx0LyoqIEEgdGhyZWVqcyByZW5kZXJlciBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmVuZGVyZXIgKi9cblx0Z2w/OiBOZ3RHTE9wdGlvbnM7XG5cdC8qKiBEaW1lbnNpb25zIHRvIGZpdCB0aGUgcmVuZGVyZXIgdG8uIFdpbGwgbWVhc3VyZSBjYW52YXMgZGltZW5zaW9ucyBpZiBvbWl0dGVkICovXG5cdHNpemU/OiBOZ3RTaXplO1xuXHQvKipcblx0ICogRW5hYmxlcyBzaGFkb3dzIChieSBkZWZhdWx0IFBDRnNvZnQpLiBDYW4gYWNjZXB0IGBnbC5zaGFkb3dNYXBgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nLFxuXHQgKiBidXQgYWxzbyBzdHJpbmdzOiAnYmFzaWMnIHwgJ3BlcmNlbnRhZ2UnIHwgJ3NvZnQnIHwgJ3ZhcmlhbmNlJy5cblx0ICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9yZW5kZXJlcnMvV2ViR0xSZW5kZXJlci5zaGFkb3dNYXBcblx0ICovXG5cdHNoYWRvd3M/OiBib29sZWFuIHwgJ2Jhc2ljJyB8ICdwZXJjZW50YWdlJyB8ICdzb2Z0JyB8ICd2YXJpYW5jZScgfCBQYXJ0aWFsPFdlYkdMU2hhZG93TWFwPjtcblx0LyoqXG5cdCAqIERpc2FibGVzIHRocmVlIHIxMzkgY29sb3IgbWFuYWdlbWVudC5cblx0ICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI21hbnVhbC9lbi9pbnRyb2R1Y3Rpb24vQ29sb3ItbWFuYWdlbWVudFxuXHQgKi9cblx0bGVnYWN5PzogYm9vbGVhbjtcblx0LyoqIFN3aXRjaCBvZmYgYXV0b21hdGljIHNSR0IgY29sb3Igc3BhY2UgYW5kIGdhbW1hIGNvcnJlY3Rpb24gKi9cblx0bGluZWFyPzogYm9vbGVhbjtcblx0LyoqIFVzZSBgVEhSRUUuTm9Ub25lTWFwcGluZ2AgaW5zdGVhZCBvZiBgVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nYCAqL1xuXHRmbGF0PzogYm9vbGVhbjtcblx0LyoqIENyZWF0ZXMgYW4gb3J0aG9ncmFwaGljIGNhbWVyYSAqL1xuXHRvcnRob2dyYXBoaWM/OiBib29sZWFuO1xuXHQvKipcblx0ICogUjNGJ3MgcmVuZGVyIG1vZGUuIFNldCB0byBgZGVtYW5kYCB0byBvbmx5IHJlbmRlciBvbiBzdGF0ZSBjaGFuZ2Ugb3IgYG5ldmVyYCB0byB0YWtlIGNvbnRyb2wuXG5cdCAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNvbi1kZW1hbmQtcmVuZGVyaW5nXG5cdCAqL1xuXHRmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcblx0LyoqXG5cdCAqIFIzRiBwZXJmb3JtYW5jZSBvcHRpb25zIGZvciBhZGFwdGl2ZSBwZXJmb3JtYW5jZS5cblx0ICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI21vdmVtZW50LXJlZ3Jlc3Npb25cblx0ICovXG5cdHBlcmZvcm1hbmNlPzogUGFydGlhbDxPbWl0PE5ndFBlcmZvcm1hbmNlLCAncmVncmVzcyc+Pjtcblx0LyoqIFRhcmdldCBwaXhlbCByYXRpby4gQ2FuIGNsYW1wIGJldHdlZW4gYSByYW5nZTogYFttaW4sIG1heF1gICovXG5cdGRwcj86IE5ndERwcjtcblx0LyoqIFByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCByYXljYXN0ZXIgKi9cblx0cmF5Y2FzdGVyPzogUGFydGlhbDxSYXljYXN0ZXI+O1xuXHQvKiogQSBgU2NlbmVgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBzY2VuZSAqL1xuXHRzY2VuZT86IFNjZW5lIHwgUGFydGlhbDxTY2VuZT47XG5cdC8qKiBBIGBDYW1lcmFgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBjYW1lcmEgKi9cblx0Y2FtZXJhPzogKFxuXHRcdHwgTmd0Q2FtZXJhXG5cdFx0fCBQYXJ0aWFsPFxuXHRcdFx0XHROZ3RPYmplY3QzRE5vZGU8Q2FtZXJhLCB0eXBlb2YgQ2FtZXJhPiAmXG5cdFx0XHRcdFx0Tmd0T2JqZWN0M0ROb2RlPFBlcnNwZWN0aXZlQ2FtZXJhLCB0eXBlb2YgUGVyc3BlY3RpdmVDYW1lcmE+ICZcblx0XHRcdFx0XHROZ3RPYmplY3QzRE5vZGU8T3J0aG9ncmFwaGljQ2FtZXJhLCB0eXBlb2YgT3J0aG9ncmFwaGljQ2FtZXJhPlxuXHRcdCAgPlxuXHQpICYge1xuXHRcdC8qKiBGbGFncyB0aGUgY2FtZXJhIGFzIG1hbnVhbCwgcHV0dGluZyBwcm9qZWN0aW9uIGludG8geW91ciBvd24gaGFuZHMgKi9cblx0XHRtYW51YWw/OiBib29sZWFuO1xuXHR9O1xuXHQvKiogQW4gUjNGIGV2ZW50IG1hbmFnZXIgdG8gbWFuYWdlIGVsZW1lbnRzJyBwb2ludGVyIGV2ZW50cyAqL1xuXHRldmVudHM/OiAoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikgPT4gTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50Pjtcblx0LyoqIFRoZSB0YXJnZXQgd2hlcmUgZXZlbnRzIGFyZSBiZWluZyBzdWJzY3JpYmVkIHRvLCBkZWZhdWx0OiB0aGUgZGl2IHRoYXQgd3JhcHMgY2FudmFzICovXG5cdGV2ZW50U291cmNlPzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcblx0LyoqIFRoZSBldmVudCBwcmVmaXggdGhhdCBpcyBjYXN0IGludG8gY2FudmFzIHBvaW50ZXIgeC95IGV2ZW50cywgZGVmYXVsdDogXCJvZmZzZXRcIiAqL1xuXHRldmVudFByZWZpeD86ICdvZmZzZXQnIHwgJ2NsaWVudCcgfCAncGFnZScgfCAnbGF5ZXInIHwgJ3NjcmVlbic7XG5cdC8qKiBEZWZhdWx0IGNvb3JkaW5hdGUgZm9yIHRoZSBjYW1lcmEgdG8gbG9vayBhdCAqL1xuXHRsb29rQXQ/OiBWZWN0b3IzIHwgUGFyYW1ldGVyczxWZWN0b3IzWydzZXQnXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0SW50ZXJzZWN0aW9uIGV4dGVuZHMgSW50ZXJzZWN0aW9uIHtcblx0LyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cblx0ZXZlbnRPYmplY3Q6IE9iamVjdDNEO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbkV2ZW50PFRTb3VyY2VFdmVudD4gZXh0ZW5kcyBOZ3RJbnRlcnNlY3Rpb24ge1xuXHQvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuXHRldmVudE9iamVjdDogT2JqZWN0M0Q7XG5cdC8qKiBBbiBhcnJheSBvZiBpbnRlcnNlY3Rpb25zICovXG5cdGludGVyc2VjdGlvbnM6IE5ndEludGVyc2VjdGlvbltdO1xuXHQvKiogdmVjMy5zZXQocG9pbnRlci54LCBwb2ludGVyLnksIDApLnVucHJvamVjdChjYW1lcmEpICovXG5cdHVucHJvamVjdGVkUG9pbnQ6IFZlY3RvcjM7XG5cdC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG5cdHBvaW50ZXI6IFZlY3RvcjI7XG5cdC8qKiBEZWx0YSBiZXR3ZWVuIGZpcnN0IGNsaWNrIGFuZCB0aGlzIGV2ZW50ICovXG5cdGRlbHRhOiBudW1iZXI7XG5cdC8qKiBUaGUgcmF5IHRoYXQgcGllcmNlZCBpdCAqL1xuXHRyYXk6IFJheTtcblx0LyoqIFRoZSBjYW1lcmEgdGhhdCB3YXMgdXNlZCBieSB0aGUgcmF5Y2FzdGVyICovXG5cdGNhbWVyYTogTmd0Q2FtZXJhO1xuXHQvKiogc3RvcFByb3BhZ2F0aW9uIHdpbGwgc3RvcCB1bmRlcmx5aW5nIGhhbmRsZXJzIGZyb20gZmlyaW5nICovXG5cdHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcblx0LyoqIFRoZSBvcmlnaW5hbCBob3N0IGV2ZW50ICovXG5cdG5hdGl2ZUV2ZW50OiBUU291cmNlRXZlbnQ7XG5cdC8qKiBJZiB0aGUgZXZlbnQgd2FzIHN0b3BwZWQgYnkgY2FsbGluZyBzdG9wUHJvcGFnYXRpb24gKi9cblx0c3RvcHBlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhID0gT3J0aG9ncmFwaGljQ2FtZXJhIHwgUGVyc3BlY3RpdmVDYW1lcmE7XG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRIYW5kbGVycyA9IHtcblx0Y2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG5cdGNvbnRleHRtZW51PzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xuXHRkYmxjbGljaz86IChldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50PikgPT4gdm9pZDtcblx0cG9pbnRlcnVwPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJkb3duPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJvdmVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJvdXQ/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcblx0cG9pbnRlcmVudGVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJsZWF2ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuXHRwb2ludGVybW92ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuXHRwb2ludGVybWlzc2VkPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuXHRwb2ludGVyY2FuY2VsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHdoZWVsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRzID0ge1xuXHRbVEV2ZW50IGluIGtleW9mIE5ndEV2ZW50SGFuZGxlcnNdLT86IEV2ZW50TGlzdGVuZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RGaWx0ZXJGdW5jdGlvbiA9IChpdGVtczogSW50ZXJzZWN0aW9uW10sIHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4pID0+IEludGVyc2VjdGlvbltdO1xuZXhwb3J0IHR5cGUgTmd0Q29tcHV0ZUZ1bmN0aW9uID0gKFxuXHRldmVudDogTmd0RG9tRXZlbnQsXG5cdHJvb3Q6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0cHJldmlvdXM6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiB8IG51bGwsXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0PiA9IHtcblx0LyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHQvKiogRXZlbnQgbGF5ZXIgcHJpb3JpdHksIGhpZ2hlciBwcmlvcml0aXplZCBsYXllcnMgY29tZSBmaXJzdCBhbmQgbWF5IHN0b3AoLXByb3BhZ2F0ZSkgbG93ZXIgbGF5ZXIgICovXG5cdHByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBUaGUgY29tcHV0ZSBmdW5jdGlvbiBuZWVkcyB0byBzZXQgdXAgdGhlIHJheWNhc3RlciBhbmQgYW4geHktIHBvaW50ZXIgICovXG5cdGNvbXB1dGU/OiBOZ3RDb21wdXRlRnVuY3Rpb247XG5cdC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG5cdGZpbHRlcj86IE5ndEZpbHRlckZ1bmN0aW9uO1xuXHQvKiogVGhlIHRhcmdldCBub2RlIHRoZSBldmVudCBsYXllciBpcyB0aWVkIHRvICovXG5cdGNvbm5lY3RlZD86IFRUYXJnZXQ7XG5cdC8qKiBBbGwgdGhlIHBvaW50ZXIgZXZlbnQgaGFuZGxlcnMgdGhyb3VnaCB3aGljaCB0aGUgaG9zdCBmb3J3YXJkcyBuYXRpdmUgZXZlbnRzICovXG5cdGhhbmRsZXJzPzogTmd0RXZlbnRzO1xuXHQvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cblx0Y29ubmVjdD86ICh0YXJnZXQ6IFRUYXJnZXQpID0+IHZvaWQ7XG5cdC8qKiBSZW1vdmVzIGFsbCBleGlzdGluZyBldmVudHMgaGFuZGxlcnMgZnJvbSB0aGUgdGFyZ2V0ICovXG5cdGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xuXHQvKiogVHJpZ2dlcnMgYSBvblBvaW50ZXJNb3ZlIHdpdGggdGhlIGxhc3Qga25vd24gZXZlbnQuIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBlbmFibGUgcmF5Y2FzdGluZyB3aXRob3V0XG5cdCAqICBleHBsaWNpdCB1c2VyIGludGVyYWN0aW9uLCBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgY2FtZXJhIG1vdmVzIGEgaG92ZXJhYmxlIG9iamVjdCB1bmRlcm5lYXRoIHRoZSBjdXJzb3IuXG5cdCAqL1xuXHR1cGRhdGU/OiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldCB7XG5cdGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuXHR0YXJnZXQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndEF0dGFjaEZ1bmN0aW9uPFRDaGlsZCA9IGFueSwgVFBhcmVudCA9IGFueT4gPSAoXG5cdHBhcmVudDogVFBhcmVudCxcblx0Y2hpbGQ6IFRDaGlsZCxcblx0c3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcbikgPT4gdm9pZCB8ICgoKSA9PiB2b2lkKTtcblxuZXhwb3J0IHR5cGUgTmd0QXR0YWNoYWJsZTxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID0gTmd0QXR0YWNoRnVuY3Rpb248VENoaWxkLCBUUGFyZW50PiB8IHN0cmluZyB8IHN0cmluZ1tdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEFmdGVyQXR0YWNoPFxuXHRUQ2hpbGQgZXh0ZW5kcyBOZ3RJbnN0YW5jZU5vZGUgPSBOZ3RJbnN0YW5jZU5vZGUsXG5cdFRQYXJlbnQgZXh0ZW5kcyBOZ3RJbnN0YW5jZU5vZGUgPSBOZ3RJbnN0YW5jZU5vZGUsXG4+IHtcblx0cGFyZW50OiBUUGFyZW50O1xuXHRub2RlOiBUQ2hpbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9jYWxJbnN0YW5jZVN0YXRlIHtcblx0b2JqZWN0czogTmd0SW5zdGFuY2VOb2RlW107XG5cdG5vbk9iamVjdHM6IE5ndEluc3RhbmNlTm9kZVtdO1xuXHRwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSB8IG51bGw7XG5cdGdlb21ldHJ5U3RhbXA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RMb2NhbFN0YXRlIHtcblx0LyoqIHRoZSBzdG9yZSBvZiB0aGUgY2FudmFzIHRoYXQgdGhlIGluc3RhbmNlIGlzIGJlaW5nIHJlbmRlcmVkIHRvICovXG5cdHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT47XG5cdC8vIG9iamVjdHMgcmVsYXRlZCB0byB0aGlzIGluc3RhbmNlXG5cdGluc3RhbmNlU3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndExvY2FsSW5zdGFuY2VTdGF0ZT47XG5cdC8vIHNob3J0Y3V0IHRvIHNpZ25hbHNcblx0cGFyZW50OiBTaWduYWw8Tmd0TG9jYWxJbnN0YW5jZVN0YXRlWydwYXJlbnQnXT47XG5cdG9iamVjdHM6IFNpZ25hbDxOZ3RMb2NhbEluc3RhbmNlU3RhdGVbJ29iamVjdHMnXT47XG5cdG5vbk9iamVjdHM6IFNpZ25hbDxOZ3RMb2NhbEluc3RhbmNlU3RhdGVbJ25vbk9iamVjdHMnXT47XG5cblx0Ly8gc2hvcnRjdXQgdG8gYWRkL3JlbW92ZSBvYmplY3QgdG8gbGlzdFxuXHRhZGQ6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG5cdHJlbW92ZTogKGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUsIHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJykgPT4gdm9pZDtcblx0c2V0UGFyZW50OiAocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUgfCBudWxsKSA9PiB2b2lkO1xuXHR1cGRhdGVHZW9tZXRyeVN0YW1wOiAoKSA9PiB2b2lkO1xuXG5cdC8vIGlmIHRoaXMgVEhSRUUgaW5zdGFuY2UgaXMgYSBuZ3QtcHJpbWl0aXZlXG5cdHByaW1pdGl2ZT86IGJvb2xlYW47XG5cdC8vIGlmIHRoaXMgVEhSRUUgb2JqZWN0IGhhcyBhbnkgZXZlbnRzIGJvdW5kIHRvIGl0XG5cdGV2ZW50Q291bnQ6IG51bWJlcjtcblx0Ly8gbGlzdCBvZiBoYW5kbGVycyB0byBoYW5kbGUgdGhlIGV2ZW50c1xuXHRoYW5kbGVyczogUGFydGlhbDxOZ3RFdmVudEhhbmRsZXJzPjtcblx0Ly8gYXR0YWNoIGluZm9ybWF0aW9uIHNvIHRoYXQgd2UgY2FuIGRldGFjaCBhcyB3ZWxsIGFzIHJlc2V0XG5cdGF0dGFjaD86IHN0cmluZ1tdIHwgTmd0QXR0YWNoRnVuY3Rpb247XG5cdC8vIHByZXZpb3VzbHkgYXR0YWNoIGluZm9ybWF0aW9uIHNvIHdlIGNhbiByZXNldCBhcyB3ZWxsIGFzIGNsZWFuIHVwXG5cdHByZXZpb3VzQXR0YWNoPzogdW5rbm93biB8ICgoKSA9PiB2b2lkKTtcblx0Ly8gaXMgcmF3IHZhbHVlXG5cdGlzUmF3PzogYm9vbGVhbjtcblx0Ly8gcHJpb3JpdHkgZm9yIGJlZm9yZSByZW5kZXJcblx0cHJpb3JpdHk/OiBudW1iZXI7XG5cdG9uVXBkYXRlPzogKG5vZGU6IE5ndEluc3RhbmNlTm9kZSkgPT4gdm9pZDtcblx0b25BdHRhY2g/OiAoYWZ0ZXJBdHRhY2g6IE5ndEFmdGVyQXR0YWNoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RJbnN0YW5jZU5vZGU8VE5vZGUgPSBhbnk+ID0geyBfX25ndF9fOiBOZ3RMb2NhbFN0YXRlIH0gJiBOZ3RBbnlSZWNvcmQgJiBUTm9kZTtcblxuZXhwb3J0IHR5cGUgTmd0Q2FudmFzRWxlbWVudCA9IEhUTUxDYW52YXNFbGVtZW50IHwgT2Zmc2NyZWVuQ2FudmFzO1xuZXhwb3J0IHR5cGUgTmd0R2xvYmFsUmVuZGVyQ2FsbGJhY2sgPSAodGltZVN0YW1wOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlcmVyTGlrZSA9IHsgcmVuZGVyOiAoc2NlbmU6IFNjZW5lLCBjYW1lcmE6IENhbWVyYSkgPT4gYW55IH07XG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFNYW51YWwgPSBOZ3RDYW1lcmEgJiB7IG1hbnVhbD86IGJvb2xlYW4gfTtcbmV4cG9ydCB0eXBlIE5ndERwciA9IG51bWJlciB8IFttaW46IG51bWJlciwgbWF4OiBudW1iZXJdO1xuZXhwb3J0IHR5cGUgTmd0U2l6ZSA9IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXI7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgTmd0Vmlld3BvcnQgPSBOZ3RTaXplICYge1xuXHQvKiogVGhlIGluaXRpYWwgcGl4ZWwgcmF0aW8gKi9cblx0aW5pdGlhbERwcjogbnVtYmVyO1xuXHQvKiogQ3VycmVudCBwaXhlbCByYXRpbyAqL1xuXHRkcHI6IG51bWJlcjtcblx0LyoqIHNpemUud2lkdGggLyB2aWV3cG9ydC53aWR0aCAqL1xuXHRmYWN0b3I6IG51bWJlcjtcblx0LyoqIENhbWVyYSBkaXN0YW5jZSAqL1xuXHRkaXN0YW5jZTogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIGFzcGVjdCByYXRpbzogd2lkdGggLyBoZWlnaHQgKi9cblx0YXNwZWN0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RQZXJmb3JtYW5jZSA9IHtcblx0LyoqIEN1cnJlbnQgcGVyZm9ybWFuY2Ugbm9ybWFsLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG5cdGN1cnJlbnQ6IG51bWJlcjtcblx0LyoqIEhvdyBsb3cgdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiAwIGFuZCBtYXggKi9cblx0bWluOiBudW1iZXI7XG5cdC8qKiBIb3cgaGlnaCB0aGUgcGVyZm9ybWFuY2UgY2FuIGdvLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG5cdG1heDogbnVtYmVyO1xuXHQvKiogVGltZSB1bnRpbCBjdXJyZW50IHJldHVybnMgdG8gbWF4IGluIG1zICovXG5cdGRlYm91bmNlOiBudW1iZXI7XG5cdC8qKiBTZXRzIGN1cnJlbnQgdG8gbWluLCBwdXRzIHRoZSBzeXN0ZW0gaW4gcmVncmVzc2lvbiAqL1xuXHRyZWdyZXNzOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0UmVuZGVyU3RhdGUgPSBOZ3RTdGF0ZSAmIHsgZGVsdGE6IG51bWJlcjsgZnJhbWU/OiBYUkZyYW1lIH07XG5cbmV4cG9ydCB0eXBlIE5ndEJlZm9yZVJlbmRlckV2ZW50PFRPYmplY3QgZXh0ZW5kcyBOZ3RJbnN0YW5jZU5vZGUgPSBOZ3RJbnN0YW5jZU5vZGU+ID0ge1xuXHRzdGF0ZTogTmd0UmVuZGVyU3RhdGU7XG5cdG9iamVjdDogVE9iamVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndEJlZm9yZVJlbmRlclJlY29yZCA9IHtcblx0Y2FsbGJhY2s6IChzdGF0ZTogTmd0UmVuZGVyU3RhdGUpID0+IHZvaWQ7XG5cdHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT47XG5cdHByaW9yaXR5PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0SW50ZXJuYWxTdGF0ZSA9IHtcblx0YWN0aXZlOiBib29sZWFuO1xuXHRwcmlvcml0eTogbnVtYmVyO1xuXHRmcmFtZXM6IG51bWJlcjtcblx0bGFzdEV2ZW50OiBFbGVtZW50UmVmPE5ndERvbUV2ZW50IHwgbnVsbD47XG5cdGludGVyYWN0aW9uOiBPYmplY3QzRFtdO1xuXHRob3ZlcmVkOiBNYXA8c3RyaW5nLCBOZ3RUaHJlZUV2ZW50PE5ndERvbUV2ZW50Pj47XG5cdGNhcHR1cmVkTWFwOiBNYXA8bnVtYmVyLCBNYXA8T2JqZWN0M0QsIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0Pj47XG5cdGluaXRpYWxDbGljazogW3g6IG51bWJlciwgeTogbnVtYmVyXTtcblx0aW5pdGlhbEhpdHM6IE9iamVjdDNEW107XG5cdHN1YnNjcmliZXJzOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbXTtcblx0c3Vic2NyaWJlOiAoXG5cdFx0Y2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlclJlY29yZFsnY2FsbGJhY2snXSxcblx0XHRwcmlvcml0eT86IG51bWJlcixcblx0XHRzdG9yZT86IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0KSA9PiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0U3RhdGUgPSB7XG5cdC8qKiBUaGUgaW5zdGFuY2Ugb2YgdGhlIHJlbmRlcmVyICovXG5cdGdsOiBXZWJHTFJlbmRlcmVyO1xuXHQvKiogRGVmYXVsdCBjYW1lcmEgKi9cblx0Y2FtZXJhOiBOZ3RDYW1lcmFNYW51YWw7XG5cdC8qKiBEZWZhdWx0IHNjZW5lICovXG5cdHNjZW5lOiBTY2VuZTtcblx0LyoqIERlZmF1bHQgcmF5Y2FzdGVyICovXG5cdHJheWNhc3RlcjogUmF5Y2FzdGVyO1xuXHQvKiogRGVmYXVsdCBjbG9jayAqL1xuXHRjbG9jazogQ2xvY2s7XG5cdC8qKiBFdmVudCBsYXllciBpbnRlcmZhY2UsIGNvbnRhaW5zIHRoZSBldmVudCBoYW5kbGVyIGFuZCB0aGUgbm9kZSB0aGV5J3JlIGNvbm5lY3RlZCB0byAqL1xuXHRldmVudHM6IE5ndEV2ZW50TWFuYWdlcjxhbnk+O1xuXHQvKiogWFIgaW50ZXJmYWNlICovXG5cdHhyOiB7IGNvbm5lY3Q6ICgpID0+IHZvaWQ7IGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQgfTtcblx0LyoqIEN1cnJlbnRseSB1c2VkIGNvbnRyb2xzICovXG5cdGNvbnRyb2xzOiBFdmVudERpc3BhdGNoZXIgfCBudWxsO1xuXHQvKiogTm9ybWFsaXplZCBldmVudCBjb29yZGluYXRlcyAqL1xuXHRwb2ludGVyOiBWZWN0b3IyO1xuXHQvKiBXaGV0aGVyIHRvIGVuYWJsZSByMTM5J3MgQ29sb3JNYW5hZ2VtZW50ICovXG5cdGxlZ2FjeTogYm9vbGVhbjtcblx0LyoqIFNob3J0Y3V0IHRvIGdsLm91dHB1dENvbG9yU3BhY2UgPSBMaW5lYXJTUkdCQ29sb3JTcGFjZSAqL1xuXHRsaW5lYXI6IGJvb2xlYW47XG5cdC8qKiBTaG9ydGN1dCB0byBnbC50b25lTWFwcGluZyA9IE5vVG9uZW1hcHBpbmcgKi9cblx0ZmxhdDogYm9vbGVhbjtcblx0LyoqIFJlbmRlciBsb29wIGZsYWdzICovXG5cdGZyYW1lbG9vcDogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcic7XG5cdC8qKiBBZGFwdGl2ZSBwZXJmb3JtYW5jZSBpbnRlcmZhY2UgKi9cblx0cGVyZm9ybWFuY2U6IE5ndFBlcmZvcm1hbmNlO1xuXHQvKiogUmVhY3RpdmUgcGl4ZWwtc2l6ZSBvZiB0aGUgY2FudmFzICovXG5cdHNpemU6IE5ndFNpemU7XG5cdC8qKiBSZWFjdGl2ZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBpbiB0aHJlZWpzIHVuaXRzICovXG5cdHZpZXdwb3J0OiBOZ3RWaWV3cG9ydCAmIHtcblx0XHRnZXRDdXJyZW50Vmlld3BvcnQ6IChcblx0XHRcdGNhbWVyYT86IE5ndENhbWVyYSxcblx0XHRcdHRhcmdldD86IFZlY3RvcjMgfCBQYXJhbWV0ZXJzPFZlY3RvcjNbJ3NldCddPixcblx0XHRcdHNpemU/OiBOZ3RTaXplLFxuXHRcdCkgPT4gT21pdDxOZ3RWaWV3cG9ydCwgJ2RwcicgfCAnaW5pdGlhbERwcic+O1xuXHR9O1xuXHQvKiogRmxhZ3MgdGhlIGNhbnZhcyBmb3IgcmVuZGVyLCBidXQgZG9lc24ndCByZW5kZXIgaW4gaXRzZWxmICovXG5cdGludmFsaWRhdGU6IChmcmFtZXM/OiBudW1iZXIpID0+IHZvaWQ7XG5cdC8qKiBBZHZhbmNlIChyZW5kZXIpIG9uZSBzdGVwICovXG5cdGFkdmFuY2U6ICh0aW1lc3RhbXA6IG51bWJlciwgcnVuR2xvYmFsRWZmZWN0cz86IGJvb2xlYW4pID0+IHZvaWQ7XG5cdC8qKiBTaG9ydGN1dCB0byBzZXR0aW5nIHRoZSBldmVudCBsYXllciAqL1xuXHRzZXRFdmVudHM6IChldmVudHM6IFBhcnRpYWw8Tmd0RXZlbnRNYW5hZ2VyPGFueT4+KSA9PiB2b2lkO1xuXHQvKipcblx0ICogU2hvcnRjdXQgdG8gbWFudWFsIHNpemluZ1xuXHQgKi9cblx0c2V0U2l6ZTogKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB0b3A/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIpID0+IHZvaWQ7XG5cdC8qKiBTaG9ydGN1dCB0byBtYW51YWwgc2V0dGluZyB0aGUgcGl4ZWwgcmF0aW8gKi9cblx0c2V0RHByOiAoZHByOiBOZ3REcHIpID0+IHZvaWQ7XG5cdC8qKiBTaG9ydGN1dCB0byBmcmFtZWxvb3AgZmxhZ3MgKi9cblx0c2V0RnJhbWVsb29wOiAoZnJhbWVsb29wPzogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcicpID0+IHZvaWQ7XG5cdC8qKiBXaGVuIHRoZSBjYW52YXMgd2FzIGNsaWNrZWQgYnV0IG5vdGhpbmcgd2FzIGhpdCAqL1xuXHQvKiogUG9pbnRlck1pc3NlZCBPYnNlcnZhYmxlICovXG5cdHBvaW50ZXJNaXNzZWQkOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuXHQvKiogSWYgdGhpcyBzdGF0ZSBtb2RlbCBpcyBsYXllcmVkICh2aWEgY3JlYXRlUG9ydGFsKSB0aGVuIHRoaXMgY29udGFpbnMgdGhlIHByZXZpb3VzIGxheWVyICovXG5cdHByZXZpb3VzUm9vdDogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+IHwgbnVsbDtcblx0LyoqIEludGVybmFscyAqL1xuXHRpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbn07XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuXHRDYW1lcmEsXG5cdENsb2NrLFxuXHRFdmVudERpc3BhdGNoZXIsXG5cdEludGVyc2VjdGlvbixcblx0T2JqZWN0M0QsXG5cdE9ydGhvZ3JhcGhpY0NhbWVyYSxcblx0UGVyc3BlY3RpdmVDYW1lcmEsXG5cdFJheSxcblx0UmF5Y2FzdGVyLFxuXHRTY2VuZSxcblx0VmVjdG9yMixcblx0VmVjdG9yMyxcblx0V2ViR0xSZW5kZXJlcixcblx0V2ViR0xSZW5kZXJlclBhcmFtZXRlcnMsXG5cdFdlYkdMU2hhZG93TWFwLFxufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RPYmplY3QzRE5vZGUgfSBmcm9tICcuL3RocmVlLXR5cGVzJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuXG5leHBvcnQgdHlwZSBOZ3RQcm9wZXJ0aWVzPFQ+ID0geyBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55ID8gbmV2ZXIgOiBLXTogVFtLXSB9O1xuZXhwb3J0IHR5cGUgTmd0QW55UmVjb3JkID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuZXhwb3J0IHR5cGUgTmd0RXF1Q29uZmlnID0ge1xuXHQvKiogQ29tcGFyZSBhcnJheXMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG5cdGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuXHQvKiogQ29tcGFyZSBvYmplY3RzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuXHRvYmplY3RzPzogJ3JlZmVyZW5jZScgfCAnc2hhbGxvdyc7XG5cdC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuXHRzdHJpY3Q/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0R0xPcHRpb25zID1cblx0fCBOZ3RSZW5kZXJlckxpa2Vcblx0fCAoKGNhbnZhczogTmd0Q2FudmFzRWxlbWVudCkgPT4gTmd0UmVuZGVyZXJMaWtlKVxuXHR8IFBhcnRpYWw8Tmd0UHJvcGVydGllczxXZWJHTFJlbmRlcmVyPiB8IFdlYkdMUmVuZGVyZXJQYXJhbWV0ZXJzPlxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RDYW52YXNPcHRpb25zIHtcblx0LyoqIEEgdGhyZWVqcyByZW5kZXJlciBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmVuZGVyZXIgKi9cblx0Z2w/OiBOZ3RHTE9wdGlvbnM7XG5cdC8qKiBEaW1lbnNpb25zIHRvIGZpdCB0aGUgcmVuZGVyZXIgdG8uIFdpbGwgbWVhc3VyZSBjYW52YXMgZGltZW5zaW9ucyBpZiBvbWl0dGVkICovXG5cdHNpemU/OiBOZ3RTaXplO1xuXHQvKipcblx0ICogRW5hYmxlcyBzaGFkb3dzIChieSBkZWZhdWx0IFBDRnNvZnQpLiBDYW4gYWNjZXB0IGBnbC5zaGFkb3dNYXBgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nLFxuXHQgKiBidXQgYWxzbyBzdHJpbmdzOiAnYmFzaWMnIHwgJ3BlcmNlbnRhZ2UnIHwgJ3NvZnQnIHwgJ3ZhcmlhbmNlJy5cblx0ICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9yZW5kZXJlcnMvV2ViR0xSZW5kZXJlci5zaGFkb3dNYXBcblx0ICovXG5cdHNoYWRvd3M/OiBib29sZWFuIHwgJ2Jhc2ljJyB8ICdwZXJjZW50YWdlJyB8ICdzb2Z0JyB8ICd2YXJpYW5jZScgfCBQYXJ0aWFsPFdlYkdMU2hhZG93TWFwPjtcblx0LyoqXG5cdCAqIERpc2FibGVzIHRocmVlIHIxMzkgY29sb3IgbWFuYWdlbWVudC5cblx0ICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI21hbnVhbC9lbi9pbnRyb2R1Y3Rpb24vQ29sb3ItbWFuYWdlbWVudFxuXHQgKi9cblx0bGVnYWN5PzogYm9vbGVhbjtcblx0LyoqIFN3aXRjaCBvZmYgYXV0b21hdGljIHNSR0IgY29sb3Igc3BhY2UgYW5kIGdhbW1hIGNvcnJlY3Rpb24gKi9cblx0bGluZWFyPzogYm9vbGVhbjtcblx0LyoqIFVzZSBgVEhSRUUuTm9Ub25lTWFwcGluZ2AgaW5zdGVhZCBvZiBgVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nYCAqL1xuXHRmbGF0PzogYm9vbGVhbjtcblx0LyoqIENyZWF0ZXMgYW4gb3J0aG9ncmFwaGljIGNhbWVyYSAqL1xuXHRvcnRob2dyYXBoaWM/OiBib29sZWFuO1xuXHQvKipcblx0ICogUjNGJ3MgcmVuZGVyIG1vZGUuIFNldCB0byBgZGVtYW5kYCB0byBvbmx5IHJlbmRlciBvbiBzdGF0ZSBjaGFuZ2Ugb3IgYG5ldmVyYCB0byB0YWtlIGNvbnRyb2wuXG5cdCAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNvbi1kZW1hbmQtcmVuZGVyaW5nXG5cdCAqL1xuXHRmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcblx0LyoqXG5cdCAqIFIzRiBwZXJmb3JtYW5jZSBvcHRpb25zIGZvciBhZGFwdGl2ZSBwZXJmb3JtYW5jZS5cblx0ICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI21vdmVtZW50LXJlZ3Jlc3Npb25cblx0ICovXG5cdHBlcmZvcm1hbmNlPzogUGFydGlhbDxPbWl0PE5ndFBlcmZvcm1hbmNlLCAncmVncmVzcyc+Pjtcblx0LyoqIFRhcmdldCBwaXhlbCByYXRpby4gQ2FuIGNsYW1wIGJldHdlZW4gYSByYW5nZTogYFttaW4sIG1heF1gICovXG5cdGRwcj86IE5ndERwcjtcblx0LyoqIFByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCByYXljYXN0ZXIgKi9cblx0cmF5Y2FzdGVyPzogUGFydGlhbDxSYXljYXN0ZXI+O1xuXHQvKiogQSBgU2NlbmVgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBzY2VuZSAqL1xuXHRzY2VuZT86IFNjZW5lIHwgUGFydGlhbDxTY2VuZT47XG5cdC8qKiBBIGBDYW1lcmFgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBjYW1lcmEgKi9cblx0Y2FtZXJhPzogKFxuXHRcdHwgTmd0Q2FtZXJhXG5cdFx0fCBQYXJ0aWFsPFxuXHRcdFx0XHROZ3RPYmplY3QzRE5vZGU8Q2FtZXJhLCB0eXBlb2YgQ2FtZXJhPiAmXG5cdFx0XHRcdFx0Tmd0T2JqZWN0M0ROb2RlPFBlcnNwZWN0aXZlQ2FtZXJhLCB0eXBlb2YgUGVyc3BlY3RpdmVDYW1lcmE+ICZcblx0XHRcdFx0XHROZ3RPYmplY3QzRE5vZGU8T3J0aG9ncmFwaGljQ2FtZXJhLCB0eXBlb2YgT3J0aG9ncmFwaGljQ2FtZXJhPlxuXHRcdCAgPlxuXHQpICYge1xuXHRcdC8qKiBGbGFncyB0aGUgY2FtZXJhIGFzIG1hbnVhbCwgcHV0dGluZyBwcm9qZWN0aW9uIGludG8geW91ciBvd24gaGFuZHMgKi9cblx0XHRtYW51YWw/OiBib29sZWFuO1xuXHR9O1xuXHQvKiogQW4gUjNGIGV2ZW50IG1hbmFnZXIgdG8gbWFuYWdlIGVsZW1lbnRzJyBwb2ludGVyIGV2ZW50cyAqL1xuXHRldmVudHM/OiAoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikgPT4gTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50Pjtcblx0LyoqIFRoZSB0YXJnZXQgd2hlcmUgZXZlbnRzIGFyZSBiZWluZyBzdWJzY3JpYmVkIHRvLCBkZWZhdWx0OiB0aGUgZGl2IHRoYXQgd3JhcHMgY2FudmFzICovXG5cdGV2ZW50U291cmNlPzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcblx0LyoqIFRoZSBldmVudCBwcmVmaXggdGhhdCBpcyBjYXN0IGludG8gY2FudmFzIHBvaW50ZXIgeC95IGV2ZW50cywgZGVmYXVsdDogXCJvZmZzZXRcIiAqL1xuXHRldmVudFByZWZpeD86ICdvZmZzZXQnIHwgJ2NsaWVudCcgfCAncGFnZScgfCAnbGF5ZXInIHwgJ3NjcmVlbic7XG5cdC8qKiBEZWZhdWx0IGNvb3JkaW5hdGUgZm9yIHRoZSBjYW1lcmEgdG8gbG9vayBhdCAqL1xuXHRsb29rQXQ/OiBWZWN0b3IzIHwgUGFyYW1ldGVyczxWZWN0b3IzWydzZXQnXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0SW50ZXJzZWN0aW9uIGV4dGVuZHMgSW50ZXJzZWN0aW9uIHtcblx0LyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cblx0ZXZlbnRPYmplY3Q6IE9iamVjdDNEO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbkV2ZW50PFRTb3VyY2VFdmVudD4gZXh0ZW5kcyBOZ3RJbnRlcnNlY3Rpb24ge1xuXHQvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuXHRldmVudE9iamVjdDogT2JqZWN0M0Q7XG5cdC8qKiBBbiBhcnJheSBvZiBpbnRlcnNlY3Rpb25zICovXG5cdGludGVyc2VjdGlvbnM6IE5ndEludGVyc2VjdGlvbltdO1xuXHQvKiogdmVjMy5zZXQocG9pbnRlci54LCBwb2ludGVyLnksIDApLnVucHJvamVjdChjYW1lcmEpICovXG5cdHVucHJvamVjdGVkUG9pbnQ6IFZlY3RvcjM7XG5cdC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG5cdHBvaW50ZXI6IFZlY3RvcjI7XG5cdC8qKiBEZWx0YSBiZXR3ZWVuIGZpcnN0IGNsaWNrIGFuZCB0aGlzIGV2ZW50ICovXG5cdGRlbHRhOiBudW1iZXI7XG5cdC8qKiBUaGUgcmF5IHRoYXQgcGllcmNlZCBpdCAqL1xuXHRyYXk6IFJheTtcblx0LyoqIFRoZSBjYW1lcmEgdGhhdCB3YXMgdXNlZCBieSB0aGUgcmF5Y2FzdGVyICovXG5cdGNhbWVyYTogTmd0Q2FtZXJhO1xuXHQvKiogc3RvcFByb3BhZ2F0aW9uIHdpbGwgc3RvcCB1bmRlcmx5aW5nIGhhbmRsZXJzIGZyb20gZmlyaW5nICovXG5cdHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcblx0LyoqIFRoZSBvcmlnaW5hbCBob3N0IGV2ZW50ICovXG5cdG5hdGl2ZUV2ZW50OiBUU291cmNlRXZlbnQ7XG5cdC8qKiBJZiB0aGUgZXZlbnQgd2FzIHN0b3BwZWQgYnkgY2FsbGluZyBzdG9wUHJvcGFnYXRpb24gKi9cblx0c3RvcHBlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhID0gT3J0aG9ncmFwaGljQ2FtZXJhIHwgUGVyc3BlY3RpdmVDYW1lcmE7XG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRIYW5kbGVycyA9IHtcblx0Y2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG5cdGNvbnRleHRtZW51PzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xuXHRkYmxjbGljaz86IChldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50PikgPT4gdm9pZDtcblx0cG9pbnRlcnVwPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJkb3duPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJvdmVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJvdXQ/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcblx0cG9pbnRlcmVudGVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHBvaW50ZXJsZWF2ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuXHRwb2ludGVybW92ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuXHRwb2ludGVybWlzc2VkPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuXHRwb2ludGVyY2FuY2VsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG5cdHdoZWVsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRzID0ge1xuXHRbVEV2ZW50IGluIGtleW9mIE5ndEV2ZW50SGFuZGxlcnNdLT86IEV2ZW50TGlzdGVuZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RGaWx0ZXJGdW5jdGlvbiA9IChpdGVtczogSW50ZXJzZWN0aW9uW10sIHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4pID0+IEludGVyc2VjdGlvbltdO1xuZXhwb3J0IHR5cGUgTmd0Q29tcHV0ZUZ1bmN0aW9uID0gKFxuXHRldmVudDogTmd0RG9tRXZlbnQsXG5cdHJvb3Q6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0cHJldmlvdXM6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiB8IG51bGwsXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0PiA9IHtcblx0LyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHQvKiogRXZlbnQgbGF5ZXIgcHJpb3JpdHksIGhpZ2hlciBwcmlvcml0aXplZCBsYXllcnMgY29tZSBmaXJzdCBhbmQgbWF5IHN0b3AoLXByb3BhZ2F0ZSkgbG93ZXIgbGF5ZXIgICovXG5cdHByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBUaGUgY29tcHV0ZSBmdW5jdGlvbiBuZWVkcyB0byBzZXQgdXAgdGhlIHJheWNhc3RlciBhbmQgYW4geHktIHBvaW50ZXIgICovXG5cdGNvbXB1dGU/OiBOZ3RDb21wdXRlRnVuY3Rpb247XG5cdC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG5cdGZpbHRlcj86IE5ndEZpbHRlckZ1bmN0aW9uO1xuXHQvKiogVGhlIHRhcmdldCBub2RlIHRoZSBldmVudCBsYXllciBpcyB0aWVkIHRvICovXG5cdGNvbm5lY3RlZD86IFRUYXJnZXQ7XG5cdC8qKiBBbGwgdGhlIHBvaW50ZXIgZXZlbnQgaGFuZGxlcnMgdGhyb3VnaCB3aGljaCB0aGUgaG9zdCBmb3J3YXJkcyBuYXRpdmUgZXZlbnRzICovXG5cdGhhbmRsZXJzPzogTmd0RXZlbnRzO1xuXHQvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cblx0Y29ubmVjdD86ICh0YXJnZXQ6IFRUYXJnZXQpID0+IHZvaWQ7XG5cdC8qKiBSZW1vdmVzIGFsbCBleGlzdGluZyBldmVudHMgaGFuZGxlcnMgZnJvbSB0aGUgdGFyZ2V0ICovXG5cdGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xuXHQvKiogVHJpZ2dlcnMgYSBvblBvaW50ZXJNb3ZlIHdpdGggdGhlIGxhc3Qga25vd24gZXZlbnQuIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBlbmFibGUgcmF5Y2FzdGluZyB3aXRob3V0XG5cdCAqICBleHBsaWNpdCB1c2VyIGludGVyYWN0aW9uLCBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgY2FtZXJhIG1vdmVzIGEgaG92ZXJhYmxlIG9iamVjdCB1bmRlcm5lYXRoIHRoZSBjdXJzb3IuXG5cdCAqL1xuXHR1cGRhdGU/OiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldCB7XG5cdGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuXHR0YXJnZXQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndEF0dGFjaEZ1bmN0aW9uPFRDaGlsZCA9IGFueSwgVFBhcmVudCA9IGFueT4gPSAoXG5cdHBhcmVudDogVFBhcmVudCxcblx0Y2hpbGQ6IFRDaGlsZCxcblx0c3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcbikgPT4gdm9pZCB8ICgoKSA9PiB2b2lkKTtcblxuZXhwb3J0IHR5cGUgTmd0QXR0YWNoYWJsZTxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID1cblx0fCBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQsIFRQYXJlbnQ+XG5cdHwgc3RyaW5nXG5cdHwgKHN0cmluZyB8IG51bWJlcilbXTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RBZnRlckF0dGFjaDxcblx0VENoaWxkIGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuXHRUUGFyZW50IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuPiB7XG5cdHBhcmVudDogVFBhcmVudDtcblx0bm9kZTogVENoaWxkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndExvY2FsSW5zdGFuY2VTdGF0ZSB7XG5cdG9iamVjdHM6IE5ndEluc3RhbmNlTm9kZVtdO1xuXHRub25PYmplY3RzOiBOZ3RJbnN0YW5jZU5vZGVbXTtcblx0cGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUgfCBudWxsO1xuXHRnZW9tZXRyeVN0YW1wOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9jYWxTdGF0ZSB7XG5cdC8qKiB0aGUgc3RvcmUgb2YgdGhlIGNhbnZhcyB0aGF0IHRoZSBpbnN0YW5jZSBpcyBiZWluZyByZW5kZXJlZCB0byAqL1xuXHRzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuXHQvLyBvYmplY3RzIHJlbGF0ZWQgdG8gdGhpcyBpbnN0YW5jZVxuXHRpbnN0YW5jZVN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RMb2NhbEluc3RhbmNlU3RhdGU+O1xuXHQvLyBzaG9ydGN1dCB0byBzaWduYWxzXG5cdHBhcmVudDogU2lnbmFsPE5ndExvY2FsSW5zdGFuY2VTdGF0ZVsncGFyZW50J10+O1xuXHRvYmplY3RzOiBTaWduYWw8Tmd0TG9jYWxJbnN0YW5jZVN0YXRlWydvYmplY3RzJ10+O1xuXHRub25PYmplY3RzOiBTaWduYWw8Tmd0TG9jYWxJbnN0YW5jZVN0YXRlWydub25PYmplY3RzJ10+O1xuXG5cdC8vIHNob3J0Y3V0IHRvIGFkZC9yZW1vdmUgb2JqZWN0IHRvIGxpc3Rcblx0YWRkOiAoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgdHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnKSA9PiB2b2lkO1xuXHRyZW1vdmU6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG5cdHNldFBhcmVudDogKHBhcmVudDogTmd0SW5zdGFuY2VOb2RlIHwgbnVsbCkgPT4gdm9pZDtcblx0dXBkYXRlR2VvbWV0cnlTdGFtcDogKCkgPT4gdm9pZDtcblxuXHQvLyBpZiB0aGlzIFRIUkVFIGluc3RhbmNlIGlzIGEgbmd0LXByaW1pdGl2ZVxuXHRwcmltaXRpdmU/OiBib29sZWFuO1xuXHQvLyBpZiB0aGlzIFRIUkVFIG9iamVjdCBoYXMgYW55IGV2ZW50cyBib3VuZCB0byBpdFxuXHRldmVudENvdW50OiBudW1iZXI7XG5cdC8vIGxpc3Qgb2YgaGFuZGxlcnMgdG8gaGFuZGxlIHRoZSBldmVudHNcblx0aGFuZGxlcnM6IFBhcnRpYWw8Tmd0RXZlbnRIYW5kbGVycz47XG5cdC8vIGF0dGFjaCBpbmZvcm1hdGlvbiBzbyB0aGF0IHdlIGNhbiBkZXRhY2ggYXMgd2VsbCBhcyByZXNldFxuXHRhdHRhY2g/OiBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuXHQvLyBwcmV2aW91c2x5IGF0dGFjaCBpbmZvcm1hdGlvbiBzbyB3ZSBjYW4gcmVzZXQgYXMgd2VsbCBhcyBjbGVhbiB1cFxuXHRwcmV2aW91c0F0dGFjaD86IHVua25vd24gfCAoKCkgPT4gdm9pZCk7XG5cdC8vIGlzIHJhdyB2YWx1ZVxuXHRpc1Jhdz86IGJvb2xlYW47XG5cdC8vIHByaW9yaXR5IGZvciBiZWZvcmUgcmVuZGVyXG5cdHByaW9yaXR5PzogbnVtYmVyO1xuXHRvblVwZGF0ZT86IChub2RlOiBOZ3RJbnN0YW5jZU5vZGUpID0+IHZvaWQ7XG5cdG9uQXR0YWNoPzogKGFmdGVyQXR0YWNoOiBOZ3RBZnRlckF0dGFjaCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VOb2RlPFROb2RlID0gYW55PiA9IHsgX19uZ3RfXzogTmd0TG9jYWxTdGF0ZSB9ICYgTmd0QW55UmVjb3JkICYgVE5vZGU7XG5cbmV4cG9ydCB0eXBlIE5ndENhbnZhc0VsZW1lbnQgPSBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcztcbmV4cG9ydCB0eXBlIE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrID0gKHRpbWVTdGFtcDogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBOZ3RSZW5kZXJlckxpa2UgPSB7IHJlbmRlcjogKHNjZW5lOiBTY2VuZSwgY2FtZXJhOiBDYW1lcmEpID0+IGFueSB9O1xuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhTWFudWFsID0gTmd0Q2FtZXJhICYgeyBtYW51YWw/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBOZ3REcHIgPSBudW1iZXIgfCBbbWluOiBudW1iZXIsIG1heDogbnVtYmVyXTtcbmV4cG9ydCB0eXBlIE5ndFNpemUgPSB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH07XG5cbmV4cG9ydCB0eXBlIE5ndFZpZXdwb3J0ID0gTmd0U2l6ZSAmIHtcblx0LyoqIFRoZSBpbml0aWFsIHBpeGVsIHJhdGlvICovXG5cdGluaXRpYWxEcHI6IG51bWJlcjtcblx0LyoqIEN1cnJlbnQgcGl4ZWwgcmF0aW8gKi9cblx0ZHByOiBudW1iZXI7XG5cdC8qKiBzaXplLndpZHRoIC8gdmlld3BvcnQud2lkdGggKi9cblx0ZmFjdG9yOiBudW1iZXI7XG5cdC8qKiBDYW1lcmEgZGlzdGFuY2UgKi9cblx0ZGlzdGFuY2U6IG51bWJlcjtcblx0LyoqIENhbWVyYSBhc3BlY3QgcmF0aW86IHdpZHRoIC8gaGVpZ2h0ICovXG5cdGFzcGVjdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0UGVyZm9ybWFuY2UgPSB7XG5cdC8qKiBDdXJyZW50IHBlcmZvcm1hbmNlIG5vcm1hbCwgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuXHRjdXJyZW50OiBudW1iZXI7XG5cdC8qKiBIb3cgbG93IHRoZSBwZXJmb3JtYW5jZSBjYW4gZ28sIGJldHdlZW4gMCBhbmQgbWF4ICovXG5cdG1pbjogbnVtYmVyO1xuXHQvKiogSG93IGhpZ2ggdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuXHRtYXg6IG51bWJlcjtcblx0LyoqIFRpbWUgdW50aWwgY3VycmVudCByZXR1cm5zIHRvIG1heCBpbiBtcyAqL1xuXHRkZWJvdW5jZTogbnVtYmVyO1xuXHQvKiogU2V0cyBjdXJyZW50IHRvIG1pbiwgcHV0cyB0aGUgc3lzdGVtIGluIHJlZ3Jlc3Npb24gKi9cblx0cmVncmVzczogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlclN0YXRlID0gTmd0U3RhdGUgJiB7IGRlbHRhOiBudW1iZXI7IGZyYW1lPzogWFJGcmFtZSB9O1xuXG5leHBvcnQgdHlwZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiA9IHtcblx0c3RhdGU6IE5ndFJlbmRlclN0YXRlO1xuXHRvYmplY3Q6IFRPYmplY3Q7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQgPSB7XG5cdGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuXHRzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuXHRwcmlvcml0eT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndEludGVybmFsU3RhdGUgPSB7XG5cdGFjdGl2ZTogYm9vbGVhbjtcblx0cHJpb3JpdHk6IG51bWJlcjtcblx0ZnJhbWVzOiBudW1iZXI7XG5cdGxhc3RFdmVudDogRWxlbWVudFJlZjxOZ3REb21FdmVudCB8IG51bGw+O1xuXHRpbnRlcmFjdGlvbjogT2JqZWN0M0RbXTtcblx0aG92ZXJlZDogTWFwPHN0cmluZywgTmd0VGhyZWVFdmVudDxOZ3REb21FdmVudD4+O1xuXHRjYXB0dXJlZE1hcDogTWFwPG51bWJlciwgTWFwPE9iamVjdDNELCBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldD4+O1xuXHRpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG5cdGluaXRpYWxIaXRzOiBPYmplY3QzRFtdO1xuXHRzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG5cdHN1YnNjcmliZTogKFxuXHRcdGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG5cdFx0cHJpb3JpdHk/OiBudW1iZXIsXG5cdFx0c3RvcmU/OiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4sXG5cdCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFN0YXRlID0ge1xuXHQvKiogVGhlIGluc3RhbmNlIG9mIHRoZSByZW5kZXJlciAqL1xuXHRnbDogV2ViR0xSZW5kZXJlcjtcblx0LyoqIERlZmF1bHQgY2FtZXJhICovXG5cdGNhbWVyYTogTmd0Q2FtZXJhTWFudWFsO1xuXHQvKiogRGVmYXVsdCBzY2VuZSAqL1xuXHRzY2VuZTogU2NlbmU7XG5cdC8qKiBEZWZhdWx0IHJheWNhc3RlciAqL1xuXHRyYXljYXN0ZXI6IFJheWNhc3Rlcjtcblx0LyoqIERlZmF1bHQgY2xvY2sgKi9cblx0Y2xvY2s6IENsb2NrO1xuXHQvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cblx0ZXZlbnRzOiBOZ3RFdmVudE1hbmFnZXI8YW55Pjtcblx0LyoqIFhSIGludGVyZmFjZSAqL1xuXHR4cjogeyBjb25uZWN0OiAoKSA9PiB2b2lkOyBkaXNjb25uZWN0OiAoKSA9PiB2b2lkIH07XG5cdC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuXHRjb250cm9sczogRXZlbnREaXNwYXRjaGVyIHwgbnVsbDtcblx0LyoqIE5vcm1hbGl6ZWQgZXZlbnQgY29vcmRpbmF0ZXMgKi9cblx0cG9pbnRlcjogVmVjdG9yMjtcblx0LyogV2hldGhlciB0byBlbmFibGUgcjEzOSdzIENvbG9yTWFuYWdlbWVudCAqL1xuXHRsZWdhY3k6IGJvb2xlYW47XG5cdC8qKiBTaG9ydGN1dCB0byBnbC5vdXRwdXRDb2xvclNwYWNlID0gTGluZWFyU1JHQkNvbG9yU3BhY2UgKi9cblx0bGluZWFyOiBib29sZWFuO1xuXHQvKiogU2hvcnRjdXQgdG8gZ2wudG9uZU1hcHBpbmcgPSBOb1RvbmVtYXBwaW5nICovXG5cdGZsYXQ6IGJvb2xlYW47XG5cdC8qKiBSZW5kZXIgbG9vcCBmbGFncyAqL1xuXHRmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInO1xuXHQvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG5cdHBlcmZvcm1hbmNlOiBOZ3RQZXJmb3JtYW5jZTtcblx0LyoqIFJlYWN0aXZlIHBpeGVsLXNpemUgb2YgdGhlIGNhbnZhcyAqL1xuXHRzaXplOiBOZ3RTaXplO1xuXHQvKiogUmVhY3RpdmUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgaW4gdGhyZWVqcyB1bml0cyAqL1xuXHR2aWV3cG9ydDogTmd0Vmlld3BvcnQgJiB7XG5cdFx0Z2V0Q3VycmVudFZpZXdwb3J0OiAoXG5cdFx0XHRjYW1lcmE/OiBOZ3RDYW1lcmEsXG5cdFx0XHR0YXJnZXQ/OiBWZWN0b3IzIHwgUGFyYW1ldGVyczxWZWN0b3IzWydzZXQnXT4sXG5cdFx0XHRzaXplPzogTmd0U2l6ZSxcblx0XHQpID0+IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPjtcblx0fTtcblx0LyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuXHRpbnZhbGlkYXRlOiAoZnJhbWVzPzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogQWR2YW5jZSAocmVuZGVyKSBvbmUgc3RlcCAqL1xuXHRhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gc2V0dGluZyB0aGUgZXZlbnQgbGF5ZXIgKi9cblx0c2V0RXZlbnRzOiAoZXZlbnRzOiBQYXJ0aWFsPE5ndEV2ZW50TWFuYWdlcjxhbnk+PikgPT4gdm9pZDtcblx0LyoqXG5cdCAqIFNob3J0Y3V0IHRvIG1hbnVhbCBzaXppbmdcblx0ICovXG5cdHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gbWFudWFsIHNldHRpbmcgdGhlIHBpeGVsIHJhdGlvICovXG5cdHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gZnJhbWVsb29wIGZsYWdzICovXG5cdHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInKSA9PiB2b2lkO1xuXHQvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cblx0LyoqIFBvaW50ZXJNaXNzZWQgT2JzZXJ2YWJsZSAqL1xuXHRwb2ludGVyTWlzc2VkJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50Pjtcblx0LyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJlZCAodmlhIGNyZWF0ZVBvcnRhbCkgdGhlbiB0aGlzIGNvbnRhaW5zIHRoZSBwcmV2aW91cyBsYXllciAqL1xuXHRwcmV2aW91c1Jvb3Q6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiB8IG51bGw7XG5cdC8qKiBJbnRlcm5hbHMgKi9cblx0aW50ZXJuYWw6IE5ndEludGVybmFsU3RhdGU7XG59O1xuIl19
package/lib/canvas.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare class NgtCanvas {
14
14
  sceneGraph: import("@angular/core").InputSignalWithTransform<Type<any>, Type<any> | "routed">;
15
15
  gl: import("@angular/core").InputSignal<NgtGLOptions>;
16
16
  size: import("@angular/core").InputSignal<NgtSize | undefined>;
17
- shadows: import("@angular/core").InputSignalWithTransform<NonNullable<boolean | "basic" | "percentage" | "soft" | "variance" | Partial<import("three").WebGLShadowMap> | undefined>, unknown>;
17
+ shadows: import("@angular/core").InputSignalWithTransform<NonNullable<boolean | Partial<import("three").WebGLShadowMap> | "basic" | "percentage" | "soft" | "variance" | undefined>, unknown>;
18
18
  legacy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
19
19
  linear: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
20
20
  flat: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
@@ -25,18 +25,17 @@ export declare class NgtCanvas {
25
25
  raycaster: import("@angular/core").InputSignal<Partial<Raycaster> | undefined>;
26
26
  scene: import("@angular/core").InputSignal<Scene | Partial<Scene> | undefined>;
27
27
  camera: import("@angular/core").InputSignal<NonNullable<((import("./types").NgtCamera | Partial<{
28
- readonly type?: string | undefined;
29
28
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").Camera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").Camera, typeof import("three").Camera>, ev: import("angular-three").NgtNodeEventMap<import("three").Camera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
30
29
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").Camera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").Camera, typeof import("three").Camera>, ev: import("angular-three").NgtNodeEventMap<import("three").Camera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
30
+ clone?: ((recursive?: boolean) => import("three").Camera) | undefined;
31
+ copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").Camera) | undefined;
32
+ add?: ((...object: import("three").Object3D[]) => import("three").Camera) | undefined;
33
+ applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
34
+ applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").Camera) | undefined;
31
35
  attach: string | string[] | import("./types").NgtAttachFunction;
32
36
  __ngt_args__: [];
33
- readonly isCamera?: true | undefined;
34
- matrixWorldInverse?: import("three").Matrix4 | undefined;
35
- projectionMatrix?: import("three").Matrix4 | undefined;
36
- projectionMatrixInverse?: import("three").Matrix4 | undefined;
37
- coordinateSystem?: import("three").CoordinateSystem | undefined;
38
- viewport?: import("three").Vector4 | undefined;
39
- getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
37
+ readonly type?: string | undefined;
38
+ toJSON?: ((meta?: import("three").JSONMeta) => import("three").Object3DJSON) | undefined;
40
39
  readonly isObject3D?: true | undefined;
41
40
  readonly id?: number | undefined;
42
41
  uuid?: string | undefined;
@@ -62,8 +61,6 @@ export declare class NgtCanvas {
62
61
  onAfterShadow?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry, depthMaterial: import("three").Material, group: import("three").Group) => void) | undefined;
63
62
  onBeforeRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
64
63
  onAfterRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
65
- applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
66
- applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").Camera) | undefined;
67
64
  setRotationFromAxisAngle?: ((axis: Vector3, angle: number) => void) | undefined;
68
65
  setRotationFromEuler?: ((euler: import("three").Euler) => void) | undefined;
69
66
  setRotationFromMatrix?: ((m: import("three").Matrix4) => void) | undefined;
@@ -83,7 +80,6 @@ export declare class NgtCanvas {
83
80
  (vector: Vector3): void;
84
81
  (x: number, y: number, z: number): void;
85
82
  } | undefined;
86
- add?: ((...object: import("three").Object3D[]) => import("three").Camera) | undefined;
87
83
  remove?: ((...object: import("three").Object3D[]) => import("three").Camera) | undefined;
88
84
  removeFromParent?: (() => import("three").Camera) | undefined;
89
85
  clear?: (() => import("three").Camera) | undefined;
@@ -94,17 +90,21 @@ export declare class NgtCanvas {
94
90
  getWorldPosition?: ((target: Vector3) => Vector3) | undefined;
95
91
  getWorldQuaternion?: ((target: import("three").Quaternion) => import("three").Quaternion) | undefined;
96
92
  getWorldScale?: ((target: Vector3) => Vector3) | undefined;
93
+ getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
97
94
  traverse?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
98
95
  traverseVisible?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
99
96
  traverseAncestors?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
100
97
  updateMatrix?: (() => void) | undefined;
101
98
  updateMatrixWorld?: ((force?: boolean) => void) | undefined;
102
99
  updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | undefined;
103
- toJSON?: ((meta?: import("three").JSONMeta) => import("three").Object3DJSON) | undefined;
104
- clone?: ((recursive?: boolean) => import("three").Camera) | undefined;
105
- copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").Camera) | undefined;
106
100
  hasEventListener?: (<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, import("three").Camera>) => boolean) | undefined;
107
101
  dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
102
+ readonly isCamera?: true | undefined;
103
+ matrixWorldInverse?: import("three").Matrix4 | undefined;
104
+ projectionMatrix?: import("three").Matrix4 | undefined;
105
+ projectionMatrixInverse?: import("three").Matrix4 | undefined;
106
+ coordinateSystem?: import("three").CoordinateSystem | undefined;
107
+ viewport?: import("three").Vector4 | undefined;
108
108
  position: import("angular-three").NgtVector3;
109
109
  up: import("angular-three").NgtVector3;
110
110
  scale: import("angular-three").NgtVector3;
@@ -115,18 +115,26 @@ export declare class NgtCanvas {
115
115
  dispose: (() => void) | null;
116
116
  raycast: import("three").Object3D["raycast"] | null;
117
117
  } & {
118
- readonly type?: string | undefined;
119
118
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").PerspectiveCamera, typeof import("three").PerspectiveCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
120
119
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").PerspectiveCamera, typeof import("three").PerspectiveCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
120
+ clone?: ((recursive?: boolean) => import("three").PerspectiveCamera) | undefined;
121
+ copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").PerspectiveCamera) | undefined;
122
+ add?: ((...object: import("three").Object3D[]) => import("three").PerspectiveCamera) | undefined;
123
+ applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
124
+ applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").PerspectiveCamera) | undefined;
121
125
  attach: string | string[] | import("./types").NgtAttachFunction;
122
126
  __ngt_args__: [fov?: number | undefined, aspect?: number | undefined, near?: number | undefined, far?: number | undefined];
123
- readonly isCamera?: true | undefined;
124
- matrixWorldInverse?: import("three").Matrix4 | undefined;
125
- projectionMatrix?: import("three").Matrix4 | undefined;
126
- projectionMatrixInverse?: import("three").Matrix4 | undefined;
127
- coordinateSystem?: import("three").CoordinateSystem | undefined;
128
- viewport?: import("three").Vector4 | undefined;
129
- getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
127
+ view?: {
128
+ enabled: boolean;
129
+ fullWidth: number;
130
+ fullHeight: number;
131
+ offsetX: number;
132
+ offsetY: number;
133
+ width: number;
134
+ height: number;
135
+ } | null | undefined;
136
+ readonly type?: string | undefined;
137
+ toJSON?: ((meta?: import("three").JSONMeta) => import("three").PerspectiveCameraJSON) | undefined;
130
138
  readonly isObject3D?: true | undefined;
131
139
  readonly id?: number | undefined;
132
140
  uuid?: string | undefined;
@@ -152,8 +160,6 @@ export declare class NgtCanvas {
152
160
  onAfterShadow?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry, depthMaterial: import("three").Material, group: import("three").Group) => void) | undefined;
153
161
  onBeforeRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
154
162
  onAfterRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
155
- applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
156
- applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").PerspectiveCamera) | undefined;
157
163
  setRotationFromAxisAngle?: ((axis: Vector3, angle: number) => void) | undefined;
158
164
  setRotationFromEuler?: ((euler: import("three").Euler) => void) | undefined;
159
165
  setRotationFromMatrix?: ((m: import("three").Matrix4) => void) | undefined;
@@ -173,7 +179,6 @@ export declare class NgtCanvas {
173
179
  (vector: Vector3): void;
174
180
  (x: number, y: number, z: number): void;
175
181
  } | undefined;
176
- add?: ((...object: import("three").Object3D[]) => import("three").PerspectiveCamera) | undefined;
177
182
  remove?: ((...object: import("three").Object3D[]) => import("three").PerspectiveCamera) | undefined;
178
183
  removeFromParent?: (() => import("three").PerspectiveCamera) | undefined;
179
184
  clear?: (() => import("three").PerspectiveCamera) | undefined;
@@ -184,17 +189,21 @@ export declare class NgtCanvas {
184
189
  getWorldPosition?: ((target: Vector3) => Vector3) | undefined;
185
190
  getWorldQuaternion?: ((target: import("three").Quaternion) => import("three").Quaternion) | undefined;
186
191
  getWorldScale?: ((target: Vector3) => Vector3) | undefined;
192
+ getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
187
193
  traverse?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
188
194
  traverseVisible?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
189
195
  traverseAncestors?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
190
196
  updateMatrix?: (() => void) | undefined;
191
197
  updateMatrixWorld?: ((force?: boolean) => void) | undefined;
192
198
  updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | undefined;
193
- toJSON?: ((meta?: import("three").JSONMeta) => import("three").PerspectiveCameraJSON) | undefined;
194
- clone?: ((recursive?: boolean) => import("three").PerspectiveCamera) | undefined;
195
- copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").PerspectiveCamera) | undefined;
196
199
  hasEventListener?: (<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, import("three").PerspectiveCamera>) => boolean) | undefined;
197
200
  dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
201
+ readonly isCamera?: true | undefined;
202
+ matrixWorldInverse?: import("three").Matrix4 | undefined;
203
+ projectionMatrix?: import("three").Matrix4 | undefined;
204
+ projectionMatrixInverse?: import("three").Matrix4 | undefined;
205
+ coordinateSystem?: import("three").CoordinateSystem | undefined;
206
+ viewport?: import("three").Vector4 | undefined;
198
207
  readonly isPerspectiveCamera?: true | undefined;
199
208
  zoom?: number | undefined;
200
209
  fov?: number | undefined;
@@ -202,15 +211,6 @@ export declare class NgtCanvas {
202
211
  near?: number | undefined;
203
212
  far?: number | undefined;
204
213
  focus?: number | undefined;
205
- view?: {
206
- enabled: boolean;
207
- fullWidth: number;
208
- fullHeight: number;
209
- offsetX: number;
210
- offsetY: number;
211
- width: number;
212
- height: number;
213
- } | null | undefined;
214
214
  filmGauge?: number | undefined;
215
215
  filmOffset?: number | undefined;
216
216
  getFocalLength?: (() => number) | undefined;
@@ -234,18 +234,26 @@ export declare class NgtCanvas {
234
234
  dispose: (() => void) | null;
235
235
  raycast: import("three").Object3D["raycast"] | null;
236
236
  } & {
237
- readonly type?: string | undefined;
238
237
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").OrthographicCamera, typeof import("three").OrthographicCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
239
238
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").OrthographicCamera, typeof import("three").OrthographicCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
239
+ clone?: ((recursive?: boolean) => import("three").OrthographicCamera) | undefined;
240
+ copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").OrthographicCamera) | undefined;
241
+ add?: ((...object: import("three").Object3D[]) => import("three").OrthographicCamera) | undefined;
242
+ applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
243
+ applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").OrthographicCamera) | undefined;
240
244
  attach: string | string[] | import("./types").NgtAttachFunction;
241
245
  __ngt_args__: [left?: number | undefined, right?: number | undefined, top?: number | undefined, bottom?: number | undefined, near?: number | undefined, far?: number | undefined];
242
- readonly isCamera?: true | undefined;
243
- matrixWorldInverse?: import("three").Matrix4 | undefined;
244
- projectionMatrix?: import("three").Matrix4 | undefined;
245
- projectionMatrixInverse?: import("three").Matrix4 | undefined;
246
- coordinateSystem?: import("three").CoordinateSystem | undefined;
247
- viewport?: import("three").Vector4 | undefined;
248
- getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
246
+ view?: {
247
+ enabled: boolean;
248
+ fullWidth: number;
249
+ fullHeight: number;
250
+ offsetX: number;
251
+ offsetY: number;
252
+ width: number;
253
+ height: number;
254
+ } | null | undefined;
255
+ readonly type?: string | undefined;
256
+ toJSON?: ((meta?: import("three").JSONMeta) => import("three").OrthographicCameraJSON) | undefined;
249
257
  readonly isObject3D?: true | undefined;
250
258
  readonly id?: number | undefined;
251
259
  uuid?: string | undefined;
@@ -271,8 +279,6 @@ export declare class NgtCanvas {
271
279
  onAfterShadow?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry, depthMaterial: import("three").Material, group: import("three").Group) => void) | undefined;
272
280
  onBeforeRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
273
281
  onAfterRender?: ((renderer: import("three").WebGLRenderer, scene: Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void) | undefined;
274
- applyMatrix4?: ((matrix: import("three").Matrix4) => void) | undefined;
275
- applyQuaternion?: ((quaternion: import("three").Quaternion) => import("three").OrthographicCamera) | undefined;
276
282
  setRotationFromAxisAngle?: ((axis: Vector3, angle: number) => void) | undefined;
277
283
  setRotationFromEuler?: ((euler: import("three").Euler) => void) | undefined;
278
284
  setRotationFromMatrix?: ((m: import("three").Matrix4) => void) | undefined;
@@ -292,7 +298,6 @@ export declare class NgtCanvas {
292
298
  (vector: Vector3): void;
293
299
  (x: number, y: number, z: number): void;
294
300
  } | undefined;
295
- add?: ((...object: import("three").Object3D[]) => import("three").OrthographicCamera) | undefined;
296
301
  remove?: ((...object: import("three").Object3D[]) => import("three").OrthographicCamera) | undefined;
297
302
  removeFromParent?: (() => import("three").OrthographicCamera) | undefined;
298
303
  clear?: (() => import("three").OrthographicCamera) | undefined;
@@ -303,29 +308,24 @@ export declare class NgtCanvas {
303
308
  getWorldPosition?: ((target: Vector3) => Vector3) | undefined;
304
309
  getWorldQuaternion?: ((target: import("three").Quaternion) => import("three").Quaternion) | undefined;
305
310
  getWorldScale?: ((target: Vector3) => Vector3) | undefined;
311
+ getWorldDirection?: ((target: Vector3) => Vector3) | undefined;
306
312
  traverse?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
307
313
  traverseVisible?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
308
314
  traverseAncestors?: ((callback: (object: import("three").Object3D) => any) => void) | undefined;
309
315
  updateMatrix?: (() => void) | undefined;
310
316
  updateMatrixWorld?: ((force?: boolean) => void) | undefined;
311
317
  updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | undefined;
312
- toJSON?: ((meta?: import("three").JSONMeta) => import("three").OrthographicCameraJSON) | undefined;
313
- clone?: ((recursive?: boolean) => import("three").OrthographicCamera) | undefined;
314
- copy?: ((object: import("three").Object3D, recursive?: boolean) => import("three").OrthographicCamera) | undefined;
315
318
  hasEventListener?: (<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, import("three").OrthographicCamera>) => boolean) | undefined;
316
319
  dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
320
+ readonly isCamera?: true | undefined;
321
+ matrixWorldInverse?: import("three").Matrix4 | undefined;
322
+ projectionMatrix?: import("three").Matrix4 | undefined;
323
+ projectionMatrixInverse?: import("three").Matrix4 | undefined;
324
+ coordinateSystem?: import("three").CoordinateSystem | undefined;
325
+ viewport?: import("three").Vector4 | undefined;
317
326
  zoom?: number | undefined;
318
327
  near?: number | undefined;
319
328
  far?: number | undefined;
320
- view?: {
321
- enabled: boolean;
322
- fullWidth: number;
323
- fullHeight: number;
324
- offsetX: number;
325
- offsetY: number;
326
- width: number;
327
- height: number;
328
- } | null | undefined;
329
329
  setViewOffset?: ((fullWidth: number, fullHeight: number, offsetX: number, offsetY: number, width: number, height: number) => void) | undefined;
330
330
  clearViewOffset?: (() => void) | undefined;
331
331
  updateProjectionMatrix?: (() => void) | undefined;
package/lib/portal.d.ts CHANGED
@@ -34,7 +34,7 @@ export type NgtPortalInjectableState = Partial<Omit<NgtState, NgtPortalPrivateKe
34
34
  }>;
35
35
  export declare class NgtPortal {
36
36
  container: import("@angular/core").InputSignal<Object3D<import("three").Object3DEventMap>>;
37
- state: import("@angular/core").InputSignal<Partial<Omit<NgtState, "viewport" | "events" | "size" | "invalidate" | "advance" | "setEvents" | "setSize" | "setDpr" | "setFrameloop"> & {
37
+ state: import("@angular/core").InputSignal<Partial<Omit<NgtState, "viewport" | "size" | "setSize" | "events" | "invalidate" | "advance" | "setEvents" | "setDpr" | "setFrameloop"> & {
38
38
  events?: {
39
39
  enabled?: boolean;
40
40
  priority?: number;
package/lib/types.d.ts CHANGED
@@ -144,7 +144,7 @@ export interface NgtPointerCaptureTarget {
144
144
  target: Element;
145
145
  }
146
146
  export type NgtAttachFunction<TChild = any, TParent = any> = (parent: TParent, child: TChild, store: NgtSignalStore<NgtState>) => void | (() => void);
147
- export type NgtAttachable<TChild = any, TParent = any> = NgtAttachFunction<TChild, TParent> | string | string[];
147
+ export type NgtAttachable<TChild = any, TParent = any> = NgtAttachFunction<TChild, TParent> | string | (string | number)[];
148
148
  export interface NgtAfterAttach<TChild extends NgtInstanceNode = NgtInstanceNode, TParent extends NgtInstanceNode = NgtInstanceNode> {
149
149
  parent: TParent;
150
150
  node: TChild;
@@ -3,7 +3,7 @@ import { NgtCanvasElement, NgtDpr, NgtGLOptions, NgtIntersection, NgtSize } from
3
3
  export declare function makeId(event?: NgtIntersection): string;
4
4
  export declare function makeDpr(dpr: NgtDpr, window?: Window): number;
5
5
  export declare function makeRendererInstance<TCanvas extends NgtCanvasElement>(glOptions: NgtGLOptions, canvas: TCanvas): WebGLRenderer;
6
- export declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): OrthographicCamera | PerspectiveCamera;
6
+ export declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): PerspectiveCamera | OrthographicCamera;
7
7
  export type NgtObjectMap = {
8
8
  nodes: Record<string, Object3D<any>>;
9
9
  materials: Record<string, Material>;
@@ -18,6 +18,7 @@ export declare class NgtCanvasNative {
18
18
  raycaster: import("@angular/core").InputSignal<Partial<Raycaster> | undefined>;
19
19
  scene: import("@angular/core").InputSignal<Scene | Partial<Scene> | undefined>;
20
20
  camera: import("@angular/core").InputSignal<NonNullable<((import("angular-three").NgtCamera | Partial<{
21
+ name?: string | undefined;
21
22
  readonly type?: string | undefined;
22
23
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").Camera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").Camera, typeof import("three").Camera>, ev: import("angular-three").NgtNodeEventMap<import("three").Camera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
23
24
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").Camera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").Camera, typeof import("three").Camera>, ev: import("angular-three").NgtNodeEventMap<import("three").Camera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
@@ -33,7 +34,6 @@ export declare class NgtCanvasNative {
33
34
  readonly isObject3D?: true | undefined;
34
35
  readonly id?: number | undefined;
35
36
  uuid?: string | undefined;
36
- name?: string | undefined;
37
37
  parent?: import("three").Object3D<import("three").Object3DEventMap> | null | undefined;
38
38
  children?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined;
39
39
  readonly modelViewMatrix?: import("three").Matrix4 | undefined;
@@ -108,6 +108,7 @@ export declare class NgtCanvasNative {
108
108
  dispose: (() => void) | null;
109
109
  raycast: import("three").Object3D["raycast"] | null;
110
110
  } & {
111
+ name?: string | undefined;
111
112
  readonly type?: string | undefined;
112
113
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").PerspectiveCamera, typeof import("three").PerspectiveCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
113
114
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").PerspectiveCamera, typeof import("three").PerspectiveCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").PerspectiveCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
@@ -123,7 +124,6 @@ export declare class NgtCanvasNative {
123
124
  readonly isObject3D?: true | undefined;
124
125
  readonly id?: number | undefined;
125
126
  uuid?: string | undefined;
126
- name?: string | undefined;
127
127
  parent?: import("three").Object3D<import("three").Object3DEventMap> | null | undefined;
128
128
  children?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined;
129
129
  readonly modelViewMatrix?: import("three").Matrix4 | undefined;
@@ -227,6 +227,7 @@ export declare class NgtCanvasNative {
227
227
  dispose: (() => void) | null;
228
228
  raycast: import("three").Object3D["raycast"] | null;
229
229
  } & {
230
+ name?: string | undefined;
230
231
  readonly type?: string | undefined;
231
232
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").OrthographicCamera, typeof import("three").OrthographicCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
232
233
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three").OrthographicCamera, typeof import("three").OrthographicCamera>, ev: import("angular-three").NgtNodeEventMap<import("three").OrthographicCamera>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
@@ -242,7 +243,6 @@ export declare class NgtCanvasNative {
242
243
  readonly isObject3D?: true | undefined;
243
244
  readonly id?: number | undefined;
244
245
  uuid?: string | undefined;
245
- name?: string | undefined;
246
246
  parent?: import("three").Object3D<import("three").Object3DEventMap> | null | undefined;
247
247
  children?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined;
248
248
  readonly modelViewMatrix?: import("three").Matrix4 | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three",
3
- "version": "2.9.0",
3
+ "version": "2.10.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -101,4 +101,4 @@
101
101
  }
102
102
  },
103
103
  "sideEffects": false
104
- }
104
+ }
@@ -9,7 +9,7 @@ export declare class WebGL2RenderingContext {
9
9
  private GL_VERSION;
10
10
  private SCISSOR_BOX;
11
11
  private VIEWPORT;
12
- getParameter(paramId: number): number[] | string[] | undefined;
12
+ getParameter(paramId: number): string[] | number[] | undefined;
13
13
  getExtension(ext: string): any;
14
14
  getProgramInfoLog: () => string;
15
15
  getShaderInfoLog: () => string;
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Angular Three
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.