@posiwise/shared-components 0.0.114 → 0.0.116

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.
Files changed (33) hide show
  1. package/esm2022/lib/ab-test/ab-test-container/ab-test-container.component.mjs +2 -2
  2. package/esm2022/lib/clearbit-icon/clearbit-icon.component.mjs +2 -2
  3. package/esm2022/lib/custom-uploader/custom-uploader.component.mjs +2 -2
  4. package/esm2022/lib/image-cropper/image-cropper.component.mjs +1 -1
  5. package/esm2022/lib/label-management/entity-group/entity-group.component.mjs +4 -4
  6. package/esm2022/lib/label-management/group-definition/group-definition.component.mjs +4 -4
  7. package/esm2022/lib/label-management/groups/groups.component.mjs +11 -7
  8. package/esm2022/lib/no-data/no-data.component.mjs +2 -2
  9. package/esm2022/lib/number-picker/number-picker.component.mjs +1 -1
  10. package/esm2022/lib/password-validation/password-validation.component.mjs +3 -3
  11. package/esm2022/lib/permission-tree/permission-tree.component.mjs +1 -1
  12. package/esm2022/lib/privacy-and-tos/privacy-and-tos.component.mjs +2 -2
  13. package/esm2022/lib/privacy-policy/privacy-policy.component.mjs +1 -1
  14. package/esm2022/lib/pw-tabs/pw-tabs.component.mjs +5 -3
  15. package/esm2022/lib/range-date-picker/date-range-picker.component.mjs +1 -1
  16. package/esm2022/lib/shared-components.module.mjs +29 -29
  17. package/esm2022/lib/terms-conditions/terms-conditions.component.mjs +1 -1
  18. package/fesm2022/posiwise-shared-components.mjs +1012 -1006
  19. package/fesm2022/posiwise-shared-components.mjs.map +1 -1
  20. package/lib/ab-test/ab-test-container/ab-test-container.component.d.ts +1 -1
  21. package/lib/clearbit-icon/clearbit-icon.component.d.ts +1 -1
  22. package/lib/custom-uploader/custom-uploader.component.d.ts +1 -1
  23. package/lib/image-cropper/image-cropper.component.d.ts +1 -1
  24. package/lib/label-management/entity-group/entity-group.component.d.ts +10 -10
  25. package/lib/label-management/group-definition/group-definition.component.d.ts +2 -2
  26. package/lib/label-management/groups/groups.component.d.ts +14 -14
  27. package/lib/no-data/no-data.component.d.ts +2 -1
  28. package/lib/number-picker/number-picker.component.d.ts +1 -1
  29. package/lib/password-validation/password-validation.component.d.ts +1 -1
  30. package/lib/privacy-and-tos/privacy-and-tos.component.d.ts +4 -4
  31. package/lib/pw-tabs/pw-tabs.component.d.ts +1 -1
  32. package/lib/range-date-picker/date-range-picker.component.d.ts +2 -2
  33. package/package.json +1 -1
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
29
29
  }], ctorParameters: () => [{ type: i1.AppConfigService }], propDecorators: { isPublic: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvdGVybXMtY29uZGl0aW9ucy90ZXJtcy1jb25kaXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBT2hFLE1BQU0sT0FBTyx3QkFBd0I7SUFrQmpDLFlBQTZCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBaEIvRCxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFnQkMsQ0FBQztJQUVuRSxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBOUJRLHdCQUF3QjttR0FBeEIsd0JBQXdCLDZGQ1RyQyw4OGxFQTh2Q0E7OzRGRHJ2Q2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLHFCQUFxQjtxRkFNL0IsUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy10ZXJtcy1jb25kaXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlcm1zQ29uZGl0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpc1B1YmxpYyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygndGVybXMtY29uZGl0aW9ucycpO1xuXG4gICAgY29tcGFueV9uYW1lOiBzdHJpbmc7XG5cbiAgICBjb21wYW55X251bWJlcjogc3RyaW5nO1xuXG4gICAgY29tcGFueV9zdGF0ZTogc3RyaW5nO1xuXG4gICAgY29tcGFueV9zdHJlZXQ6IHN0cmluZztcblxuICAgIGNvbXBhbnlfZW1haWw6IHN0cmluZztcblxuICAgIGNvbXBhbnlfY2l0eTogc3RyaW5nO1xuXG4gICAgY29tcGFueV9jaXR5X2NvZGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9uYW1lID0gY29uZmlnPy5bJ2NvbXBhbnknXS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5jb21wYW55X251bWJlciA9IGNvbmZpZz8uWydjb21wYW55J10ubnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5jb21wYW55X3N0YXRlID0gY29uZmlnPy5bJ2NvbXBhbnknXS5zdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9zdHJlZXQgPSBjb25maWc/LlsnY29tcGFueSddLnN0cmVldDtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9lbWFpbCA9IGNvbmZpZz8uWydjb21wYW55J10uZW1haWw7XG4gICAgICAgICAgICB0aGlzLmNvbXBhbnlfY2l0eSA9IGNvbmZpZz8uWydjb21wYW55J10uY2l0eTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9jaXR5X2NvZGUgPSBjb25maWc/LlsnY29tcGFueSddLmNpdHlfY29kZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUHVibGljXCI+XG4gIDxwdy1sYW5kaW5nLXBhZ2UtaGVhZGVyIFtsYW5kaW5nXT1cImZhbHNlXCI+PC9wdy1sYW5kaW5nLXBhZ2UtaGVhZGVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXIgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5XCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ210LTUnOiBpc1B1YmxpYyB9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRlcm1zLW9mLXNlcnZpY2VcIj5cbiAgICAgICAgICAgIDxoMT5QT1NJV0lTRSBURVJNUyBBTkQgQ09ORElUSU9OUzwvaDE+XG4gICAgICAgICAgICA8cD5MYXN0IHVwZGF0ZWQgMjYvMTAvMjAxOTwvcD5cbiAgICAgICAgICAgIDxoMj5BR1JFRU1FTlQgVE8gVEVSTVM8L2gyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIGNvbnN0aXR1dGUgYSBsZWdhbGx5IGJpbmRpbmcgYWdyZWVtZW50IG1hZGUgYmV0d2VlblxuICAgICAgICAgICAgICB5b3UsIHdoZXRoZXIgcGVyc29uYWxseSBvciBvbiBiZWhhbGYgb2YgYW4gZW50aXR5ICjigJx5b3XigJ0pIGFuZFxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0sIHt7IGNvbXBhbnlfc3RyZWV0IH19LCB7eyBjb21wYW55X2NpdHlfY29kZSB9fVxuICAgICAgICAgICAgICB7eyBjb21wYW55X2NpdHkgfX1cbiAgICAgICAgICAgICAgLSB7eyBjb21wYW55X3N0YXRlIH19LCB7eyBjb21wYW55X251bWJlciB9fSAo4oCcd2Us4oCdIOKAnHVz4oCdIG9yIOKAnG91cuKAnSksXG4gICAgICAgICAgICAgIGNvbmNlcm5pbmcgeW91ciBhY2Nlc3MgdG8gYW5kIHVzZSBvZiB0aGUge3sgY29tcGFueV9zdGF0ZSB9fSB3ZWJzaXRlIGFzXG4gICAgICAgICAgICAgIHdlbGwgYXMgYW55IG90aGVyIG1lZGlhIGZvcm0sIG1lZGlhIGNoYW5uZWwsIG1vYmlsZSB3ZWJzaXRlIG9yIG1vYmlsZVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbiByZWxhdGVkLCBsaW5rZWQsIG9yIG90aGVyd2lzZSBjb25uZWN0ZWQgdGhlcmV0b1xuICAgICAgICAgICAgICAoY29sbGVjdGl2ZWx5LCB0aGUg4oCcU2l0ZeKAnSkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGFncmVlIHRoYXQgYnkgYWNjZXNzaW5nIHRoZSBTaXRlLCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLCBhbmRcbiAgICAgICAgICAgICAgYWdyZWUgdG8gYmUgYm91bmQgYnkgYWxsIG9mIHRoZXNlIFRlcm1zIG9mIFVzZS4gSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoXG4gICAgICAgICAgICAgIGFsbCBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIHRoZW4geW91IGFyZSBleHByZXNzbHkgcHJvaGliaXRlZCBmcm9tIHVzaW5nXG4gICAgICAgICAgICAgIHRoZSBTaXRlIGFuZCB5b3UgbXVzdCBkaXNjb250aW51ZSB1c2UgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgU3VwcGxlbWVudGFsIHRlcm1zIGFuZCBjb25kaXRpb25zIG9yIGRvY3VtZW50cyB0aGF0IG1heSBiZSBwb3N0ZWQgb24gdGhlXG4gICAgICAgICAgICAgIFNpdGUgZnJvbSB0aW1lIHRvIHRpbWUgYXJlIGhlcmVieSBleHByZXNzbHkgaW5jb3Jwb3JhdGVkIGhlcmVpbiBieVxuICAgICAgICAgICAgICByZWZlcmVuY2UuIFdlIHJlc2VydmUgdGhlIHJpZ2h0LCBpbiBvdXIgc29sZSBkaXNjcmV0aW9uLCB0byBtYWtlIGNoYW5nZXNcbiAgICAgICAgICAgICAgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGVzZSBUZXJtcyBvZiBVc2UgYXQgYW55IHRpbWUgYW5kIGZvciBhbnkgcmVhc29uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIHdpbGwgYWxlcnQgeW91IGFib3V0IGFueSBjaGFuZ2VzIGJ5IHVwZGF0aW5nIHRoZSDigJxMYXN0IHVwZGF0ZWTigJ0gZGF0ZVxuICAgICAgICAgICAgICBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIGFuZCB5b3Ugd2FpdmUgYW55IHJpZ2h0IHRvIHJlY2VpdmUgc3BlY2lmaWNcbiAgICAgICAgICAgICAgbm90aWNlIG9mIGVhY2ggc3VjaCBjaGFuZ2UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBwZXJpb2RpY2FsbHkgcmV2aWV3IHRoZXNlIFRlcm1zIG9mIFVzZSB0b1xuICAgICAgICAgICAgICBzdGF5IGluZm9ybWVkIG9mIHVwZGF0ZXMuIFlvdSB3aWxsIGJlIHN1YmplY3QgdG8sIGFuZCB3aWxsIGJlIGRlZW1lZCB0b1xuICAgICAgICAgICAgICBoYXZlIGJlZW4gbWFkZSBhd2FyZSBvZiBhbmQgdG8gaGF2ZSBhY2NlcHRlZCwgdGhlIGNoYW5nZXMgaW4gYW55IHJldmlzZWRcbiAgICAgICAgICAgICAgVGVybXMgb2YgVXNlIGJ5IHlvdXIgY29udGludWVkIHVzZSBvZiB0aGUgU2l0ZSBhZnRlciB0aGUgZGF0ZSBzdWNoXG4gICAgICAgICAgICAgIHJldmlzZWQgVGVybXMgb2YgVXNlIGFyZSBwb3N0ZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIG9uIHRoZSBTaXRlIGlzIG5vdCBpbnRlbmRlZCBmb3IgZGlzdHJpYnV0aW9uIHRvXG4gICAgICAgICAgICAgIG9yIHVzZSBieSBhbnkgcGVyc29uIG9yIGVudGl0eSBpbiBhbnkganVyaXNkaWN0aW9uIG9yIGNvdW50cnkgd2hlcmUgc3VjaFxuICAgICAgICAgICAgICBkaXN0cmlidXRpb24gb3IgdXNlIHdvdWxkIGJlIGNvbnRyYXJ5IHRvIGxhdyBvciByZWd1bGF0aW9uIG9yIHdoaWNoXG4gICAgICAgICAgICAgIHdvdWxkIHN1YmplY3QgdXMgdG8gYW55IHJlZ2lzdHJhdGlvbiByZXF1aXJlbWVudCB3aXRoaW4gc3VjaFxuICAgICAgICAgICAgICBqdXJpc2RpY3Rpb24gb3IgY291bnRyeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBY2NvcmRpbmdseSwgdGhvc2UgcGVyc29ucyB3aG8gY2hvb3NlIHRvIGFjY2VzcyB0aGUgU2l0ZSBmcm9tIG90aGVyXG4gICAgICAgICAgICAgIGxvY2F0aW9ucyBkbyBzbyBvbiB0aGVpciBvd24gaW5pdGlhdGl2ZSBhbmQgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3JcbiAgICAgICAgICAgICAgY29tcGxpYW5jZSB3aXRoIGxvY2FsIGxhd3MsIGlmIGFuZCB0byB0aGUgZXh0ZW50IGxvY2FsIGxhd3MgYXJlXG4gICAgICAgICAgICAgIGFwcGxpY2FibGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIFNpdGUgaXMgaW50ZW5kZWQgZm9yIHVzZXJzIHdobyBhcmUgYXQgbGVhc3QgMTMgeWVhcnMgb2YgYWdlLiBBbGxcbiAgICAgICAgICAgICAgdXNlcnMgd2hvIGFyZSBtaW5vcnMgaW4gdGhlIGp1cmlzZGljdGlvbiBpbiB3aGljaCB0aGV5IHJlc2lkZSAoZ2VuZXJhbGx5XG4gICAgICAgICAgICAgIHVuZGVyIHRoZSBhZ2Ugb2YgMTgpIG11c3QgaGF2ZSB0aGUgcGVybWlzc2lvbiBvZiwgYW5kIGJlIGRpcmVjdGx5XG4gICAgICAgICAgICAgIHN1cGVydmlzZWQgYnksIHRoZWlyIHBhcmVudCBvciBndWFyZGlhbiB0byB1c2UgdGhlIFNpdGUuIElmIHlvdSBhcmUgYVxuICAgICAgICAgICAgICBtaW5vciwgeW91IG11c3QgaGF2ZSB5b3VyIHBhcmVudCBvciBndWFyZGlhbiByZWFkIGFuZCBhZ3JlZSB0byB0aGVzZVxuICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UgcHJpb3IgdG8geW91IHVzaW5nIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPklOVEVMTEVDVFVBTCBQUk9QRVJUWSBSSUdIVFM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCB0aGUgU2l0ZSBpcyBvdXIgcHJvcHJpZXRhcnkgcHJvcGVydHkgYW5kIGFsbFxuICAgICAgICAgICAgICBzb3VyY2UgY29kZSwgZGF0YWJhc2VzLCBmdW5jdGlvbmFsaXR5LCBzb2Z0d2FyZSwgd2Vic2l0ZSBkZXNpZ25zLCBhdWRpbyxcbiAgICAgICAgICAgICAgdmlkZW8sIHRleHQsIHBob3RvZ3JhcGhzLCBhbmQgZ3JhcGhpY3Mgb24gdGhlIFNpdGUgKGNvbGxlY3RpdmVseSwgdGhlXG4gICAgICAgICAgICAgIOKAnENvbnRlbnTigJ0pIGFuZCB0aGUgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgYW5kIGxvZ29zIGNvbnRhaW5lZFxuICAgICAgICAgICAgICB0aGVyZWluICh0aGUg4oCcTWFya3PigJ0pIGFyZSBvd25lZCBvciBjb250cm9sbGVkIGJ5IHVzIG9yIGxpY2Vuc2VkIHRvIHVzLFxuICAgICAgICAgICAgICBhbmQgYXJlIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgYW5kIHRyYWRlbWFyayBsYXdzIGFuZCB2YXJpb3VzIG90aGVyXG4gICAgICAgICAgICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgYW5kIHVuZmFpciBjb21wZXRpdGlvbiBsYXdzIG9mIHRoZSBVbml0ZWRcbiAgICAgICAgICAgICAgU3RhdGVzLCBmb3JlaWduIGp1cmlzZGljdGlvbnMsIGFuZCBpbnRlcm5hdGlvbmFsIGNvbnZlbnRpb25zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRoZSBDb250ZW50IGFuZCB0aGUgTWFya3MgYXJlIHByb3ZpZGVkIG9uIHRoZSBTaXRlIOKAnEFTIElT4oCdIGZvciB5b3VyXG4gICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFuZCBwZXJzb25hbCB1c2Ugb25seS4gRXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCBpbiB0aGVzZVxuICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UsIG5vIHBhcnQgb2YgdGhlIFNpdGUgYW5kIG5vIENvbnRlbnQgb3IgTWFya3MgbWF5IGJlIGNvcGllZCxcbiAgICAgICAgICAgICAgcmVwcm9kdWNlZCwgYWdncmVnYXRlZCwgcmVwdWJsaXNoZWQsIHVwbG9hZGVkLCBwb3N0ZWQsIHB1YmxpY2x5XG4gICAgICAgICAgICAgIGRpc3BsYXllZCwgZW5jb2RlZCwgdHJhbnNsYXRlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBzb2xkLFxuICAgICAgICAgICAgICBsaWNlbnNlZCwgb3Igb3RoZXJ3aXNlIGV4cGxvaXRlZCBmb3IgYW55IGNvbW1lcmNpYWwgcHVycG9zZSB3aGF0c29ldmVyLFxuICAgICAgICAgICAgICB3aXRob3V0IG91ciBleHByZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBQcm92aWRlZCB0aGF0IHlvdSBhcmUgZWxpZ2libGUgdG8gdXNlIHRoZSBTaXRlLCB5b3UgYXJlIGdyYW50ZWQgYVxuICAgICAgICAgICAgICBsaW1pdGVkIGxpY2Vuc2UgdG8gYWNjZXNzIGFuZCB1c2UgdGhlIFNpdGUgYW5kIHRvIGRvd25sb2FkIG9yIHByaW50IGFcbiAgICAgICAgICAgICAgY29weSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUgQ29udGVudCB0byB3aGljaCB5b3UgaGF2ZSBwcm9wZXJseSBnYWluZWRcbiAgICAgICAgICAgICAgYWNjZXNzIHNvbGVseSBmb3IgeW91ciBwZXJzb25hbCwgbm9uLWNvbW1lcmNpYWwgdXNlLiBXZSByZXNlcnZlIGFsbFxuICAgICAgICAgICAgICByaWdodHMgbm90IGV4cHJlc3NseSBncmFudGVkIHRvIHlvdSBpbiBhbmQgdG8gdGhlIFNpdGUsIHRoZSBDb250ZW50IGFuZFxuICAgICAgICAgICAgICB0aGUgTWFya3MuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDE+VVNFUiBSRVBSRVNFTlRBVElPTlM8L2gxPlxuICAgICAgICAgICAgPHA+QnkgdXNpbmcgdGhlIFNpdGUsIHlvdSByZXByZXNlbnQgYW5kIHdhcnJhbnQgdGhhdDo8L3A+XG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgYWxsIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiB5b3Ugc3VibWl0IHdpbGwgYmUgdHJ1ZSwgYWNjdXJhdGUsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50LCBhbmQgY29tcGxldGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIG1haW50YWluIHRoZSBhY2N1cmFjeSBvZiBzdWNoIGluZm9ybWF0aW9uIGFuZCBwcm9tcHRseVxuICAgICAgICAgICAgICAgICAgdXBkYXRlIHN1Y2ggcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGFzIG5lY2Vzc2FyeS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IGhhdmUgdGhlIGxlZ2FsIGNhcGFjaXR5IGFuZCB5b3UgYWdyZWUgdG8gY29tcGx5IHdpdGggdGhlc2VcbiAgICAgICAgICAgICAgICAgIFRlcm1zIG9mIFVzZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPnlvdSBhcmUgbm90IHVuZGVyIHRoZSBhZ2Ugb2YgMTMuPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIG5vdCBhIG1pbm9yIGluIHRoZSBqdXJpc2RpY3Rpb24gaW4gd2hpY2ggeW91IHJlc2lkZSwgb3IgaWYgYVxuICAgICAgICAgICAgICAgICAgbWlub3IsIHlvdSBoYXZlIHJlY2VpdmVkIHBhcmVudGFsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBTaXRlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3Ugd2lsbCBub3QgYWNjZXNzIHRoZSBTaXRlIHRocm91Z2ggYXV0b21hdGVkIG9yIG5vbi1odW1hblxuICAgICAgICAgICAgICAgICAgbWVhbnMsIHdoZXRoZXIgdGhyb3VnaCBhIGJvdCwgc2NyaXB0LCBvciBvdGhlcndpc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIG5vdCB1c2UgdGhlIFNpdGUgZm9yIGFueSBpbGxlZ2FsIG9yIHVuYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgICAgcHVycG9zZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciB1c2Ugb2YgdGhlIFNpdGUgd2lsbCBub3QgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXcgb3JcbiAgICAgICAgICAgICAgICAgIHJlZ3VsYXRpb24uXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB5b3UgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gdGhhdCBpcyB1bnRydWUsIGluYWNjdXJhdGUsIG5vdCBjdXJyZW50LFxuICAgICAgICAgICAgICBvciBpbmNvbXBsZXRlLCB3ZSBoYXZlIHRoZSByaWdodCB0byBzdXNwZW5kIG9yIHRlcm1pbmF0ZSB5b3VyIGFjY291bnRcbiAgICAgICAgICAgICAgYW5kIHJlZnVzZSBhbnkgYW5kIGFsbCBjdXJyZW50IG9yIGZ1dHVyZSB1c2Ugb2YgdGhlIFNpdGUgKG9yIGFueSBwb3J0aW9uXG4gICAgICAgICAgICAgIHRoZXJlb2YpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlVTRVIgUkVHSVNUUkFUSU9OPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgbWF5IGJlIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIHdpdGggdGhlIFNpdGUuIFlvdSBhZ3JlZSB0byBrZWVwIHlvdXJcbiAgICAgICAgICAgICAgcGFzc3dvcmQgY29uZmlkZW50aWFsIGFuZCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBhbGwgdXNlIG9mIHlvdXJcbiAgICAgICAgICAgICAgYWNjb3VudCBhbmQgcGFzc3dvcmQuIFdlIHJlc2VydmUgdGhlIHJpZ2h0IHRvIHJlbW92ZSwgcmVjbGFpbSwgb3IgY2hhbmdlXG4gICAgICAgICAgICAgIGEgdXNlcm5hbWUgeW91IHNlbGVjdCBpZiB3ZSBkZXRlcm1pbmUsIGluIG91ciBzb2xlIGRpc2NyZXRpb24sIHRoYXQgc3VjaFxuICAgICAgICAgICAgICB1c2VybmFtZSBpcyBpbmFwcHJvcHJpYXRlLCBvYnNjZW5lLCBvciBvdGhlcndpc2Ugb2JqZWN0aW9uYWJsZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5QUk9ISUJJVEVEIEFDVElWSVRJRVM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBtYXkgbm90IGFjY2VzcyBvciB1c2UgdGhlIFNpdGUgZm9yIGFueSBwdXJwb3NlIG90aGVyIHRoYW4gdGhhdCBmb3JcbiAgICAgICAgICAgICAgd2hpY2ggd2UgbWFrZSB0aGUgU2l0ZSBhdmFpbGFibGUuIFRoZSBTaXRlIG1heSBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIHdpdGggYW55IGNvbW1lcmNpYWwgZW5kZWF2b3JzIGV4Y2VwdCB0aG9zZSB0aGF0IGFyZSBzcGVjaWZpY2FsbHlcbiAgICAgICAgICAgICAgZW5kb3JzZWQgb3IgYXBwcm92ZWQgYnkgdXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5BcyBhIHVzZXIgb2YgdGhlIFNpdGUsIHlvdSBhZ3JlZSBub3QgdG86PC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgc3lzdGVtYXRpY2FsbHkgcmV0cmlldmUgZGF0YSBvciBvdGhlciBjb250ZW50IGZyb20gdGhlIFNpdGUgdG9cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciBjb21waWxlLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBhIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwgZGF0YWJhc2UsIG9yIGRpcmVjdG9yeSB3aXRob3V0IHdyaXR0ZW4gcGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgZnJvbSB1cy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgbWFrZSBhbnkgdW5hdXRob3JpemVkIHVzZSBvZiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGNvbGxlY3RpbmdcbiAgICAgICAgICAgICAgICAgIHVzZXJuYW1lcyBhbmQvb3IgZW1haWwgYWRkcmVzc2VzIG9mIHVzZXJzIGJ5IGVsZWN0cm9uaWMgb3Igb3RoZXJcbiAgICAgICAgICAgICAgICAgIG1lYW5zIGZvciB0aGUgcHVycG9zZSBvZiBzZW5kaW5nIHVuc29saWNpdGVkIGVtYWlsLCBvciBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgdXNlciBhY2NvdW50cyBieSBhdXRvbWF0ZWQgbWVhbnMgb3IgdW5kZXIgZmFsc2UgcHJldGVuc2VzLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB1c2UgYSBidXlpbmcgYWdlbnQgb3IgcHVyY2hhc2luZyBhZ2VudCB0byBtYWtlIHB1cmNoYXNlcyBvbiB0aGVcbiAgICAgICAgICAgICAgICAgIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSB0aGUgU2l0ZSB0byBhZHZlcnRpc2Ugb3Igb2ZmZXIgdG8gc2VsbCBnb29kcyBhbmQgc2VydmljZXMuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGNpcmN1bXZlbnQsIGRpc2FibGUsIG9yIG90aGVyd2lzZSBpbnRlcmZlcmUgd2l0aFxuICAgICAgICAgICAgICAgICAgc2VjdXJpdHktcmVsYXRlZCBmZWF0dXJlcyBvZiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGZlYXR1cmVzIHRoYXRcbiAgICAgICAgICAgICAgICAgIHByZXZlbnQgb3IgcmVzdHJpY3QgdGhlIHVzZSBvciBjb3B5aW5nIG9mIGFueSBDb250ZW50IG9yIGVuZm9yY2VcbiAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zIG9uIHRoZSB1c2Ugb2YgdGhlIFNpdGUgYW5kL29yIHRoZSBDb250ZW50IGNvbnRhaW5lZFxuICAgICAgICAgICAgICAgICAgdGhlcmVpbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZW5nYWdlIGluIHVuYXV0aG9yaXplZCBmcmFtaW5nIG9mIG9yIGxpbmtpbmcgdG8gdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHRyaWNrLCBkZWZyYXVkLCBvciBtaXNsZWFkIHVzIGFuZCBvdGhlciB1c2VycywgZXNwZWNpYWxseSBpbiBhbnlcbiAgICAgICAgICAgICAgICAgIGF0dGVtcHQgdG8gbGVhcm4gc2Vuc2l0aXZlIGFjY291bnQgaW5mb3JtYXRpb24gc3VjaCBhcyB1c2VyXG4gICAgICAgICAgICAgICAgICBwYXNzd29yZHNcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgbWFrZSBpbXByb3BlciB1c2Ugb2Ygb3VyIHN1cHBvcnQgc2VydmljZXMgb3Igc3VibWl0IGZhbHNlXG4gICAgICAgICAgICAgICAgICByZXBvcnRzIG9mIGFidXNlIG9yIG1pc2NvbmR1Y3QuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGVuZ2FnZSBpbiBhbnkgYXV0b21hdGVkIHVzZSBvZiB0aGUgc3lzdGVtLCBzdWNoIGFzIHVzaW5nIHNjcmlwdHNcbiAgICAgICAgICAgICAgICAgIHRvIHNlbmQgY29tbWVudHMgb3IgbWVzc2FnZXMsIG9yIHVzaW5nIGFueSBkYXRhIG1pbmluZywgcm9ib3RzLFxuICAgICAgICAgICAgICAgICAgb3Igc2ltaWxhciBkYXRhIGdhdGhlcmluZyBhbmQgZXh0cmFjdGlvbiB0b29scy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgaW50ZXJmZXJlIHdpdGgsIGRpc3J1cHQsIG9yIGNyZWF0ZSBhbiB1bmR1ZSBidXJkZW4gb24gdGhlIFNpdGVcbiAgICAgICAgICAgICAgICAgIG9yIHRoZSBuZXR3b3JrcyBvciBzZXJ2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGF0dGVtcHQgdG8gaW1wZXJzb25hdGUgYW5vdGhlciB1c2VyIG9yIHBlcnNvbiBvciB1c2UgdGhlXG4gICAgICAgICAgICAgICAgICB1c2VybmFtZSBvZiBhbm90aGVyIHVzZXIuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5zZWxsIG9yIG90aGVyd2lzZSB0cmFuc2ZlciB5b3VyIHByb2ZpbGUuPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSBhbnkgaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGUgU2l0ZSBpbiBvcmRlciB0byBoYXJhc3MsXG4gICAgICAgICAgICAgICAgICBhYnVzZSwgb3IgaGFybSBhbm90aGVyIHBlcnNvbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgdXNlIHRoZSBTaXRlIGFzIHBhcnQgb2YgYW55IGVmZm9ydCB0byBjb21wZXRlIHdpdGggdXMgb3JcbiAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSB1c2UgdGhlIFNpdGUgYW5kL29yIHRoZSBDb250ZW50IGZvciBhbnlcbiAgICAgICAgICAgICAgICAgIHJldmVudWUtZ2VuZXJhdGluZyBlbmRlYXZvciBvciBjb21tZXJjaWFsIGVudGVycHJpc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGRlY2lwaGVyLCBkZWNvbXBpbGUsIGRpc2Fzc2VtYmxlLCBvciByZXZlcnNlIGVuZ2luZWVyIGFueSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGNvbXByaXNpbmcgb3IgaW4gYW55IHdheSBtYWtpbmcgdXAgYSBwYXJ0IG9mIHRoZSBTaXRlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICBhdHRlbXB0IHRvIGJ5cGFzcyBhbnkgbWVhc3VyZXMgb2YgdGhlIFNpdGUgZGVzaWduZWQgdG8gcHJldmVudFxuICAgICAgICAgICAgICAgICAgb3IgcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBTaXRlLCBvciBhbnkgcG9ydGlvbiBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgaGFyYXNzLCBhbm5veSwgaW50aW1pZGF0ZSwgb3IgdGhyZWF0ZW4gYW55IG9mIG91ciBlbXBsb3llZXMgb3JcbiAgICAgICAgICAgICAgICAgIGFnZW50cyBlbmdhZ2VkIGluIHByb3ZpZGluZyBhbnkgcG9ydGlvbiBvZiB0aGUgU2l0ZSB0byB5b3UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGUgY29weXJpZ2h0IG9yIG90aGVyIHByb3ByaWV0YXJ5IHJpZ2h0cyBub3RpY2UgZnJvbSBhbnlcbiAgICAgICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGNvcHkgb3IgYWRhcHQgdGhlIFNpdGXigJlzIHNvZnR3YXJlLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvXG4gICAgICAgICAgICAgICAgICBGbGFzaCwgUEhQLCBIVE1MLCBKYXZhU2NyaXB0LCBvciBvdGhlciBjb2RlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB1cGxvYWQgb3IgdHJhbnNtaXQgKG9yIGF0dGVtcHQgdG8gdXBsb2FkIG9yIHRvIHRyYW5zbWl0KVxuICAgICAgICAgICAgICAgICAgdmlydXNlcywgVHJvamFuIGhvcnNlcywgb3Igb3RoZXIgbWF0ZXJpYWwsIGluY2x1ZGluZyBleGNlc3NpdmVcbiAgICAgICAgICAgICAgICAgIHVzZSBvZiBjYXBpdGFsIGxldHRlcnMgYW5kIHNwYW1taW5nIChjb250aW51b3VzIHBvc3Rpbmcgb2ZcbiAgICAgICAgICAgICAgICAgIHJlcGV0aXRpdmUgdGV4dCksIHRoYXQgaW50ZXJmZXJlcyB3aXRoIGFueSBwYXJ0eeKAmXMgdW5pbnRlcnJ1cHRlZFxuICAgICAgICAgICAgICAgICAgdXNlIGFuZCBlbmpveW1lbnQgb2YgdGhlIFNpdGUgb3IgbW9kaWZpZXMsIGltcGFpcnMsIGRpc3J1cHRzLFxuICAgICAgICAgICAgICAgICAgYWx0ZXJzLCBvciBpbnRlcmZlcmVzIHdpdGggdGhlIHVzZSwgZmVhdHVyZXMsIGZ1bmN0aW9ucyxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiwgb3IgbWFpbnRlbmFuY2Ugb2YgdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVwbG9hZCBvciB0cmFuc21pdCAob3IgYXR0ZW1wdCB0byB1cGxvYWQgb3IgdG8gdHJhbnNtaXQpIGFueVxuICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwgdGhhdCBhY3RzIGFzIGEgcGFzc2l2ZSBvciBhY3RpdmUgaW5mb3JtYXRpb24gY29sbGVjdGlvblxuICAgICAgICAgICAgICAgICAgb3IgdHJhbnNtaXNzaW9uIG1lY2hhbmlzbSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgY2xlYXJcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNzIGludGVyY2hhbmdlIGZvcm1hdHMgKOKAnGdpZnPigJ0pLCAxw5cxIHBpeGVscywgd2ViIGJ1Z3MsXG4gICAgICAgICAgICAgICAgICBjb29raWVzLCBvciBvdGhlciBzaW1pbGFyIGRldmljZXMgKHNvbWV0aW1lcyByZWZlcnJlZCB0byBhc1xuICAgICAgICAgICAgICAgICAg4oCcc3B5d2FyZeKAnSBvciDigJxwYXNzaXZlIGNvbGxlY3Rpb24gbWVjaGFuaXNtc+KAnSBvciDigJxwY21z4oCdKS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZXhjZXB0IGFzIG1heSBiZSB0aGUgcmVzdWx0IG9mIHN0YW5kYXJkIHNlYXJjaCBlbmdpbmUgb3JcbiAgICAgICAgICAgICAgICAgIEludGVybmV0IGJyb3dzZXIgdXNhZ2UsIHVzZSwgbGF1bmNoLCBkZXZlbG9wLCBvciBkaXN0cmlidXRlIGFueVxuICAgICAgICAgICAgICAgICAgYXV0b21hdGVkIHN5c3RlbSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHNwaWRlcixcbiAgICAgICAgICAgICAgICAgIHJvYm90LCBjaGVhdCB1dGlsaXR5LCBzY3JhcGVyLCBvciBvZmZsaW5lIHJlYWRlciB0aGF0IGFjY2Vzc2VzXG4gICAgICAgICAgICAgICAgICB0aGUgU2l0ZSwgb3IgdXNpbmcgb3IgbGF1bmNoaW5nIGFueSB1bmF1dGhvcml6ZWQgc2NyaXB0IG9yIG90aGVyXG4gICAgICAgICAgICAgICAgICBzb2Z0d2FyZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZGlzcGFyYWdlLCB0YXJuaXNoLCBvciBvdGhlcndpc2UgaGFybSwgaW4gb3VyIG9waW5pb24sIHVzIGFuZC9vclxuICAgICAgICAgICAgICAgICAgdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSB0aGUgU2l0ZSBpbiBhIG1hbm5lciBpbmNvbnNpc3RlbnQgd2l0aCBhbnkgYXBwbGljYWJsZSBsYXdzXG4gICAgICAgICAgICAgICAgICBvciByZWd1bGF0aW9ucy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuXG4gICAgICAgICAgICA8aDI+VVNFUiBHRU5FUkFURUQgQ09OVFJJQlVUSU9OUzwvaDI+XG5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGUgU2l0ZSBtYXkgaW52aXRlIHlvdSB0byBjaGF0LCBjb250cmlidXRlIHRvLCBvciBwYXJ0aWNpcGF0ZSBpbiBibG9ncyxcbiAgICAgICAgICAgICAgbWVzc2FnZSBib2FyZHMsIG9ubGluZSBmb3J1bXMsIGFuZCBvdGhlciBmdW5jdGlvbmFsaXR5LCBhbmQgbWF5IHByb3ZpZGVcbiAgICAgICAgICAgICAgeW91IHdpdGggdGhlIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSwgc3VibWl0LCBwb3N0LCBkaXNwbGF5LCB0cmFuc21pdCxcbiAgICAgICAgICAgICAgcGVyZm9ybSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgb3IgYnJvYWRjYXN0IGNvbnRlbnQgYW5kIG1hdGVyaWFscyB0byB1c1xuICAgICAgICAgICAgICBvciBvbiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0ZXh0LCB3cml0aW5ncywgdmlkZW8sXG4gICAgICAgICAgICAgIGF1ZGlvLCBwaG90b2dyYXBocywgZ3JhcGhpY3MsIGNvbW1lbnRzLCBzdWdnZXN0aW9ucywgb3IgcGVyc29uYWxcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb3Igb3RoZXIgbWF0ZXJpYWwgKGNvbGxlY3RpdmVseSwgXCJDb250cmlidXRpb25zXCIpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgbWF5IGJlIHZpZXdhYmxlIGJ5IG90aGVyIHVzZXJzIG9mIHRoZSBTaXRlIGFuZCB0aHJvdWdoXG4gICAgICAgICAgICAgIHRoaXJkLXBhcnR5IHdlYnNpdGVzLiBBcyBzdWNoLCBhbnkgQ29udHJpYnV0aW9ucyB5b3UgdHJhbnNtaXQgbWF5IGJlXG4gICAgICAgICAgICAgIHRyZWF0ZWQgYXMgbm9uLWNvbmZpZGVudGlhbCBhbmQgbm9uLXByb3ByaWV0YXJ5LiBXaGVuIHlvdSBjcmVhdGUgb3IgbWFrZVxuICAgICAgICAgICAgICBhdmFpbGFibGUgYW55IENvbnRyaWJ1dGlvbnMsIHlvdSB0aGVyZWJ5IHJlcHJlc2VudCBhbmQgd2FycmFudCB0aGF0OlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgdGhlIGNyZWF0aW9uLCBkaXN0cmlidXRpb24sIHRyYW5zbWlzc2lvbiwgcHVibGljIGRpc3BsYXksIG9yXG4gICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSwgYW5kIHRoZSBhY2Nlc3NpbmcsIGRvd25sb2FkaW5nLCBvciBjb3B5aW5nIG9mIHlvdXJcbiAgICAgICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgZG8gbm90IGFuZCB3aWxsIG5vdCBpbmZyaW5nZSB0aGUgcHJvcHJpZXRhcnlcbiAgICAgICAgICAgICAgICAgIHJpZ2h0cywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgY29weXJpZ2h0LCBwYXRlbnQsXG4gICAgICAgICAgICAgICAgICB0cmFkZW1hcmssIHRyYWRlIHNlY3JldCwgb3IgbW9yYWwgcmlnaHRzIG9mIGFueSB0aGlyZCBwYXJ0eS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IGFyZSB0aGUgY3JlYXRvciBhbmQgb3duZXIgb2Ygb3IgaGF2ZSB0aGUgbmVjZXNzYXJ5IGxpY2Vuc2VzLFxuICAgICAgICAgICAgICAgICAgcmlnaHRzLCBjb25zZW50cywgcmVsZWFzZXMsIGFuZCBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRvXG4gICAgICAgICAgICAgICAgICBhdXRob3JpemUgdXMsIHRoZSBTaXRlLCBhbmQgb3RoZXIgdXNlcnMgb2YgdGhlIFNpdGUgdG8gdXNlIHlvdXJcbiAgICAgICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgaW4gYW55IG1hbm5lciBjb250ZW1wbGF0ZWQgYnkgdGhlIFNpdGUgYW5kIHRoZXNlXG4gICAgICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIHRoZSB3cml0dGVuIGNvbnNlbnQsIHJlbGVhc2UsIGFuZC9vciBwZXJtaXNzaW9uIG9mIGVhY2hcbiAgICAgICAgICAgICAgICAgIGFuZCBldmVyeSBpZGVudGlmaWFibGUgaW5kaXZpZHVhbCBwZXJzb24gaW4geW91ciBDb250cmlidXRpb25zXG4gICAgICAgICAgICAgICAgICB0byB1c2UgdGhlIG5hbWUgb3IgbGlrZW5lc3Mgb2YgZWFjaCBhbmQgZXZlcnkgc3VjaCBpZGVudGlmaWFibGVcbiAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgcGVyc29uIHRvIGVuYWJsZSBpbmNsdXNpb24gYW5kIHVzZSBvZiB5b3VyXG4gICAgICAgICAgICAgICAgICBDb250cmlidXRpb25zIGluIGFueSBtYW5uZXIgY29udGVtcGxhdGVkIGJ5IHRoZSBTaXRlIGFuZCB0aGVzZVxuICAgICAgICAgICAgICAgICAgVGVybXMgb2YgVXNlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgYXJlIG5vdCBmYWxzZSwgaW5hY2N1cmF0ZSwgb3IgbWlzbGVhZGluZy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGFyZSBub3QgdW5zb2xpY2l0ZWQgb3IgdW5hdXRob3JpemVkXG4gICAgICAgICAgICAgICAgICBhZHZlcnRpc2luZywgcHJvbW90aW9uYWwgbWF0ZXJpYWxzLCBweXJhbWlkIHNjaGVtZXMsIGNoYWluXG4gICAgICAgICAgICAgICAgICBsZXR0ZXJzLCBzcGFtLCBtYXNzIG1haWxpbmdzLCBvciBvdGhlciBmb3JtcyBvZiBzb2xpY2l0YXRpb24uXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBhcmUgbm90IG9ic2NlbmUsIGxld2QsIGxhc2NpdmlvdXMsIGZpbHRoeSxcbiAgICAgICAgICAgICAgICAgIHZpb2xlbnQsIGhhcmFzc2luZywgbGliZWxvdXMsIHNsYW5kZXJvdXMsIG9yIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgICAgb2JqZWN0aW9uYWJsZSAoYXMgZGV0ZXJtaW5lZCBieSB1cykuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBkbyBub3QgcmlkaWN1bGUsIG1vY2ssIGRpc3BhcmFnZSwgaW50aW1pZGF0ZSxcbiAgICAgICAgICAgICAgICAgIG9yIGFidXNlIGFueW9uZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBhZHZvY2F0ZSB0aGUgdmlvbGVudCBvdmVydGhyb3cgb2YgYW55XG4gICAgICAgICAgICAgICAgICBnb3Zlcm5tZW50IG9yIGluY2l0ZSwgZW5jb3VyYWdlLCBvciB0aHJlYXRlbiBwaHlzaWNhbCBoYXJtXG4gICAgICAgICAgICAgICAgICBhZ2FpbnN0IGFub3RoZXIuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBkbyBub3QgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXcsXG4gICAgICAgICAgICAgICAgICByZWd1bGF0aW9uLCBvciBydWxlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IHZpb2xhdGUgdGhlIHByaXZhY3kgb3IgcHVibGljaXR5XG4gICAgICAgICAgICAgICAgICByaWdodHMgb2YgYW55IHRoaXJkIHBhcnR5LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IGNvbnRhaW4gYW55IG1hdGVyaWFsIHRoYXQgc29saWNpdHNcbiAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20gYW55b25lIHVuZGVyIHRoZSBhZ2Ugb2YgMTggb3IgZXhwbG9pdHNcbiAgICAgICAgICAgICAgICAgIHBlb3BsZSB1bmRlciB0aGUgYWdlIG9mIDE4IGluIGEgc2V4dWFsIG9yIHZpb2xlbnQgbWFubmVyLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IHZpb2xhdGUgYW55IGZlZGVyYWwgb3Igc3RhdGUgbGF3XG4gICAgICAgICAgICAgICAgICBjb25jZXJuaW5nIGNoaWxkIHBvcm5vZ3JhcGh5LCBvciBvdGhlcndpc2UgaW50ZW5kZWQgdG8gcHJvdGVjdFxuICAgICAgICAgICAgICAgICAgdGhlIGhlYWx0aCBvciB3ZWxsLWJlaW5nIG9mIG1pbm9ycy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFueSBvZmZlbnNpdmUgY29tbWVudHMgdGhhdFxuICAgICAgICAgICAgICAgICAgYXJlIGNvbm5lY3RlZCB0byByYWNlLCBuYXRpb25hbCBvcmlnaW4sIGdlbmRlciwgc2V4dWFsXG4gICAgICAgICAgICAgICAgICBwcmVmZXJlbmNlLCBvciBwaHlzaWNhbCBoYW5kaWNhcC5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBvdGhlcndpc2UgdmlvbGF0ZSwgb3IgbGluayB0byBtYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgdGhhdCB2aW9sYXRlcywgYW55IHByb3Zpc2lvbiBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIG9yIGFueVxuICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXcgb3IgcmVndWxhdGlvbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFueSB1c2Ugb2YgdGhlIFNpdGUgaW4gdmlvbGF0aW9uIG9mIHRoZSBmb3JlZ29pbmcgdmlvbGF0ZXMgdGhlc2UgVGVybXNcbiAgICAgICAgICAgICAgb2YgVXNlIGFuZCBtYXkgcmVzdWx0IGluLCBhbW9uZyBvdGhlciB0aGluZ3MsIHRlcm1pbmF0aW9uIG9yIHN1c3BlbnNpb25cbiAgICAgICAgICAgICAgb2YgeW91ciByaWdodHMgdG8gdXNlIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDI+Q09OVFJJQlVUSU9OIExJQ0VOU0U8L2gyPlxuXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQnkgcG9zdGluZyB5b3VyIENvbnRyaWJ1dGlvbnMgdG8gYW55IHBhcnQgb2YgdGhlIFNpdGUsIG9yIG1ha2luZ1xuICAgICAgICAgICAgICBDb250cmlidXRpb25zIGFjY2Vzc2libGUgdG8gdGhlIFNpdGUgYnkgbGlua2luZyB5b3VyIGFjY291bnQgZnJvbSB0aGVcbiAgICAgICAgICAgICAgU2l0ZSB0byBhbnkgb2YgeW91ciBzb2NpYWwgbmV0d29ya2luZyBhY2NvdW50cywgeW91IGF1dG9tYXRpY2FsbHkgZ3JhbnQsXG4gICAgICAgICAgICAgIGFuZCB5b3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIGdyYW50LCB0byB1cyBhblxuICAgICAgICAgICAgICB1bnJlc3RyaWN0ZWQsIHVubGltaXRlZCwgaXJyZXZvY2FibGUsIHBlcnBldHVhbCwgbm9uLWV4Y2x1c2l2ZSxcbiAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlLCByb3lhbHR5LWZyZWUsIGZ1bGx5LXBhaWQsIHdvcmxkd2lkZSByaWdodCwgYW5kIGxpY2Vuc2UgdG9cbiAgICAgICAgICAgICAgaG9zdCwgdXNlLCBjb3B5LCByZXByb2R1Y2UsIGRpc2Nsb3NlLCBzZWxsLCByZXNlbGwsIHB1Ymxpc2gsIGJyb2FkY2FzdCxcbiAgICAgICAgICAgICAgcmUgdGl0bGUsIGFyY2hpdmUsIHN0b3JlLCBjYWNoZSwgcHVibGljbHkgcGVyZm9ybSwgcHVibGljbHkgZGlzcGxheSxcbiAgICAgICAgICAgICAgcmVmb3JtYXQsIHRyYW5zbGF0ZSwgdHJhbnNtaXQsIGV4Y2VycHQgKGluIHdob2xlIG9yIGluIHBhcnQpLCBhbmRcbiAgICAgICAgICAgICAgZGlzdHJpYnV0ZSBzdWNoIENvbnRyaWJ1dGlvbnMgKGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB5b3VyIGltYWdlXG4gICAgICAgICAgICAgIGFuZCB2b2ljZSkgZm9yIGFueSBwdXJwb3NlLCBjb21tZXJjaWFsLCBhZHZlcnRpc2luZywgb3Igb3RoZXJ3aXNlLCBhbmRcbiAgICAgICAgICAgICAgdG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBvciBpbmNvcnBvcmF0ZSBpbnRvIG90aGVyIHdvcmtzLCBzdWNoXG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMsIGFuZCBncmFudCBhbmQgYXV0aG9yaXplIHN1YmxpY2Vuc2Ugb2YgdGhlIGZvcmVnb2luZy4gVGhlXG4gICAgICAgICAgICAgIHVzZSBhbmQgZGlzdHJpYnV0aW9uIG1heSBvY2N1ciBpbiBhbnkgbWVkaWEgZm9ybWF0cyBhbmQgdGhyb3VnaCBhbnlcbiAgICAgICAgICAgICAgbWVkaWEgY2hhbm5lbHMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhpcyBsaWNlbnNlIHdpbGwgYXBwbHkgdG8gYW55IGZvcm0sIG1lZGlhLCBvciB0ZWNobm9sb2d5IG5vdyBrbm93biBvclxuICAgICAgICAgICAgICBoZXJlYWZ0ZXIgZGV2ZWxvcGVkLCBhbmQgaW5jbHVkZXMgb3VyIHVzZSBvZiB5b3VyIG5hbWUsIGNvbXBhbnkgbmFtZSxcbiAgICAgICAgICAgICAgYW5kIGZyYW5jaGlzZSBuYW1lLCBhcyBhcHBsaWNhYmxlLCBhbmQgYW55IG9mIHRoZSB0cmFkZW1hcmtzLCBzZXJ2aWNlXG4gICAgICAgICAgICAgIG1hcmtzLCB0cmFkZSBuYW1lcywgbG9nb3MsIGFuZCBwZXJzb25hbCBhbmQgY29tbWVyY2lhbCBpbWFnZXMgeW91XG4gICAgICAgICAgICAgIHByb3ZpZGUuIFlvdSB3YWl2ZSBhbGwgbW9yYWwgcmlnaHRzIGluIHlvdXIgQ29udHJpYnV0aW9ucywgYW5kIHlvdVxuICAgICAgICAgICAgICB3YXJyYW50IHRoYXQgbW9yYWwgcmlnaHRzIGhhdmUgbm90IG90aGVyd2lzZSBiZWVuIGFzc2VydGVkIGluIHlvdXJcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBkbyBub3QgYXNzZXJ0IGFueSBvd25lcnNoaXAgb3ZlciB5b3VyIENvbnRyaWJ1dGlvbnMuIFlvdSByZXRhaW4gZnVsbFxuICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgYWxsIG9mIHlvdXIgQ29udHJpYnV0aW9ucyBhbmQgYW55IGludGVsbGVjdHVhbCBwcm9wZXJ0eVxuICAgICAgICAgICAgICByaWdodHMgb3Igb3RoZXIgcHJvcHJpZXRhcnkgcmlnaHRzIGFzc29jaWF0ZWQgd2l0aCB5b3VyIENvbnRyaWJ1dGlvbnMuXG4gICAgICAgICAgICAgIFdlIGFyZSBub3QgbGlhYmxlIGZvciBhbnkgc3RhdGVtZW50cyBvciByZXByZXNlbnRhdGlvbnMgaW4geW91clxuICAgICAgICAgICAgICBDb250cmlidXRpb25zIHByb3ZpZGVkIGJ5IHlvdSBpbiBhbnkgYXJlYSBvbiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgeW91ciBDb250cmlidXRpb25zIHRvIHRoZSBTaXRlIGFuZCB5b3VcbiAgICAgICAgICAgICAgZXhwcmVzc2x5IGFncmVlIHRvIGV4b25lcmF0ZSB1cyBmcm9tIGFueSBhbmQgYWxsIHJlc3BvbnNpYmlsaXR5IGFuZCB0b1xuICAgICAgICAgICAgICByZWZyYWluIGZyb20gYW55IGxlZ2FsIGFjdGlvbiBhZ2FpbnN0IHVzIHJlZ2FyZGluZyB5b3VyIENvbnRyaWJ1dGlvbnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgaGF2ZSB0aGUgcmlnaHQsIGluIG91ciBzb2xlIGFuZCBhYnNvbHV0ZSBkaXNjcmV0aW9uLCAoMSkgdG8gZWRpdCxcbiAgICAgICAgICAgICAgcmVkYWN0LCBvciBvdGhlcndpc2UgY2hhbmdlIGFueSBDb250cmlidXRpb25zOyAoMikgdG8gcmUtY2F0ZWdvcml6ZSBhbnlcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucyB0byBwbGFjZSB0aGVtIGluIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb25zIG9uIHRoZSBTaXRlO1xuICAgICAgICAgICAgICBhbmQgKDMpIHRvIHByZS1zY3JlZW4gb3IgZGVsZXRlIGFueSBDb250cmlidXRpb25zIGF0IGFueSB0aW1lIGFuZCBmb3JcbiAgICAgICAgICAgICAgYW55IHJlYXNvbiwgd2l0aG91dCBub3RpY2UuIFdlIGhhdmUgbm8gb2JsaWdhdGlvbiB0byBtb25pdG9yIHlvdXJcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5HVUlERUxJTkVTIEZPUiBSRVZJRVdTPC9oMj5cbiAgICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICBXZSBtYXkgcHJvdmlkZSB5b3UgYXJlYXMgb24gdGhlIFNpdGUgdG8gbGVhdmUgcmV2aWV3cyBvclxuICAgICAgICAgICAgICAgICAgcmF0aW5ncy4gV2hlbiBwb3N0aW5nIGEgcmV2aWV3LCB5b3UgbXVzdCBjb21wbHkgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjcml0ZXJpYTpcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IHNob3VsZCBoYXZlIGZpcnN0aGFuZCBleHBlcmllbmNlIHdpdGggdGhlIHBlcnNvbi9lbnRpdHlcbiAgICAgICAgICAgICAgICAgIGJlaW5nIHJldmlld2VkLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIHJldmlld3Mgc2hvdWxkIG5vdCBjb250YWluIG9mZmVuc2l2ZSBwcm9mYW5pdHksIG9yIGFidXNpdmUsXG4gICAgICAgICAgICAgICAgICByYWNpc3QsIG9mZmVuc2l2ZSwgb3IgaGF0ZSBsYW5ndWFnZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciByZXZpZXdzIHNob3VsZCBub3QgY29udGFpbiBkaXNjcmltaW5hdG9yeSByZWZlcmVuY2VzIGJhc2VkXG4gICAgICAgICAgICAgICAgICBvbiByZWxpZ2lvbiwgcmFjZSwgZ2VuZGVyLCBuYXRpb25hbCBvcmlnaW4sIGFnZSwgbWFyaXRhbCBzdGF0dXMsXG4gICAgICAgICAgICAgICAgICBzZXh1YWwgb3JpZW50YXRpb24sIG9yIGRpc2FiaWxpdHkuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgcmV2aWV3cyBzaG91bGQgbm90IGNvbnRhaW4gcmVmZXJlbmNlcyB0byBpbGxlZ2FsIGFjdGl2aXR5LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIG5vdCBiZSBhZmZpbGlhdGVkIHdpdGggY29tcGV0aXRvcnMgaWYgcG9zdGluZ1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgcmV2aWV3cy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IHNob3VsZCBub3QgbWFrZSBhbnkgY29uY2x1c2lvbnMgYXMgdG8gdGhlIGxlZ2FsaXR5IG9mXG4gICAgICAgICAgICAgICAgICBjb25kdWN0LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3UgbWF5IG5vdCBwb3N0IGFueSBmYWxzZSBvciBtaXNsZWFkaW5nIHN0YXRlbWVudHMuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSBtYXkgbm90IG9yZ2FuaXplIGEgY2FtcGFpZ24gZW5jb3VyYWdpbmcgb3RoZXJzIHRvIHBvc3RcbiAgICAgICAgICAgICAgICAgIHJldmlld3MsIHdoZXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBtYXkgYWNjZXB0LCByZWplY3QsIG9yIHJlbW92ZSByZXZpZXdzIGluIG91ciBzb2xlIGRpc2NyZXRpb24uIFdlIGhhdmVcbiAgICAgICAgICAgICAgYWJzb2x1dGVseSBubyBvYmxpZ2F0aW9uIHRvIHNjcmVlbiByZXZpZXdzIG9yIHRvIGRlbGV0ZSByZXZpZXdzLCBldmVuIGlmXG4gICAgICAgICAgICAgIGFueW9uZSBjb25zaWRlcnMgcmV2aWV3cyBvYmplY3Rpb25hYmxlIG9yIGluYWNjdXJhdGUuIFJldmlld3MgYXJlIG5vdFxuICAgICAgICAgICAgICBlbmRvcnNlZCBieSB1cywgYW5kIGRvIG5vdCBuZWNlc3NhcmlseSByZXByZXNlbnQgb3VyIG9waW5pb25zIG9yIHRoZVxuICAgICAgICAgICAgICB2aWV3cyBvZiBhbnkgb2Ygb3VyIGFmZmlsaWF0ZXMgb3IgcGFydG5lcnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgZG8gbm90IGFzc3VtZSBsaWFiaWxpdHkgZm9yIGFueSByZXZpZXcgb3IgZm9yIGFueSBjbGFpbXMsXG4gICAgICAgICAgICAgIGxpYWJpbGl0aWVzLCBvciBsb3NzZXMgcmVzdWx0aW5nIGZyb20gYW55IHJldmlldy4gQnkgcG9zdGluZyBhIHJldmlldyxcbiAgICAgICAgICAgICAgeW91IGhlcmVieSBncmFudCB0byB1cyBhIHBlcnBldHVhbCwgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLFxuICAgICAgICAgICAgICByb3lhbHR5LWZyZWUsIGZ1bGx5LXBhaWQsIGFzc2lnbmFibGUsIGFuZCBzdWItbGljZW5zYWJsZSByaWdodCBhbmRcbiAgICAgICAgICAgICAgbGljZW5zZSB0byByZXByb2R1Y2UsIG1vZGlmeSwgdHJhbnNsYXRlLCB0cmFuc21pdCBieSBhbnkgbWVhbnMsIGRpc3BsYXksXG4gICAgICAgICAgICAgIHBlcmZvcm0sIGFuZC9vciBkaXN0cmlidXRlIGFsbCBjb250ZW50IHJlbGF0aW5nIHRvIHJldmlld3MuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+TU9CSUxFIEFQUExJQ0FUSU9OIExJQ0VOU0U8L2gyPlxuICAgICAgICAgICAgPGgzPlVzZSBMaWNlbnNlPC9oMz5cblxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBhY2Nlc3MgdGhlIFNpdGUgdmlhIGEgbW9iaWxlIGFwcGxpY2F0aW9uLCB0aGVuIHdlIGdyYW50IHlvdSBhXG4gICAgICAgICAgICAgIHJldm9jYWJsZSwgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSwgbGltaXRlZCByaWdodCB0byBpbnN0YWxsIGFuZFxuICAgICAgICAgICAgICB1c2UgdGhlIG1vYmlsZSBhcHBsaWNhdGlvbiBvbiB3aXJlbGVzcyBlbGVjdHJvbmljIGRldmljZXMgb3duZWQgb3JcbiAgICAgICAgICAgICAgY29udHJvbGxlZCBieSB5b3UsIGFuZCB0byBhY2Nlc3MgYW5kIHVzZSB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uIG9uIHN1Y2hcbiAgICAgICAgICAgICAgZGV2aWNlcyBzdHJpY3RseSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXNcbiAgICAgICAgICAgICAgbW9iaWxlIGFwcGxpY2F0aW9uIGxpY2Vuc2UgY29udGFpbmVkIGluIHRoZXNlIFRlcm1zIG9mIFVzZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlVzZSBMaWNlbnNlPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSBkZWNvbXBpbGUsIHJldmVyc2UgZW5naW5lZXIsIGRpc2Fzc2VtYmxlLCBhdHRlbXB0IHRvIGRlcml2ZSB0aGVcbiAgICAgICAgICAgICAgc291cmNlIGNvZGUgb2YsIG9yIGRlY3J5cHQgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgyKSBtYWtlIGFueSBtb2RpZmljYXRpb24sIGFkYXB0YXRpb24sIGltcHJvdmVtZW50LCBlbmhhbmNlbWVudCxcbiAgICAgICAgICAgICAgdHJhbnNsYXRpb24sIG9yIGRlcml2YXRpdmUgd29yayBmcm9tIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMykgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXdzLCBydWxlcywgb3IgcmVndWxhdGlvbnMgaW4gY29ubmVjdGlvblxuICAgICAgICAgICAgICB3aXRoIHlvdXIgYWNjZXNzIG9yIHVzZSBvZiB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDQpIHJlbW92ZSwgYWx0ZXIsIG9yIG9ic2N1cmUgYW55IHByb3ByaWV0YXJ5IG5vdGljZSAoaW5jbHVkaW5nIGFueVxuICAgICAgICAgICAgICBub3RpY2Ugb2YgY29weXJpZ2h0IG9yIHRyYWRlbWFyaykgcG9zdGVkIGJ5IHVzIG9yIHRoZSBsaWNlbnNvcnMgb2YgdGhlXG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg1KSB1c2UgdGhlIGFwcGxpY2F0aW9uIGZvciBhbnkgcmV2ZW51ZSBnZW5lcmF0aW5nIGVuZGVhdm9yLCBjb21tZXJjaWFsXG4gICAgICAgICAgICAgIGVudGVycHJpc2UsIG9yIG90aGVyIHB1cnBvc2UgZm9yIHdoaWNoIGl0IGlzIG5vdCBkZXNpZ25lZCBvciBpbnRlbmRlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNikgbWFrZSB0aGUgYXBwbGljYXRpb24gYXZhaWxhYmxlIG92ZXIgYSBuZXR3b3JrIG9yIG90aGVyIGVudmlyb25tZW50XG4gICAgICAgICAgICAgIHBlcm1pdHRpbmcgYWNjZXNzIG9yIHVzZSBieSBtdWx0aXBsZSBkZXZpY2VzIG9yIHVzZXJzIGF0IHRoZSBzYW1lIC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNykgdXNlIHRoZSBhcHBsaWNhdGlvbiBmb3IgY3JlYXRpbmcgYSBwcm9kdWN0LCBzZXJ2aWNlLCBvciBzb2Z0d2FyZVxuICAgICAgICAgICAgICB0aGF0IGlzLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBjb21wZXRpdGl2ZSB3aXRoIG9yIGluIGFueSB3YXkgYVxuICAgICAgICAgICAgICBzdWJzdGl0dXRlIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDgpIHVzZSB0aGUgYXBwbGljYXRpb24gdG8gc2VuZCBhdXRvbWF0ZWQgcXVlcmllcyB0byBhbnkgd2Vic2l0ZSBvciB0b1xuICAgICAgICAgICAgICBzZW5kIGFueSB1bnNvbGljaXRlZCBjb21tZXJjaWFsIGUtbWFpbC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoOSkgdXNlIGFueSBwcm9wcmlldGFyeSBpbmZvcm1hdGlvbiBvciBhbnkgb2Ygb3VyIGludGVyZmFjZXMgb3Igb3VyXG4gICAgICAgICAgICAgIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbiB0aGUgZGVzaWduLCBkZXZlbG9wbWVudCwgbWFudWZhY3R1cmUsXG4gICAgICAgICAgICAgIGxpY2Vuc2luZywgb3IgZGlzdHJpYnV0aW9uIG9mIGFueSBhcHBsaWNhdGlvbnMsIGFjY2Vzc29yaWVzLCBvciBkZXZpY2VzXG4gICAgICAgICAgICAgIGZvciB1c2Ugd2l0aCB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDM+QXBwbGUgYW5kIEFuZHJvaWQgRGV2aWNlczwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0ZXJtcyBhcHBseSB3aGVuIHlvdSB1c2UgYSBtb2JpbGUgYXBwbGljYXRpb24gb2J0YWluZWRcbiAgICAgICAgICAgICAgZnJvbSBlaXRoZXIgdGhlIEFwcGxlIFN0b3JlIG9yIEdvb2dsZSBQbGF5IChlYWNoIGFuIOKAnEFwcCBEaXN0cmlidXRvcuKAnSlcbiAgICAgICAgICAgICAgdG8gYWNjZXNzIHRoZSBTaXRlOlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSB0aGUgbGljZW5zZSBncmFudGVkIHRvIHlvdSBmb3Igb3VyIG1vYmlsZSBhcHBsaWNhdGlvbiBpcyBsaW1pdGVkIHRvXG4gICAgICAgICAgICAgIGEgbm9uLXRyYW5zZmVyYWJsZSBsaWNlbnNlIHRvIHVzZSB0aGUgYXBwbGljYXRpb24gb24gYSBkZXZpY2UgdGhhdFxuICAgICAgICAgICAgICB1dGlsaXplcyB0aGUgQXBwbGUgaU9TIG9yIEFuZHJvaWQgb3BlcmF0aW5nIHN5c3RlbXMsIGFzIGFwcGxpY2FibGUsIGFuZFxuICAgICAgICAgICAgICBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHVzYWdlIHJ1bGVzIHNldCBmb3J0aCBpbiB0aGUgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBEaXN0cmlidXRvcuKAmXMgdGVybXMgb2Ygc2VydmljZVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgyKSB3ZSBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhbnkgbWFpbnRlbmFuY2UgYW5kIHN1cHBvcnRcbiAgICAgICAgICAgICAgc2VydmljZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBtb2JpbGUgYXBwbGljYXRpb24gYXMgc3BlY2lmaWVkIGluIHRoZVxuICAgICAgICAgICAgICB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIG1vYmlsZSBhcHBsaWNhdGlvbiBjb250YWluZWQgaW4gdGhlc2UgVGVybXNcbiAgICAgICAgICAgICAgb2YgVXNlIG9yIGFzIG90aGVyd2lzZSByZXF1aXJlZCB1bmRlciBhcHBsaWNhYmxlIGxhdywgYW5kIHlvdVxuICAgICAgICAgICAgICBhY2tub3dsZWRnZSB0aGF0IGVhY2ggQXBwIERpc3RyaWJ1dG9yIGhhcyBubyBvYmxpZ2F0aW9uIHdoYXRzb2V2ZXIgdG9cbiAgICAgICAgICAgICAgZnVybmlzaCBhbnkgbWFpbnRlbmFuY2UgYW5kIHN1cHBvcnQgc2VydmljZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBtb2JpbGVcbiAgICAgICAgICAgICAgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGluIHRoZSBldmVudCBvZiBhbnkgZmFpbHVyZSBvZiB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uIHRvIGNvbmZvcm0gdG9cbiAgICAgICAgICAgICAgYW55IGFwcGxpY2FibGUgd2FycmFudHksIHlvdSBtYXkgbm90aWZ5IHRoZSBhcHBsaWNhYmxlIEFwcCBEaXN0cmlidXRvcixcbiAgICAgICAgICAgICAgYW5kIHRoZSBBcHAgRGlzdHJpYnV0b3IsIGluIGFjY29yZGFuY2Ugd2l0aCBpdHMgdGVybXMgYW5kIHBvbGljaWVzLCBtYXlcbiAgICAgICAgICAgICAgcmVmdW5kIHRoZSBwdXJjaGFzZSBwcmljZSwgaWYgYW55LCBwYWlkIGZvciB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uLCBhbmRcbiAgICAgICAgICAgICAgdG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywgdGhlIEFwcCBEaXN0cmlidXRvclxuICAgICAgICAgICAgICB3aWxsIGhhdmUgbm8gb3RoZXIgd2FycmFudHkgb2JsaWdhdGlvbiB3aGF0c29ldmVyIHdpdGggcmVzcGVjdCB0byB0aGVcbiAgICAgICAgICAgICAgbW9iaWxlIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg0KSB5b3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgKGkpIHlvdSBhcmUgbm90IGxvY2F0ZWQgaW4gYSBjb3VudHJ5XG4gICAgICAgICAgICAgIHRoYXQgaXMgc3ViamVjdCB0byBhIFUuUy4gZ292ZXJubWVudCBlbWJhcmdvLCBvciB0aGF0IGhhcyBiZWVuXG4gICAgICAgICAgICAgIGRlc2lnbmF0ZWQgYnkgdGhlIFUuUy4gZ292ZXJubWVudCBhcyBhIOKAnHRlcnJvcmlzdCBzdXBwb3J0aW5n4oCdIGNvdW50cnlcbiAgICAgICAgICAgICAgYW5kIChpaSkgeW91IGFyZSBub3QgbGlzdGVkIG9uIGFueSBVLlMuIGdvdmVybm1lbnQgbGlzdCBvZiBwcm9oaWJpdGVkIG9yXG4gICAgICAgICAgICAgIHJlc3RyaWN0ZWQgcGFydGllcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNSkgeW91IG11c3QgY29tcGx5IHdpdGggYXBwbGljYWJsZSB0aGlyZC1wYXJ0eSB0ZXJtcyBvZiBhZ3JlZW1lbnQgd2hlblxuICAgICAgICAgICAgICB1c2luZyB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uLCBlLmcuLCBpZiB5b3UgaGF2ZSBhIFZvSVAgYXBwbGljYXRpb24sIHRoZW5cbiAgICAgICAgICAgICAgeW91IG11c3Qgbm90IGJlIGluIHZpb2xhdGlvbiBvZiB0aGVpciB3aXJlbGVzcyBkYXRhIHNlcnZpY2UgYWdyZWVtZW50XG4gICAgICAgICAgICAgIHdoZW4gdXNpbmcgdGhlIG1vYmlsZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNikgeW91IGFja25vd2xlZGdlIGFuZCBhZ3JlZSB0aGF0IHRoZSBBcHAgRGlzdHJpYnV0b3JzIGFyZSB0aGlyZC1wYXJ0eVxuICAgICAgICAgICAgICBiZW5lZmljaWFyaWVzIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBpbiB0aGlzIG1vYmlsZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICBsaWNlbnNlIGNvbnRhaW5lZCBpbiB0aGVzZSBUZXJtcyBvZiBVc2UsIGFuZCB0aGF0IGVhY2ggQXBwIERpc3RyaWJ1dG9yXG4gICAgICAgICAgICAgIHdpbGwgaGF2ZSB0aGUgcmlnaHQgKGFuZCB3aWxsIGJlIGRlZW1lZCB0byBoYXZlIGFjY2VwdGVkIHRoZSByaWdodCkgdG9cbiAgICAgICAgICAgICAgZW5mb3JjZSB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgaW4gdGhpcyBtb2JpbGUgYXBwbGljYXRpb24gbGljZW5zZVxuICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlc2UgVGVybXMgb2YgVXNlIGFnYWluc3QgeW91IGFzIGEgdGhpcmQtcGFydHkgYmVuZWZpY2lhcnlcbiAgICAgICAgICAgICAgdGhlcmVvZi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5TT0NJQUwgTUVESUE8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNpdGUsIHlvdSBtYXkgbGluayB5b3VyIGFjY291bnQgd2l0aFxuICAgICAgICAgICAgICBvbmxpbmUgYWNjb3VudHMgeW91IGhhdmUgd2l0aCB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVycyAoZWFjaCBzdWNoXG4gICAgICAgICAgICAgIGFjY291bnQsIGEg4oCcVGhpcmQtUGFydHkgQWNjb3VudOKAnSkgYnkgZWl0aGVyOlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgcHJvdmlkaW5nIHlvdXIgVGhpcmQtUGFydHkgQWNjb3VudCBsb2dpbiBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgICAgICAgU2l0ZTsgb3JcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgdXMgdG8gYWNjZXNzIHlvdXIgVGhpcmQtUGFydHkgQWNjb3VudCwgYXMgaXMgcGVybWl0dGVkXG4gICAgICAgICAgICAgICAgICB1bmRlciB0aGUgYXBwbGljYWJsZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB5b3VyIHVzZVxuICAgICAgICAgICAgICAgICAgb2YgZWFjaCBUaGlyZC1QYXJ0eSBBY2NvdW50LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvb2w+XG5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgeW91IGFyZSBlbnRpdGxlZCB0byBkaXNjbG9zZSB5b3VyXG4gICAgICAgICAgICAgIFRoaXJkLVBhcnR5IEFjY291bnQgbG9naW4gaW5mb3JtYXRpb24gdG8gdXMgYW5kL29yIGdyYW50IHVzIGFjY2VzcyB0b1xuICAgICAgICAgICAgICB5b3VyIFRoaXJkLVBhcnR5IEFjY291bnQsIHdpdGhvdXQgYnJlYWNoIGJ5IHlvdSBvZiBhbnkgb2YgdGhlIHRlcm1zIGFuZFxuICAgICAgICAgICAgICBjb25kaXRpb25zIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhcHBsaWNhYmxlIFRoaXJkLVBhcnR5IEFjY291bnQsXG4gICAgICAgICAgICAgIGFuZCB3aXRob3V0IG9ibGlnYXRpbmcgdXMgdG8gcGF5IGFueSBmZWVzIG9yIG1ha2luZyB1cyBzdWJqZWN0IHRvIGFueVxuICAgICAgICAgICAgICB1c2FnZSBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHRoZSB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVyIG9mIHRoZVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBBY2NvdW50LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEJ5IGdyYW50aW5nIHVzIGFjY2VzcyB0byBhbnkgVGhpcmQtUGFydHkgQWNjb3VudHMsIHlvdSB1bmRlcnN0YW5kIHRoYXRcbiAgICAgICAgICAgICAgKDEpIHdlIG1heSBhY2Nlc3MsIG1ha2UgYXZhaWxhYmxlLCBhbmQgc3RvcmUgKGlmIGFwcGxpY2FibGUpIGFueSBjb250ZW50XG4gICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgdG8gYW5kIHN0b3JlZCBpbiB5b3VyIFRoaXJkLVBhcnR5IEFjY291bnQgKHRoZVxuICAgICAgICAgICAgICDigJxTb2NpYWwgTmV0d29yayBDb250ZW504oCdKSBzbyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBvbiBhbmQgdGhyb3VnaCB0aGVcbiAgICAgICAgICAgICAgU2l0ZSB2aWEgeW91ciBhY2NvdW50LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIGFueSBmcmllbmQgbGlzdHMgYW5kXG4gICAgICAgICAgICAgICgyKSB3ZSBtYXkgc3VibWl0IHRvIGFuZCByZWNlaXZlIGZyb20geW91ciBUaGlyZC1QYXJ0eSBBY2NvdW50XG4gICAgICAgICAgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhlIGV4dGVudCB5b3UgYXJlIG5vdGlmaWVkIHdoZW4geW91IGxpbmsgeW91clxuICAgICAgICAgICAgICBhY2NvdW50IHdpdGggdGhlIFRoaXJkLVBhcnR5IEFjY291bnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBUaGlyZC1QYXJ0eSBBY2NvdW50cyB5b3UgY2hvb3NlIGFuZCBzdWJqZWN0IHRvIHRoZVxuICAgICAgICAgICAgICBwcml2YWN5IHNldHRpbmdzIHRoYXQgeW91IGhhdmUgc2V0IGluIHN1Y2ggVGhpcmQtUGFydHkgQWNjb3VudHMsXG4gICAgICAgICAgICAgIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIHRoYXQgeW91IHBvc3QgdG8geW91ciBUaGlyZC1QYXJ0eVxuICAgICAgICAgICAgICBBY2NvdW50cyBtYXkgYmUgYXZhaWxhYmxlIG9uIGFuZCB0aHJvdWdoIHlvdXIgYWNjb3VudCBvbiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IGlmIGEgVGhpcmQtUGFydHkgQWNjb3VudCBvciBhc3NvY2lhdGVkIHNlcnZpY2UgYmVjb21lc1xuICAgICAgICAgICAgICB1bmF2YWlsYWJsZSBvciBvdXIgYWNjZXNzIHRvIHN1Y2ggVGhpcmQtUGFydHkgQWNjb3VudCBpcyB0ZXJtaW5hdGVkIGJ5XG4gICAgICAgICAgICAgIHRoZSB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVyLCB0aGVuIFNvY2lhbCBOZXR3b3JrIENvbnRlbnQgbWF5IG5vXG4gICAgICAgICAgICAgIGxvbmdlciBiZSBhdmFpbGFibGUgb24gYW5kIHRocm91Z2ggdGhlIFNpdGUuIFlvdSB3aWxsIGhhdmUgdGhlIGFiaWxpdHlcbiAgICAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdXIgYWNjb3VudCBvbiB0aGUgU2l0ZSBhbmQgeW91clxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBBY2NvdW50cyBhdCBhbnkgdGltZS5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFBMRUFTRSBOT1RFIFRIQVQgWU9VUiBSRUxBVElPTlNISVAgV0lUSCBUSEUgVEhJUkQtUEFSVFkgU0VSVklDRVxuICAgICAgICAgICAgICBQUk9WSURFUlMgQVNTT0NJQVRFRCBXSVRIIFlPVVIgVEhJUkQtUEFSVFkgQUNDT1VOVFMgSVMgR09WRVJORUQgU09MRUxZXG4gICAgICAgICAgICAgIEJZIFlPVVIgQUdSRUVNRU5UKFMpIFdJVEggU1VDSCBUSElSRC1QQVJUWSBTRVJWSUNFIFBST1ZJREVSUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBtYWtlIG5vIGVmZm9ydCB0byByZXZpZXcgYW55IFNvY2lhbCBOZXR3b3JrIENvbnRlbnQgZm9yIGFueSBwdXJwb3NlLFxuICAgICAgICAgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvLCBmb3IgYWNjdXJhY3ksIGxlZ2FsaXR5LCBvclxuICAgICAgICAgICAgICBub24taW5mcmluZ2VtZW50LCBhbmQgd2UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgYW55IFNvY2lhbCBOZXR3b3JrXG4gICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGFja25vd2xlZGdlIGFuZCBhZ3JlZSB0aGF0IHdlIG1heSBhY2Nlc3MgeW91ciBlbWFpbCBhZGRyZXNzIGJvb2tcbiAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgVGhpcmQtUGFydHkgQWNjb3VudCBhbmQgeW91ciBjb250YWN0cyBsaXN0IHN0b3JlZCBvblxuICAgICAgICAgICAgICB5b3VyIG1vYmlsZSBkZXZpY2Ugb3IgdGFibGV0IGNvbXB1dGVyIHNvbGVseSBmb3IgcHVycG9zZXMgb2YgaWRlbnRpZnlpbmdcbiAgICAgICAgICAgICAgYW5kIGluZm9ybWluZyB5b3Ugb2YgdGhvc2UgY29udGFjdHMgd2hvIGhhdmUgYWxzbyByZWdpc3RlcmVkIHRvIHVzZSB0aGVcbiAgICAgICAgICAgICAgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYWNrbm93bGVkZ2UgYW5kIGFncmVlIHRoYXQgd2UgbWF5IGFjY2VzcyB5b3VyIGVtYWlsIGFkZHJlc3MgYm9va1xuICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBUaGlyZC1QYXJ0eSBBY2NvdW50IGFuZCB5b3VyIGNvbnRhY3RzIGxpc3Qgc3RvcmVkIG9uXG4gICAgICAgICAgICAgIHlvdXIgbW9iaWxlIGRldmljZSBvciB0YWJsZXQgY29tcHV0ZXIgc29sZWx5IGZvciBwdXJwb3NlcyBvZiBpZGVudGlmeWluZ1xuICAgICAgICAgICAgICBhbmQgaW5mb3JtaW5nIHlvdSBvZiB0aG9zZSBjb250YWN0cyB3aG8gaGF2ZSBhbHNvIHJlZ2lzdGVyZWQgdG8gdXNlIHRoZVxuICAgICAgICAgICAgICBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlNVQk1JU1NJT05TPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYWNrbm93bGVkZ2UgYW5kIGFncmVlIHRoYXQgYW55IHF1ZXN0aW9ucywgY29tbWVudHMsIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICBpZGVhcywgZmVlZGJhY2ssIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgU2l0ZSAoXCJTdWJtaXNzaW9uc1wiKVxuICAgICAgICAgICAgICBwcm92aWRlZCBieSB5b3UgdG8gdXMgYXJlIG5vbi1jb25maWRlbnRpYWwgYW5kIHNoYWxsIGJlY29tZSBvdXIgc29sZVxuICAgICAgICAgICAgICBwcm9wZXJ0eS4gV2Ugc2hhbGwgb3duIGV4Y2x1c2l2ZSByaWdodHMsIGluY2x1ZGluZyBhbGwgaW50ZWxsZWN0dWFsXG4gICAgICAgICAgICAgIHByb3BlcnR5IHJpZ2h0cywgYW5kIHNoYWxsIGJlIGVudGl0bGVkIHRvIHRoZSB1bnJlc3RyaWN0ZWQgdXNlIGFuZFxuICAgICAgICAgICAgICBkaXNzZW1pbmF0aW9uIG9mIHRoZXNlIFN1Ym1pc3Npb25zIGZvciBhbnkgbGF3ZnVsIHB1cnBvc2UsIGNvbW1lcmNpYWwgb3JcbiAgICAgICAgICAgICAgb3RoZXJ3aXNlLCB3aXRob3V0IGFja25vd2xlZGdtZW50IG9yIGNvbXBlbnNhdGlvbiB0byB5b3UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbGwgbW9yYWwgcmlnaHRzIHRvIGFueSBzdWNoIFN1Ym1pc3Npb25zLCBhbmQgeW91XG4gICAgICAgICAgICAgIGhlcmVieSB3YXJyYW50IHRoYXQgYW55IHN1Y2ggU3VibWlzc2lvbnMgYXJlIG9yaWdpbmFsIHdpdGggeW91IG9yIHRoYXRcbiAgICAgICAgICAgICAgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBzdWNoIFN1Ym1pc3Npb25zLiBZb3UgYWdyZWUgdGhlcmUgc2hhbGwgYmVcbiAgICAgICAgICAgICAgbm8gcmVjb3Vyc2UgYWdhaW5zdCB1cyBmb3IgYW55IGFsbGVnZWQgb3IgYWN0dWFsIGluZnJpbmdlbWVudCBvclxuICAgICAgICAgICAgICBtaXNhcHByb3ByaWF0aW9uIG9mIGFueSBwcm9wcmlldGFyeSByaWdodCBpbiB5b3VyIFN1Ym1pc3Npb25zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlRISVJELVBBUlRZIFdFQlNJVEVTIEFORCBDT05URU5UPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGUgU2l0ZSBtYXkgY29udGFpbiAob3IgeW91IG1heSBiZSBzZW50IHZpYSB0aGUgU2l0ZSkgbGlua3MgdG8gb3RoZXJcbiAgICAgICAgICAgICAgd2Vic2l0ZXMgKFwiVGhpcmQtUGFydHkgV2Vic2l0ZXNcIikgYXMgd2VsbCBhcyBhcnRpY2xlcywgdGV4dCwgZ3JhcGhpY3MsXG4gICAgICAgICAgICAgIHBpY3R1cmVzLCBkZXNpZ25zLCBtdXNpYywgc291bmQsIHZpZGVvLCBpbmZvcm1hdGlvbiwgYXBwbGljYXRpb25zLFxuICAgICAgICAgICAgICBzb2Z0d2FyZSwgYW5kIG90aGVyIGNvbnRlbnQgb3IgaXRlbXMgYmVsb25naW5nIHRvIG9yIG9yaWdpbmF0aW5nIGZyb21cbiAgICAgICAgICAgICAgdGhpcmQgcGFydGllcyAoXCJUaGlyZC1QYXJ0eSBDb250ZW50XCIpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFN1Y2ggVGhpcmQtUGFydHkgV2Vic2l0ZXMgYW5kIFRoaXJkLVBhcnR5IENvbnRlbnQgYXJlIG5vdCBpbnZlc3RpZ2F0ZWQsXG4gICAgICAgICAgICAgIG1vbml0b3JlZCwgb3IgY2hlY2tlZCBmb3IgYWNjdXJhY3ksIGFwcHJvcHJpYXRlbmVzcywgb3IgY29tcGxldGVuZXNzIGJ5XG4gICAgICAgICAgICAgIHVzLCBhbmQgd2UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgYW55IFRoaXJkLVBhcnR5IFdlYnNpdGVzIGFjY2Vzc2VkXG4gICAgICAgICAgICAgIHRocm91Z2ggdGhlIFNpdGUgb3IgYW55IFRoaXJkLVBhcnR5IENvbnRlbnQgcG9zdGVkIG9uLCBhdmFpbGFibGVcbiAgICAgICAgICAgICAgdGhyb3VnaCwgb3IgaW5zdGFsbGVkIGZyb20gdGhlIFNpdGUsIGluY2x1ZGluZyB0aGUgY29udGVudCwgYWNjdXJhY3ksXG4gICAgICAgICAgICAgIG9mZmVuc2l2ZW5lc3MsIG9waW5pb25zLCByZWxpYWJpbGl0eSwgcHJpdmFjeSBwcmFjdGljZXMsIG9yIG90aGVyXG4gICAgICAgICAgICAgIHBvbGljaWVzIG9mIG9yIGNvbnRhaW5lZCBpbiB0aGUgVGhpcmQtUGFydHkgV2Vic2l0ZXMgb3IgdGhlIFRoaXJkLVBhcnR5XG4gICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSW5jbHVzaW9uIG9mLCBsaW5raW5nIHRvLCBvciBwZXJtaXR0aW5nIHRoZSB1c2Ugb3IgaW5zdGFsbGF0aW9uIG9mIGFueVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBXZWJzaXRlcyBvciBhbnkgVGhpcmQtUGFydHkgQ29udGVudCBkb2VzIG5vdCBpbXBseSBhcHByb3ZhbFxuICAgICAgICAgICAgICBvciBlbmRvcnNlbWVudCB0aGVyZW9mIGJ5IHVzLiBJZiB5b3UgZGVjaWRlIHRvIGxlYXZlIHRoZSBTaXRlIGFuZCBhY2Nlc3NcbiAgICAgICAgICAgICAgdGhlIFRoaXJkLVBhcnR5IFdlYnNpdGVzIG9yIHRvIHVzZSBvciBpbnN0YWxsIGFueSBUaGlyZC1QYXJ0eSBDb250ZW50LFxuICAgICAgICAgICAgICB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzaywgYW5kIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhlc2UgVGVybXMgb2YgVXNlXG4gICAgICAgICAgICAgIG5vIGxvbmdlciBnb3Zlcm4uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IHNob3VsZCByZXZpZXcgdGhlIGFwcGxpY2FibGUgdGVybXMgYW5kIHBvbGljaWVzLCBpbmNsdWRpbmcgcHJpdmFjeVxuICAgICAgICAgICAgICBhbmQgZGF0YSBnYXRoZXJpbmcgcHJhY3RpY2VzLCBvZiBhbnkgd2Vic2l0ZSB0byB3aGljaCB5b3UgbmF2aWdhdGUgZnJvbVxuICAgICAgICAgICAgICB0aGUgU2l0ZSBvciByZWxhdGluZyB0byBhbnkgYXBwbGljYXRpb25zIHlvdSB1c2Ugb3IgaW5zdGFsbCBmcm9tIHRoZVxuICAgICAgICAgICAgICBTaXRlLiBBbnkgcHVyY2hhc2VzIHlvdSBtYWtlIHRocm91Z2ggVGhpcmQtUGFydHkgV2Vic2l0ZXMgd2lsbCBiZVxuICAgICAgICAgICAgICB0aHJvdWdoIG90aGVyIHdlYnNpdGVzIGFuZCBmcm9tIG90aGVyIGNvbXBhbmllcywgYW5kIHdlIHRha2Ugbm9cbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHkgd2hhdHNvZXZlciBpbiByZWxhdGlvbiB0byBzdWNoIHB1cmNoYXNlcyB3aGljaCBhcmVcbiAgICAgICAgICAgICAgZXhjbHVzaXZlbHkgYmV0d2VlbiB5b3UgYW5kIHRoZSBhcHBsaWNhYmxlIHRoaXJkIHBhcnR5LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSBhbmQgYWNrbm93bGVkZ2UgdGhhdCB3ZSBkbyBub3QgZW5kb3JzZSB0aGUgcHJvZHVjdHMgb3JcbiAgICAgICAgICAgICAgc2VydmljZXMgb2ZmZXJlZCBvbiBUaGlyZC1QYXJ0eSBXZWJzaXRlcyBhbmQgeW91IHNoYWxsIGhvbGQgdXMgaGFybWxlc3NcbiAgICAgICAgICAgICAgZnJvbSBhbnkgaGFybSBjYXVzZWQgYnkgeW91ciBwdXJjaGFzZSBvZiBzdWNoIHByb2R1Y3RzIG9yIHNlcnZpY2VzLlxuICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBzaGFsbCBob2xkIHVzIGhhcm1sZXNzIGZyb20gYW55IGxvc3NlcyBzdXN0YWluZWQgYnlcbiAgICAgICAgICAgICAgeW91IG9yIGhhcm0gY2F1c2VkIHRvIHlvdSByZWxhdGluZyB0byBvciByZXN1bHRpbmcgaW4gYW55IHdheSBmcm9tIGFueVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBDb250ZW50IG9yIGFueSBjb250YWN0IHdpdGggVGhpcmQtUGFydHkgV2Vic2l0ZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+QURWRVJUSVNFUlM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIGFsbG93IGFkdmVydGlzZXJzIHRvIGRpc3BsYXkgdGhlaXIgYWR2ZXJ0aXNlbWVudHMgYW5kIG90aGVyXG4gICAgICAgICAgICAgIGluZm9ybWF0aW9uIGluIGNlcnRhaW4gYXJlYXMgb2YgdGhlIFNpdGUsIHN1Y2ggYXMgc2lkZWJhciBhZHZlcnRpc2VtZW50c1xuICAgICAgICAgICAgICBvciBiYW5uZXIgYWR2ZXJ0aXNlbWVudHMuIElmIHlvdSBhcmUgYW4gYWR2ZXJ0aXNlciwgeW91IHNoYWxsIHRha2UgZnVsbFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBmb3IgYW55IGFkdmVydGlzZW1lbnRzIHlvdSBwbGFjZSBvbiB0aGUgU2l0ZSBhbmQgYW55XG4gICAgICAgICAgICAgIHNlcnZpY2VzIHByb3ZpZGVkIG9uIHRoZSBTaXRlIG9yIHByb2R1Y3RzIHNvbGQgdGhyb3VnaCB0aG9zZVxuICAgICAgICAgICAgICBhZHZlcnRpc2VtZW50cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBGdXJ0aGVyLCBhcyBhbiBhZHZlcnRpc2VyLCB5b3Ugd2FycmFudCBhbmQgcmVwcmVzZW50IHRoYXQgeW91IHBvc3Nlc3NcbiAgICAgICAgICAgICAgYWxsIHJpZ2h0cyBhbmQgYXV0aG9yaXR5IHRvIHBsYWNlIGFkdmVydGlzZW1lbnRzIG9uIHRoZSBTaXRlLCBpbmNsdWRpbmcsXG4gICAgICAgICAgICAgIGJ1dCBub3QgbGltaXRlZCB0bywgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cywgcHVibGljaXR5IHJpZ2h0cywgYW5kXG4gICAgICAgICAgICAgIGNvbnRyYWN0dWFsIHJpZ2h0cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBcyBhbiBhZHZlcnRpc2VyLCB5b3UgYWdyZWUgdGhhdCBzdWNoIGFkdmVydGlzZW1lbnRzIGFyZSBzdWJqZWN0IHRvIG91clxuICAgICAgICAgICAgICBEaWdpdGFsIE1pbGxlbm5pdW0gQ29weXJpZ2h0IEFjdCAo4oCcRE1DQeKAnSkgTm90aWNlIGFuZCBQb2xpY3kgcHJvdmlzaW9uc1xuICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgYmVsb3csIGFuZCB5b3UgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhlcmUgd2lsbCBiZSBubyByZWZ1bmRcbiAgICAgICAgICAgICAgb3Igb3RoZXIgY29tcGVuc2F0aW9uIGZvciBETUNBIHRha2UgZG93bi1yZWxhdGVkIGlzc3Vlcy4gV2Ugc2ltcGx5XG4gICAgICAgICAgICAgIHByb3ZpZGUgdGhlIHNwYWNlIHRvIHBsYWNlIHN1Y2ggYWR2ZXJ0aXNlbWVudHMsIGFuZCB3ZSBoYXZlIG5vIG90aGVyXG4gICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCB3aXRoIGFkdmVydGlzZXJzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlNJVEUgTUFOQUdFTUVOVDwvaDI+XG4gICAgICAgICAgICA8cD5XZSByZXNlcnZlIHRoZSByaWdodCwgYnV0IG5vdCB0aGUgb2JsaWdhdGlvbiwgdG86PC9wPlxuICAgICAgICAgICAgPHA+KDEpIG1vbml0b3IgdGhlIFNpdGUgZm9yIHZpb2xhdGlvbnMgb2YgdGhlc2UgVGVybXMgb2YgVXNlLjwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMikgdGFrZSBhcHByb3ByaWF0ZSBsZWdhbCBhY3Rpb24gYWdhaW5zdCBhbnlvbmUgd2hvLCBpbiBvdXIgc29sZVxuICAgICAgICAgICAgICBkaXNjcmV0aW9uLCB2aW9sYXRlcyB0aGUgbGF3IG9yIHRoZXNlIFRlcm1zIG9mIFVzZSwgaW5jbHVkaW5nIHdpdGhvdXRcbiAgICAgICAgICAgICAgbGltaXRhdGlvbiwgcmVwb3J0aW5nIHN1Y2ggdXNlciB0byBsYXcgZW5mb3JjZW1lbnQgYXV0aG9yaXRpZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGluIG91ciBzb2xlIGRpc2NyZXRpb24gYW5kIHdpdGhvdXQgbGltaXRhdGlvbiwgcmVmdXNlLCByZXN0cmljdFxuICAgICAgICAgICAgICBhY2Nlc3MgdG8sIGxpbWl0IHRoZSBhdmFpbGFiaWxpdHkgb2YsIG9yIGRpc2FibGUgKHRvIHRoZSBleHRlbnRcbiAgICAgICAgICAgICAgdGVjaG5vbG9naWNhbGx5IGZlYXNpYmxlKSBhbnkgb2YgeW91ciBDb250cmlidXRpb25zIG9yIGFueSBwb3J0aW9uXG4gICAgICAgICAgICAgIHRoZXJlb2ZcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNCkgaW7CoG91ciBzb2xlIGRpc2NyZXRpb24gYW5kIHdpdGhvdXQgbGltaXRhdGlvbiwgbm90aWNlLCBvciBsaWFiaWxpdHksXG4gICAgICAgICAgICAgIHRvIHJlbW92ZSBmcm9tIHRoZSBTaXRlIG9yIG90aGVyd2lzZSBkaXNhYmxlIGFsbCBmaWxlcyBhbmQgY29udGVudCB0aGF0XG4gICAgICAgICAgICAgIGFyZSBleGNlc3NpdmUgaW4gc2l6ZSBvciBhcmUgaW4gYW55IHdheSBidXJkZW5zb21lIHRvIG91ciBzeXN0ZW1zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg1KSBvdGhlcndpc2UgbWFuYWdlIHRoZSBTaXRlIGluIGEgbWFubmVyIGRlc2lnbmVkIHRvIHByb3RlY3Qgb3VyIHJpZ2h0c1xuICAgICAgICAgICAgICBhbmQgcHJvcGVydHkgYW5kIHRvIGZhY2lsaXRhdGUgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5QUklWQUNZIFBPTElDWTwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgY2FyZSBhYm91dCBkYXRhIHByaXZhY3kgYW5kIHNlY3VyaXR5LiBQbGVhc2UgcmV2aWV3IG91ciBQcml2YWN5XG4gICAgICAgICAgICAgIFBvbGljeTogPGEgaHJlZj1cIi9wcml2YWN5LXBvbGljeVwiPmNsaWNrIGhlcmU8L2E+LiBCeSB1c2luZyB0aGUgU2l0ZSwgeW91XG4gICAgICAgICAgICAgIGFncmVlIHRvIGJlIGJvdW5kIGJ5IG91ciBQcml2YWN5IFBvbGljeSwgd2hpY2ggaXMgaW5jb3Jwb3JhdGVkIGludG9cbiAgICAgICAgICAgICAgdGhlc2UgVGVybXMgb2YgVXNlLiBQbGVhc2UgYmUgYWR2aXNlZCB0aGUgU2l0ZSBpcyBob3N0ZWQgaW4gdGhlIFVuaXRlZFxuICAgICAgICAgICAgICBTdGF0ZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSWYgeW91IGFjY2VzcyB0aGUgU2l0ZSBmcm9tIHRoZSBFdXJvcGVhbiBVbmlvbiwgQXNpYSwgb3IgYW55IG90aGVyXG4gICAgICAgICAgICAgIHJlZ2lvbiBvZiB0aGUgd29ybGQgd2l0aCBsYXdzIG9yIG90aGVyIHJlcXVpcmVtZW50cyBnb3Zlcm5pbmcgcGVyc29uYWxcbiAgICAgICAgICAgICAgZGF0YSBjb2xsZWN0aW9uLCB1c2UsIG9yIGRpc2Nsb3N1cmUgdGhhdCBkaWZmZXIgZnJvbSBhcHBsaWNhYmxlIGxhd3MgaW5cbiAgICAgICAgICAgICAgdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZW4gdGhyb3VnaCB5b3VyIGNvbnRpbnVlZCB1c2Ugb2YgdGhlIFNpdGUsIHlvdSBhcmVcbiAgICAgICAgICAgICAgdHJhbnNmZXJyaW5nIHlvdXIgZGF0YSB0byB0aGUgVW5pdGVkIFN0YXRlcywgYW5kIHlvdSBleHByZXNzbHkgY29uc2VudFxuICAgICAgICAgICAgICB0byBoYXZlIHlvdXIgZGF0YSB0cmFuc2ZlcnJlZCB0byBhbmQgcHJvY2Vzc2VkIGluIHRoZSBVbml0ZWQgU3RhdGVzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEZ1cnRoZXIsIHdlIGRvIG5vdCBrbm93aW5nbHkgYWNjZXB0LCByZXF1ZXN0LCBvciBzb2xpY2l0IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIGZyb20gY2hpbGRyZW4gb3Iga25vd2luZ2x5IG1hcmtldCB0byBjaGlsZHJlbi4gVGhlcmVmb3JlLCBpbiBhY2NvcmRhbmNlXG4gICAgICAgICAgICAgIHdpdGggdGhlIFUuUy4gQ2hpbGRyZW7igJlzIE9ubGluZSBQcml2YWN5IFByb3RlY3Rpb24gQWN0LCBpZiB3ZSByZWNlaXZlXG4gICAgICAgICAgICAgIGFjdHVhbCBrbm93bGVkZ2UgdGhhdCBhbnlvbmUgdW5kZXIgdGhlIGFnZSBvZiAxMyBoYXMgcHJvdmlkZWQgcGVyc29uYWxcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gdXMgd2l0aG91dCB0aGUgcmVxdWlzaXRlIGFuZCB2ZXJpZmlhYmxlIHBhcmVudGFsIGNvbnNlbnQsXG4gICAgICAgICAgICAgIHdlIHdpbGwgZGVsZXRlIHRoYXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgU2l0ZSBhcyBxdWlja2x5IGFzIGlzXG4gICAgICAgICAgICAgIHJlYXNvbmFibHkgcHJhY3RpY2FsLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJR0lUQUwgTUlMTEVOTklVTSBDT1BZUklHSFQgQUNUIChETUNBKSBOT1RJQ0UgQU5EIFBPTElDWTwvaDI+XG4gICAgICAgICAgICA8aDM+Tm90aWZpY2F0aW9uczwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgcmVzcGVjdCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBvdGhlcnMuIElmIHlvdSBiZWxpZXZlXG4gICAgICAgICAgICAgIHRoYXQgYW55IG1hdGVyaWFsIGF2YWlsYWJsZSBvbiBvciB0aHJvdWdoIHRoZSBTaXRlIGluZnJpbmdlcyB1cG9uIGFueVxuICAgICAgICAgICAgICBjb3B5cmlnaHQgeW91IG93biBvciBjb250cm9sLCBwbGVhc2UgaW1tZWRpYXRlbHkgbm90aWZ5IG91ciBEZXNpZ25hdGVkXG4gICAgICAgICAgICAgIENvcHlyaWdodCBBZ2VudCB1c2luZyB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBwcm92aWRlZCBiZWxvdyAoYVxuICAgICAgICAgICAgICDigJxOb3RpZmljYXRpb27igJ0pLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEEgY29weSBvZiB5b3VyIE5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIHBlcnNvbiB3aG8gcG9zdGVkIG9yXG4gICAgICAgICAgICAgIHN0b3JlZCB0aGUgbWF0ZXJpYWwgYWRkcmVzc2VkIGluIHRoZSBOb3RpZmljYXRpb24uIFBsZWFzZSBiZSBhZHZpc2VkXG4gICAgICAgICAgICAgIHRoYXQgcHVyc3VhbnQgdG8gZmVkZXJhbCBsYXcgeW91IG1heSBiZSBoZWxkIGxpYWJsZSBmb3IgZGFtYWdlcyBpZiB5b3VcbiAgICAgICAgICAgICAgbWFrZSBtYXRlcmlhbCBtaXNyZXByZXNlbnRhdGlvbnMgaW4gYSBOb3RpZmljYXRpb24uIFRodXMsIGlmIHlvdSBhcmUgbm90XG4gICAgICAgICAgICAgIHN1cmUgdGhhdCBtYXRlcmlhbCBsb2NhdGVkIG9uIG9yIGxpbmtlZCB0byBieSB0aGUgU2l0ZSBpbmZyaW5nZXMgeW91clxuICAgICAgICAgICAgICBjb3B5cmlnaHQsIHlvdSBzaG91bGQgY29uc2lkZXIgZmlyc3QgY29udGFjdGluZyBhbiBhdHRvcm5leS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBbGwgTm90aWZpY2F0aW9ucyBzaG91bGQgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIERNQ0EgMTcgVS5TLkMuIMKnXG4gICAgICAgICAgICAgIDUxMihjKSgzKSBhbmQgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSBBIHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgc2lnbmF0dXJlIG9mIGEgcGVyc29uIGF1dGhvcml6ZWQgdG8gYWN0IG9uXG4gICAgICAgICAgICAgIGJlaGFsZiBvZiB0aGUgb3duZXIgb2YgYW4gZXhjbHVzaXZlIHJpZ2h0IHRoYXQgaXMgYWxsZWdlZGx5IGluZnJpbmdlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMikgaWRlbnRpZmljYXRpb24gb2YgdGhlIGNvcHlyaWdodGVkIHdvcmsgY2xhaW1lZCB0byBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgaW5mcmluZ2VkLCBvciwgaWYgbXVsdGlwbGUgY29weXJpZ2h0ZWQgd29ya3Mgb24gdGhlIFNpdGUgYXJlIGNvdmVyZWQgYnlcbiAgICAgICAgICAgICAgdGhlIE5vdGlmaWNhdGlvbiwgYSByZXByZXNlbnRhdGl2ZSBsaXN0IG9mIHN1Y2ggd29ya3Mgb24gdGhlIFNpdGVcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMykgaW5mb3JtYXRpb24gcmVhc29uYWJseSBzdWZmaWNpZW50IHRvIHBlcm1pdCB1cyB0byBjb250YWN0IHRoZVxuICAgICAgICAgICAgICBjb21wbGFpbmluZyBwYXJ0eSwgc3VjaCBhcyBhbiBhZGRyZXNzLCB0ZWxlcGhvbmUgbnVtYmVyLCBhbmQsIGlmXG4gICAgICAgICAgICAgIGF2YWlsYWJsZSwgYW4gZW1haWwgYWRkcmVzcyBhdCB3aGljaCB0aGUgY29tcGxhaW5pbmcgcGFydHkgbWF5IGJlXG4gICAgICAgICAgICAgIGNvbnRhY3RlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNCkgYSBzdGF0ZW1lbnQgdGhhdCB0aGUgY29tcGxhaW5pbmcgcGFydHkgaGFzIGEgZ29vZCBmYWl0aCBiZWxpZWYgdGhhdFxuICAgICAgICAgICAgICB1c2Ugb2YgdGhlIG1hdGVyaWFsIGluIHRoZSBtYW5uZXIgY29tcGxhaW5lZCBvZiBpcyBub3QgYXV0aG9yaXplZCBieSB0aGVcbiAgICAgICAgICAgICAgY29weXJpZ2h0IG93bmVyLCBpdHMgYWdlbnQsIG9yIHRoZSBsYXcuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDUpIGEgc3RhdGVtZW50IHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBub3RpZmljYXRpb24gaXMgYWNjdXJhdGUsXG4gICAgICAgICAgICAgIGFuZCB1bmRlciBwZW5hbHR5IG9mIHBlcmp1cnksIHRoYXQgdGhlIGNvbXBsYWluaW5nIHBhcnR5IGlzIGF1dGhvcml6ZWRcbiAgICAgICAgICAgICAgdG8gYWN0IG9uIGJlaGFsZiBvZiB0aGUgb3duZXIgb2YgYW4gZXhjbHVzaXZlIHJpZ2h0IHRoYXQgaXMgYWxsZWdlZGx5XG4gICAgICAgICAgICAgIGluZnJpbmdlZCB1cG9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgzPkNvdW50ZXIgTm90aWZpY2F0aW9uPC9oMz5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB5b3UgYmVsaWV2ZSB5b3VyIG93biBjb3B5cmlnaHRlZCBtYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlXG4gICAgICAgICAgICAgIFNpdGUgYXMgYSByZXN1bHQgb2YgYSBtaXN0YWtlIG9yIG1pcyBpZGVudGlmaWNhdGlvbiwgeW91IG1heSBzdWJtaXQgYVxuICAgICAgICAgICAgICB3cml0dGVuIGNvdW50ZXIgbm90aWZpY2F0aW9uIHRvIHVzIHVzaW5nIHRoZSBjb250YWN0IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIHByb3ZpZGVkIGJlbG93IChhIOKAnENvdW50ZXIgTm90aWZpY2F0aW9u4oCdKS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUbyBiZSBhbiBlZmZlY3RpdmUgQ291bnRlciBOb3RpZmljYXRpb24gdW5kZXIgdGhlIERNQ0EsIHlvdXIgQ291bnRlclxuICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbXVzdCBpbmNsdWRlIHN1YnN0YW50aWFsbHkgdGhlIGZvbGxvd2luZzpcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMSkgaWRlbnRpZmljYXRpb24gb2YgdGhlIG1hdGVyaWFsIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZCBvciBkaXNhYmxlZCBhbmRcbiAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIGF0IHdoaWNoIHRoZSBtYXRlcmlhbCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIHJlbW92ZWQgb3JcbiAgICAgICAgICAgICAgZGlzYWJsZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDIpIGEgc3RhdGVtZW50IHRoYXQgeW91IGNvbnNlbnQgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgRmVkZXJhbFxuICAgICAgICAgICAgICBEaXN0cmljdCBDb3VydCBpbiB3aGljaCB5b3VyIGFkZHJlc3MgaXMgbG9jYXRlZCwgb3IgaWYgeW91ciBhZGRyZXNzIGlzXG4gICAgICAgICAgICAgIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIGZvciBhbnkganVkaWNpYWwgZGlzdHJpY3QgaW4gd2hpY2ggd2UgYXJlXG4gICAgICAgICAgICAgIGxvY2F0ZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGEgc3RhdGVtZW50IHRoYXQgeW91IHdpbGwgYWNjZXB0IHNlcnZpY2Ugb2YgcHJvY2VzcyBmcm9tIHRoZSBwYXJ0eVxuICAgICAgICAgICAgICB0aGF0IGZpbGVkIHRoZSBOb3RpZmljYXRpb24gb3IgdGhlIHBhcnR5J3MgYWdlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD4oNCkgeW91ciBuYW1lLCBhZGRyZXNzLCBhbmQgdGVsZXBob25lIG51bWJlci48L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDUpIGEgc3RhdGVtZW50IHVuZGVyIHBlbmFsdHkgb2YgcGVyanVyeSB0aGF0IHlvdSBoYXZlIGEgZ29vZCBmYWl0aFxuICAgICAgICAgICAgICBiZWxpZWYgdGhhdCB0aGUgbWF0ZXJpYWwgaW4gcXVlc3Rpb24gd2FzIHJlbW92ZWQgb3IgZGlzYWJsZWQgYXMgYSByZXN1bHRcbiAgICAgICAgICAgICAgb2YgYSBtaXN0YWtlIG9yIG1pcyBpZGVudGlmaWNhdGlvbiBvZiB0aGUgbWF0ZXJpYWwgdG8gYmUgcmVtb3ZlZCBvclxuICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+KDYpIHlvdXIgcGh5c2ljYWwgb3IgZWxlY3Ryb25pYyBzaWduYXR1cmUuPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBzZW5kIHVzIGEgdmFsaWQsIHdyaXR0ZW4gQ291bnRlciBOb3RpZmljYXRpb24gbWVldGluZyB0aGVcbiAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBhYm92ZSwgd2Ugd2lsbCByZXN0b3JlIHlvdXIgcmVtb3ZlZCBvciBkaXNhYmxlZFxuICAgICAgICAgICAgICBtYXRlcmlhbCwgdW5sZXNzIHdlIGZpcnN0IHJlY2VpdmUgbm90aWNlIGZyb20gdGhlIHBhcnR5IGZpbGluZyB0aGVcbiAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIGluZm9ybWluZyB1cyB0aGF0IHN1Y2ggcGFydHkgaGFzIGZpbGVkIGEgY291cnQgYWN0aW9uIHRvXG4gICAgICAgICAgICAgIHJlc3RyYWluIHlvdSBmcm9tIGVuZ2FnaW5nIGluIGluZnJpbmdpbmcgYWN0aXZpdHkgcmVsYXRlZCB0byB0aGVcbiAgICAgICAgICAgICAgbWF0ZXJpYWwgaW4gcXVlc3Rpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCBpZiB5b3UgbWF0ZXJpYWxseSBtaXNyZXByZXNlbnQgdGhhdCB0aGUgZGlzYWJsZWQgb3JcbiAgICAgICAgICAgICAgcmVtb3ZlZCBjb250ZW50IHdhcyByZW1vdmVkIGJ5IG1pc3Rha2Ugb3IgbWlzLWlkZW50aWZpY2F0aW9uLCB5b3UgbWF5IGJlXG4gICAgICAgICAgICAgIGxpYWJsZSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGNvc3RzIGFuZCBhdHRvcm5leSdzIGZlZXMuIEZpbGluZyBhIGZhbHNlXG4gICAgICAgICAgICAgIENvdW50ZXIgTm90aWZpY2F0aW9uIGNvbnN0aXR1dGVzIHBlcmp1cnkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgRGVzaWduYXRlZCBDb3B5cmlnaHQgQWdlbnRcbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIHt7IGNvbXBhbnlfbmFtZSB9fVxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgQXR0bjogQ29weXJpZ2h0IEFnZW50XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICB7eyBjb21wYW55X2VtYWlsIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+Q09QWVJJR0hUIElORlJJTkdFTUVOVFM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIHJlc3BlY3QgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2Ygb3RoZXJzLiBJZiB5b3UgYmVsaWV2ZVxuICAgICAgICAgICAgICB0aGF0IGFueSBtYXRlcmlhbCBhdmFpbGFibGUgb24gb3IgdGhyb3VnaCB0aGUgU2l0ZSBpbmZyaW5nZXMgdXBvbiBhbnlcbiAgICAgICAgICAgICAgY29weXJpZ2h0IHlvdSBvd24gb3IgY29udHJvbCwgcGxlYXNlIGltbWVkaWF0ZWx5IG5vdGlmeSB1cyB1c2luZyB0aGVcbiAgICAgICAgICAgICAgY29udGFjdCBpbmZvcm1hdGlvbiBwcm92aWRlZCBiZWxvdyAoYSDigJxOb3RpZmljYXRpb27igJ0pLiBBIGNvcHkgb2YgeW91clxuICAgICAgICAgICAgICBOb3RpZmljYXRpb24gd2lsbCBiZSBzZW50IHRvIHRoZSBwZXJzb24gd2hvIHBvc3RlZCBvciBzdG9yZWQgdGhlXG4gICAgICAgICAgICAgIG1hdGVyaWFsIGFkZHJlc3NlZCBpbiB0aGUgTm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgcHVyc3VhbnQgdG8gZmVkZXJhbCBsYXcgeW91IG1heSBiZSBoZWxkIGxpYWJsZVxuICAgICAgICAgICAgICBmb3IgZGFtYWdlcyBpZiB5b3UgbWFrZSBtYXRlcmlhbCBtaXNyZXByZXNlbnRhdGlvbnMgaW4gYSBOb3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBhcmUgbm90IHN1cmUgdGhhdCBtYXRlcmlhbCBsb2NhdGVkIG9uIG9yIGxpbmtlZCB0byBieSB0aGVcbiAgICAgICAgICAgICAgU2l0ZSBpbmZyaW5nZXMgeW91ciBjb3B5cmlnaHQsIHlvdSBzaG91bGQgY29uc2lkZXIgZmlyc3QgY29udGFjdGluZyBhblxuICAgICAgICAgICAgICBhdHRvcm5leS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5URVJNIEFORCBURVJNSU5BVElPTjwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIHNoYWxsIHJlbWFpbiBpbiBmdWxsIGZvcmNlIGFuZCBlZmZlY3Qgd2hpbGUgeW91IHVzZVxuICAgICAgICAgICAgICB0aGUgU2l0ZS4gV0lUSE9VVCBMSU1JVElORyBBTlkgT1RIRVIgUFJPVklTSU9OIE9GIFRIRVNFIFRFUk1TIE9GIFVTRSwgV0VcbiAgICAgICAgICAgICAgUkVTRVJWRSBUSEUgUklHSFQgVE8sIElOIE9VUiBTT0xFIERJU0NSRVRJT04gQU5EIFdJVEhPVVQgTk9USUNFIE9SXG4gICAgICAgICAgICAgIExJQUJJTElUWSwgREVOWSBBQ0NFU1MgVE8gQU5EIFVTRSBPRiBUSEUgU0lURSAoSU5DTFVESU5HIEJMT0NLSU5HXG4gICAgICAgICAgICAgIENFUlRBSU4gSVAgQUREUkVTU0VTKSwgVE8gQU5ZIFBFUlNPTiBGT1IgQU5ZIFJFQVNPTiBPUiBGT1IgTk8gUkVBU09OLFxuICAgICAgICAgICAgICBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEZPUiBCUkVBQ0ggT0YgQU5ZIFJFUFJFU0VOVEFUSU9OLCBXQVJSQU5UWSxcbiAgICAgICAgICAgICAgT1IgQ09WRU5BTlQgQ09OVEFJTkVEIElOIFRIRVNFIFRFUk1TIE9GIFVTRSBPUiBPRiBBTlkgQVBQTElDQUJMRSBMQVcgT1JcbiAgICAgICAgICAgICAgUkVHVUxBVElPTi4gV0UgTUFZIFRFUk1JTkFURSBZT1VSIFVTRSBPUiBQQVJUSUNJUEFUSU9OIElOIFRIRSBTSVRFIE9SXG4gICAgICAgICAgICAgIERFTEVURSBZT1VSIEFDQ09VTlQgQU5EIEFOWSBDT05URU5UIE9SIElORk9STUFUSU9OIFRIQVQgWU9VIFBPU1RFRCBBVFxuICAgICAgICAgICAgICBBTlkgVElNRSwgV0lUSE9VVCBXQVJOSU5HLCBJTiBPVVIgU09MRSBESVNDUkVUSU9OLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHdlIHRlcm1pbmF0ZSBvciBzdXNwZW5kIHlvdXIgYWNjb3VudCBmb3IgYW55IHJlYXNvbiwgeW91IGFyZVxuICAgICAgICAgICAgICBwcm9oaWJpdGVkIGZyb20gcmVnaXN0ZXJpbmcgYW5kIGNyZWF0aW5nIGEgbmV3IGFjY291bnQgdW5kZXIgeW91ciBuYW1lLFxuICAgICAgICAgICAgICBhIGZha2Ugb3IgYm9ycm93ZWQgbmFtZSwgb3IgdGhlIG5hbWUgb2YgYW55IHRoaXJkIHBhcnR5LCBldmVuIGlmIHlvdSBtYXlcbiAgICAgICAgICAgICAgYmUgYWN0aW5nIG9uIGJlaGFsZiBvZiB0aGUgdGhpcmQgcGFydHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGVybWluYXRpbmcgb3Igc3VzcGVuZGluZyB5b3VyIGFjY291bnQsIHdlIHJlc2VydmUgdGhlXG4gICAgICAgICAgICAgIHJpZ2h0IHRvIHRha2UgYXBwcm9wcmlhdGUgbGVnYWwgYWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4gICAgICAgICAgICAgIHB1cnN1aW5nIGNpdmlsLCBjcmltaW5hbCwgYW5kIGluanVuY3RpdmUgcmVkcmVzcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5NT0RJRklDQVRJT05TIEFORCBJTlRFUlJVUFRJT05TPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSByZXNlcnZlIHRoZSByaWdodCB0byBjaGFuZ2UsIG1vZGlmeSwgb3IgcmVtb3ZlIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgICAgICAgICAgICAgU2l0ZSBhdCBhbnkgdGltZSBvciBmb3IgYW55IHJlYXNvbiBhdCBvdXIgc29sZSBkaXNjcmV0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICAgbm90aWNlLiBIb3dldmVyLCB3ZSBoYXZlIG5vIG9ibGlnYXRpb24gdG8gdXBkYXRlIGFueSBpbmZvcm1hdGlvbiBvbiBvdXJcbiAgICAgICAgICAgICAgU2l0ZS4gV2UgYWxzbyByZXNlcnZlIHRoZSByaWdodCB0byBtb2RpZnkgb3IgZGlzY29udGludWUgYWxsIG9yIHBhcnQgb2ZcbiAgICAgICAgICAgICAgdGhlIFNpdGUgd2l0aG91dCBub3RpY2UgYXQgYW55IHRpbWUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2Ugd2lsbCBub3QgYmUgbGlhYmxlIHRvIHlvdSBvciBhbnkgdGhpcmQgcGFydHkgZm9yIGFueSBtb2RpZmljYXRpb24sXG4gICAgICAgICAgICAgIHByaWNlIGNoYW5nZSwgc3VzcGVuc2lvbiwgb3IgZGlzY29udGludWFuY2Ugb2YgdGhlIFNpdGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgY2Fubm90IGd1YXJhbnRlZSB0aGUgU2l0ZSB3aWxsIGJlIGF2YWlsYWJsZSBhdCBhbGwgdGltZXMuIFdlIG1heVxuICAgICAgICAgICAgICBleHBlcmllbmNlIGhhcmR3YXJlLCBzb2Z0d2FyZSwgb3Igb3RoZXIgcHJvYmxlbXMgb3IgbmVlZCB0byBwZXJmb3JtXG4gICAgICAgICAgICAgIG1haW50ZW5hbmNlIHJlbGF0ZWQgdG8gdGhlIFNpdGUsIHJlc3VsdGluZyBpbiBpbnRlcnJ1cHRpb25zLCBkZWxheXMsIG9yXG4gICAgICAgICAgICAgIGVycm9ycy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSByZXNlcnZlIHRoZSByaWdodCB0byBjaGFuZ2UsIHJldmlzZSwgdXBkYXRlLCBzdXNwZW5kLCBkaXNjb250aW51ZSwgb3JcbiAgICAgICAgICAgICAgb3RoZXJ3aXNlIG1vZGlmeSB0aGUgU2l0ZSBhdCBhbnkgdGltZSBvciBmb3IgYW55IHJlYXNvbiB3aXRob3V0IG5vdGljZVxuICAgICAgICAgICAgICB0byB5b3UuIFlvdSBhZ3JlZSB0aGF0IHdlIGhhdmUgbm8gbGlhYmlsaXR5IHdoYXRzb2V2ZXIgZm9yIGFueSBsb3NzLFxuICAgICAgICAgICAgICBkYW1hZ2UsIG9yIGluY29udmVuaWVuY2UgY2F1c2VkIGJ5IHlvdXIgaW5hYmlsaXR5IHRvIGFjY2VzcyBvciB1c2UgdGhlXG4gICAgICAgICAgICAgIFNpdGUgZHVyaW5nIGFueSBkb3dudGltZSBvciBkaXNjb250aW51YW5jZSBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOb3RoaW5nIGluIHRoZXNlIFRlcm1zIG9mIFVzZSB3aWxsIGJlIGNvbnN0cnVlZCB0byBvYmxpZ2F0ZSB1cyB0b1xuICAgICAgICAgICAgICBtYWludGFpbiBhbmQgc3VwcG9ydCB0aGUgU2l0ZSBvciB0byBzdXBwbHkgYW55IGNvcnJlY3Rpb25zLCB1cGRhdGVzLCBvclxuICAgICAgICAgICAgICByZWxlYXNlcyBpbiBjb25uZWN0aW9uIHRoZXJld2l0aC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5HT1ZFUk5JTkcgTEFXPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBGb3IgYW55IGRpc3B1dGUgcmVsYXRpbmcgdG8gdGhlIGVudGVyaW5nIGludG8gZWZmZWN0LCB2YWxpZGl0eSxcbiAgICAgICAgICAgICAgaW50ZXJwcmV0YXRpb24sIGV4ZWN1dGlvbiwgc3VzcGVuc2lvbiwgdGVybWluYXRpb24gYW5kIGZvcmNpYmxlXG4gICAgICAgICAgICAgIGV4ZWN1dGlvbiBvZiB0aGlzIENvbnRyYWN0LCB0aGUgQ291cnRzIG9mIHRoZSBqdWRpY2lhbCBkaXN0cmljdCBvZlxuICAgICAgICAgICAgICBCcnVzc2VscyBoYXZlIGp1cmlzZGljdGlvbi4gQmVsZ2lhbiBsYXcgZ292ZXJucyB0aGlzIENvbnRyYWN0LCBleGNsdWRpbmdcbiAgICAgICAgICAgICAgcHJvdmlzaW9ucyBvZiBwcml2YXRlIGludGVybmF0aW9uYWwgbGF3IHBlcnRpbmVudCB0byB0aGUgYXBwbGljYWJsZSBsYXcsXG4gICAgICAgICAgICAgIGFuZCB0aGUgVmllbm5hIENvbnZlbnRpb24gb24gY29udHJhY3RzIGZvciB0aGUgaW50ZXJuYXRpb25hbCBzYWxlIG9mXG4gICAgICAgICAgICAgIHJlYWwgcHJvcGVydHkgKFZpZW5uYSwgQXByaWwgMTEsIDE5ODApLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJU1BVVEUgUkVTT0xVVElPTjwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIHBhcnRpZXMgc2hhbGwgZW5kZWF2b3VyIHRvIHNldHRsZSBhbnkgZGlzcHV0ZSBhcmlzaW5nIG91dCBvZiBvclxuICAgICAgICAgICAgICByZWxhdGluZyB0byB0aGlzIGFncmVlbWVudCwgaW5jbHVkaW5nIHdpdGggcmVnYXJkIHRvIGl0cyBleGlzdGVuY2UsXG4gICAgICAgICAgICAgIHZhbGlkaXR5IG9yIHRlcm1pbmF0aW9uLCBieSBtZWRpYXRpb24gYmVmb3JlIGhhdmluZyByZWNvdXJzZSB0b1xuICAgICAgICAgICAgICBhcmJpdHJhdGlvbiBvciBsaXRpZ2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFueSBsZWdhbCBhY3Rpb24gb2Ygd2hhdGV2ZXIgbmF0dXJlIGJyb3VnaHQgYnkgZWl0aGVyIHlvdSBvciB1c1xuICAgICAgICAgICAgICAoY29sbGVjdGl2ZWx5LCB0aGUg4oCcUGFydGllc+KAnSBhbmQgaW5kaXZpZHVhbGx5LCBhIOKAnFBhcnR54oCdKSBzaGFsbCBiZVxuICAgICAgICAgICAgICBjb21tZW5jZWQgb3IgcHJvc2VjdXRlZCBpbiB0aGUgc3RhdGUgYW5kIGZlZGVyYWwgY291cnRzIGxvY2F0ZWQgaW5cbiAgICAgICAgICAgICAgQnJ1c3NlbHMsIEJlbGdpdW0sIGFuZCB0aGUgUGFydGllcyBoZXJlYnkgY29uc2VudCB0bywgYW5kIHdhaXZlIGFsbFxuICAgICAgICAgICAgICBkZWZlbnNlcyBvZiBsYWNrIG9mIHBlcnNvbmFsIGp1cmlzZGljdGlvbiBhbmQgZm9ydW0gbm9uIGNvbnZlbmllbnQgd2l0aFxuICAgICAgICAgICAgICByZXNwZWN0IHRvIHZlbnVlIGFuZCBqdXJpc2RpY3Rpb24gaW4gc3VjaCBzdGF0ZSBhbmQgZmVkZXJhbCBjb3VydHMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQXBwbGljYXRpb24gb2YgdGhlIFVuaXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24gQ29udHJhY3RzIGZvciB0aGVcbiAgICAgICAgICAgICAgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGFuZCB0aGUgVW5pZm9ybSBDb21wdXRlciBJbmZvcm1hdGlvblxuICAgICAgICAgICAgICBUcmFuc2FjdGlvbiBBY3QgKFVDSVRBKSBhcmUgZXhjbHVkZWQgZnJvbSB0aGVzZSBUZXJtcyBvZiBVc2UuIEluIG5vXG4gICAgICAgICAgICAgIGV2ZW50IHNoYWxsIGFueSBjbGFpbSwgYWN0aW9uLCBvciBwcm9jZWVkaW5nIGJyb3VnaHQgYnkgZWl0aGVyIFBhcnR5XG4gICAgICAgICAgICAgIHJlbGF0ZWQgaW4gYW55IHdheSB0byB0aGUgU2l0ZSBiZSBjb21tZW5jZWQgbW9yZSB0aGFuIDIgeWVhcnMgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5DT1JSRUNUSU9OUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlcmUgbWF5IGJlIGluZm9ybWF0aW9uIG9uIHRoZSBTaXRlIHRoYXQgY29udGFpbnMgdHlwb2dyYXBoaWNhbCBlcnJvcnMsXG4gICAgICAgICAgICAgIGluYWNjdXJhY2llcywgb3Igb21pc3Npb25zIHRoYXQgbWF5IHJlbGF0ZSB0byB0aGUgU2l0ZSwgaW5jbHVkaW5nXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9ucywgcHJpY2luZywgYXZhaWxhYmlsaXR5LCBhbmQgdmFyaW91cyBvdGhlciBpbmZvcm1hdGlvbi4gV2VcbiAgICAgICAgICAgICAgcmVzZXJ2ZSB0aGUgcmlnaHQgdG8gY29ycmVjdCBhbnkgZXJyb3JzLCBpbmFjY3VyYWNpZXMsIG9yIG9taXNzaW9ucyBhbmRcbiAgICAgICAgICAgICAgdG8gY2hhbmdlIG9yIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gb24gdGhlIFNpdGUgYXQgYW55IHRpbWUsIHdpdGhvdXRcbiAgICAgICAgICAgICAgcHJpb3Igbm90aWNlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJU0NMQUlNRVI8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRIRSBTSVRFIElTIFBST1ZJREVEIE9OIEFOIEFTLUlTIEFORCBBUy1BVkFJTEFCTEUgQkFTSVMuIFlPVSBBR1JFRSBUSEFUXG4gICAgICAgICAgICAgIFlPVVIgVVNFIE9GIFRIRSBTSVRFIEFORCBPVVIgU0VSVklDRVMgV0lMTCBCRSBBVCBZT1VSIFNPTEUgUklTSy4gVE8gVEhFXG4gICAgICAgICAgICAgIEZVTExFU1QgRVhURU5UIFBFUk1JVFRFRCBCWSBMQVcsIFdFIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTLCBFWFBSRVNTIE9SXG4gICAgICAgICAgICAgIElNUExJRUQsIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU0lURSBBTkQgWU9VUiBVU0UgVEhFUkVPRiwgSU5DTFVESU5HLFxuICAgICAgICAgICAgICBXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTXG4gICAgICAgICAgICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIFdFIE1BS0UgTk8gV0FSUkFOVElFUyBPUlxuICAgICAgICAgICAgICBSRVBSRVNFTlRBVElPTlMgQUJPVVQgVEhFIEFDQ1VSQUNZIE9SIENPTVBMRVRFTkVTUyBPRiBUSEUgU0lUReKAmVMgQ09OVEVOVFxuICAgICAgICAgICAgICBPUiBUSEUgQ09OVEVOVCBPRiBBTlkgV0VCU0lURVMgTElOS0VEIFRPIFRIRSBTSVRFIEFORCBXRSBXSUxMIEFTU1VNRSBOT1xuICAgICAgICAgICAgICBMSUFCSUxJVFkgT1IgUkVTUE9OU0lCSUxJVFkgRk9SIEFOWSAoMSkgRVJST1JTLCBNSVNUQUtFUywgT1JcbiAgICAgICAgICAgICAgSU5BQ0NVUkFDSUVTIE9GIENPTlRFTlQgQU5EIE1BVEVSSUFMUywgKDIpIFBFUlNPTkFMIElOSlVSWSBPUiBQUk9QRVJUWVxuICAgICAgICAgICAgICBEQU1BR0UsIE9GIEFOWSBOQVRVUkUgV0hBVFNPRVZFUiwgUkVTVUxUSU5HIEZST00gWU9VUiBBQ0NFU1MgVE8gQU5EIFVTRVxuICAgICAgICAgICAgICBPRiBUSEUgU0lURSwgKDMpIEFOWSBVTkFVVEhPUklaRUQgQUNDRVNTIFRPIE9SIFVTRSBPRiBPVVIgU0VDVVJFIFNFUlZFUlNcbiAgICAgICAgICAgICAgQU5EL09SIEFOWSBBTkQgQUxMIFBFUlNPTkFMIElORk9STUFUSU9OIEFORC9PUiBGSU5BTkNJQUwgSU5GT1JNQVRJT05cbiAgICAgICAgICAgICAgU1RPUkVEIFRIRVJFSU4sICg0KSBBTlkgSU5URVJSVVBUSU9OIE9SIENFU1NBVElPTiBPRiBUUkFOU01JU1NJT04gVE8gT1JcbiAgICAgICAgICAgICAgRlJPTSBUSEUgU0lURSwgKDUpIEFOWSBCVUdTLCBWSVJVU0VTLCBUUk9KQU4gSE9SU0VTLCBPUiBUSEUgTElLRSBXSElDSFxuICAgICAgICAgICAgICBNQVkgQkUgVFJBTlNNSVRURUQgVE8gT1IgVEhST1VHSCBUSEUgU0lURSBCWSBBTlkgVEhJUkQgUEFSVFksIEFORC9PUiAoNilcbiAgICAgICAgICAgICAgQU5ZIEVSUk9SUyBPUiBPTUlTU0lPTlMgSU4gQU5ZIENPTlRFTlQgQU5EIE1BVEVSSUFMUyBPUiBGT1IgQU5ZIExPU1MgT1JcbiAgICAgICAgICAgICAgREFNQUdFIE9GIEFOWSBLSU5EIElOQ1VSUkVEIEFTIEEgUkVTVUxUIE9GIFRIRSBVU0UgT0YgQU5ZIENPTlRFTlRcbiAgICAgICAgICAgICAgUE9TVEVELCBUUkFOU01JVFRFRCwgT1IgT1RIRVJXSVNFIE1BREUgQVZBSUxBQkxFIFZJQSBUSEUgU0lURS4gV0UgRE8gTk9UXG4gICAgICAgICAgICAgIFdBUlJBTlQsIEVORE9SU0UsIEdVQVJBTlRFRSwgT1IgQVNTVU1FIFJFU1BPTlNJQklMSVRZIEZPUiBBTlkgUFJPRFVDVCBPUlxuICAgICAgICAgICAgICBTRVJWSUNFIEFEVkVSVElTRUQgT1IgT0ZGRVJFRCBCWSBBIFRISVJEIFBBUlRZIFRIUk9VR0ggVEhFIFNJVEUsIEFOWVxuICAgICAgICAgICAgICBIWVBFUkxJTktFRCBXRUJTSVRFLCBPUiBBTlkgV0VCU0lURSBPUiBNT0JJTEUgQVBQTElDQVRJT04gRkVBVFVSRUQgSU5cbiAgICAgICAgICAgICAgQU5ZIEJBTk5FUiBPUiBPVEhFUiBBRFZFUlRJU0lORywgQU5EIFdFIFdJTEwgTk9UIEJFIEEgUEFSVFkgVE8gT1IgSU4gQU5ZXG4gICAgICAgICAgICAgIFdBWSBCRSBSRVNQT05TSUJMRSBGT1IgTU9OSVRPUklORyBBTlkgVFJBTlNBQ1RJT04gQkVUV0VFTiBZT1UgQU5EIEFOWVxuICAgICAgICAgICAgICBUSElSRC1QQVJUWSBQUk9WSURFUlMgT0YgUFJPRFVDVFMgT1IgU0VSVklDRVMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQVMgV0lUSCBUSEUgUFVSQ0hBU0UgT0YgQSBQUk9EVUNUIE9SIFNFUlZJQ0UgVEhST1VHSCBBTlkgTUVESVVNIE9SIElOXG4gICAgICAgICAgICAgIEFOWSBFTlZJUk9OTUVOVCwgWU9VIFNIT1VMRCBVU0UgWU9VUiBCRVNUIEpVREdNRU5UIEFORCBFWEVSQ0lTRSBDQVVUSU9OXG4gICAgICAgICAgICAgIFdIRVJFIEFQUFJPUFJJQVRFLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkxJTUlUQVRJT05TIE9GIExJQUJJTElUWTwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSU4gTk8gRVZFTlQgV0lMTCBXRSBPUiBPVVIgRElSRUNUT1JTLCBFTVBMT1lFRVMsIE9SIEFHRU5UUyBCRSBMSUFCTEUgVE9cbiAgICAgICAgICAgICAgWU9VIE9SIEFOWSBUSElSRCBQQVJUWSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIENPTlNFUVVFTlRJQUwsXG4gICAgICAgICAgICAgIEVYRU1QTEFSWSwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgT1IgUFVOSVRJVkUgREFNQUdFUywgSU5DTFVESU5HIExPU1RcbiAgICAgICAgICAgICAgUFJPRklULCBMT1NUIFJFVkVOVUUsIExPU1MgT0YgREFUQSwgT1IgT1RIRVIgREFNQUdFUyBBUklTSU5HIEZST00gWU9VUlxuICAgICAgICAgICAgICBVU0UgT0YgVEhFIFNJVEUsIEVWRU4gSUYgV0UgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0hcbiAgICAgICAgICAgICAgREFNQUdFUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOT1RXSVRIU1RBTkRJTkcgQU5ZVEhJTkcgVE8gVEhFIENPTlRSQVJZIENPTlRBSU5FRCBIRVJFSU4sIE9VUiBMSUFCSUxJVFlcbiAgICAgICAgICAgICAgVE8gWU9VIEZPUiBBTlkgQ0FVU0UgV0hBVFNPRVZFUiBBTkQgUkVHQVJETEVTUyBPRiBUSEUgRk9STSBPRiBUSEVcbiAgICAgICAgICAgICAgQUNUSU9OLCBXSUxMIEFUIEFMTCBUSU1FUyBCRSBMSU1JVEVEIFRPIFRIRSBMRVNTRVIgT0YgVEhFIEFNT1VOVCBQQUlELFxuICAgICAgICAgICAgICBJRiBBTlksIEJZIFlPVSBUTyBVUyBEVVJJTkcgVEhFIDYgKFNJWCkgTU9OVEggUEVSSU9EIFBSSU9SIFRPIEFOWSBDQVVTRVxuICAgICAgICAgICAgICBPRiBBQ1RJT04gQVJJU0lORyBPUiAkMTAuMDAwIChURU4gVEhPVVNBTkQgRE9MTEFSUykuIENFUlRBSU4gU1RBVEUgTEFXU1xuICAgICAgICAgICAgICBETyBOT1QgQUxMT1cgTElNSVRBVElPTlMgT04gSU1QTElFRCBXQVJSQU5USUVTIE9SIFRIRSBFWENMVVNJT04gT1JcbiAgICAgICAgICAgICAgTElNSVRBVElPTiBPRiBDRVJUQUlOIERBTUFHRVMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSUYgVEhFU0UgTEFXUyBBUFBMWSBUTyBZT1UsIFNPTUUgT1IgQUxMIE9GIFRIRSBBQk9WRSBESVNDTEFJTUVSUyBPUlxuICAgICAgICAgICAgICBMSU1JVEFUSU9OUyBNQVkgTk9UIEFQUExZIFRPIFlPVSwgQU5EIFlPVSBNQVkgSEFWRSBBRERJVElPTkFMIFJJR0hUUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5JTkRFTU5JRklDQVRJT048L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSB0byBkZWZlbmQsIGluZGVtbmlmeSwgYW5kIGhvbGQgdXMgaGFybWxlc3MsIGluY2x1ZGluZyBvdXJcbiAgICAgICAgICAgICAgc3Vic2lkaWFyaWVzLCBhZmZpbGlhdGVzLCBhbmQgYWxsIG9mIG91ciByZXNwZWN0aXZlIG9mZmljZXJzLCBhZ2VudHMsXG4gICAgICAgICAgICAgIHBhcnRuZXJzLCBhbmQgZW1wbG95ZWVzLCBmcm9tIGFuZCBhZ2FpbnN0IGFueSBsb3NzLCBkYW1hZ2UsIGxpYWJpbGl0eSxcbiAgICAgICAgICAgICAgY2xhaW0sIG9yIGRlbWFuZCwgaW5jbHVkaW5nIHJlYXNvbmFibGUgYXR0b3JuZXlz4oCZIGZlZXMgYW5kIGV4cGVuc2VzLFxuICAgICAgICAgICAgICBtYWRlIGJ5IGFueSB0aGlyZCBwYXJ0eSBkdWUgdG8gb3IgYXJpc2luZyBvdXQgb2Y6ICgxKSB5b3VyXG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnM7ICgyKSB1c2Ugb2YgdGhlIFNpdGU7ICgzKSBicmVhY2ggb2YgdGhlc2UgVGVybXMgb2YgVXNlO1xuICAgICAgICAgICAgICAoNCkgYW55IGJyZWFjaCBvZiB5b3VyIHJlcHJlc2VudGF0aW9ucyBhbmQgd2FycmFudGllcyBzZXQgZm9ydGggaW4gdGhlc2VcbiAgICAgICAgICAgICAgVGVybXMgb2YgVXNlOyAoNSkgeW91ciB2aW9sYXRpb24gb2YgdGhlIHJpZ2h0cyBvZiBhIHRoaXJkIHBhcnR5LFxuICAgICAgICAgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHM7IG9yICg2KSBhbnlcbiAgICAgICAgICAgICAgb3ZlcnQgaGFybWZ1bCBhY3QgdG93YXJkIGFueSBvdGhlciB1c2VyIG9mIHRoZSBTaXRlIHdpdGggd2hvbSB5b3VcbiAgICAgICAgICAgICAgY29ubmVjdGVkIHZpYSB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywgd2UgcmVzZXJ2ZSB0aGUgcmlnaHQsIGF0IHlvdXIgZXhwZW5zZSwgdG9cbiAgICAgICAgICAgICAgYXNzdW1lIHRoZSBleGNsdXNpdmUgZGVmZW5zZSBhbmQgY29udHJvbCBvZiBhbnkgbWF0dGVyIGZvciB3aGljaCB5b3UgYXJlXG4gICAgICAgICAgICAgIHJlcXVpcmVkIHRvIGluZGVtbmlmeSB1cywgYW5kIHlvdSBhZ3JlZSB0byBjb29wZXJhdGUsIGF0IHlvdXIgZXhwZW5zZSxcbiAgICAgICAgICAgICAgd2l0aCBvdXIgZGVmZW5zZSBvZiBzdWNoIGNsYWltcy4gV2Ugd2lsbCB1c2UgcmVhc29uYWJsZSBlZmZvcnRzIHRvXG4gICAgICAgICAgICAgIG5vdGlmeSB5b3Ugb2YgYW55IHN1Y2ggY2xhaW0sIGFjdGlvbiwgb3IgcHJvY2VlZGluZyB3aGljaCBpcyBzdWJqZWN0IHRvXG4gICAgICAgICAgICAgIHRoaXMgaW5kZW1uaWZpY2F0aW9uIHVwb24gYmVjb21pbmcgYXdhcmUgb2YgaXQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+VVNFUiBEQVRBPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSB3aWxsIG1haW50YWluIGNlcnRhaW4gZGF0YSB0aGF0IHlvdSB0cmFuc21pdCB0byB0aGUgU2l0ZSBmb3IgdGhlXG4gICAgICAgICAgICAgIHB1cnBvc2Ugb2YgbWFuYWdpbmcgdGhlIFNpdGUsIGFzIHdlbGwgYXMgZGF0YSByZWxhdGluZyB0byB5b3VyIHVzZSBvZlxuICAgICAgICAgICAgICB0aGUgU2l0ZS4gQWx0aG91Z2ggd2UgcGVyZm9ybSByZWd1bGFyIHJvdXRpbmUgYmFja3VwcyBvZiBkYXRhLCB5b3UgYXJlXG4gICAgICAgICAgICAgIHNvbGVseSByZXNwb25zaWJsZSBmb3IgYWxsIGRhdGEgdGhhdCB5b3UgdHJhbnNtaXQgb3IgdGhhdCByZWxhdGVzIHRvIGFueVxuICAgICAgICAgICAgICBhY3Rpdml0eSB5b3UgaGF2ZSB1bmRlcnRha2VuIHVzaW5nIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSB0aGF0IHdlIHNoYWxsIGhhdmUgbm8gbGlhYmlsaXR5IHRvIHlvdSBmb3IgYW55IGxvc3Mgb3JcbiAgICAgICAgICAgICAgY29ycnVwdGlvbiBvZiBhbnkgc3VjaCBkYXRhLCBhbmQgeW91IGhlcmVieSB3YWl2ZSBhbnkgcmlnaHQgb2YgYWN0aW9uXG4gICAgICAgICAgICAgIGFnYWluc3QgdXMgYXJpc2luZyBmcm9tIGFueSBzdWNoIGxvc3Mgb3IgY29ycnVwdGlvbiBvZiBzdWNoIGRhdGEuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+RUxFQ1RST05JQyBDT01NVU5JQ0FUSU9OUywgVFJBTlNBQ1RJT05TLCBBTkQgU0lHTkFUVVJFUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVmlzaXRpbmcgdGhlIFNpdGUsIHNlbmRpbmcgdXMgZW1haWxzLCBhbmQgY29tcGxldGluZyBvbmxpbmUgZm9ybXNcbiAgICAgICAgICAgICAgY29uc3RpdHV0ZSBlbGVjdHJvbmljIGNvbW11bmljYXRpb25zLiBZb3UgY29uc2VudCB0byByZWNlaXZlIGVsZWN0cm9uaWNcbiAgICAgICAgICAgICAgY29tbXVuaWNhdGlvbnMsIGFuZCB5b3UgYWdyZWUgdGhhdCBhbGwgYWdyZWVtZW50cywgbm90aWNlcywgZGlzY2xvc3VyZXMsXG4gICAgICAgICAgICAgIGFuZCBvdGhlciBjb21tdW5pY2F0aW9ucyB3ZSBwcm92aWRlIHRvIHlvdSBlbGVjdHJvbmljYWxseSwgdmlhIGVtYWlsIGFuZFxuICAgICAgICAgICAgICBvbiB0aGUgU2l0ZSwgc2F0aXNmeSBhbnkgbGVnYWwgcmVxdWlyZW1lbnQgdGhhdCBzdWNoIGNvbW11bmljYXRpb24gYmUgaW5cbiAgICAgICAgICAgICAgd3JpdGluZy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZT1UgSEVSRUJZIEFHUkVFIFRPIFRIRSBVU0UgT0YgRUxFQ1RST05JQyBTSUdOQVRVUkVTLCBDT05UUkFDVFMsIE9SREVSUyxcbiAgICAgICAgICAgICAgQU5EIE9USEVSIFJFQ09SRFMsIEFORCBUTyBFTEVDVFJPTklDIERFTElWRVJZIE9GIE5PVElDRVMsIFBPTElDSUVTLCBBTkRcbiAgICAgICAgICAgICAgUkVDT1JEUyBPRiBUUkFOU0FDVElPTlMgSU5JVElBVEVEIE9SIENPTVBMRVRFRCBCWSBVUyBPUiBWSUEgVEhFIFNJVEUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbnkgcmlnaHRzIG9yIHJlcXVpcmVtZW50cyB1bmRlciBhbnkgc3RhdHV0ZXMsXG4gICAgICAgICAgICAgIHJlZ3VsYXRpb25zLCBydWxlcywgb3JkaW5hbmNlcywgb3Igb3RoZXIgbGF3cyBpbiBhbnkganVyaXNkaWN0aW9uIHdoaWNoXG4gICAgICAgICAgICAgIHJlcXVpcmUgYW4gb3JpZ2luYWwgc2lnbmF0dXJlIG9yIGRlbGl2ZXJ5IG9yIHJldGVudGlvbiBvZiBub24tZWxlY3Ryb25pY1xuICAgICAgICAgICAgICByZWNvcmRzLCBvciB0byBwYXltZW50cyBvciB0aGUgZ3JhbnRpbmcgb2YgY3JlZGl0cyBieSBhbnkgbWVhbnMgb3RoZXJcbiAgICAgICAgICAgICAgdGhhbiBlbGVjdHJvbmljIG1lYW5zLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDI+TUlTQ0VMTEFORU9VUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIGFuZCBhbnkgcG9saWNpZXMgb3Igb3BlcmF0aW5nIHJ1bGVzIHBvc3RlZCBieSB1cyBvblxuICAgICAgICAgICAgICB0aGUgU2l0ZSBjb25zdGl0dXRlIHRoZSBlbnRpcmUgYWdyZWVtZW50IGFuZCB1bmRlcnN0YW5kaW5nIGJldHdlZW4geW91XG4gICAgICAgICAgICAgIGFuZCB1cy4gT3VyIGZhaWx1cmUgdG8gZXhlcmNpc2Ugb3IgZW5mb3JjZSBhbnkgcmlnaHQgb3IgcHJvdmlzaW9uIG9mXG4gICAgICAgICAgICAgIHRoZXNlIFRlcm1zIG9mIFVzZSBzaGFsbCBub3Qgb3BlcmF0ZSBhcyBhIHdhaXZlciBvZiBzdWNoIHJpZ2h0IG9yXG4gICAgICAgICAgICAgIHByb3Zpc2lvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGVzZSBUZXJtcyBvZiBVc2Ugb3BlcmF0ZSB0byB0aGUgZnVsbGVzdCBleHRlbnQgcGVybWlzc2libGUgYnkgbGF3LiBXZVxuICAgICAgICAgICAgICBtYXkgYXNzaWduIGFueSBvciBhbGwgb2Ygb3VyIHJpZ2h0cyBhbmQgb2JsaWdhdGlvbnMgdG8gb3RoZXJzIGF0IGFueVxuICAgICAgICAgICAgICB0aW1lLiBXZSBzaGFsbCBub3QgYmUgcmVzcG9uc2libGUgb3IgbGlhYmxlIGZvciBhbnkgbG9zcywgZGFtYWdlLCBkZWxheSxcbiAgICAgICAgICAgICAgb3IgZmFpbHVyZSB0byBhY3QgY2F1c2VkIGJ5IGFueSBjYXVzZSBiZXlvbmQgb3VyIHJlYXNvbmFibGUgY29udHJvbC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiBhbnkgcHJvdmlzaW9uIG9yIHBhcnQgb2YgYSBwcm92aXNpb24gb2YgdGhlc2UgVGVybXMgb2YgVXNlIGlzXG4gICAgICAgICAgICAgIGRldGVybWluZWQgdG8gYmUgdW5sYXdmdWwsIHZvaWQsIG9yIHVuZW5mb3JjZWFibGUsIHRoYXQgcHJvdmlzaW9uIG9yXG4gICAgICAgICAgICAgIHBhcnQgb2YgdGhlIHByb3Zpc2lvbiBpcyBkZWVtZWQgc2V2ZXJhYmxlIGZyb20gdGhlc2UgVGVybXMgb2YgVXNlIGFuZFxuICAgICAgICAgICAgICBkb2VzIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IGFuZCBlbmZvcmNlYWJpbGl0eSBvZiBhbnkgcmVtYWluaW5nXG4gICAgICAgICAgICAgIHByb3Zpc2lvbnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gam9pbnQgdmVudHVyZSwgcGFydG5lcnNoaXAsIGVtcGxveW1lbnQgb3IgYWdlbmN5XG4gICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCBjcmVhdGVkIGJldHdlZW4geW91IGFuZCB1cyBhcyBhIHJlc3VsdCBvZiB0aGVzZSBUZXJtcyBvZlxuICAgICAgICAgICAgICBVc2Ugb3IgdXNlIG9mIHRoZSBTaXRlLiBZb3UgYWdyZWUgdGhhdCB0aGVzZSBUZXJtcyBvZiBVc2Ugd2lsbCBub3QgYmVcbiAgICAgICAgICAgICAgY29uc3RydWVkIGFnYWluc3QgdXMgYnkgdmlydHVlIG9mIGhhdmluZyBkcmFmdGVkIHRoZW0uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbnkgYW5kIGFsbCBkZWZlbnNlcyB5b3UgbWF5IGhhdmUgYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgIGVsZWN0cm9uaWMgZm9ybSBvZiB0aGVzZSBUZXJtcyBvZiBVc2UgYW5kIHRoZSBsYWNrIG9mIHNpZ25pbmcgYnkgdGhlXG4gICAgICAgICAgICAgIHBhcnRpZXMgaGVyZXRvIHRvIGV4ZWN1dGUgdGhlc2UgVGVybXMgb2YgVXNlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkNPTlRBQ1QgVVM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJlc29sdmUgYSBjb21wbGFpbnQgcmVnYXJkaW5nIHRoZSBTaXRlIG9yIHRvIHJlY2VpdmUgZnVydGhlclxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdXNlIG9mIHRoZSBTaXRlLCBwbGVhc2UgY29udGFjdCB1cyBhdDpcbiAgICAgICAgICAgICAgPGJyIC8+e3sgY29tcGFueV9uYW1lIH19LCB7eyBjb21wYW55X3N0cmVldCB9fSwge3sgY29tcGFueV9jaXR5X2NvZGUgfX1cbiAgICAgICAgICAgICAge3sgY29tcGFueV9jaXR5IH19IC0ge3sgY29tcGFueV9zdGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgzPlF1ZXN0aW9ucyBhbmQgQ29tbWVudHM8L2gzPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgYWJvdXQgdGhpcyBBZ3JlZW1lbnQsIHBsZWFzZVxuICAgICAgICAgICAgICA8YSBocmVmPVwibWFpbHRvOnt7IGNvbXBhbnlfZW1haWwgfX1cIj5sZXQgdXMga25vdzwvYT4uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48cHctbGFuZGluZy1wYWdlLWZvb3Rlci1iPjwvcHctbGFuZGluZy1wYWdlLWZvb3Rlci1iPlxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvdGVybXMtY29uZGl0aW9ucy90ZXJtcy1jb25kaXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBT2hFLE1BQU0sT0FBTyx3QkFBd0I7SUFZakMsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWL0QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBVUMsQ0FBQztJQUVuRSxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBeEJRLHdCQUF3QjttR0FBeEIsd0JBQXdCLDZGQ1RyQyw4OGxFQTh2Q0E7OzRGRHJ2Q2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLHFCQUFxQjtxRkFNL0IsUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy10ZXJtcy1jb25kaXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlcm1zQ29uZGl0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpc1B1YmxpYyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygndGVybXMtY29uZGl0aW9ucycpO1xuXG4gICAgY29tcGFueV9uYW1lOiBzdHJpbmc7XG4gICAgY29tcGFueV9udW1iZXI6IHN0cmluZztcbiAgICBjb21wYW55X3N0YXRlOiBzdHJpbmc7XG4gICAgY29tcGFueV9zdHJlZXQ6IHN0cmluZztcbiAgICBjb21wYW55X2VtYWlsOiBzdHJpbmc7XG4gICAgY29tcGFueV9jaXR5OiBzdHJpbmc7XG4gICAgY29tcGFueV9jaXR5X2NvZGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9uYW1lID0gY29uZmlnPy5bJ2NvbXBhbnknXS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5jb21wYW55X251bWJlciA9IGNvbmZpZz8uWydjb21wYW55J10ubnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5jb21wYW55X3N0YXRlID0gY29uZmlnPy5bJ2NvbXBhbnknXS5zdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9zdHJlZXQgPSBjb25maWc/LlsnY29tcGFueSddLnN0cmVldDtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9lbWFpbCA9IGNvbmZpZz8uWydjb21wYW55J10uZW1haWw7XG4gICAgICAgICAgICB0aGlzLmNvbXBhbnlfY2l0eSA9IGNvbmZpZz8uWydjb21wYW55J10uY2l0eTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFueV9jaXR5X2NvZGUgPSBjb25maWc/LlsnY29tcGFueSddLmNpdHlfY29kZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUHVibGljXCI+XG4gIDxwdy1sYW5kaW5nLXBhZ2UtaGVhZGVyIFtsYW5kaW5nXT1cImZhbHNlXCI+PC9wdy1sYW5kaW5nLXBhZ2UtaGVhZGVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXIgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5XCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ210LTUnOiBpc1B1YmxpYyB9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRlcm1zLW9mLXNlcnZpY2VcIj5cbiAgICAgICAgICAgIDxoMT5QT1NJV0lTRSBURVJNUyBBTkQgQ09ORElUSU9OUzwvaDE+XG4gICAgICAgICAgICA8cD5MYXN0IHVwZGF0ZWQgMjYvMTAvMjAxOTwvcD5cbiAgICAgICAgICAgIDxoMj5BR1JFRU1FTlQgVE8gVEVSTVM8L2gyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIGNvbnN0aXR1dGUgYSBsZWdhbGx5IGJpbmRpbmcgYWdyZWVtZW50IG1hZGUgYmV0d2VlblxuICAgICAgICAgICAgICB5b3UsIHdoZXRoZXIgcGVyc29uYWxseSBvciBvbiBiZWhhbGYgb2YgYW4gZW50aXR5ICjigJx5b3XigJ0pIGFuZFxuICAgICAgICAgICAgICB7eyBjb21wYW55X25hbWUgfX0sIHt7IGNvbXBhbnlfc3RyZWV0IH19LCB7eyBjb21wYW55X2NpdHlfY29kZSB9fVxuICAgICAgICAgICAgICB7eyBjb21wYW55X2NpdHkgfX1cbiAgICAgICAgICAgICAgLSB7eyBjb21wYW55X3N0YXRlIH19LCB7eyBjb21wYW55X251bWJlciB9fSAo4oCcd2Us4oCdIOKAnHVz4oCdIG9yIOKAnG91cuKAnSksXG4gICAgICAgICAgICAgIGNvbmNlcm5pbmcgeW91ciBhY2Nlc3MgdG8gYW5kIHVzZSBvZiB0aGUge3sgY29tcGFueV9zdGF0ZSB9fSB3ZWJzaXRlIGFzXG4gICAgICAgICAgICAgIHdlbGwgYXMgYW55IG90aGVyIG1lZGlhIGZvcm0sIG1lZGlhIGNoYW5uZWwsIG1vYmlsZSB3ZWJzaXRlIG9yIG1vYmlsZVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbiByZWxhdGVkLCBsaW5rZWQsIG9yIG90aGVyd2lzZSBjb25uZWN0ZWQgdGhlcmV0b1xuICAgICAgICAgICAgICAoY29sbGVjdGl2ZWx5LCB0aGUg4oCcU2l0ZeKAnSkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGFncmVlIHRoYXQgYnkgYWNjZXNzaW5nIHRoZSBTaXRlLCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLCBhbmRcbiAgICAgICAgICAgICAgYWdyZWUgdG8gYmUgYm91bmQgYnkgYWxsIG9mIHRoZXNlIFRlcm1zIG9mIFVzZS4gSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoXG4gICAgICAgICAgICAgIGFsbCBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIHRoZW4geW91IGFyZSBleHByZXNzbHkgcHJvaGliaXRlZCBmcm9tIHVzaW5nXG4gICAgICAgICAgICAgIHRoZSBTaXRlIGFuZCB5b3UgbXVzdCBkaXNjb250aW51ZSB1c2UgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgU3VwcGxlbWVudGFsIHRlcm1zIGFuZCBjb25kaXRpb25zIG9yIGRvY3VtZW50cyB0aGF0IG1heSBiZSBwb3N0ZWQgb24gdGhlXG4gICAgICAgICAgICAgIFNpdGUgZnJvbSB0aW1lIHRvIHRpbWUgYXJlIGhlcmVieSBleHByZXNzbHkgaW5jb3Jwb3JhdGVkIGhlcmVpbiBieVxuICAgICAgICAgICAgICByZWZlcmVuY2UuIFdlIHJlc2VydmUgdGhlIHJpZ2h0LCBpbiBvdXIgc29sZSBkaXNjcmV0aW9uLCB0byBtYWtlIGNoYW5nZXNcbiAgICAgICAgICAgICAgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGVzZSBUZXJtcyBvZiBVc2UgYXQgYW55IHRpbWUgYW5kIGZvciBhbnkgcmVhc29uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIHdpbGwgYWxlcnQgeW91IGFib3V0IGFueSBjaGFuZ2VzIGJ5IHVwZGF0aW5nIHRoZSDigJxMYXN0IHVwZGF0ZWTigJ0gZGF0ZVxuICAgICAgICAgICAgICBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIGFuZCB5b3Ugd2FpdmUgYW55IHJpZ2h0IHRvIHJlY2VpdmUgc3BlY2lmaWNcbiAgICAgICAgICAgICAgbm90aWNlIG9mIGVhY2ggc3VjaCBjaGFuZ2UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBwZXJpb2RpY2FsbHkgcmV2aWV3IHRoZXNlIFRlcm1zIG9mIFVzZSB0b1xuICAgICAgICAgICAgICBzdGF5IGluZm9ybWVkIG9mIHVwZGF0ZXMuIFlvdSB3aWxsIGJlIHN1YmplY3QgdG8sIGFuZCB3aWxsIGJlIGRlZW1lZCB0b1xuICAgICAgICAgICAgICBoYXZlIGJlZW4gbWFkZSBhd2FyZSBvZiBhbmQgdG8gaGF2ZSBhY2NlcHRlZCwgdGhlIGNoYW5nZXMgaW4gYW55IHJldmlzZWRcbiAgICAgICAgICAgICAgVGVybXMgb2YgVXNlIGJ5IHlvdXIgY29udGludWVkIHVzZSBvZiB0aGUgU2l0ZSBhZnRlciB0aGUgZGF0ZSBzdWNoXG4gICAgICAgICAgICAgIHJldmlzZWQgVGVybXMgb2YgVXNlIGFyZSBwb3N0ZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIG9uIHRoZSBTaXRlIGlzIG5vdCBpbnRlbmRlZCBmb3IgZGlzdHJpYnV0aW9uIHRvXG4gICAgICAgICAgICAgIG9yIHVzZSBieSBhbnkgcGVyc29uIG9yIGVudGl0eSBpbiBhbnkganVyaXNkaWN0aW9uIG9yIGNvdW50cnkgd2hlcmUgc3VjaFxuICAgICAgICAgICAgICBkaXN0cmlidXRpb24gb3IgdXNlIHdvdWxkIGJlIGNvbnRyYXJ5IHRvIGxhdyBvciByZWd1bGF0aW9uIG9yIHdoaWNoXG4gICAgICAgICAgICAgIHdvdWxkIHN1YmplY3QgdXMgdG8gYW55IHJlZ2lzdHJhdGlvbiByZXF1aXJlbWVudCB3aXRoaW4gc3VjaFxuICAgICAgICAgICAgICBqdXJpc2RpY3Rpb24gb3IgY291bnRyeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBY2NvcmRpbmdseSwgdGhvc2UgcGVyc29ucyB3aG8gY2hvb3NlIHRvIGFjY2VzcyB0aGUgU2l0ZSBmcm9tIG90aGVyXG4gICAgICAgICAgICAgIGxvY2F0aW9ucyBkbyBzbyBvbiB0aGVpciBvd24gaW5pdGlhdGl2ZSBhbmQgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3JcbiAgICAgICAgICAgICAgY29tcGxpYW5jZSB3aXRoIGxvY2FsIGxhd3MsIGlmIGFuZCB0byB0aGUgZXh0ZW50IGxvY2FsIGxhd3MgYXJlXG4gICAgICAgICAgICAgIGFwcGxpY2FibGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIFNpdGUgaXMgaW50ZW5kZWQgZm9yIHVzZXJzIHdobyBhcmUgYXQgbGVhc3QgMTMgeWVhcnMgb2YgYWdlLiBBbGxcbiAgICAgICAgICAgICAgdXNlcnMgd2hvIGFyZSBtaW5vcnMgaW4gdGhlIGp1cmlzZGljdGlvbiBpbiB3aGljaCB0aGV5IHJlc2lkZSAoZ2VuZXJhbGx5XG4gICAgICAgICAgICAgIHVuZGVyIHRoZSBhZ2Ugb2YgMTgpIG11c3QgaGF2ZSB0aGUgcGVybWlzc2lvbiBvZiwgYW5kIGJlIGRpcmVjdGx5XG4gICAgICAgICAgICAgIHN1cGVydmlzZWQgYnksIHRoZWlyIHBhcmVudCBvciBndWFyZGlhbiB0byB1c2UgdGhlIFNpdGUuIElmIHlvdSBhcmUgYVxuICAgICAgICAgICAgICBtaW5vciwgeW91IG11c3QgaGF2ZSB5b3VyIHBhcmVudCBvciBndWFyZGlhbiByZWFkIGFuZCBhZ3JlZSB0byB0aGVzZVxuICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UgcHJpb3IgdG8geW91IHVzaW5nIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPklOVEVMTEVDVFVBTCBQUk9QRVJUWSBSSUdIVFM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCB0aGUgU2l0ZSBpcyBvdXIgcHJvcHJpZXRhcnkgcHJvcGVydHkgYW5kIGFsbFxuICAgICAgICAgICAgICBzb3VyY2UgY29kZSwgZGF0YWJhc2VzLCBmdW5jdGlvbmFsaXR5LCBzb2Z0d2FyZSwgd2Vic2l0ZSBkZXNpZ25zLCBhdWRpbyxcbiAgICAgICAgICAgICAgdmlkZW8sIHRleHQsIHBob3RvZ3JhcGhzLCBhbmQgZ3JhcGhpY3Mgb24gdGhlIFNpdGUgKGNvbGxlY3RpdmVseSwgdGhlXG4gICAgICAgICAgICAgIOKAnENvbnRlbnTigJ0pIGFuZCB0aGUgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgYW5kIGxvZ29zIGNvbnRhaW5lZFxuICAgICAgICAgICAgICB0aGVyZWluICh0aGUg4oCcTWFya3PigJ0pIGFyZSBvd25lZCBvciBjb250cm9sbGVkIGJ5IHVzIG9yIGxpY2Vuc2VkIHRvIHVzLFxuICAgICAgICAgICAgICBhbmQgYXJlIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgYW5kIHRyYWRlbWFyayBsYXdzIGFuZCB2YXJpb3VzIG90aGVyXG4gICAgICAgICAgICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgYW5kIHVuZmFpciBjb21wZXRpdGlvbiBsYXdzIG9mIHRoZSBVbml0ZWRcbiAgICAgICAgICAgICAgU3RhdGVzLCBmb3JlaWduIGp1cmlzZGljdGlvbnMsIGFuZCBpbnRlcm5hdGlvbmFsIGNvbnZlbnRpb25zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRoZSBDb250ZW50IGFuZCB0aGUgTWFya3MgYXJlIHByb3ZpZGVkIG9uIHRoZSBTaXRlIOKAnEFTIElT4oCdIGZvciB5b3VyXG4gICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFuZCBwZXJzb25hbCB1c2Ugb25seS4gRXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCBpbiB0aGVzZVxuICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UsIG5vIHBhcnQgb2YgdGhlIFNpdGUgYW5kIG5vIENvbnRlbnQgb3IgTWFya3MgbWF5IGJlIGNvcGllZCxcbiAgICAgICAgICAgICAgcmVwcm9kdWNlZCwgYWdncmVnYXRlZCwgcmVwdWJsaXNoZWQsIHVwbG9hZGVkLCBwb3N0ZWQsIHB1YmxpY2x5XG4gICAgICAgICAgICAgIGRpc3BsYXllZCwgZW5jb2RlZCwgdHJhbnNsYXRlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBzb2xkLFxuICAgICAgICAgICAgICBsaWNlbnNlZCwgb3Igb3RoZXJ3aXNlIGV4cGxvaXRlZCBmb3IgYW55IGNvbW1lcmNpYWwgcHVycG9zZSB3aGF0c29ldmVyLFxuICAgICAgICAgICAgICB3aXRob3V0IG91ciBleHByZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBQcm92aWRlZCB0aGF0IHlvdSBhcmUgZWxpZ2libGUgdG8gdXNlIHRoZSBTaXRlLCB5b3UgYXJlIGdyYW50ZWQgYVxuICAgICAgICAgICAgICBsaW1pdGVkIGxpY2Vuc2UgdG8gYWNjZXNzIGFuZCB1c2UgdGhlIFNpdGUgYW5kIHRvIGRvd25sb2FkIG9yIHByaW50IGFcbiAgICAgICAgICAgICAgY29weSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUgQ29udGVudCB0byB3aGljaCB5b3UgaGF2ZSBwcm9wZXJseSBnYWluZWRcbiAgICAgICAgICAgICAgYWNjZXNzIHNvbGVseSBmb3IgeW91ciBwZXJzb25hbCwgbm9uLWNvbW1lcmNpYWwgdXNlLiBXZSByZXNlcnZlIGFsbFxuICAgICAgICAgICAgICByaWdodHMgbm90IGV4cHJlc3NseSBncmFudGVkIHRvIHlvdSBpbiBhbmQgdG8gdGhlIFNpdGUsIHRoZSBDb250ZW50IGFuZFxuICAgICAgICAgICAgICB0aGUgTWFya3MuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDE+VVNFUiBSRVBSRVNFTlRBVElPTlM8L2gxPlxuICAgICAgICAgICAgPHA+QnkgdXNpbmcgdGhlIFNpdGUsIHlvdSByZXByZXNlbnQgYW5kIHdhcnJhbnQgdGhhdDo8L3A+XG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgYWxsIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiB5b3Ugc3VibWl0IHdpbGwgYmUgdHJ1ZSwgYWNjdXJhdGUsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50LCBhbmQgY29tcGxldGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIG1haW50YWluIHRoZSBhY2N1cmFjeSBvZiBzdWNoIGluZm9ybWF0aW9uIGFuZCBwcm9tcHRseVxuICAgICAgICAgICAgICAgICAgdXBkYXRlIHN1Y2ggcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGFzIG5lY2Vzc2FyeS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IGhhdmUgdGhlIGxlZ2FsIGNhcGFjaXR5IGFuZCB5b3UgYWdyZWUgdG8gY29tcGx5IHdpdGggdGhlc2VcbiAgICAgICAgICAgICAgICAgIFRlcm1zIG9mIFVzZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPnlvdSBhcmUgbm90IHVuZGVyIHRoZSBhZ2Ugb2YgMTMuPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIG5vdCBhIG1pbm9yIGluIHRoZSBqdXJpc2RpY3Rpb24gaW4gd2hpY2ggeW91IHJlc2lkZSwgb3IgaWYgYVxuICAgICAgICAgICAgICAgICAgbWlub3IsIHlvdSBoYXZlIHJlY2VpdmVkIHBhcmVudGFsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBTaXRlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3Ugd2lsbCBub3QgYWNjZXNzIHRoZSBTaXRlIHRocm91Z2ggYXV0b21hdGVkIG9yIG5vbi1odW1hblxuICAgICAgICAgICAgICAgICAgbWVhbnMsIHdoZXRoZXIgdGhyb3VnaCBhIGJvdCwgc2NyaXB0LCBvciBvdGhlcndpc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIG5vdCB1c2UgdGhlIFNpdGUgZm9yIGFueSBpbGxlZ2FsIG9yIHVuYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgICAgcHVycG9zZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciB1c2Ugb2YgdGhlIFNpdGUgd2lsbCBub3QgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXcgb3JcbiAgICAgICAgICAgICAgICAgIHJlZ3VsYXRpb24uXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB5b3UgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gdGhhdCBpcyB1bnRydWUsIGluYWNjdXJhdGUsIG5vdCBjdXJyZW50LFxuICAgICAgICAgICAgICBvciBpbmNvbXBsZXRlLCB3ZSBoYXZlIHRoZSByaWdodCB0byBzdXNwZW5kIG9yIHRlcm1pbmF0ZSB5b3VyIGFjY291bnRcbiAgICAgICAgICAgICAgYW5kIHJlZnVzZSBhbnkgYW5kIGFsbCBjdXJyZW50IG9yIGZ1dHVyZSB1c2Ugb2YgdGhlIFNpdGUgKG9yIGFueSBwb3J0aW9uXG4gICAgICAgICAgICAgIHRoZXJlb2YpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlVTRVIgUkVHSVNUUkFUSU9OPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgbWF5IGJlIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIHdpdGggdGhlIFNpdGUuIFlvdSBhZ3JlZSB0byBrZWVwIHlvdXJcbiAgICAgICAgICAgICAgcGFzc3dvcmQgY29uZmlkZW50aWFsIGFuZCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBhbGwgdXNlIG9mIHlvdXJcbiAgICAgICAgICAgICAgYWNjb3VudCBhbmQgcGFzc3dvcmQuIFdlIHJlc2VydmUgdGhlIHJpZ2h0IHRvIHJlbW92ZSwgcmVjbGFpbSwgb3IgY2hhbmdlXG4gICAgICAgICAgICAgIGEgdXNlcm5hbWUgeW91IHNlbGVjdCBpZiB3ZSBkZXRlcm1pbmUsIGluIG91ciBzb2xlIGRpc2NyZXRpb24sIHRoYXQgc3VjaFxuICAgICAgICAgICAgICB1c2VybmFtZSBpcyBpbmFwcHJvcHJpYXRlLCBvYnNjZW5lLCBvciBvdGhlcndpc2Ugb2JqZWN0aW9uYWJsZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5QUk9ISUJJVEVEIEFDVElWSVRJRVM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBtYXkgbm90IGFjY2VzcyBvciB1c2UgdGhlIFNpdGUgZm9yIGFueSBwdXJwb3NlIG90aGVyIHRoYW4gdGhhdCBmb3JcbiAgICAgICAgICAgICAgd2hpY2ggd2UgbWFrZSB0aGUgU2l0ZSBhdmFpbGFibGUuIFRoZSBTaXRlIG1heSBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIHdpdGggYW55IGNvbW1lcmNpYWwgZW5kZWF2b3JzIGV4Y2VwdCB0aG9zZSB0aGF0IGFyZSBzcGVjaWZpY2FsbHlcbiAgICAgICAgICAgICAgZW5kb3JzZWQgb3IgYXBwcm92ZWQgYnkgdXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5BcyBhIHVzZXIgb2YgdGhlIFNpdGUsIHlvdSBhZ3JlZSBub3QgdG86PC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgc3lzdGVtYXRpY2FsbHkgcmV0cmlldmUgZGF0YSBvciBvdGhlciBjb250ZW50IGZyb20gdGhlIFNpdGUgdG9cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciBjb21waWxlLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBhIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwgZGF0YWJhc2UsIG9yIGRpcmVjdG9yeSB3aXRob3V0IHdyaXR0ZW4gcGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgZnJvbSB1cy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgbWFrZSBhbnkgdW5hdXRob3JpemVkIHVzZSBvZiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGNvbGxlY3RpbmdcbiAgICAgICAgICAgICAgICAgIHVzZXJuYW1lcyBhbmQvb3IgZW1haWwgYWRkcmVzc2VzIG9mIHVzZXJzIGJ5IGVsZWN0cm9uaWMgb3Igb3RoZXJcbiAgICAgICAgICAgICAgICAgIG1lYW5zIGZvciB0aGUgcHVycG9zZSBvZiBzZW5kaW5nIHVuc29saWNpdGVkIGVtYWlsLCBvciBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgdXNlciBhY2NvdW50cyBieSBhdXRvbWF0ZWQgbWVhbnMgb3IgdW5kZXIgZmFsc2UgcHJldGVuc2VzLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB1c2UgYSBidXlpbmcgYWdlbnQgb3IgcHVyY2hhc2luZyBhZ2VudCB0byBtYWtlIHB1cmNoYXNlcyBvbiB0aGVcbiAgICAgICAgICAgICAgICAgIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSB0aGUgU2l0ZSB0byBhZHZlcnRpc2Ugb3Igb2ZmZXIgdG8gc2VsbCBnb29kcyBhbmQgc2VydmljZXMuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGNpcmN1bXZlbnQsIGRpc2FibGUsIG9yIG90aGVyd2lzZSBpbnRlcmZlcmUgd2l0aFxuICAgICAgICAgICAgICAgICAgc2VjdXJpdHktcmVsYXRlZCBmZWF0dXJlcyBvZiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGZlYXR1cmVzIHRoYXRcbiAgICAgICAgICAgICAgICAgIHByZXZlbnQgb3IgcmVzdHJpY3QgdGhlIHVzZSBvciBjb3B5aW5nIG9mIGFueSBDb250ZW50IG9yIGVuZm9yY2VcbiAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zIG9uIHRoZSB1c2Ugb2YgdGhlIFNpdGUgYW5kL29yIHRoZSBDb250ZW50IGNvbnRhaW5lZFxuICAgICAgICAgICAgICAgICAgdGhlcmVpbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZW5nYWdlIGluIHVuYXV0aG9yaXplZCBmcmFtaW5nIG9mIG9yIGxpbmtpbmcgdG8gdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHRyaWNrLCBkZWZyYXVkLCBvciBtaXNsZWFkIHVzIGFuZCBvdGhlciB1c2VycywgZXNwZWNpYWxseSBpbiBhbnlcbiAgICAgICAgICAgICAgICAgIGF0dGVtcHQgdG8gbGVhcm4gc2Vuc2l0aXZlIGFjY291bnQgaW5mb3JtYXRpb24gc3VjaCBhcyB1c2VyXG4gICAgICAgICAgICAgICAgICBwYXNzd29yZHNcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgbWFrZSBpbXByb3BlciB1c2Ugb2Ygb3VyIHN1cHBvcnQgc2VydmljZXMgb3Igc3VibWl0IGZhbHNlXG4gICAgICAgICAgICAgICAgICByZXBvcnRzIG9mIGFidXNlIG9yIG1pc2NvbmR1Y3QuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGVuZ2FnZSBpbiBhbnkgYXV0b21hdGVkIHVzZSBvZiB0aGUgc3lzdGVtLCBzdWNoIGFzIHVzaW5nIHNjcmlwdHNcbiAgICAgICAgICAgICAgICAgIHRvIHNlbmQgY29tbWVudHMgb3IgbWVzc2FnZXMsIG9yIHVzaW5nIGFueSBkYXRhIG1pbmluZywgcm9ib3RzLFxuICAgICAgICAgICAgICAgICAgb3Igc2ltaWxhciBkYXRhIGdhdGhlcmluZyBhbmQgZXh0cmFjdGlvbiB0b29scy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgaW50ZXJmZXJlIHdpdGgsIGRpc3J1cHQsIG9yIGNyZWF0ZSBhbiB1bmR1ZSBidXJkZW4gb24gdGhlIFNpdGVcbiAgICAgICAgICAgICAgICAgIG9yIHRoZSBuZXR3b3JrcyBvciBzZXJ2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGF0dGVtcHQgdG8gaW1wZXJzb25hdGUgYW5vdGhlciB1c2VyIG9yIHBlcnNvbiBvciB1c2UgdGhlXG4gICAgICAgICAgICAgICAgICB1c2VybmFtZSBvZiBhbm90aGVyIHVzZXIuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5zZWxsIG9yIG90aGVyd2lzZSB0cmFuc2ZlciB5b3VyIHByb2ZpbGUuPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSBhbnkgaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGUgU2l0ZSBpbiBvcmRlciB0byBoYXJhc3MsXG4gICAgICAgICAgICAgICAgICBhYnVzZSwgb3IgaGFybSBhbm90aGVyIHBlcnNvbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgdXNlIHRoZSBTaXRlIGFzIHBhcnQgb2YgYW55IGVmZm9ydCB0byBjb21wZXRlIHdpdGggdXMgb3JcbiAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSB1c2UgdGhlIFNpdGUgYW5kL29yIHRoZSBDb250ZW50IGZvciBhbnlcbiAgICAgICAgICAgICAgICAgIHJldmVudWUtZ2VuZXJhdGluZyBlbmRlYXZvciBvciBjb21tZXJjaWFsIGVudGVycHJpc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGRlY2lwaGVyLCBkZWNvbXBpbGUsIGRpc2Fzc2VtYmxlLCBvciByZXZlcnNlIGVuZ2luZWVyIGFueSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGNvbXByaXNpbmcgb3IgaW4gYW55IHdheSBtYWtpbmcgdXAgYSBwYXJ0IG9mIHRoZSBTaXRlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICBhdHRlbXB0IHRvIGJ5cGFzcyBhbnkgbWVhc3VyZXMgb2YgdGhlIFNpdGUgZGVzaWduZWQgdG8gcHJldmVudFxuICAgICAgICAgICAgICAgICAgb3IgcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBTaXRlLCBvciBhbnkgcG9ydGlvbiBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgaGFyYXNzLCBhbm5veSwgaW50aW1pZGF0ZSwgb3IgdGhyZWF0ZW4gYW55IG9mIG91ciBlbXBsb3llZXMgb3JcbiAgICAgICAgICAgICAgICAgIGFnZW50cyBlbmdhZ2VkIGluIHByb3ZpZGluZyBhbnkgcG9ydGlvbiBvZiB0aGUgU2l0ZSB0byB5b3UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGUgY29weXJpZ2h0IG9yIG90aGVyIHByb3ByaWV0YXJ5IHJpZ2h0cyBub3RpY2UgZnJvbSBhbnlcbiAgICAgICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIGNvcHkgb3IgYWRhcHQgdGhlIFNpdGXigJlzIHNvZnR3YXJlLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvXG4gICAgICAgICAgICAgICAgICBGbGFzaCwgUEhQLCBIVE1MLCBKYXZhU2NyaXB0LCBvciBvdGhlciBjb2RlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB1cGxvYWQgb3IgdHJhbnNtaXQgKG9yIGF0dGVtcHQgdG8gdXBsb2FkIG9yIHRvIHRyYW5zbWl0KVxuICAgICAgICAgICAgICAgICAgdmlydXNlcywgVHJvamFuIGhvcnNlcywgb3Igb3RoZXIgbWF0ZXJpYWwsIGluY2x1ZGluZyBleGNlc3NpdmVcbiAgICAgICAgICAgICAgICAgIHVzZSBvZiBjYXBpdGFsIGxldHRlcnMgYW5kIHNwYW1taW5nIChjb250aW51b3VzIHBvc3Rpbmcgb2ZcbiAgICAgICAgICAgICAgICAgIHJlcGV0aXRpdmUgdGV4dCksIHRoYXQgaW50ZXJmZXJlcyB3aXRoIGFueSBwYXJ0eeKAmXMgdW5pbnRlcnJ1cHRlZFxuICAgICAgICAgICAgICAgICAgdXNlIGFuZCBlbmpveW1lbnQgb2YgdGhlIFNpdGUgb3IgbW9kaWZpZXMsIGltcGFpcnMsIGRpc3J1cHRzLFxuICAgICAgICAgICAgICAgICAgYWx0ZXJzLCBvciBpbnRlcmZlcmVzIHdpdGggdGhlIHVzZSwgZmVhdHVyZXMsIGZ1bmN0aW9ucyxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiwgb3IgbWFpbnRlbmFuY2Ugb2YgdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVwbG9hZCBvciB0cmFuc21pdCAob3IgYXR0ZW1wdCB0byB1cGxvYWQgb3IgdG8gdHJhbnNtaXQpIGFueVxuICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwgdGhhdCBhY3RzIGFzIGEgcGFzc2l2ZSBvciBhY3RpdmUgaW5mb3JtYXRpb24gY29sbGVjdGlvblxuICAgICAgICAgICAgICAgICAgb3IgdHJhbnNtaXNzaW9uIG1lY2hhbmlzbSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgY2xlYXJcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNzIGludGVyY2hhbmdlIGZvcm1hdHMgKOKAnGdpZnPigJ0pLCAxw5cxIHBpeGVscywgd2ViIGJ1Z3MsXG4gICAgICAgICAgICAgICAgICBjb29raWVzLCBvciBvdGhlciBzaW1pbGFyIGRldmljZXMgKHNvbWV0aW1lcyByZWZlcnJlZCB0byBhc1xuICAgICAgICAgICAgICAgICAg4oCcc3B5d2FyZeKAnSBvciDigJxwYXNzaXZlIGNvbGxlY3Rpb24gbWVjaGFuaXNtc+KAnSBvciDigJxwY21z4oCdKS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZXhjZXB0IGFzIG1heSBiZSB0aGUgcmVzdWx0IG9mIHN0YW5kYXJkIHNlYXJjaCBlbmdpbmUgb3JcbiAgICAgICAgICAgICAgICAgIEludGVybmV0IGJyb3dzZXIgdXNhZ2UsIHVzZSwgbGF1bmNoLCBkZXZlbG9wLCBvciBkaXN0cmlidXRlIGFueVxuICAgICAgICAgICAgICAgICAgYXV0b21hdGVkIHN5c3RlbSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHNwaWRlcixcbiAgICAgICAgICAgICAgICAgIHJvYm90LCBjaGVhdCB1dGlsaXR5LCBzY3JhcGVyLCBvciBvZmZsaW5lIHJlYWRlciB0aGF0IGFjY2Vzc2VzXG4gICAgICAgICAgICAgICAgICB0aGUgU2l0ZSwgb3IgdXNpbmcgb3IgbGF1bmNoaW5nIGFueSB1bmF1dGhvcml6ZWQgc2NyaXB0IG9yIG90aGVyXG4gICAgICAgICAgICAgICAgICBzb2Z0d2FyZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgZGlzcGFyYWdlLCB0YXJuaXNoLCBvciBvdGhlcndpc2UgaGFybSwgaW4gb3VyIG9waW5pb24sIHVzIGFuZC9vclxuICAgICAgICAgICAgICAgICAgdGhlIFNpdGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHVzZSB0aGUgU2l0ZSBpbiBhIG1hbm5lciBpbmNvbnNpc3RlbnQgd2l0aCBhbnkgYXBwbGljYWJsZSBsYXdzXG4gICAgICAgICAgICAgICAgICBvciByZWd1bGF0aW9ucy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuXG4gICAgICAgICAgICA8aDI+VVNFUiBHRU5FUkFURUQgQ09OVFJJQlVUSU9OUzwvaDI+XG5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGUgU2l0ZSBtYXkgaW52aXRlIHlvdSB0byBjaGF0LCBjb250cmlidXRlIHRvLCBvciBwYXJ0aWNpcGF0ZSBpbiBibG9ncyxcbiAgICAgICAgICAgICAgbWVzc2FnZSBib2FyZHMsIG9ubGluZSBmb3J1bXMsIGFuZCBvdGhlciBmdW5jdGlvbmFsaXR5LCBhbmQgbWF5IHByb3ZpZGVcbiAgICAgICAgICAgICAgeW91IHdpdGggdGhlIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSwgc3VibWl0LCBwb3N0LCBkaXNwbGF5LCB0cmFuc21pdCxcbiAgICAgICAgICAgICAgcGVyZm9ybSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgb3IgYnJvYWRjYXN0IGNvbnRlbnQgYW5kIG1hdGVyaWFscyB0byB1c1xuICAgICAgICAgICAgICBvciBvbiB0aGUgU2l0ZSwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0ZXh0LCB3cml0aW5ncywgdmlkZW8sXG4gICAgICAgICAgICAgIGF1ZGlvLCBwaG90b2dyYXBocywgZ3JhcGhpY3MsIGNvbW1lbnRzLCBzdWdnZXN0aW9ucywgb3IgcGVyc29uYWxcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb3Igb3RoZXIgbWF0ZXJpYWwgKGNvbGxlY3RpdmVseSwgXCJDb250cmlidXRpb25zXCIpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgbWF5IGJlIHZpZXdhYmxlIGJ5IG90aGVyIHVzZXJzIG9mIHRoZSBTaXRlIGFuZCB0aHJvdWdoXG4gICAgICAgICAgICAgIHRoaXJkLXBhcnR5IHdlYnNpdGVzLiBBcyBzdWNoLCBhbnkgQ29udHJpYnV0aW9ucyB5b3UgdHJhbnNtaXQgbWF5IGJlXG4gICAgICAgICAgICAgIHRyZWF0ZWQgYXMgbm9uLWNvbmZpZGVudGlhbCBhbmQgbm9uLXByb3ByaWV0YXJ5LiBXaGVuIHlvdSBjcmVhdGUgb3IgbWFrZVxuICAgICAgICAgICAgICBhdmFpbGFibGUgYW55IENvbnRyaWJ1dGlvbnMsIHlvdSB0aGVyZWJ5IHJlcHJlc2VudCBhbmQgd2FycmFudCB0aGF0OlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgdGhlIGNyZWF0aW9uLCBkaXN0cmlidXRpb24sIHRyYW5zbWlzc2lvbiwgcHVibGljIGRpc3BsYXksIG9yXG4gICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSwgYW5kIHRoZSBhY2Nlc3NpbmcsIGRvd25sb2FkaW5nLCBvciBjb3B5aW5nIG9mIHlvdXJcbiAgICAgICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgZG8gbm90IGFuZCB3aWxsIG5vdCBpbmZyaW5nZSB0aGUgcHJvcHJpZXRhcnlcbiAgICAgICAgICAgICAgICAgIHJpZ2h0cywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgY29weXJpZ2h0LCBwYXRlbnQsXG4gICAgICAgICAgICAgICAgICB0cmFkZW1hcmssIHRyYWRlIHNlY3JldCwgb3IgbW9yYWwgcmlnaHRzIG9mIGFueSB0aGlyZCBwYXJ0eS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IGFyZSB0aGUgY3JlYXRvciBhbmQgb3duZXIgb2Ygb3IgaGF2ZSB0aGUgbmVjZXNzYXJ5IGxpY2Vuc2VzLFxuICAgICAgICAgICAgICAgICAgcmlnaHRzLCBjb25zZW50cywgcmVsZWFzZXMsIGFuZCBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRvXG4gICAgICAgICAgICAgICAgICBhdXRob3JpemUgdXMsIHRoZSBTaXRlLCBhbmQgb3RoZXIgdXNlcnMgb2YgdGhlIFNpdGUgdG8gdXNlIHlvdXJcbiAgICAgICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgaW4gYW55IG1hbm5lciBjb250ZW1wbGF0ZWQgYnkgdGhlIFNpdGUgYW5kIHRoZXNlXG4gICAgICAgICAgICAgICAgICBUZXJtcyBvZiBVc2UuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIHRoZSB3cml0dGVuIGNvbnNlbnQsIHJlbGVhc2UsIGFuZC9vciBwZXJtaXNzaW9uIG9mIGVhY2hcbiAgICAgICAgICAgICAgICAgIGFuZCBldmVyeSBpZGVudGlmaWFibGUgaW5kaXZpZHVhbCBwZXJzb24gaW4geW91ciBDb250cmlidXRpb25zXG4gICAgICAgICAgICAgICAgICB0byB1c2UgdGhlIG5hbWUgb3IgbGlrZW5lc3Mgb2YgZWFjaCBhbmQgZXZlcnkgc3VjaCBpZGVudGlmaWFibGVcbiAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgcGVyc29uIHRvIGVuYWJsZSBpbmNsdXNpb24gYW5kIHVzZSBvZiB5b3VyXG4gICAgICAgICAgICAgICAgICBDb250cmlidXRpb25zIGluIGFueSBtYW5uZXIgY29udGVtcGxhdGVkIGJ5IHRoZSBTaXRlIGFuZCB0aGVzZVxuICAgICAgICAgICAgICAgICAgVGVybXMgb2YgVXNlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgYXJlIG5vdCBmYWxzZSwgaW5hY2N1cmF0ZSwgb3IgbWlzbGVhZGluZy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGFyZSBub3QgdW5zb2xpY2l0ZWQgb3IgdW5hdXRob3JpemVkXG4gICAgICAgICAgICAgICAgICBhZHZlcnRpc2luZywgcHJvbW90aW9uYWwgbWF0ZXJpYWxzLCBweXJhbWlkIHNjaGVtZXMsIGNoYWluXG4gICAgICAgICAgICAgICAgICBsZXR0ZXJzLCBzcGFtLCBtYXNzIG1haWxpbmdzLCBvciBvdGhlciBmb3JtcyBvZiBzb2xpY2l0YXRpb24uXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBhcmUgbm90IG9ic2NlbmUsIGxld2QsIGxhc2NpdmlvdXMsIGZpbHRoeSxcbiAgICAgICAgICAgICAgICAgIHZpb2xlbnQsIGhhcmFzc2luZywgbGliZWxvdXMsIHNsYW5kZXJvdXMsIG9yIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgICAgb2JqZWN0aW9uYWJsZSAoYXMgZGV0ZXJtaW5lZCBieSB1cykuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBkbyBub3QgcmlkaWN1bGUsIG1vY2ssIGRpc3BhcmFnZSwgaW50aW1pZGF0ZSxcbiAgICAgICAgICAgICAgICAgIG9yIGFidXNlIGFueW9uZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBhZHZvY2F0ZSB0aGUgdmlvbGVudCBvdmVydGhyb3cgb2YgYW55XG4gICAgICAgICAgICAgICAgICBnb3Zlcm5tZW50IG9yIGluY2l0ZSwgZW5jb3VyYWdlLCBvciB0aHJlYXRlbiBwaHlzaWNhbCBoYXJtXG4gICAgICAgICAgICAgICAgICBhZ2FpbnN0IGFub3RoZXIuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgQ29udHJpYnV0aW9ucyBkbyBub3QgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXcsXG4gICAgICAgICAgICAgICAgICByZWd1bGF0aW9uLCBvciBydWxlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IHZpb2xhdGUgdGhlIHByaXZhY3kgb3IgcHVibGljaXR5XG4gICAgICAgICAgICAgICAgICByaWdodHMgb2YgYW55IHRoaXJkIHBhcnR5LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IGNvbnRhaW4gYW55IG1hdGVyaWFsIHRoYXQgc29saWNpdHNcbiAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20gYW55b25lIHVuZGVyIHRoZSBhZ2Ugb2YgMTggb3IgZXhwbG9pdHNcbiAgICAgICAgICAgICAgICAgIHBlb3BsZSB1bmRlciB0aGUgYWdlIG9mIDE4IGluIGEgc2V4dWFsIG9yIHZpb2xlbnQgbWFubmVyLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIENvbnRyaWJ1dGlvbnMgZG8gbm90IHZpb2xhdGUgYW55IGZlZGVyYWwgb3Igc3RhdGUgbGF3XG4gICAgICAgICAgICAgICAgICBjb25jZXJuaW5nIGNoaWxkIHBvcm5vZ3JhcGh5LCBvciBvdGhlcndpc2UgaW50ZW5kZWQgdG8gcHJvdGVjdFxuICAgICAgICAgICAgICAgICAgdGhlIGhlYWx0aCBvciB3ZWxsLWJlaW5nIG9mIG1pbm9ycy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFueSBvZmZlbnNpdmUgY29tbWVudHMgdGhhdFxuICAgICAgICAgICAgICAgICAgYXJlIGNvbm5lY3RlZCB0byByYWNlLCBuYXRpb25hbCBvcmlnaW4sIGdlbmRlciwgc2V4dWFsXG4gICAgICAgICAgICAgICAgICBwcmVmZXJlbmNlLCBvciBwaHlzaWNhbCBoYW5kaWNhcC5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciBDb250cmlidXRpb25zIGRvIG5vdCBvdGhlcndpc2UgdmlvbGF0ZSwgb3IgbGluayB0byBtYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgdGhhdCB2aW9sYXRlcywgYW55IHByb3Zpc2lvbiBvZiB0aGVzZSBUZXJtcyBvZiBVc2UsIG9yIGFueVxuICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXcgb3IgcmVndWxhdGlvbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFueSB1c2Ugb2YgdGhlIFNpdGUgaW4gdmlvbGF0aW9uIG9mIHRoZSBmb3JlZ29pbmcgdmlvbGF0ZXMgdGhlc2UgVGVybXNcbiAgICAgICAgICAgICAgb2YgVXNlIGFuZCBtYXkgcmVzdWx0IGluLCBhbW9uZyBvdGhlciB0aGluZ3MsIHRlcm1pbmF0aW9uIG9yIHN1c3BlbnNpb25cbiAgICAgICAgICAgICAgb2YgeW91ciByaWdodHMgdG8gdXNlIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDI+Q09OVFJJQlVUSU9OIExJQ0VOU0U8L2gyPlxuXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQnkgcG9zdGluZyB5b3VyIENvbnRyaWJ1dGlvbnMgdG8gYW55IHBhcnQgb2YgdGhlIFNpdGUsIG9yIG1ha2luZ1xuICAgICAgICAgICAgICBDb250cmlidXRpb25zIGFjY2Vzc2libGUgdG8gdGhlIFNpdGUgYnkgbGlua2luZyB5b3VyIGFjY291bnQgZnJvbSB0aGVcbiAgICAgICAgICAgICAgU2l0ZSB0byBhbnkgb2YgeW91ciBzb2NpYWwgbmV0d29ya2luZyBhY2NvdW50cywgeW91IGF1dG9tYXRpY2FsbHkgZ3JhbnQsXG4gICAgICAgICAgICAgIGFuZCB5b3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIGdyYW50LCB0byB1cyBhblxuICAgICAgICAgICAgICB1bnJlc3RyaWN0ZWQsIHVubGltaXRlZCwgaXJyZXZvY2FibGUsIHBlcnBldHVhbCwgbm9uLWV4Y2x1c2l2ZSxcbiAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlLCByb3lhbHR5LWZyZWUsIGZ1bGx5LXBhaWQsIHdvcmxkd2lkZSByaWdodCwgYW5kIGxpY2Vuc2UgdG9cbiAgICAgICAgICAgICAgaG9zdCwgdXNlLCBjb3B5LCByZXByb2R1Y2UsIGRpc2Nsb3NlLCBzZWxsLCByZXNlbGwsIHB1Ymxpc2gsIGJyb2FkY2FzdCxcbiAgICAgICAgICAgICAgcmUgdGl0bGUsIGFyY2hpdmUsIHN0b3JlLCBjYWNoZSwgcHVibGljbHkgcGVyZm9ybSwgcHVibGljbHkgZGlzcGxheSxcbiAgICAgICAgICAgICAgcmVmb3JtYXQsIHRyYW5zbGF0ZSwgdHJhbnNtaXQsIGV4Y2VycHQgKGluIHdob2xlIG9yIGluIHBhcnQpLCBhbmRcbiAgICAgICAgICAgICAgZGlzdHJpYnV0ZSBzdWNoIENvbnRyaWJ1dGlvbnMgKGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB5b3VyIGltYWdlXG4gICAgICAgICAgICAgIGFuZCB2b2ljZSkgZm9yIGFueSBwdXJwb3NlLCBjb21tZXJjaWFsLCBhZHZlcnRpc2luZywgb3Igb3RoZXJ3aXNlLCBhbmRcbiAgICAgICAgICAgICAgdG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBvciBpbmNvcnBvcmF0ZSBpbnRvIG90aGVyIHdvcmtzLCBzdWNoXG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMsIGFuZCBncmFudCBhbmQgYXV0aG9yaXplIHN1YmxpY2Vuc2Ugb2YgdGhlIGZvcmVnb2luZy4gVGhlXG4gICAgICAgICAgICAgIHVzZSBhbmQgZGlzdHJpYnV0aW9uIG1heSBvY2N1ciBpbiBhbnkgbWVkaWEgZm9ybWF0cyBhbmQgdGhyb3VnaCBhbnlcbiAgICAgICAgICAgICAgbWVkaWEgY2hhbm5lbHMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhpcyBsaWNlbnNlIHdpbGwgYXBwbHkgdG8gYW55IGZvcm0sIG1lZGlhLCBvciB0ZWNobm9sb2d5IG5vdyBrbm93biBvclxuICAgICAgICAgICAgICBoZXJlYWZ0ZXIgZGV2ZWxvcGVkLCBhbmQgaW5jbHVkZXMgb3VyIHVzZSBvZiB5b3VyIG5hbWUsIGNvbXBhbnkgbmFtZSxcbiAgICAgICAgICAgICAgYW5kIGZyYW5jaGlzZSBuYW1lLCBhcyBhcHBsaWNhYmxlLCBhbmQgYW55IG9mIHRoZSB0cmFkZW1hcmtzLCBzZXJ2aWNlXG4gICAgICAgICAgICAgIG1hcmtzLCB0cmFkZSBuYW1lcywgbG9nb3MsIGFuZCBwZXJzb25hbCBhbmQgY29tbWVyY2lhbCBpbWFnZXMgeW91XG4gICAgICAgICAgICAgIHByb3ZpZGUuIFlvdSB3YWl2ZSBhbGwgbW9yYWwgcmlnaHRzIGluIHlvdXIgQ29udHJpYnV0aW9ucywgYW5kIHlvdVxuICAgICAgICAgICAgICB3YXJyYW50IHRoYXQgbW9yYWwgcmlnaHRzIGhhdmUgbm90IG90aGVyd2lzZSBiZWVuIGFzc2VydGVkIGluIHlvdXJcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBkbyBub3QgYXNzZXJ0IGFueSBvd25lcnNoaXAgb3ZlciB5b3VyIENvbnRyaWJ1dGlvbnMuIFlvdSByZXRhaW4gZnVsbFxuICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgYWxsIG9mIHlvdXIgQ29udHJpYnV0aW9ucyBhbmQgYW55IGludGVsbGVjdHVhbCBwcm9wZXJ0eVxuICAgICAgICAgICAgICByaWdodHMgb3Igb3RoZXIgcHJvcHJpZXRhcnkgcmlnaHRzIGFzc29jaWF0ZWQgd2l0aCB5b3VyIENvbnRyaWJ1dGlvbnMuXG4gICAgICAgICAgICAgIFdlIGFyZSBub3QgbGlhYmxlIGZvciBhbnkgc3RhdGVtZW50cyBvciByZXByZXNlbnRhdGlvbnMgaW4geW91clxuICAgICAgICAgICAgICBDb250cmlidXRpb25zIHByb3ZpZGVkIGJ5IHlvdSBpbiBhbnkgYXJlYSBvbiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgeW91ciBDb250cmlidXRpb25zIHRvIHRoZSBTaXRlIGFuZCB5b3VcbiAgICAgICAgICAgICAgZXhwcmVzc2x5IGFncmVlIHRvIGV4b25lcmF0ZSB1cyBmcm9tIGFueSBhbmQgYWxsIHJlc3BvbnNpYmlsaXR5IGFuZCB0b1xuICAgICAgICAgICAgICByZWZyYWluIGZyb20gYW55IGxlZ2FsIGFjdGlvbiBhZ2FpbnN0IHVzIHJlZ2FyZGluZyB5b3VyIENvbnRyaWJ1dGlvbnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgaGF2ZSB0aGUgcmlnaHQsIGluIG91ciBzb2xlIGFuZCBhYnNvbHV0ZSBkaXNjcmV0aW9uLCAoMSkgdG8gZWRpdCxcbiAgICAgICAgICAgICAgcmVkYWN0LCBvciBvdGhlcndpc2UgY2hhbmdlIGFueSBDb250cmlidXRpb25zOyAoMikgdG8gcmUtY2F0ZWdvcml6ZSBhbnlcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucyB0byBwbGFjZSB0aGVtIGluIG1vcmUgYXBwcm9wcmlhdGUgbG9jYXRpb25zIG9uIHRoZSBTaXRlO1xuICAgICAgICAgICAgICBhbmQgKDMpIHRvIHByZS1zY3JlZW4gb3IgZGVsZXRlIGFueSBDb250cmlidXRpb25zIGF0IGFueSB0aW1lIGFuZCBmb3JcbiAgICAgICAgICAgICAgYW55IHJlYXNvbiwgd2l0aG91dCBub3RpY2UuIFdlIGhhdmUgbm8gb2JsaWdhdGlvbiB0byBtb25pdG9yIHlvdXJcbiAgICAgICAgICAgICAgQ29udHJpYnV0aW9ucy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5HVUlERUxJTkVTIEZPUiBSRVZJRVdTPC9oMj5cbiAgICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICBXZSBtYXkgcHJvdmlkZSB5b3UgYXJlYXMgb24gdGhlIFNpdGUgdG8gbGVhdmUgcmV2aWV3cyBvclxuICAgICAgICAgICAgICAgICAgcmF0aW5ncy4gV2hlbiBwb3N0aW5nIGEgcmV2aWV3LCB5b3UgbXVzdCBjb21wbHkgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjcml0ZXJpYTpcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IHNob3VsZCBoYXZlIGZpcnN0aGFuZCBleHBlcmllbmNlIHdpdGggdGhlIHBlcnNvbi9lbnRpdHlcbiAgICAgICAgICAgICAgICAgIGJlaW5nIHJldmlld2VkLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3VyIHJldmlld3Mgc2hvdWxkIG5vdCBjb250YWluIG9mZmVuc2l2ZSBwcm9mYW5pdHksIG9yIGFidXNpdmUsXG4gICAgICAgICAgICAgICAgICByYWNpc3QsIG9mZmVuc2l2ZSwgb3IgaGF0ZSBsYW5ndWFnZS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91ciByZXZpZXdzIHNob3VsZCBub3QgY29udGFpbiBkaXNjcmltaW5hdG9yeSByZWZlcmVuY2VzIGJhc2VkXG4gICAgICAgICAgICAgICAgICBvbiByZWxpZ2lvbiwgcmFjZSwgZ2VuZGVyLCBuYXRpb25hbCBvcmlnaW4sIGFnZSwgbWFyaXRhbCBzdGF0dXMsXG4gICAgICAgICAgICAgICAgICBzZXh1YWwgb3JpZW50YXRpb24sIG9yIGRpc2FiaWxpdHkuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdXIgcmV2aWV3cyBzaG91bGQgbm90IGNvbnRhaW4gcmVmZXJlbmNlcyB0byBpbGxlZ2FsIGFjdGl2aXR5LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIG5vdCBiZSBhZmZpbGlhdGVkIHdpdGggY29tcGV0aXRvcnMgaWYgcG9zdGluZ1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgcmV2aWV3cy5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgeW91IHNob3VsZCBub3QgbWFrZSBhbnkgY29uY2x1c2lvbnMgYXMgdG8gdGhlIGxlZ2FsaXR5IG9mXG4gICAgICAgICAgICAgICAgICBjb25kdWN0LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICAgICAgICAgICAgICB5b3UgbWF5IG5vdCBwb3N0IGFueSBmYWxzZSBvciBtaXNsZWFkaW5nIHN0YXRlbWVudHMuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgICAgIHlvdSBtYXkgbm90IG9yZ2FuaXplIGEgY2FtcGFpZ24gZW5jb3VyYWdpbmcgb3RoZXJzIHRvIHBvc3RcbiAgICAgICAgICAgICAgICAgIHJldmlld3MsIHdoZXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBtYXkgYWNjZXB0LCByZWplY3QsIG9yIHJlbW92ZSByZXZpZXdzIGluIG91ciBzb2xlIGRpc2NyZXRpb24uIFdlIGhhdmVcbiAgICAgICAgICAgICAgYWJzb2x1dGVseSBubyBvYmxpZ2F0aW9uIHRvIHNjcmVlbiByZXZpZXdzIG9yIHRvIGRlbGV0ZSByZXZpZXdzLCBldmVuIGlmXG4gICAgICAgICAgICAgIGFueW9uZSBjb25zaWRlcnMgcmV2aWV3cyBvYmplY3Rpb25hYmxlIG9yIGluYWNjdXJhdGUuIFJldmlld3MgYXJlIG5vdFxuICAgICAgICAgICAgICBlbmRvcnNlZCBieSB1cywgYW5kIGRvIG5vdCBuZWNlc3NhcmlseSByZXByZXNlbnQgb3VyIG9waW5pb25zIG9yIHRoZVxuICAgICAgICAgICAgICB2aWV3cyBvZiBhbnkgb2Ygb3VyIGFmZmlsaWF0ZXMgb3IgcGFydG5lcnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgZG8gbm90IGFzc3VtZSBsaWFiaWxpdHkgZm9yIGFueSByZXZpZXcgb3IgZm9yIGFueSBjbGFpbXMsXG4gICAgICAgICAgICAgIGxpYWJpbGl0aWVzLCBvciBsb3NzZXMgcmVzdWx0aW5nIGZyb20gYW55IHJldmlldy4gQnkgcG9zdGluZyBhIHJldmlldyxcbiAgICAgICAgICAgICAgeW91IGhlcmVieSBncmFudCB0byB1cyBhIHBlcnBldHVhbCwgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLFxuICAgICAgICAgICAgICByb3lhbHR5LWZyZWUsIGZ1bGx5LXBhaWQsIGFzc2lnbmFibGUsIGFuZCBzdWItbGljZW5zYWJsZSByaWdodCBhbmRcbiAgICAgICAgICAgICAgbGljZW5zZSB0byByZXByb2R1Y2UsIG1vZGlmeSwgdHJhbnNsYXRlLCB0cmFuc21pdCBieSBhbnkgbWVhbnMsIGRpc3BsYXksXG4gICAgICAgICAgICAgIHBlcmZvcm0sIGFuZC9vciBkaXN0cmlidXRlIGFsbCBjb250ZW50IHJlbGF0aW5nIHRvIHJldmlld3MuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+TU9CSUxFIEFQUExJQ0FUSU9OIExJQ0VOU0U8L2gyPlxuICAgICAgICAgICAgPGgzPlVzZSBMaWNlbnNlPC9oMz5cblxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBhY2Nlc3MgdGhlIFNpdGUgdmlhIGEgbW9iaWxlIGFwcGxpY2F0aW9uLCB0aGVuIHdlIGdyYW50IHlvdSBhXG4gICAgICAgICAgICAgIHJldm9jYWJsZSwgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSwgbGltaXRlZCByaWdodCB0byBpbnN0YWxsIGFuZFxuICAgICAgICAgICAgICB1c2UgdGhlIG1vYmlsZSBhcHBsaWNhdGlvbiBvbiB3aXJlbGVzcyBlbGVjdHJvbmljIGRldmljZXMgb3duZWQgb3JcbiAgICAgICAgICAgICAgY29udHJvbGxlZCBieSB5b3UsIGFuZCB0byBhY2Nlc3MgYW5kIHVzZSB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uIG9uIHN1Y2hcbiAgICAgICAgICAgICAgZGV2aWNlcyBzdHJpY3RseSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXNcbiAgICAgICAgICAgICAgbW9iaWxlIGFwcGxpY2F0aW9uIGxpY2Vuc2UgY29udGFpbmVkIGluIHRoZXNlIFRlcm1zIG9mIFVzZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlVzZSBMaWNlbnNlPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSBkZWNvbXBpbGUsIHJldmVyc2UgZW5naW5lZXIsIGRpc2Fzc2VtYmxlLCBhdHRlbXB0IHRvIGRlcml2ZSB0aGVcbiAgICAgICAgICAgICAgc291cmNlIGNvZGUgb2YsIG9yIGRlY3J5cHQgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgyKSBtYWtlIGFueSBtb2RpZmljYXRpb24sIGFkYXB0YXRpb24sIGltcHJvdmVtZW50LCBlbmhhbmNlbWVudCxcbiAgICAgICAgICAgICAgdHJhbnNsYXRpb24sIG9yIGRlcml2YXRpdmUgd29yayBmcm9tIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMykgdmlvbGF0ZSBhbnkgYXBwbGljYWJsZSBsYXdzLCBydWxlcywgb3IgcmVndWxhdGlvbnMgaW4gY29ubmVjdGlvblxuICAgICAgICAgICAgICB3aXRoIHlvdXIgYWNjZXNzIG9yIHVzZSBvZiB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDQpIHJlbW92ZSwgYWx0ZXIsIG9yIG9ic2N1cmUgYW55IHByb3ByaWV0YXJ5IG5vdGljZSAoaW5jbHVkaW5nIGFueVxuICAgICAgICAgICAgICBub3RpY2Ugb2YgY29weXJpZ2h0IG9yIHRyYWRlbWFyaykgcG9zdGVkIGJ5IHVzIG9yIHRoZSBsaWNlbnNvcnMgb2YgdGhlXG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg1KSB1c2UgdGhlIGFwcGxpY2F0aW9uIGZvciBhbnkgcmV2ZW51ZSBnZW5lcmF0aW5nIGVuZGVhdm9yLCBjb21tZXJjaWFsXG4gICAgICAgICAgICAgIGVudGVycHJpc2UsIG9yIG90aGVyIHB1cnBvc2UgZm9yIHdoaWNoIGl0IGlzIG5vdCBkZXNpZ25lZCBvciBpbnRlbmRlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNikgbWFrZSB0aGUgYXBwbGljYXRpb24gYXZhaWxhYmxlIG92ZXIgYSBuZXR3b3JrIG9yIG90aGVyIGVudmlyb25tZW50XG4gICAgICAgICAgICAgIHBlcm1pdHRpbmcgYWNjZXNzIG9yIHVzZSBieSBtdWx0aXBsZSBkZXZpY2VzIG9yIHVzZXJzIGF0IHRoZSBzYW1lIC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNykgdXNlIHRoZSBhcHBsaWNhdGlvbiBmb3IgY3JlYXRpbmcgYSBwcm9kdWN0LCBzZXJ2aWNlLCBvciBzb2Z0d2FyZVxuICAgICAgICAgICAgICB0aGF0IGlzLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBjb21wZXRpdGl2ZSB3aXRoIG9yIGluIGFueSB3YXkgYVxuICAgICAgICAgICAgICBzdWJzdGl0dXRlIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDgpIHVzZSB0aGUgYXBwbGljYXRpb24gdG8gc2VuZCBhdXRvbWF0ZWQgcXVlcmllcyB0byBhbnkgd2Vic2l0ZSBvciB0b1xuICAgICAgICAgICAgICBzZW5kIGFueSB1bnNvbGljaXRlZCBjb21tZXJjaWFsIGUtbWFpbC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoOSkgdXNlIGFueSBwcm9wcmlldGFyeSBpbmZvcm1hdGlvbiBvciBhbnkgb2Ygb3VyIGludGVyZmFjZXMgb3Igb3VyXG4gICAgICAgICAgICAgIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbiB0aGUgZGVzaWduLCBkZXZlbG9wbWVudCwgbWFudWZhY3R1cmUsXG4gICAgICAgICAgICAgIGxpY2Vuc2luZywgb3IgZGlzdHJpYnV0aW9uIG9mIGFueSBhcHBsaWNhdGlvbnMsIGFjY2Vzc29yaWVzLCBvciBkZXZpY2VzXG4gICAgICAgICAgICAgIGZvciB1c2Ugd2l0aCB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDM+QXBwbGUgYW5kIEFuZHJvaWQgRGV2aWNlczwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0ZXJtcyBhcHBseSB3aGVuIHlvdSB1c2UgYSBtb2JpbGUgYXBwbGljYXRpb24gb2J0YWluZWRcbiAgICAgICAgICAgICAgZnJvbSBlaXRoZXIgdGhlIEFwcGxlIFN0b3JlIG9yIEdvb2dsZSBQbGF5IChlYWNoIGFuIOKAnEFwcCBEaXN0cmlidXRvcuKAnSlcbiAgICAgICAgICAgICAgdG8gYWNjZXNzIHRoZSBTaXRlOlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSB0aGUgbGljZW5zZSBncmFudGVkIHRvIHlvdSBmb3Igb3VyIG1vYmlsZSBhcHBsaWNhdGlvbiBpcyBsaW1pdGVkIHRvXG4gICAgICAgICAgICAgIGEgbm9uLXRyYW5zZmVyYWJsZSBsaWNlbnNlIHRvIHVzZSB0aGUgYXBwbGljYXRpb24gb24gYSBkZXZpY2UgdGhhdFxuICAgICAgICAgICAgICB1dGlsaXplcyB0aGUgQXBwbGUgaU9TIG9yIEFuZHJvaWQgb3BlcmF0aW5nIHN5c3RlbXMsIGFzIGFwcGxpY2FibGUsIGFuZFxuICAgICAgICAgICAgICBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHVzYWdlIHJ1bGVzIHNldCBmb3J0aCBpbiB0aGUgYXBwbGljYWJsZVxuICAgICAgICAgICAgICBEaXN0cmlidXRvcuKAmXMgdGVybXMgb2Ygc2VydmljZVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgyKSB3ZSBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhbnkgbWFpbnRlbmFuY2UgYW5kIHN1cHBvcnRcbiAgICAgICAgICAgICAgc2VydmljZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBtb2JpbGUgYXBwbGljYXRpb24gYXMgc3BlY2lmaWVkIGluIHRoZVxuICAgICAgICAgICAgICB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIG1vYmlsZSBhcHBsaWNhdGlvbiBjb250YWluZWQgaW4gdGhlc2UgVGVybXNcbiAgICAgICAgICAgICAgb2YgVXNlIG9yIGFzIG90aGVyd2lzZSByZXF1aXJlZCB1bmRlciBhcHBsaWNhYmxlIGxhdywgYW5kIHlvdVxuICAgICAgICAgICAgICBhY2tub3dsZWRnZSB0aGF0IGVhY2ggQXBwIERpc3RyaWJ1dG9yIGhhcyBubyBvYmxpZ2F0aW9uIHdoYXRzb2V2ZXIgdG9cbiAgICAgICAgICAgICAgZnVybmlzaCBhbnkgbWFpbnRlbmFuY2UgYW5kIHN1cHBvcnQgc2VydmljZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBtb2JpbGVcbiAgICAgICAgICAgICAgYXBwbGljYXRpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGluIHRoZSBldmVudCBvZiBhbnkgZmFpbHVyZSBvZiB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uIHRvIGNvbmZvcm0gdG9cbiAgICAgICAgICAgICAgYW55IGFwcGxpY2FibGUgd2FycmFudHksIHlvdSBtYXkgbm90aWZ5IHRoZSBhcHBsaWNhYmxlIEFwcCBEaXN0cmlidXRvcixcbiAgICAgICAgICAgICAgYW5kIHRoZSBBcHAgRGlzdHJpYnV0b3IsIGluIGFjY29yZGFuY2Ugd2l0aCBpdHMgdGVybXMgYW5kIHBvbGljaWVzLCBtYXlcbiAgICAgICAgICAgICAgcmVmdW5kIHRoZSBwdXJjaGFzZSBwcmljZSwgaWYgYW55LCBwYWlkIGZvciB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uLCBhbmRcbiAgICAgICAgICAgICAgdG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywgdGhlIEFwcCBEaXN0cmlidXRvclxuICAgICAgICAgICAgICB3aWxsIGhhdmUgbm8gb3RoZXIgd2FycmFudHkgb2JsaWdhdGlvbiB3aGF0c29ldmVyIHdpdGggcmVzcGVjdCB0byB0aGVcbiAgICAgICAgICAgICAgbW9iaWxlIGFwcGxpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg0KSB5b3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgKGkpIHlvdSBhcmUgbm90IGxvY2F0ZWQgaW4gYSBjb3VudHJ5XG4gICAgICAgICAgICAgIHRoYXQgaXMgc3ViamVjdCB0byBhIFUuUy4gZ292ZXJubWVudCBlbWJhcmdvLCBvciB0aGF0IGhhcyBiZWVuXG4gICAgICAgICAgICAgIGRlc2lnbmF0ZWQgYnkgdGhlIFUuUy4gZ292ZXJubWVudCBhcyBhIOKAnHRlcnJvcmlzdCBzdXBwb3J0aW5n4oCdIGNvdW50cnlcbiAgICAgICAgICAgICAgYW5kIChpaSkgeW91IGFyZSBub3QgbGlzdGVkIG9uIGFueSBVLlMuIGdvdmVybm1lbnQgbGlzdCBvZiBwcm9oaWJpdGVkIG9yXG4gICAgICAgICAgICAgIHJlc3RyaWN0ZWQgcGFydGllcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNSkgeW91IG11c3QgY29tcGx5IHdpdGggYXBwbGljYWJsZSB0aGlyZC1wYXJ0eSB0ZXJtcyBvZiBhZ3JlZW1lbnQgd2hlblxuICAgICAgICAgICAgICB1c2luZyB0aGUgbW9iaWxlIGFwcGxpY2F0aW9uLCBlLmcuLCBpZiB5b3UgaGF2ZSBhIFZvSVAgYXBwbGljYXRpb24sIHRoZW5cbiAgICAgICAgICAgICAgeW91IG11c3Qgbm90IGJlIGluIHZpb2xhdGlvbiBvZiB0aGVpciB3aXJlbGVzcyBkYXRhIHNlcnZpY2UgYWdyZWVtZW50XG4gICAgICAgICAgICAgIHdoZW4gdXNpbmcgdGhlIG1vYmlsZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNikgeW91IGFja25vd2xlZGdlIGFuZCBhZ3JlZSB0aGF0IHRoZSBBcHAgRGlzdHJpYnV0b3JzIGFyZSB0aGlyZC1wYXJ0eVxuICAgICAgICAgICAgICBiZW5lZmljaWFyaWVzIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBpbiB0aGlzIG1vYmlsZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICBsaWNlbnNlIGNvbnRhaW5lZCBpbiB0aGVzZSBUZXJtcyBvZiBVc2UsIGFuZCB0aGF0IGVhY2ggQXBwIERpc3RyaWJ1dG9yXG4gICAgICAgICAgICAgIHdpbGwgaGF2ZSB0aGUgcmlnaHQgKGFuZCB3aWxsIGJlIGRlZW1lZCB0byBoYXZlIGFjY2VwdGVkIHRoZSByaWdodCkgdG9cbiAgICAgICAgICAgICAgZW5mb3JjZSB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgaW4gdGhpcyBtb2JpbGUgYXBwbGljYXRpb24gbGljZW5zZVxuICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlc2UgVGVybXMgb2YgVXNlIGFnYWluc3QgeW91IGFzIGEgdGhpcmQtcGFydHkgYmVuZWZpY2lhcnlcbiAgICAgICAgICAgICAgdGhlcmVvZi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5TT0NJQUwgTUVESUE8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNpdGUsIHlvdSBtYXkgbGluayB5b3VyIGFjY291bnQgd2l0aFxuICAgICAgICAgICAgICBvbmxpbmUgYWNjb3VudHMgeW91IGhhdmUgd2l0aCB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVycyAoZWFjaCBzdWNoXG4gICAgICAgICAgICAgIGFjY291bnQsIGEg4oCcVGhpcmQtUGFydHkgQWNjb3VudOKAnSkgYnkgZWl0aGVyOlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8b2w+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgcHJvdmlkaW5nIHlvdXIgVGhpcmQtUGFydHkgQWNjb3VudCBsb2dpbiBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgICAgICAgU2l0ZTsgb3JcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxuICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgdXMgdG8gYWNjZXNzIHlvdXIgVGhpcmQtUGFydHkgQWNjb3VudCwgYXMgaXMgcGVybWl0dGVkXG4gICAgICAgICAgICAgICAgICB1bmRlciB0aGUgYXBwbGljYWJsZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB5b3VyIHVzZVxuICAgICAgICAgICAgICAgICAgb2YgZWFjaCBUaGlyZC1QYXJ0eSBBY2NvdW50LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvb2w+XG5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgeW91IGFyZSBlbnRpdGxlZCB0byBkaXNjbG9zZSB5b3VyXG4gICAgICAgICAgICAgIFRoaXJkLVBhcnR5IEFjY291bnQgbG9naW4gaW5mb3JtYXRpb24gdG8gdXMgYW5kL29yIGdyYW50IHVzIGFjY2VzcyB0b1xuICAgICAgICAgICAgICB5b3VyIFRoaXJkLVBhcnR5IEFjY291bnQsIHdpdGhvdXQgYnJlYWNoIGJ5IHlvdSBvZiBhbnkgb2YgdGhlIHRlcm1zIGFuZFxuICAgICAgICAgICAgICBjb25kaXRpb25zIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhcHBsaWNhYmxlIFRoaXJkLVBhcnR5IEFjY291bnQsXG4gICAgICAgICAgICAgIGFuZCB3aXRob3V0IG9ibGlnYXRpbmcgdXMgdG8gcGF5IGFueSBmZWVzIG9yIG1ha2luZyB1cyBzdWJqZWN0IHRvIGFueVxuICAgICAgICAgICAgICB1c2FnZSBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHRoZSB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVyIG9mIHRoZVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBBY2NvdW50LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEJ5IGdyYW50aW5nIHVzIGFjY2VzcyB0byBhbnkgVGhpcmQtUGFydHkgQWNjb3VudHMsIHlvdSB1bmRlcnN0YW5kIHRoYXRcbiAgICAgICAgICAgICAgKDEpIHdlIG1heSBhY2Nlc3MsIG1ha2UgYXZhaWxhYmxlLCBhbmQgc3RvcmUgKGlmIGFwcGxpY2FibGUpIGFueSBjb250ZW50XG4gICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgdG8gYW5kIHN0b3JlZCBpbiB5b3VyIFRoaXJkLVBhcnR5IEFjY291bnQgKHRoZVxuICAgICAgICAgICAgICDigJxTb2NpYWwgTmV0d29yayBDb250ZW504oCdKSBzbyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBvbiBhbmQgdGhyb3VnaCB0aGVcbiAgICAgICAgICAgICAgU2l0ZSB2aWEgeW91ciBhY2NvdW50LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIGFueSBmcmllbmQgbGlzdHMgYW5kXG4gICAgICAgICAgICAgICgyKSB3ZSBtYXkgc3VibWl0IHRvIGFuZCByZWNlaXZlIGZyb20geW91ciBUaGlyZC1QYXJ0eSBBY2NvdW50XG4gICAgICAgICAgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhlIGV4dGVudCB5b3UgYXJlIG5vdGlmaWVkIHdoZW4geW91IGxpbmsgeW91clxuICAgICAgICAgICAgICBhY2NvdW50IHdpdGggdGhlIFRoaXJkLVBhcnR5IEFjY291bnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBUaGlyZC1QYXJ0eSBBY2NvdW50cyB5b3UgY2hvb3NlIGFuZCBzdWJqZWN0IHRvIHRoZVxuICAgICAgICAgICAgICBwcml2YWN5IHNldHRpbmdzIHRoYXQgeW91IGhhdmUgc2V0IGluIHN1Y2ggVGhpcmQtUGFydHkgQWNjb3VudHMsXG4gICAgICAgICAgICAgIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIHRoYXQgeW91IHBvc3QgdG8geW91ciBUaGlyZC1QYXJ0eVxuICAgICAgICAgICAgICBBY2NvdW50cyBtYXkgYmUgYXZhaWxhYmxlIG9uIGFuZCB0aHJvdWdoIHlvdXIgYWNjb3VudCBvbiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IGlmIGEgVGhpcmQtUGFydHkgQWNjb3VudCBvciBhc3NvY2lhdGVkIHNlcnZpY2UgYmVjb21lc1xuICAgICAgICAgICAgICB1bmF2YWlsYWJsZSBvciBvdXIgYWNjZXNzIHRvIHN1Y2ggVGhpcmQtUGFydHkgQWNjb3VudCBpcyB0ZXJtaW5hdGVkIGJ5XG4gICAgICAgICAgICAgIHRoZSB0aGlyZC1wYXJ0eSBzZXJ2aWNlIHByb3ZpZGVyLCB0aGVuIFNvY2lhbCBOZXR3b3JrIENvbnRlbnQgbWF5IG5vXG4gICAgICAgICAgICAgIGxvbmdlciBiZSBhdmFpbGFibGUgb24gYW5kIHRocm91Z2ggdGhlIFNpdGUuIFlvdSB3aWxsIGhhdmUgdGhlIGFiaWxpdHlcbiAgICAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdXIgYWNjb3VudCBvbiB0aGUgU2l0ZSBhbmQgeW91clxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBBY2NvdW50cyBhdCBhbnkgdGltZS5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFBMRUFTRSBOT1RFIFRIQVQgWU9VUiBSRUxBVElPTlNISVAgV0lUSCBUSEUgVEhJUkQtUEFSVFkgU0VSVklDRVxuICAgICAgICAgICAgICBQUk9WSURFUlMgQVNTT0NJQVRFRCBXSVRIIFlPVVIgVEhJUkQtUEFSVFkgQUNDT1VOVFMgSVMgR09WRVJORUQgU09MRUxZXG4gICAgICAgICAgICAgIEJZIFlPVVIgQUdSRUVNRU5UKFMpIFdJVEggU1VDSCBUSElSRC1QQVJUWSBTRVJWSUNFIFBST1ZJREVSUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSBtYWtlIG5vIGVmZm9ydCB0byByZXZpZXcgYW55IFNvY2lhbCBOZXR3b3JrIENvbnRlbnQgZm9yIGFueSBwdXJwb3NlLFxuICAgICAgICAgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvLCBmb3IgYWNjdXJhY3ksIGxlZ2FsaXR5LCBvclxuICAgICAgICAgICAgICBub24taW5mcmluZ2VtZW50LCBhbmQgd2UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgYW55IFNvY2lhbCBOZXR3b3JrXG4gICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGFja25vd2xlZGdlIGFuZCBhZ3JlZSB0aGF0IHdlIG1heSBhY2Nlc3MgeW91ciBlbWFpbCBhZGRyZXNzIGJvb2tcbiAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgVGhpcmQtUGFydHkgQWNjb3VudCBhbmQgeW91ciBjb250YWN0cyBsaXN0IHN0b3JlZCBvblxuICAgICAgICAgICAgICB5b3VyIG1vYmlsZSBkZXZpY2Ugb3IgdGFibGV0IGNvbXB1dGVyIHNvbGVseSBmb3IgcHVycG9zZXMgb2YgaWRlbnRpZnlpbmdcbiAgICAgICAgICAgICAgYW5kIGluZm9ybWluZyB5b3Ugb2YgdGhvc2UgY29udGFjdHMgd2hvIGhhdmUgYWxzbyByZWdpc3RlcmVkIHRvIHVzZSB0aGVcbiAgICAgICAgICAgICAgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYWNrbm93bGVkZ2UgYW5kIGFncmVlIHRoYXQgd2UgbWF5IGFjY2VzcyB5b3VyIGVtYWlsIGFkZHJlc3MgYm9va1xuICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBUaGlyZC1QYXJ0eSBBY2NvdW50IGFuZCB5b3VyIGNvbnRhY3RzIGxpc3Qgc3RvcmVkIG9uXG4gICAgICAgICAgICAgIHlvdXIgbW9iaWxlIGRldmljZSBvciB0YWJsZXQgY29tcHV0ZXIgc29sZWx5IGZvciBwdXJwb3NlcyBvZiBpZGVudGlmeWluZ1xuICAgICAgICAgICAgICBhbmQgaW5mb3JtaW5nIHlvdSBvZiB0aG9zZSBjb250YWN0cyB3aG8gaGF2ZSBhbHNvIHJlZ2lzdGVyZWQgdG8gdXNlIHRoZVxuICAgICAgICAgICAgICBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlNVQk1JU1NJT05TPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZb3UgYWNrbm93bGVkZ2UgYW5kIGFncmVlIHRoYXQgYW55IHF1ZXN0aW9ucywgY29tbWVudHMsIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICBpZGVhcywgZmVlZGJhY2ssIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgU2l0ZSAoXCJTdWJtaXNzaW9uc1wiKVxuICAgICAgICAgICAgICBwcm92aWRlZCBieSB5b3UgdG8gdXMgYXJlIG5vbi1jb25maWRlbnRpYWwgYW5kIHNoYWxsIGJlY29tZSBvdXIgc29sZVxuICAgICAgICAgICAgICBwcm9wZXJ0eS4gV2Ugc2hhbGwgb3duIGV4Y2x1c2l2ZSByaWdodHMsIGluY2x1ZGluZyBhbGwgaW50ZWxsZWN0dWFsXG4gICAgICAgICAgICAgIHByb3BlcnR5IHJpZ2h0cywgYW5kIHNoYWxsIGJlIGVudGl0bGVkIHRvIHRoZSB1bnJlc3RyaWN0ZWQgdXNlIGFuZFxuICAgICAgICAgICAgICBkaXNzZW1pbmF0aW9uIG9mIHRoZXNlIFN1Ym1pc3Npb25zIGZvciBhbnkgbGF3ZnVsIHB1cnBvc2UsIGNvbW1lcmNpYWwgb3JcbiAgICAgICAgICAgICAgb3RoZXJ3aXNlLCB3aXRob3V0IGFja25vd2xlZGdtZW50IG9yIGNvbXBlbnNhdGlvbiB0byB5b3UuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbGwgbW9yYWwgcmlnaHRzIHRvIGFueSBzdWNoIFN1Ym1pc3Npb25zLCBhbmQgeW91XG4gICAgICAgICAgICAgIGhlcmVieSB3YXJyYW50IHRoYXQgYW55IHN1Y2ggU3VibWlzc2lvbnMgYXJlIG9yaWdpbmFsIHdpdGggeW91IG9yIHRoYXRcbiAgICAgICAgICAgICAgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBzdWNoIFN1Ym1pc3Npb25zLiBZb3UgYWdyZWUgdGhlcmUgc2hhbGwgYmVcbiAgICAgICAgICAgICAgbm8gcmVjb3Vyc2UgYWdhaW5zdCB1cyBmb3IgYW55IGFsbGVnZWQgb3IgYWN0dWFsIGluZnJpbmdlbWVudCBvclxuICAgICAgICAgICAgICBtaXNhcHByb3ByaWF0aW9uIG9mIGFueSBwcm9wcmlldGFyeSByaWdodCBpbiB5b3VyIFN1Ym1pc3Npb25zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlRISVJELVBBUlRZIFdFQlNJVEVTIEFORCBDT05URU5UPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGUgU2l0ZSBtYXkgY29udGFpbiAob3IgeW91IG1heSBiZSBzZW50IHZpYSB0aGUgU2l0ZSkgbGlua3MgdG8gb3RoZXJcbiAgICAgICAgICAgICAgd2Vic2l0ZXMgKFwiVGhpcmQtUGFydHkgV2Vic2l0ZXNcIikgYXMgd2VsbCBhcyBhcnRpY2xlcywgdGV4dCwgZ3JhcGhpY3MsXG4gICAgICAgICAgICAgIHBpY3R1cmVzLCBkZXNpZ25zLCBtdXNpYywgc291bmQsIHZpZGVvLCBpbmZvcm1hdGlvbiwgYXBwbGljYXRpb25zLFxuICAgICAgICAgICAgICBzb2Z0d2FyZSwgYW5kIG90aGVyIGNvbnRlbnQgb3IgaXRlbXMgYmVsb25naW5nIHRvIG9yIG9yaWdpbmF0aW5nIGZyb21cbiAgICAgICAgICAgICAgdGhpcmQgcGFydGllcyAoXCJUaGlyZC1QYXJ0eSBDb250ZW50XCIpLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFN1Y2ggVGhpcmQtUGFydHkgV2Vic2l0ZXMgYW5kIFRoaXJkLVBhcnR5IENvbnRlbnQgYXJlIG5vdCBpbnZlc3RpZ2F0ZWQsXG4gICAgICAgICAgICAgIG1vbml0b3JlZCwgb3IgY2hlY2tlZCBmb3IgYWNjdXJhY3ksIGFwcHJvcHJpYXRlbmVzcywgb3IgY29tcGxldGVuZXNzIGJ5XG4gICAgICAgICAgICAgIHVzLCBhbmQgd2UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgYW55IFRoaXJkLVBhcnR5IFdlYnNpdGVzIGFjY2Vzc2VkXG4gICAgICAgICAgICAgIHRocm91Z2ggdGhlIFNpdGUgb3IgYW55IFRoaXJkLVBhcnR5IENvbnRlbnQgcG9zdGVkIG9uLCBhdmFpbGFibGVcbiAgICAgICAgICAgICAgdGhyb3VnaCwgb3IgaW5zdGFsbGVkIGZyb20gdGhlIFNpdGUsIGluY2x1ZGluZyB0aGUgY29udGVudCwgYWNjdXJhY3ksXG4gICAgICAgICAgICAgIG9mZmVuc2l2ZW5lc3MsIG9waW5pb25zLCByZWxpYWJpbGl0eSwgcHJpdmFjeSBwcmFjdGljZXMsIG9yIG90aGVyXG4gICAgICAgICAgICAgIHBvbGljaWVzIG9mIG9yIGNvbnRhaW5lZCBpbiB0aGUgVGhpcmQtUGFydHkgV2Vic2l0ZXMgb3IgdGhlIFRoaXJkLVBhcnR5XG4gICAgICAgICAgICAgIENvbnRlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSW5jbHVzaW9uIG9mLCBsaW5raW5nIHRvLCBvciBwZXJtaXR0aW5nIHRoZSB1c2Ugb3IgaW5zdGFsbGF0aW9uIG9mIGFueVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBXZWJzaXRlcyBvciBhbnkgVGhpcmQtUGFydHkgQ29udGVudCBkb2VzIG5vdCBpbXBseSBhcHByb3ZhbFxuICAgICAgICAgICAgICBvciBlbmRvcnNlbWVudCB0aGVyZW9mIGJ5IHVzLiBJZiB5b3UgZGVjaWRlIHRvIGxlYXZlIHRoZSBTaXRlIGFuZCBhY2Nlc3NcbiAgICAgICAgICAgICAgdGhlIFRoaXJkLVBhcnR5IFdlYnNpdGVzIG9yIHRvIHVzZSBvciBpbnN0YWxsIGFueSBUaGlyZC1QYXJ0eSBDb250ZW50LFxuICAgICAgICAgICAgICB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzaywgYW5kIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhlc2UgVGVybXMgb2YgVXNlXG4gICAgICAgICAgICAgIG5vIGxvbmdlciBnb3Zlcm4uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IHNob3VsZCByZXZpZXcgdGhlIGFwcGxpY2FibGUgdGVybXMgYW5kIHBvbGljaWVzLCBpbmNsdWRpbmcgcHJpdmFjeVxuICAgICAgICAgICAgICBhbmQgZGF0YSBnYXRoZXJpbmcgcHJhY3RpY2VzLCBvZiBhbnkgd2Vic2l0ZSB0byB3aGljaCB5b3UgbmF2aWdhdGUgZnJvbVxuICAgICAgICAgICAgICB0aGUgU2l0ZSBvciByZWxhdGluZyB0byBhbnkgYXBwbGljYXRpb25zIHlvdSB1c2Ugb3IgaW5zdGFsbCBmcm9tIHRoZVxuICAgICAgICAgICAgICBTaXRlLiBBbnkgcHVyY2hhc2VzIHlvdSBtYWtlIHRocm91Z2ggVGhpcmQtUGFydHkgV2Vic2l0ZXMgd2lsbCBiZVxuICAgICAgICAgICAgICB0aHJvdWdoIG90aGVyIHdlYnNpdGVzIGFuZCBmcm9tIG90aGVyIGNvbXBhbmllcywgYW5kIHdlIHRha2Ugbm9cbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHkgd2hhdHNvZXZlciBpbiByZWxhdGlvbiB0byBzdWNoIHB1cmNoYXNlcyB3aGljaCBhcmVcbiAgICAgICAgICAgICAgZXhjbHVzaXZlbHkgYmV0d2VlbiB5b3UgYW5kIHRoZSBhcHBsaWNhYmxlIHRoaXJkIHBhcnR5LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSBhbmQgYWNrbm93bGVkZ2UgdGhhdCB3ZSBkbyBub3QgZW5kb3JzZSB0aGUgcHJvZHVjdHMgb3JcbiAgICAgICAgICAgICAgc2VydmljZXMgb2ZmZXJlZCBvbiBUaGlyZC1QYXJ0eSBXZWJzaXRlcyBhbmQgeW91IHNoYWxsIGhvbGQgdXMgaGFybWxlc3NcbiAgICAgICAgICAgICAgZnJvbSBhbnkgaGFybSBjYXVzZWQgYnkgeW91ciBwdXJjaGFzZSBvZiBzdWNoIHByb2R1Y3RzIG9yIHNlcnZpY2VzLlxuICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBzaGFsbCBob2xkIHVzIGhhcm1sZXNzIGZyb20gYW55IGxvc3NlcyBzdXN0YWluZWQgYnlcbiAgICAgICAgICAgICAgeW91IG9yIGhhcm0gY2F1c2VkIHRvIHlvdSByZWxhdGluZyB0byBvciByZXN1bHRpbmcgaW4gYW55IHdheSBmcm9tIGFueVxuICAgICAgICAgICAgICBUaGlyZC1QYXJ0eSBDb250ZW50IG9yIGFueSBjb250YWN0IHdpdGggVGhpcmQtUGFydHkgV2Vic2l0ZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+QURWRVJUSVNFUlM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIGFsbG93IGFkdmVydGlzZXJzIHRvIGRpc3BsYXkgdGhlaXIgYWR2ZXJ0aXNlbWVudHMgYW5kIG90aGVyXG4gICAgICAgICAgICAgIGluZm9ybWF0aW9uIGluIGNlcnRhaW4gYXJlYXMgb2YgdGhlIFNpdGUsIHN1Y2ggYXMgc2lkZWJhciBhZHZlcnRpc2VtZW50c1xuICAgICAgICAgICAgICBvciBiYW5uZXIgYWR2ZXJ0aXNlbWVudHMuIElmIHlvdSBhcmUgYW4gYWR2ZXJ0aXNlciwgeW91IHNoYWxsIHRha2UgZnVsbFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBmb3IgYW55IGFkdmVydGlzZW1lbnRzIHlvdSBwbGFjZSBvbiB0aGUgU2l0ZSBhbmQgYW55XG4gICAgICAgICAgICAgIHNlcnZpY2VzIHByb3ZpZGVkIG9uIHRoZSBTaXRlIG9yIHByb2R1Y3RzIHNvbGQgdGhyb3VnaCB0aG9zZVxuICAgICAgICAgICAgICBhZHZlcnRpc2VtZW50cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBGdXJ0aGVyLCBhcyBhbiBhZHZlcnRpc2VyLCB5b3Ugd2FycmFudCBhbmQgcmVwcmVzZW50IHRoYXQgeW91IHBvc3Nlc3NcbiAgICAgICAgICAgICAgYWxsIHJpZ2h0cyBhbmQgYXV0aG9yaXR5IHRvIHBsYWNlIGFkdmVydGlzZW1lbnRzIG9uIHRoZSBTaXRlLCBpbmNsdWRpbmcsXG4gICAgICAgICAgICAgIGJ1dCBub3QgbGltaXRlZCB0bywgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cywgcHVibGljaXR5IHJpZ2h0cywgYW5kXG4gICAgICAgICAgICAgIGNvbnRyYWN0dWFsIHJpZ2h0cy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBcyBhbiBhZHZlcnRpc2VyLCB5b3UgYWdyZWUgdGhhdCBzdWNoIGFkdmVydGlzZW1lbnRzIGFyZSBzdWJqZWN0IHRvIG91clxuICAgICAgICAgICAgICBEaWdpdGFsIE1pbGxlbm5pdW0gQ29weXJpZ2h0IEFjdCAo4oCcRE1DQeKAnSkgTm90aWNlIGFuZCBQb2xpY3kgcHJvdmlzaW9uc1xuICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgYmVsb3csIGFuZCB5b3UgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhlcmUgd2lsbCBiZSBubyByZWZ1bmRcbiAgICAgICAgICAgICAgb3Igb3RoZXIgY29tcGVuc2F0aW9uIGZvciBETUNBIHRha2UgZG93bi1yZWxhdGVkIGlzc3Vlcy4gV2Ugc2ltcGx5XG4gICAgICAgICAgICAgIHByb3ZpZGUgdGhlIHNwYWNlIHRvIHBsYWNlIHN1Y2ggYWR2ZXJ0aXNlbWVudHMsIGFuZCB3ZSBoYXZlIG5vIG90aGVyXG4gICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCB3aXRoIGFkdmVydGlzZXJzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPlNJVEUgTUFOQUdFTUVOVDwvaDI+XG4gICAgICAgICAgICA8cD5XZSByZXNlcnZlIHRoZSByaWdodCwgYnV0IG5vdCB0aGUgb2JsaWdhdGlvbiwgdG86PC9wPlxuICAgICAgICAgICAgPHA+KDEpIG1vbml0b3IgdGhlIFNpdGUgZm9yIHZpb2xhdGlvbnMgb2YgdGhlc2UgVGVybXMgb2YgVXNlLjwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMikgdGFrZSBhcHByb3ByaWF0ZSBsZWdhbCBhY3Rpb24gYWdhaW5zdCBhbnlvbmUgd2hvLCBpbiBvdXIgc29sZVxuICAgICAgICAgICAgICBkaXNjcmV0aW9uLCB2aW9sYXRlcyB0aGUgbGF3IG9yIHRoZXNlIFRlcm1zIG9mIFVzZSwgaW5jbHVkaW5nIHdpdGhvdXRcbiAgICAgICAgICAgICAgbGltaXRhdGlvbiwgcmVwb3J0aW5nIHN1Y2ggdXNlciB0byBsYXcgZW5mb3JjZW1lbnQgYXV0aG9yaXRpZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGluIG91ciBzb2xlIGRpc2NyZXRpb24gYW5kIHdpdGhvdXQgbGltaXRhdGlvbiwgcmVmdXNlLCByZXN0cmljdFxuICAgICAgICAgICAgICBhY2Nlc3MgdG8sIGxpbWl0IHRoZSBhdmFpbGFiaWxpdHkgb2YsIG9yIGRpc2FibGUgKHRvIHRoZSBleHRlbnRcbiAgICAgICAgICAgICAgdGVjaG5vbG9naWNhbGx5IGZlYXNpYmxlKSBhbnkgb2YgeW91ciBDb250cmlidXRpb25zIG9yIGFueSBwb3J0aW9uXG4gICAgICAgICAgICAgIHRoZXJlb2ZcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNCkgaW7CoG91ciBzb2xlIGRpc2NyZXRpb24gYW5kIHdpdGhvdXQgbGltaXRhdGlvbiwgbm90aWNlLCBvciBsaWFiaWxpdHksXG4gICAgICAgICAgICAgIHRvIHJlbW92ZSBmcm9tIHRoZSBTaXRlIG9yIG90aGVyd2lzZSBkaXNhYmxlIGFsbCBmaWxlcyBhbmQgY29udGVudCB0aGF0XG4gICAgICAgICAgICAgIGFyZSBleGNlc3NpdmUgaW4gc2l6ZSBvciBhcmUgaW4gYW55IHdheSBidXJkZW5zb21lIHRvIG91ciBzeXN0ZW1zLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICg1KSBvdGhlcndpc2UgbWFuYWdlIHRoZSBTaXRlIGluIGEgbWFubmVyIGRlc2lnbmVkIHRvIHByb3RlY3Qgb3VyIHJpZ2h0c1xuICAgICAgICAgICAgICBhbmQgcHJvcGVydHkgYW5kIHRvIGZhY2lsaXRhdGUgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5QUklWQUNZIFBPTElDWTwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgY2FyZSBhYm91dCBkYXRhIHByaXZhY3kgYW5kIHNlY3VyaXR5LiBQbGVhc2UgcmV2aWV3IG91ciBQcml2YWN5XG4gICAgICAgICAgICAgIFBvbGljeTogPGEgaHJlZj1cIi9wcml2YWN5LXBvbGljeVwiPmNsaWNrIGhlcmU8L2E+LiBCeSB1c2luZyB0aGUgU2l0ZSwgeW91XG4gICAgICAgICAgICAgIGFncmVlIHRvIGJlIGJvdW5kIGJ5IG91ciBQcml2YWN5IFBvbGljeSwgd2hpY2ggaXMgaW5jb3Jwb3JhdGVkIGludG9cbiAgICAgICAgICAgICAgdGhlc2UgVGVybXMgb2YgVXNlLiBQbGVhc2UgYmUgYWR2aXNlZCB0aGUgU2l0ZSBpcyBob3N0ZWQgaW4gdGhlIFVuaXRlZFxuICAgICAgICAgICAgICBTdGF0ZXMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSWYgeW91IGFjY2VzcyB0aGUgU2l0ZSBmcm9tIHRoZSBFdXJvcGVhbiBVbmlvbiwgQXNpYSwgb3IgYW55IG90aGVyXG4gICAgICAgICAgICAgIHJlZ2lvbiBvZiB0aGUgd29ybGQgd2l0aCBsYXdzIG9yIG90aGVyIHJlcXVpcmVtZW50cyBnb3Zlcm5pbmcgcGVyc29uYWxcbiAgICAgICAgICAgICAgZGF0YSBjb2xsZWN0aW9uLCB1c2UsIG9yIGRpc2Nsb3N1cmUgdGhhdCBkaWZmZXIgZnJvbSBhcHBsaWNhYmxlIGxhd3MgaW5cbiAgICAgICAgICAgICAgdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZW4gdGhyb3VnaCB5b3VyIGNvbnRpbnVlZCB1c2Ugb2YgdGhlIFNpdGUsIHlvdSBhcmVcbiAgICAgICAgICAgICAgdHJhbnNmZXJyaW5nIHlvdXIgZGF0YSB0byB0aGUgVW5pdGVkIFN0YXRlcywgYW5kIHlvdSBleHByZXNzbHkgY29uc2VudFxuICAgICAgICAgICAgICB0byBoYXZlIHlvdXIgZGF0YSB0cmFuc2ZlcnJlZCB0byBhbmQgcHJvY2Vzc2VkIGluIHRoZSBVbml0ZWQgU3RhdGVzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEZ1cnRoZXIsIHdlIGRvIG5vdCBrbm93aW5nbHkgYWNjZXB0LCByZXF1ZXN0LCBvciBzb2xpY2l0IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIGZyb20gY2hpbGRyZW4gb3Iga25vd2luZ2x5IG1hcmtldCB0byBjaGlsZHJlbi4gVGhlcmVmb3JlLCBpbiBhY2NvcmRhbmNlXG4gICAgICAgICAgICAgIHdpdGggdGhlIFUuUy4gQ2hpbGRyZW7igJlzIE9ubGluZSBQcml2YWN5IFByb3RlY3Rpb24gQWN0LCBpZiB3ZSByZWNlaXZlXG4gICAgICAgICAgICAgIGFjdHVhbCBrbm93bGVkZ2UgdGhhdCBhbnlvbmUgdW5kZXIgdGhlIGFnZSBvZiAxMyBoYXMgcHJvdmlkZWQgcGVyc29uYWxcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gdXMgd2l0aG91dCB0aGUgcmVxdWlzaXRlIGFuZCB2ZXJpZmlhYmxlIHBhcmVudGFsIGNvbnNlbnQsXG4gICAgICAgICAgICAgIHdlIHdpbGwgZGVsZXRlIHRoYXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgU2l0ZSBhcyBxdWlja2x5IGFzIGlzXG4gICAgICAgICAgICAgIHJlYXNvbmFibHkgcHJhY3RpY2FsLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJR0lUQUwgTUlMTEVOTklVTSBDT1BZUklHSFQgQUNUIChETUNBKSBOT1RJQ0UgQU5EIFBPTElDWTwvaDI+XG4gICAgICAgICAgICA8aDM+Tm90aWZpY2F0aW9uczwvaDM+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgcmVzcGVjdCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBvdGhlcnMuIElmIHlvdSBiZWxpZXZlXG4gICAgICAgICAgICAgIHRoYXQgYW55IG1hdGVyaWFsIGF2YWlsYWJsZSBvbiBvciB0aHJvdWdoIHRoZSBTaXRlIGluZnJpbmdlcyB1cG9uIGFueVxuICAgICAgICAgICAgICBjb3B5cmlnaHQgeW91IG93biBvciBjb250cm9sLCBwbGVhc2UgaW1tZWRpYXRlbHkgbm90aWZ5IG91ciBEZXNpZ25hdGVkXG4gICAgICAgICAgICAgIENvcHlyaWdodCBBZ2VudCB1c2luZyB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBwcm92aWRlZCBiZWxvdyAoYVxuICAgICAgICAgICAgICDigJxOb3RpZmljYXRpb27igJ0pLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEEgY29weSBvZiB5b3VyIE5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIHBlcnNvbiB3aG8gcG9zdGVkIG9yXG4gICAgICAgICAgICAgIHN0b3JlZCB0aGUgbWF0ZXJpYWwgYWRkcmVzc2VkIGluIHRoZSBOb3RpZmljYXRpb24uIFBsZWFzZSBiZSBhZHZpc2VkXG4gICAgICAgICAgICAgIHRoYXQgcHVyc3VhbnQgdG8gZmVkZXJhbCBsYXcgeW91IG1heSBiZSBoZWxkIGxpYWJsZSBmb3IgZGFtYWdlcyBpZiB5b3VcbiAgICAgICAgICAgICAgbWFrZSBtYXRlcmlhbCBtaXNyZXByZXNlbnRhdGlvbnMgaW4gYSBOb3RpZmljYXRpb24uIFRodXMsIGlmIHlvdSBhcmUgbm90XG4gICAgICAgICAgICAgIHN1cmUgdGhhdCBtYXRlcmlhbCBsb2NhdGVkIG9uIG9yIGxpbmtlZCB0byBieSB0aGUgU2l0ZSBpbmZyaW5nZXMgeW91clxuICAgICAgICAgICAgICBjb3B5cmlnaHQsIHlvdSBzaG91bGQgY29uc2lkZXIgZmlyc3QgY29udGFjdGluZyBhbiBhdHRvcm5leS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBBbGwgTm90aWZpY2F0aW9ucyBzaG91bGQgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIERNQ0EgMTcgVS5TLkMuIMKnXG4gICAgICAgICAgICAgIDUxMihjKSgzKSBhbmQgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICgxKSBBIHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgc2lnbmF0dXJlIG9mIGEgcGVyc29uIGF1dGhvcml6ZWQgdG8gYWN0IG9uXG4gICAgICAgICAgICAgIGJlaGFsZiBvZiB0aGUgb3duZXIgb2YgYW4gZXhjbHVzaXZlIHJpZ2h0IHRoYXQgaXMgYWxsZWdlZGx5IGluZnJpbmdlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMikgaWRlbnRpZmljYXRpb24gb2YgdGhlIGNvcHlyaWdodGVkIHdvcmsgY2xhaW1lZCB0byBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgaW5mcmluZ2VkLCBvciwgaWYgbXVsdGlwbGUgY29weXJpZ2h0ZWQgd29ya3Mgb24gdGhlIFNpdGUgYXJlIGNvdmVyZWQgYnlcbiAgICAgICAgICAgICAgdGhlIE5vdGlmaWNhdGlvbiwgYSByZXByZXNlbnRhdGl2ZSBsaXN0IG9mIHN1Y2ggd29ya3Mgb24gdGhlIFNpdGVcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMykgaW5mb3JtYXRpb24gcmVhc29uYWJseSBzdWZmaWNpZW50IHRvIHBlcm1pdCB1cyB0byBjb250YWN0IHRoZVxuICAgICAgICAgICAgICBjb21wbGFpbmluZyBwYXJ0eSwgc3VjaCBhcyBhbiBhZGRyZXNzLCB0ZWxlcGhvbmUgbnVtYmVyLCBhbmQsIGlmXG4gICAgICAgICAgICAgIGF2YWlsYWJsZSwgYW4gZW1haWwgYWRkcmVzcyBhdCB3aGljaCB0aGUgY29tcGxhaW5pbmcgcGFydHkgbWF5IGJlXG4gICAgICAgICAgICAgIGNvbnRhY3RlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoNCkgYSBzdGF0ZW1lbnQgdGhhdCB0aGUgY29tcGxhaW5pbmcgcGFydHkgaGFzIGEgZ29vZCBmYWl0aCBiZWxpZWYgdGhhdFxuICAgICAgICAgICAgICB1c2Ugb2YgdGhlIG1hdGVyaWFsIGluIHRoZSBtYW5uZXIgY29tcGxhaW5lZCBvZiBpcyBub3QgYXV0aG9yaXplZCBieSB0aGVcbiAgICAgICAgICAgICAgY29weXJpZ2h0IG93bmVyLCBpdHMgYWdlbnQsIG9yIHRoZSBsYXcuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDUpIGEgc3RhdGVtZW50IHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBub3RpZmljYXRpb24gaXMgYWNjdXJhdGUsXG4gICAgICAgICAgICAgIGFuZCB1bmRlciBwZW5hbHR5IG9mIHBlcmp1cnksIHRoYXQgdGhlIGNvbXBsYWluaW5nIHBhcnR5IGlzIGF1dGhvcml6ZWRcbiAgICAgICAgICAgICAgdG8gYWN0IG9uIGJlaGFsZiBvZiB0aGUgb3duZXIgb2YgYW4gZXhjbHVzaXZlIHJpZ2h0IHRoYXQgaXMgYWxsZWdlZGx5XG4gICAgICAgICAgICAgIGluZnJpbmdlZCB1cG9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgzPkNvdW50ZXIgTm90aWZpY2F0aW9uPC9oMz5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiB5b3UgYmVsaWV2ZSB5b3VyIG93biBjb3B5cmlnaHRlZCBtYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlXG4gICAgICAgICAgICAgIFNpdGUgYXMgYSByZXN1bHQgb2YgYSBtaXN0YWtlIG9yIG1pcyBpZGVudGlmaWNhdGlvbiwgeW91IG1heSBzdWJtaXQgYVxuICAgICAgICAgICAgICB3cml0dGVuIGNvdW50ZXIgbm90aWZpY2F0aW9uIHRvIHVzIHVzaW5nIHRoZSBjb250YWN0IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIHByb3ZpZGVkIGJlbG93IChhIOKAnENvdW50ZXIgTm90aWZpY2F0aW9u4oCdKS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUbyBiZSBhbiBlZmZlY3RpdmUgQ291bnRlciBOb3RpZmljYXRpb24gdW5kZXIgdGhlIERNQ0EsIHlvdXIgQ291bnRlclxuICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbXVzdCBpbmNsdWRlIHN1YnN0YW50aWFsbHkgdGhlIGZvbGxvd2luZzpcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAoMSkgaWRlbnRpZmljYXRpb24gb2YgdGhlIG1hdGVyaWFsIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZCBvciBkaXNhYmxlZCBhbmRcbiAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIGF0IHdoaWNoIHRoZSBtYXRlcmlhbCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIHJlbW92ZWQgb3JcbiAgICAgICAgICAgICAgZGlzYWJsZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDIpIGEgc3RhdGVtZW50IHRoYXQgeW91IGNvbnNlbnQgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgRmVkZXJhbFxuICAgICAgICAgICAgICBEaXN0cmljdCBDb3VydCBpbiB3aGljaCB5b3VyIGFkZHJlc3MgaXMgbG9jYXRlZCwgb3IgaWYgeW91ciBhZGRyZXNzIGlzXG4gICAgICAgICAgICAgIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIGZvciBhbnkganVkaWNpYWwgZGlzdHJpY3QgaW4gd2hpY2ggd2UgYXJlXG4gICAgICAgICAgICAgIGxvY2F0ZWQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDMpIGEgc3RhdGVtZW50IHRoYXQgeW91IHdpbGwgYWNjZXB0IHNlcnZpY2Ugb2YgcHJvY2VzcyBmcm9tIHRoZSBwYXJ0eVxuICAgICAgICAgICAgICB0aGF0IGZpbGVkIHRoZSBOb3RpZmljYXRpb24gb3IgdGhlIHBhcnR5J3MgYWdlbnQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD4oNCkgeW91ciBuYW1lLCBhZGRyZXNzLCBhbmQgdGVsZXBob25lIG51bWJlci48L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgKDUpIGEgc3RhdGVtZW50IHVuZGVyIHBlbmFsdHkgb2YgcGVyanVyeSB0aGF0IHlvdSBoYXZlIGEgZ29vZCBmYWl0aFxuICAgICAgICAgICAgICBiZWxpZWYgdGhhdCB0aGUgbWF0ZXJpYWwgaW4gcXVlc3Rpb24gd2FzIHJlbW92ZWQgb3IgZGlzYWJsZWQgYXMgYSByZXN1bHRcbiAgICAgICAgICAgICAgb2YgYSBtaXN0YWtlIG9yIG1pcyBpZGVudGlmaWNhdGlvbiBvZiB0aGUgbWF0ZXJpYWwgdG8gYmUgcmVtb3ZlZCBvclxuICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+KDYpIHlvdXIgcGh5c2ljYWwgb3IgZWxlY3Ryb25pYyBzaWduYXR1cmUuPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBzZW5kIHVzIGEgdmFsaWQsIHdyaXR0ZW4gQ291bnRlciBOb3RpZmljYXRpb24gbWVldGluZyB0aGVcbiAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBhYm92ZSwgd2Ugd2lsbCByZXN0b3JlIHlvdXIgcmVtb3ZlZCBvciBkaXNhYmxlZFxuICAgICAgICAgICAgICBtYXRlcmlhbCwgdW5sZXNzIHdlIGZpcnN0IHJlY2VpdmUgbm90aWNlIGZyb20gdGhlIHBhcnR5IGZpbGluZyB0aGVcbiAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIGluZm9ybWluZyB1cyB0aGF0IHN1Y2ggcGFydHkgaGFzIGZpbGVkIGEgY291cnQgYWN0aW9uIHRvXG4gICAgICAgICAgICAgIHJlc3RyYWluIHlvdSBmcm9tIGVuZ2FnaW5nIGluIGluZnJpbmdpbmcgYWN0aXZpdHkgcmVsYXRlZCB0byB0aGVcbiAgICAgICAgICAgICAgbWF0ZXJpYWwgaW4gcXVlc3Rpb24uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCBpZiB5b3UgbWF0ZXJpYWxseSBtaXNyZXByZXNlbnQgdGhhdCB0aGUgZGlzYWJsZWQgb3JcbiAgICAgICAgICAgICAgcmVtb3ZlZCBjb250ZW50IHdhcyByZW1vdmVkIGJ5IG1pc3Rha2Ugb3IgbWlzLWlkZW50aWZpY2F0aW9uLCB5b3UgbWF5IGJlXG4gICAgICAgICAgICAgIGxpYWJsZSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGNvc3RzIGFuZCBhdHRvcm5leSdzIGZlZXMuIEZpbGluZyBhIGZhbHNlXG4gICAgICAgICAgICAgIENvdW50ZXIgTm90aWZpY2F0aW9uIGNvbnN0aXR1dGVzIHBlcmp1cnkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgRGVzaWduYXRlZCBDb3B5cmlnaHQgQWdlbnRcbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIHt7IGNvbXBhbnlfbmFtZSB9fVxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgQXR0bjogQ29weXJpZ2h0IEFnZW50XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICB7eyBjb21wYW55X2VtYWlsIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+Q09QWVJJR0hUIElORlJJTkdFTUVOVFM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFdlIHJlc3BlY3QgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2Ygb3RoZXJzLiBJZiB5b3UgYmVsaWV2ZVxuICAgICAgICAgICAgICB0aGF0IGFueSBtYXRlcmlhbCBhdmFpbGFibGUgb24gb3IgdGhyb3VnaCB0aGUgU2l0ZSBpbmZyaW5nZXMgdXBvbiBhbnlcbiAgICAgICAgICAgICAgY29weXJpZ2h0IHlvdSBvd24gb3IgY29udHJvbCwgcGxlYXNlIGltbWVkaWF0ZWx5IG5vdGlmeSB1cyB1c2luZyB0aGVcbiAgICAgICAgICAgICAgY29udGFjdCBpbmZvcm1hdGlvbiBwcm92aWRlZCBiZWxvdyAoYSDigJxOb3RpZmljYXRpb27igJ0pLiBBIGNvcHkgb2YgeW91clxuICAgICAgICAgICAgICBOb3RpZmljYXRpb24gd2lsbCBiZSBzZW50IHRvIHRoZSBwZXJzb24gd2hvIHBvc3RlZCBvciBzdG9yZWQgdGhlXG4gICAgICAgICAgICAgIG1hdGVyaWFsIGFkZHJlc3NlZCBpbiB0aGUgTm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgcHVyc3VhbnQgdG8gZmVkZXJhbCBsYXcgeW91IG1heSBiZSBoZWxkIGxpYWJsZVxuICAgICAgICAgICAgICBmb3IgZGFtYWdlcyBpZiB5b3UgbWFrZSBtYXRlcmlhbCBtaXNyZXByZXNlbnRhdGlvbnMgaW4gYSBOb3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBhcmUgbm90IHN1cmUgdGhhdCBtYXRlcmlhbCBsb2NhdGVkIG9uIG9yIGxpbmtlZCB0byBieSB0aGVcbiAgICAgICAgICAgICAgU2l0ZSBpbmZyaW5nZXMgeW91ciBjb3B5cmlnaHQsIHlvdSBzaG91bGQgY29uc2lkZXIgZmlyc3QgY29udGFjdGluZyBhblxuICAgICAgICAgICAgICBhdHRvcm5leS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5URVJNIEFORCBURVJNSU5BVElPTjwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIHNoYWxsIHJlbWFpbiBpbiBmdWxsIGZvcmNlIGFuZCBlZmZlY3Qgd2hpbGUgeW91IHVzZVxuICAgICAgICAgICAgICB0aGUgU2l0ZS4gV0lUSE9VVCBMSU1JVElORyBBTlkgT1RIRVIgUFJPVklTSU9OIE9GIFRIRVNFIFRFUk1TIE9GIFVTRSwgV0VcbiAgICAgICAgICAgICAgUkVTRVJWRSBUSEUgUklHSFQgVE8sIElOIE9VUiBTT0xFIERJU0NSRVRJT04gQU5EIFdJVEhPVVQgTk9USUNFIE9SXG4gICAgICAgICAgICAgIExJQUJJTElUWSwgREVOWSBBQ0NFU1MgVE8gQU5EIFVTRSBPRiBUSEUgU0lURSAoSU5DTFVESU5HIEJMT0NLSU5HXG4gICAgICAgICAgICAgIENFUlRBSU4gSVAgQUREUkVTU0VTKSwgVE8gQU5ZIFBFUlNPTiBGT1IgQU5ZIFJFQVNPTiBPUiBGT1IgTk8gUkVBU09OLFxuICAgICAgICAgICAgICBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEZPUiBCUkVBQ0ggT0YgQU5ZIFJFUFJFU0VOVEFUSU9OLCBXQVJSQU5UWSxcbiAgICAgICAgICAgICAgT1IgQ09WRU5BTlQgQ09OVEFJTkVEIElOIFRIRVNFIFRFUk1TIE9GIFVTRSBPUiBPRiBBTlkgQVBQTElDQUJMRSBMQVcgT1JcbiAgICAgICAgICAgICAgUkVHVUxBVElPTi4gV0UgTUFZIFRFUk1JTkFURSBZT1VSIFVTRSBPUiBQQVJUSUNJUEFUSU9OIElOIFRIRSBTSVRFIE9SXG4gICAgICAgICAgICAgIERFTEVURSBZT1VSIEFDQ09VTlQgQU5EIEFOWSBDT05URU5UIE9SIElORk9STUFUSU9OIFRIQVQgWU9VIFBPU1RFRCBBVFxuICAgICAgICAgICAgICBBTlkgVElNRSwgV0lUSE9VVCBXQVJOSU5HLCBJTiBPVVIgU09MRSBESVNDUkVUSU9OLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHdlIHRlcm1pbmF0ZSBvciBzdXNwZW5kIHlvdXIgYWNjb3VudCBmb3IgYW55IHJlYXNvbiwgeW91IGFyZVxuICAgICAgICAgICAgICBwcm9oaWJpdGVkIGZyb20gcmVnaXN0ZXJpbmcgYW5kIGNyZWF0aW5nIGEgbmV3IGFjY291bnQgdW5kZXIgeW91ciBuYW1lLFxuICAgICAgICAgICAgICBhIGZha2Ugb3IgYm9ycm93ZWQgbmFtZSwgb3IgdGhlIG5hbWUgb2YgYW55IHRoaXJkIHBhcnR5LCBldmVuIGlmIHlvdSBtYXlcbiAgICAgICAgICAgICAgYmUgYWN0aW5nIG9uIGJlaGFsZiBvZiB0aGUgdGhpcmQgcGFydHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGVybWluYXRpbmcgb3Igc3VzcGVuZGluZyB5b3VyIGFjY291bnQsIHdlIHJlc2VydmUgdGhlXG4gICAgICAgICAgICAgIHJpZ2h0IHRvIHRha2UgYXBwcm9wcmlhdGUgbGVnYWwgYWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4gICAgICAgICAgICAgIHB1cnN1aW5nIGNpdmlsLCBjcmltaW5hbCwgYW5kIGluanVuY3RpdmUgcmVkcmVzcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5NT0RJRklDQVRJT05TIEFORCBJTlRFUlJVUFRJT05TPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSByZXNlcnZlIHRoZSByaWdodCB0byBjaGFuZ2UsIG1vZGlmeSwgb3IgcmVtb3ZlIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgICAgICAgICAgICAgU2l0ZSBhdCBhbnkgdGltZSBvciBmb3IgYW55IHJlYXNvbiBhdCBvdXIgc29sZSBkaXNjcmV0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICAgbm90aWNlLiBIb3dldmVyLCB3ZSBoYXZlIG5vIG9ibGlnYXRpb24gdG8gdXBkYXRlIGFueSBpbmZvcm1hdGlvbiBvbiBvdXJcbiAgICAgICAgICAgICAgU2l0ZS4gV2UgYWxzbyByZXNlcnZlIHRoZSByaWdodCB0byBtb2RpZnkgb3IgZGlzY29udGludWUgYWxsIG9yIHBhcnQgb2ZcbiAgICAgICAgICAgICAgdGhlIFNpdGUgd2l0aG91dCBub3RpY2UgYXQgYW55IHRpbWUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2Ugd2lsbCBub3QgYmUgbGlhYmxlIHRvIHlvdSBvciBhbnkgdGhpcmQgcGFydHkgZm9yIGFueSBtb2RpZmljYXRpb24sXG4gICAgICAgICAgICAgIHByaWNlIGNoYW5nZSwgc3VzcGVuc2lvbiwgb3IgZGlzY29udGludWFuY2Ugb2YgdGhlIFNpdGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgV2UgY2Fubm90IGd1YXJhbnRlZSB0aGUgU2l0ZSB3aWxsIGJlIGF2YWlsYWJsZSBhdCBhbGwgdGltZXMuIFdlIG1heVxuICAgICAgICAgICAgICBleHBlcmllbmNlIGhhcmR3YXJlLCBzb2Z0d2FyZSwgb3Igb3RoZXIgcHJvYmxlbXMgb3IgbmVlZCB0byBwZXJmb3JtXG4gICAgICAgICAgICAgIG1haW50ZW5hbmNlIHJlbGF0ZWQgdG8gdGhlIFNpdGUsIHJlc3VsdGluZyBpbiBpbnRlcnJ1cHRpb25zLCBkZWxheXMsIG9yXG4gICAgICAgICAgICAgIGVycm9ycy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSByZXNlcnZlIHRoZSByaWdodCB0byBjaGFuZ2UsIHJldmlzZSwgdXBkYXRlLCBzdXNwZW5kLCBkaXNjb250aW51ZSwgb3JcbiAgICAgICAgICAgICAgb3RoZXJ3aXNlIG1vZGlmeSB0aGUgU2l0ZSBhdCBhbnkgdGltZSBvciBmb3IgYW55IHJlYXNvbiB3aXRob3V0IG5vdGljZVxuICAgICAgICAgICAgICB0byB5b3UuIFlvdSBhZ3JlZSB0aGF0IHdlIGhhdmUgbm8gbGlhYmlsaXR5IHdoYXRzb2V2ZXIgZm9yIGFueSBsb3NzLFxuICAgICAgICAgICAgICBkYW1hZ2UsIG9yIGluY29udmVuaWVuY2UgY2F1c2VkIGJ5IHlvdXIgaW5hYmlsaXR5IHRvIGFjY2VzcyBvciB1c2UgdGhlXG4gICAgICAgICAgICAgIFNpdGUgZHVyaW5nIGFueSBkb3dudGltZSBvciBkaXNjb250aW51YW5jZSBvZiB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOb3RoaW5nIGluIHRoZXNlIFRlcm1zIG9mIFVzZSB3aWxsIGJlIGNvbnN0cnVlZCB0byBvYmxpZ2F0ZSB1cyB0b1xuICAgICAgICAgICAgICBtYWludGFpbiBhbmQgc3VwcG9ydCB0aGUgU2l0ZSBvciB0byBzdXBwbHkgYW55IGNvcnJlY3Rpb25zLCB1cGRhdGVzLCBvclxuICAgICAgICAgICAgICByZWxlYXNlcyBpbiBjb25uZWN0aW9uIHRoZXJld2l0aC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5HT1ZFUk5JTkcgTEFXPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBGb3IgYW55IGRpc3B1dGUgcmVsYXRpbmcgdG8gdGhlIGVudGVyaW5nIGludG8gZWZmZWN0LCB2YWxpZGl0eSxcbiAgICAgICAgICAgICAgaW50ZXJwcmV0YXRpb24sIGV4ZWN1dGlvbiwgc3VzcGVuc2lvbiwgdGVybWluYXRpb24gYW5kIGZvcmNpYmxlXG4gICAgICAgICAgICAgIGV4ZWN1dGlvbiBvZiB0aGlzIENvbnRyYWN0LCB0aGUgQ291cnRzIG9mIHRoZSBqdWRpY2lhbCBkaXN0cmljdCBvZlxuICAgICAgICAgICAgICBCcnVzc2VscyBoYXZlIGp1cmlzZGljdGlvbi4gQmVsZ2lhbiBsYXcgZ292ZXJucyB0aGlzIENvbnRyYWN0LCBleGNsdWRpbmdcbiAgICAgICAgICAgICAgcHJvdmlzaW9ucyBvZiBwcml2YXRlIGludGVybmF0aW9uYWwgbGF3IHBlcnRpbmVudCB0byB0aGUgYXBwbGljYWJsZSBsYXcsXG4gICAgICAgICAgICAgIGFuZCB0aGUgVmllbm5hIENvbnZlbnRpb24gb24gY29udHJhY3RzIGZvciB0aGUgaW50ZXJuYXRpb25hbCBzYWxlIG9mXG4gICAgICAgICAgICAgIHJlYWwgcHJvcGVydHkgKFZpZW5uYSwgQXByaWwgMTEsIDE5ODApLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJU1BVVEUgUkVTT0xVVElPTjwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlIHBhcnRpZXMgc2hhbGwgZW5kZWF2b3VyIHRvIHNldHRsZSBhbnkgZGlzcHV0ZSBhcmlzaW5nIG91dCBvZiBvclxuICAgICAgICAgICAgICByZWxhdGluZyB0byB0aGlzIGFncmVlbWVudCwgaW5jbHVkaW5nIHdpdGggcmVnYXJkIHRvIGl0cyBleGlzdGVuY2UsXG4gICAgICAgICAgICAgIHZhbGlkaXR5IG9yIHRlcm1pbmF0aW9uLCBieSBtZWRpYXRpb24gYmVmb3JlIGhhdmluZyByZWNvdXJzZSB0b1xuICAgICAgICAgICAgICBhcmJpdHJhdGlvbiBvciBsaXRpZ2F0aW9uLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEFueSBsZWdhbCBhY3Rpb24gb2Ygd2hhdGV2ZXIgbmF0dXJlIGJyb3VnaHQgYnkgZWl0aGVyIHlvdSBvciB1c1xuICAgICAgICAgICAgICAoY29sbGVjdGl2ZWx5LCB0aGUg4oCcUGFydGllc+KAnSBhbmQgaW5kaXZpZHVhbGx5LCBhIOKAnFBhcnR54oCdKSBzaGFsbCBiZVxuICAgICAgICAgICAgICBjb21tZW5jZWQgb3IgcHJvc2VjdXRlZCBpbiB0aGUgc3RhdGUgYW5kIGZlZGVyYWwgY291cnRzIGxvY2F0ZWQgaW5cbiAgICAgICAgICAgICAgQnJ1c3NlbHMsIEJlbGdpdW0sIGFuZCB0aGUgUGFydGllcyBoZXJlYnkgY29uc2VudCB0bywgYW5kIHdhaXZlIGFsbFxuICAgICAgICAgICAgICBkZWZlbnNlcyBvZiBsYWNrIG9mIHBlcnNvbmFsIGp1cmlzZGljdGlvbiBhbmQgZm9ydW0gbm9uIGNvbnZlbmllbnQgd2l0aFxuICAgICAgICAgICAgICByZXNwZWN0IHRvIHZlbnVlIGFuZCBqdXJpc2RpY3Rpb24gaW4gc3VjaCBzdGF0ZSBhbmQgZmVkZXJhbCBjb3VydHMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQXBwbGljYXRpb24gb2YgdGhlIFVuaXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24gQ29udHJhY3RzIGZvciB0aGVcbiAgICAgICAgICAgICAgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGFuZCB0aGUgVW5pZm9ybSBDb21wdXRlciBJbmZvcm1hdGlvblxuICAgICAgICAgICAgICBUcmFuc2FjdGlvbiBBY3QgKFVDSVRBKSBhcmUgZXhjbHVkZWQgZnJvbSB0aGVzZSBUZXJtcyBvZiBVc2UuIEluIG5vXG4gICAgICAgICAgICAgIGV2ZW50IHNoYWxsIGFueSBjbGFpbSwgYWN0aW9uLCBvciBwcm9jZWVkaW5nIGJyb3VnaHQgYnkgZWl0aGVyIFBhcnR5XG4gICAgICAgICAgICAgIHJlbGF0ZWQgaW4gYW55IHdheSB0byB0aGUgU2l0ZSBiZSBjb21tZW5jZWQgbW9yZSB0aGFuIDIgeWVhcnMgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5DT1JSRUNUSU9OUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlcmUgbWF5IGJlIGluZm9ybWF0aW9uIG9uIHRoZSBTaXRlIHRoYXQgY29udGFpbnMgdHlwb2dyYXBoaWNhbCBlcnJvcnMsXG4gICAgICAgICAgICAgIGluYWNjdXJhY2llcywgb3Igb21pc3Npb25zIHRoYXQgbWF5IHJlbGF0ZSB0byB0aGUgU2l0ZSwgaW5jbHVkaW5nXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9ucywgcHJpY2luZywgYXZhaWxhYmlsaXR5LCBhbmQgdmFyaW91cyBvdGhlciBpbmZvcm1hdGlvbi4gV2VcbiAgICAgICAgICAgICAgcmVzZXJ2ZSB0aGUgcmlnaHQgdG8gY29ycmVjdCBhbnkgZXJyb3JzLCBpbmFjY3VyYWNpZXMsIG9yIG9taXNzaW9ucyBhbmRcbiAgICAgICAgICAgICAgdG8gY2hhbmdlIG9yIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gb24gdGhlIFNpdGUgYXQgYW55IHRpbWUsIHdpdGhvdXRcbiAgICAgICAgICAgICAgcHJpb3Igbm90aWNlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkRJU0NMQUlNRVI8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRIRSBTSVRFIElTIFBST1ZJREVEIE9OIEFOIEFTLUlTIEFORCBBUy1BVkFJTEFCTEUgQkFTSVMuIFlPVSBBR1JFRSBUSEFUXG4gICAgICAgICAgICAgIFlPVVIgVVNFIE9GIFRIRSBTSVRFIEFORCBPVVIgU0VSVklDRVMgV0lMTCBCRSBBVCBZT1VSIFNPTEUgUklTSy4gVE8gVEhFXG4gICAgICAgICAgICAgIEZVTExFU1QgRVhURU5UIFBFUk1JVFRFRCBCWSBMQVcsIFdFIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTLCBFWFBSRVNTIE9SXG4gICAgICAgICAgICAgIElNUExJRUQsIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU0lURSBBTkQgWU9VUiBVU0UgVEhFUkVPRiwgSU5DTFVESU5HLFxuICAgICAgICAgICAgICBXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTXG4gICAgICAgICAgICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIFdFIE1BS0UgTk8gV0FSUkFOVElFUyBPUlxuICAgICAgICAgICAgICBSRVBSRVNFTlRBVElPTlMgQUJPVVQgVEhFIEFDQ1VSQUNZIE9SIENPTVBMRVRFTkVTUyBPRiBUSEUgU0lUReKAmVMgQ09OVEVOVFxuICAgICAgICAgICAgICBPUiBUSEUgQ09OVEVOVCBPRiBBTlkgV0VCU0lURVMgTElOS0VEIFRPIFRIRSBTSVRFIEFORCBXRSBXSUxMIEFTU1VNRSBOT1xuICAgICAgICAgICAgICBMSUFCSUxJVFkgT1IgUkVTUE9OU0lCSUxJVFkgRk9SIEFOWSAoMSkgRVJST1JTLCBNSVNUQUtFUywgT1JcbiAgICAgICAgICAgICAgSU5BQ0NVUkFDSUVTIE9GIENPTlRFTlQgQU5EIE1BVEVSSUFMUywgKDIpIFBFUlNPTkFMIElOSlVSWSBPUiBQUk9QRVJUWVxuICAgICAgICAgICAgICBEQU1BR0UsIE9GIEFOWSBOQVRVUkUgV0hBVFNPRVZFUiwgUkVTVUxUSU5HIEZST00gWU9VUiBBQ0NFU1MgVE8gQU5EIFVTRVxuICAgICAgICAgICAgICBPRiBUSEUgU0lURSwgKDMpIEFOWSBVTkFVVEhPUklaRUQgQUNDRVNTIFRPIE9SIFVTRSBPRiBPVVIgU0VDVVJFIFNFUlZFUlNcbiAgICAgICAgICAgICAgQU5EL09SIEFOWSBBTkQgQUxMIFBFUlNPTkFMIElORk9STUFUSU9OIEFORC9PUiBGSU5BTkNJQUwgSU5GT1JNQVRJT05cbiAgICAgICAgICAgICAgU1RPUkVEIFRIRVJFSU4sICg0KSBBTlkgSU5URVJSVVBUSU9OIE9SIENFU1NBVElPTiBPRiBUUkFOU01JU1NJT04gVE8gT1JcbiAgICAgICAgICAgICAgRlJPTSBUSEUgU0lURSwgKDUpIEFOWSBCVUdTLCBWSVJVU0VTLCBUUk9KQU4gSE9SU0VTLCBPUiBUSEUgTElLRSBXSElDSFxuICAgICAgICAgICAgICBNQVkgQkUgVFJBTlNNSVRURUQgVE8gT1IgVEhST1VHSCBUSEUgU0lURSBCWSBBTlkgVEhJUkQgUEFSVFksIEFORC9PUiAoNilcbiAgICAgICAgICAgICAgQU5ZIEVSUk9SUyBPUiBPTUlTU0lPTlMgSU4gQU5ZIENPTlRFTlQgQU5EIE1BVEVSSUFMUyBPUiBGT1IgQU5ZIExPU1MgT1JcbiAgICAgICAgICAgICAgREFNQUdFIE9GIEFOWSBLSU5EIElOQ1VSUkVEIEFTIEEgUkVTVUxUIE9GIFRIRSBVU0UgT0YgQU5ZIENPTlRFTlRcbiAgICAgICAgICAgICAgUE9TVEVELCBUUkFOU01JVFRFRCwgT1IgT1RIRVJXSVNFIE1BREUgQVZBSUxBQkxFIFZJQSBUSEUgU0lURS4gV0UgRE8gTk9UXG4gICAgICAgICAgICAgIFdBUlJBTlQsIEVORE9SU0UsIEdVQVJBTlRFRSwgT1IgQVNTVU1FIFJFU1BPTlNJQklMSVRZIEZPUiBBTlkgUFJPRFVDVCBPUlxuICAgICAgICAgICAgICBTRVJWSUNFIEFEVkVSVElTRUQgT1IgT0ZGRVJFRCBCWSBBIFRISVJEIFBBUlRZIFRIUk9VR0ggVEhFIFNJVEUsIEFOWVxuICAgICAgICAgICAgICBIWVBFUkxJTktFRCBXRUJTSVRFLCBPUiBBTlkgV0VCU0lURSBPUiBNT0JJTEUgQVBQTElDQVRJT04gRkVBVFVSRUQgSU5cbiAgICAgICAgICAgICAgQU5ZIEJBTk5FUiBPUiBPVEhFUiBBRFZFUlRJU0lORywgQU5EIFdFIFdJTEwgTk9UIEJFIEEgUEFSVFkgVE8gT1IgSU4gQU5ZXG4gICAgICAgICAgICAgIFdBWSBCRSBSRVNQT05TSUJMRSBGT1IgTU9OSVRPUklORyBBTlkgVFJBTlNBQ1RJT04gQkVUV0VFTiBZT1UgQU5EIEFOWVxuICAgICAgICAgICAgICBUSElSRC1QQVJUWSBQUk9WSURFUlMgT0YgUFJPRFVDVFMgT1IgU0VSVklDRVMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgQVMgV0lUSCBUSEUgUFVSQ0hBU0UgT0YgQSBQUk9EVUNUIE9SIFNFUlZJQ0UgVEhST1VHSCBBTlkgTUVESVVNIE9SIElOXG4gICAgICAgICAgICAgIEFOWSBFTlZJUk9OTUVOVCwgWU9VIFNIT1VMRCBVU0UgWU9VUiBCRVNUIEpVREdNRU5UIEFORCBFWEVSQ0lTRSBDQVVUSU9OXG4gICAgICAgICAgICAgIFdIRVJFIEFQUFJPUFJJQVRFLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkxJTUlUQVRJT05TIE9GIExJQUJJTElUWTwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSU4gTk8gRVZFTlQgV0lMTCBXRSBPUiBPVVIgRElSRUNUT1JTLCBFTVBMT1lFRVMsIE9SIEFHRU5UUyBCRSBMSUFCTEUgVE9cbiAgICAgICAgICAgICAgWU9VIE9SIEFOWSBUSElSRCBQQVJUWSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIENPTlNFUVVFTlRJQUwsXG4gICAgICAgICAgICAgIEVYRU1QTEFSWSwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgT1IgUFVOSVRJVkUgREFNQUdFUywgSU5DTFVESU5HIExPU1RcbiAgICAgICAgICAgICAgUFJPRklULCBMT1NUIFJFVkVOVUUsIExPU1MgT0YgREFUQSwgT1IgT1RIRVIgREFNQUdFUyBBUklTSU5HIEZST00gWU9VUlxuICAgICAgICAgICAgICBVU0UgT0YgVEhFIFNJVEUsIEVWRU4gSUYgV0UgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0hcbiAgICAgICAgICAgICAgREFNQUdFUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOT1RXSVRIU1RBTkRJTkcgQU5ZVEhJTkcgVE8gVEhFIENPTlRSQVJZIENPTlRBSU5FRCBIRVJFSU4sIE9VUiBMSUFCSUxJVFlcbiAgICAgICAgICAgICAgVE8gWU9VIEZPUiBBTlkgQ0FVU0UgV0hBVFNPRVZFUiBBTkQgUkVHQVJETEVTUyBPRiBUSEUgRk9STSBPRiBUSEVcbiAgICAgICAgICAgICAgQUNUSU9OLCBXSUxMIEFUIEFMTCBUSU1FUyBCRSBMSU1JVEVEIFRPIFRIRSBMRVNTRVIgT0YgVEhFIEFNT1VOVCBQQUlELFxuICAgICAgICAgICAgICBJRiBBTlksIEJZIFlPVSBUTyBVUyBEVVJJTkcgVEhFIDYgKFNJWCkgTU9OVEggUEVSSU9EIFBSSU9SIFRPIEFOWSBDQVVTRVxuICAgICAgICAgICAgICBPRiBBQ1RJT04gQVJJU0lORyBPUiAkMTAuMDAwIChURU4gVEhPVVNBTkQgRE9MTEFSUykuIENFUlRBSU4gU1RBVEUgTEFXU1xuICAgICAgICAgICAgICBETyBOT1QgQUxMT1cgTElNSVRBVElPTlMgT04gSU1QTElFRCBXQVJSQU5USUVTIE9SIFRIRSBFWENMVVNJT04gT1JcbiAgICAgICAgICAgICAgTElNSVRBVElPTiBPRiBDRVJUQUlOIERBTUFHRVMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgSUYgVEhFU0UgTEFXUyBBUFBMWSBUTyBZT1UsIFNPTUUgT1IgQUxMIE9GIFRIRSBBQk9WRSBESVNDTEFJTUVSUyBPUlxuICAgICAgICAgICAgICBMSU1JVEFUSU9OUyBNQVkgTk9UIEFQUExZIFRPIFlPVSwgQU5EIFlPVSBNQVkgSEFWRSBBRERJVElPTkFMIFJJR0hUUy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMj5JTkRFTU5JRklDQVRJT048L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSB0byBkZWZlbmQsIGluZGVtbmlmeSwgYW5kIGhvbGQgdXMgaGFybWxlc3MsIGluY2x1ZGluZyBvdXJcbiAgICAgICAgICAgICAgc3Vic2lkaWFyaWVzLCBhZmZpbGlhdGVzLCBhbmQgYWxsIG9mIG91ciByZXNwZWN0aXZlIG9mZmljZXJzLCBhZ2VudHMsXG4gICAgICAgICAgICAgIHBhcnRuZXJzLCBhbmQgZW1wbG95ZWVzLCBmcm9tIGFuZCBhZ2FpbnN0IGFueSBsb3NzLCBkYW1hZ2UsIGxpYWJpbGl0eSxcbiAgICAgICAgICAgICAgY2xhaW0sIG9yIGRlbWFuZCwgaW5jbHVkaW5nIHJlYXNvbmFibGUgYXR0b3JuZXlz4oCZIGZlZXMgYW5kIGV4cGVuc2VzLFxuICAgICAgICAgICAgICBtYWRlIGJ5IGFueSB0aGlyZCBwYXJ0eSBkdWUgdG8gb3IgYXJpc2luZyBvdXQgb2Y6ICgxKSB5b3VyXG4gICAgICAgICAgICAgIENvbnRyaWJ1dGlvbnM7ICgyKSB1c2Ugb2YgdGhlIFNpdGU7ICgzKSBicmVhY2ggb2YgdGhlc2UgVGVybXMgb2YgVXNlO1xuICAgICAgICAgICAgICAoNCkgYW55IGJyZWFjaCBvZiB5b3VyIHJlcHJlc2VudGF0aW9ucyBhbmQgd2FycmFudGllcyBzZXQgZm9ydGggaW4gdGhlc2VcbiAgICAgICAgICAgICAgVGVybXMgb2YgVXNlOyAoNSkgeW91ciB2aW9sYXRpb24gb2YgdGhlIHJpZ2h0cyBvZiBhIHRoaXJkIHBhcnR5LFxuICAgICAgICAgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHM7IG9yICg2KSBhbnlcbiAgICAgICAgICAgICAgb3ZlcnQgaGFybWZ1bCBhY3QgdG93YXJkIGFueSBvdGhlciB1c2VyIG9mIHRoZSBTaXRlIHdpdGggd2hvbSB5b3VcbiAgICAgICAgICAgICAgY29ubmVjdGVkIHZpYSB0aGUgU2l0ZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywgd2UgcmVzZXJ2ZSB0aGUgcmlnaHQsIGF0IHlvdXIgZXhwZW5zZSwgdG9cbiAgICAgICAgICAgICAgYXNzdW1lIHRoZSBleGNsdXNpdmUgZGVmZW5zZSBhbmQgY29udHJvbCBvZiBhbnkgbWF0dGVyIGZvciB3aGljaCB5b3UgYXJlXG4gICAgICAgICAgICAgIHJlcXVpcmVkIHRvIGluZGVtbmlmeSB1cywgYW5kIHlvdSBhZ3JlZSB0byBjb29wZXJhdGUsIGF0IHlvdXIgZXhwZW5zZSxcbiAgICAgICAgICAgICAgd2l0aCBvdXIgZGVmZW5zZSBvZiBzdWNoIGNsYWltcy4gV2Ugd2lsbCB1c2UgcmVhc29uYWJsZSBlZmZvcnRzIHRvXG4gICAgICAgICAgICAgIG5vdGlmeSB5b3Ugb2YgYW55IHN1Y2ggY2xhaW0sIGFjdGlvbiwgb3IgcHJvY2VlZGluZyB3aGljaCBpcyBzdWJqZWN0IHRvXG4gICAgICAgICAgICAgIHRoaXMgaW5kZW1uaWZpY2F0aW9uIHVwb24gYmVjb21pbmcgYXdhcmUgb2YgaXQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+VVNFUiBEQVRBPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBXZSB3aWxsIG1haW50YWluIGNlcnRhaW4gZGF0YSB0aGF0IHlvdSB0cmFuc21pdCB0byB0aGUgU2l0ZSBmb3IgdGhlXG4gICAgICAgICAgICAgIHB1cnBvc2Ugb2YgbWFuYWdpbmcgdGhlIFNpdGUsIGFzIHdlbGwgYXMgZGF0YSByZWxhdGluZyB0byB5b3VyIHVzZSBvZlxuICAgICAgICAgICAgICB0aGUgU2l0ZS4gQWx0aG91Z2ggd2UgcGVyZm9ybSByZWd1bGFyIHJvdXRpbmUgYmFja3VwcyBvZiBkYXRhLCB5b3UgYXJlXG4gICAgICAgICAgICAgIHNvbGVseSByZXNwb25zaWJsZSBmb3IgYWxsIGRhdGEgdGhhdCB5b3UgdHJhbnNtaXQgb3IgdGhhdCByZWxhdGVzIHRvIGFueVxuICAgICAgICAgICAgICBhY3Rpdml0eSB5b3UgaGF2ZSB1bmRlcnRha2VuIHVzaW5nIHRoZSBTaXRlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFlvdSBhZ3JlZSB0aGF0IHdlIHNoYWxsIGhhdmUgbm8gbGlhYmlsaXR5IHRvIHlvdSBmb3IgYW55IGxvc3Mgb3JcbiAgICAgICAgICAgICAgY29ycnVwdGlvbiBvZiBhbnkgc3VjaCBkYXRhLCBhbmQgeW91IGhlcmVieSB3YWl2ZSBhbnkgcmlnaHQgb2YgYWN0aW9uXG4gICAgICAgICAgICAgIGFnYWluc3QgdXMgYXJpc2luZyBmcm9tIGFueSBzdWNoIGxvc3Mgb3IgY29ycnVwdGlvbiBvZiBzdWNoIGRhdGEuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDI+RUxFQ1RST05JQyBDT01NVU5JQ0FUSU9OUywgVFJBTlNBQ1RJT05TLCBBTkQgU0lHTkFUVVJFUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVmlzaXRpbmcgdGhlIFNpdGUsIHNlbmRpbmcgdXMgZW1haWxzLCBhbmQgY29tcGxldGluZyBvbmxpbmUgZm9ybXNcbiAgICAgICAgICAgICAgY29uc3RpdHV0ZSBlbGVjdHJvbmljIGNvbW11bmljYXRpb25zLiBZb3UgY29uc2VudCB0byByZWNlaXZlIGVsZWN0cm9uaWNcbiAgICAgICAgICAgICAgY29tbXVuaWNhdGlvbnMsIGFuZCB5b3UgYWdyZWUgdGhhdCBhbGwgYWdyZWVtZW50cywgbm90aWNlcywgZGlzY2xvc3VyZXMsXG4gICAgICAgICAgICAgIGFuZCBvdGhlciBjb21tdW5pY2F0aW9ucyB3ZSBwcm92aWRlIHRvIHlvdSBlbGVjdHJvbmljYWxseSwgdmlhIGVtYWlsIGFuZFxuICAgICAgICAgICAgICBvbiB0aGUgU2l0ZSwgc2F0aXNmeSBhbnkgbGVnYWwgcmVxdWlyZW1lbnQgdGhhdCBzdWNoIGNvbW11bmljYXRpb24gYmUgaW5cbiAgICAgICAgICAgICAgd3JpdGluZy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBZT1UgSEVSRUJZIEFHUkVFIFRPIFRIRSBVU0UgT0YgRUxFQ1RST05JQyBTSUdOQVRVUkVTLCBDT05UUkFDVFMsIE9SREVSUyxcbiAgICAgICAgICAgICAgQU5EIE9USEVSIFJFQ09SRFMsIEFORCBUTyBFTEVDVFJPTklDIERFTElWRVJZIE9GIE5PVElDRVMsIFBPTElDSUVTLCBBTkRcbiAgICAgICAgICAgICAgUkVDT1JEUyBPRiBUUkFOU0FDVElPTlMgSU5JVElBVEVEIE9SIENPTVBMRVRFRCBCWSBVUyBPUiBWSUEgVEhFIFNJVEUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbnkgcmlnaHRzIG9yIHJlcXVpcmVtZW50cyB1bmRlciBhbnkgc3RhdHV0ZXMsXG4gICAgICAgICAgICAgIHJlZ3VsYXRpb25zLCBydWxlcywgb3JkaW5hbmNlcywgb3Igb3RoZXIgbGF3cyBpbiBhbnkganVyaXNkaWN0aW9uIHdoaWNoXG4gICAgICAgICAgICAgIHJlcXVpcmUgYW4gb3JpZ2luYWwgc2lnbmF0dXJlIG9yIGRlbGl2ZXJ5IG9yIHJldGVudGlvbiBvZiBub24tZWxlY3Ryb25pY1xuICAgICAgICAgICAgICByZWNvcmRzLCBvciB0byBwYXltZW50cyBvciB0aGUgZ3JhbnRpbmcgb2YgY3JlZGl0cyBieSBhbnkgbWVhbnMgb3RoZXJcbiAgICAgICAgICAgICAgdGhhbiBlbGVjdHJvbmljIG1lYW5zLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDI+TUlTQ0VMTEFORU9VUzwvaDI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlc2UgVGVybXMgb2YgVXNlIGFuZCBhbnkgcG9saWNpZXMgb3Igb3BlcmF0aW5nIHJ1bGVzIHBvc3RlZCBieSB1cyBvblxuICAgICAgICAgICAgICB0aGUgU2l0ZSBjb25zdGl0dXRlIHRoZSBlbnRpcmUgYWdyZWVtZW50IGFuZCB1bmRlcnN0YW5kaW5nIGJldHdlZW4geW91XG4gICAgICAgICAgICAgIGFuZCB1cy4gT3VyIGZhaWx1cmUgdG8gZXhlcmNpc2Ugb3IgZW5mb3JjZSBhbnkgcmlnaHQgb3IgcHJvdmlzaW9uIG9mXG4gICAgICAgICAgICAgIHRoZXNlIFRlcm1zIG9mIFVzZSBzaGFsbCBub3Qgb3BlcmF0ZSBhcyBhIHdhaXZlciBvZiBzdWNoIHJpZ2h0IG9yXG4gICAgICAgICAgICAgIHByb3Zpc2lvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBUaGVzZSBUZXJtcyBvZiBVc2Ugb3BlcmF0ZSB0byB0aGUgZnVsbGVzdCBleHRlbnQgcGVybWlzc2libGUgYnkgbGF3LiBXZVxuICAgICAgICAgICAgICBtYXkgYXNzaWduIGFueSBvciBhbGwgb2Ygb3VyIHJpZ2h0cyBhbmQgb2JsaWdhdGlvbnMgdG8gb3RoZXJzIGF0IGFueVxuICAgICAgICAgICAgICB0aW1lLiBXZSBzaGFsbCBub3QgYmUgcmVzcG9uc2libGUgb3IgbGlhYmxlIGZvciBhbnkgbG9zcywgZGFtYWdlLCBkZWxheSxcbiAgICAgICAgICAgICAgb3IgZmFpbHVyZSB0byBhY3QgY2F1c2VkIGJ5IGFueSBjYXVzZSBiZXlvbmQgb3VyIHJlYXNvbmFibGUgY29udHJvbC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJZiBhbnkgcHJvdmlzaW9uIG9yIHBhcnQgb2YgYSBwcm92aXNpb24gb2YgdGhlc2UgVGVybXMgb2YgVXNlIGlzXG4gICAgICAgICAgICAgIGRldGVybWluZWQgdG8gYmUgdW5sYXdmdWwsIHZvaWQsIG9yIHVuZW5mb3JjZWFibGUsIHRoYXQgcHJvdmlzaW9uIG9yXG4gICAgICAgICAgICAgIHBhcnQgb2YgdGhlIHByb3Zpc2lvbiBpcyBkZWVtZWQgc2V2ZXJhYmxlIGZyb20gdGhlc2UgVGVybXMgb2YgVXNlIGFuZFxuICAgICAgICAgICAgICBkb2VzIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IGFuZCBlbmZvcmNlYWJpbGl0eSBvZiBhbnkgcmVtYWluaW5nXG4gICAgICAgICAgICAgIHByb3Zpc2lvbnMuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gam9pbnQgdmVudHVyZSwgcGFydG5lcnNoaXAsIGVtcGxveW1lbnQgb3IgYWdlbmN5XG4gICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCBjcmVhdGVkIGJldHdlZW4geW91IGFuZCB1cyBhcyBhIHJlc3VsdCBvZiB0aGVzZSBUZXJtcyBvZlxuICAgICAgICAgICAgICBVc2Ugb3IgdXNlIG9mIHRoZSBTaXRlLiBZb3UgYWdyZWUgdGhhdCB0aGVzZSBUZXJtcyBvZiBVc2Ugd2lsbCBub3QgYmVcbiAgICAgICAgICAgICAgY29uc3RydWVkIGFnYWluc3QgdXMgYnkgdmlydHVlIG9mIGhhdmluZyBkcmFmdGVkIHRoZW0uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgWW91IGhlcmVieSB3YWl2ZSBhbnkgYW5kIGFsbCBkZWZlbnNlcyB5b3UgbWF5IGhhdmUgYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgIGVsZWN0cm9uaWMgZm9ybSBvZiB0aGVzZSBUZXJtcyBvZiBVc2UgYW5kIHRoZSBsYWNrIG9mIHNpZ25pbmcgYnkgdGhlXG4gICAgICAgICAgICAgIHBhcnRpZXMgaGVyZXRvIHRvIGV4ZWN1dGUgdGhlc2UgVGVybXMgb2YgVXNlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgyPkNPTlRBQ1QgVVM8L2gyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJlc29sdmUgYSBjb21wbGFpbnQgcmVnYXJkaW5nIHRoZSBTaXRlIG9yIHRvIHJlY2VpdmUgZnVydGhlclxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdXNlIG9mIHRoZSBTaXRlLCBwbGVhc2UgY29udGFjdCB1cyBhdDpcbiAgICAgICAgICAgICAgPGJyIC8+e3sgY29tcGFueV9uYW1lIH19LCB7eyBjb21wYW55X3N0cmVldCB9fSwge3sgY29tcGFueV9jaXR5X2NvZGUgfX1cbiAgICAgICAgICAgICAge3sgY29tcGFueV9jaXR5IH19IC0ge3sgY29tcGFueV9zdGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgzPlF1ZXN0aW9ucyBhbmQgQ29tbWVudHM8L2gzPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgYWJvdXQgdGhpcyBBZ3JlZW1lbnQsIHBsZWFzZVxuICAgICAgICAgICAgICA8YSBocmVmPVwibWFpbHRvOnt7IGNvbXBhbnlfZW1haWwgfX1cIj5sZXQgdXMga25vdzwvYT4uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48cHctbGFuZGluZy1wYWdlLWZvb3Rlci1iPjwvcHctbGFuZGluZy1wYWdlLWZvb3Rlci1iPlxuIl19