@parity/product-sdk-descriptors 0.0.0-dev.407.0 → 0.0.0-dev.409.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
  2. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +1033 -257
  3. package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +25 -0
  4. package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
  5. package/chains/paseo-asset-hub/generated/dist/index.js +5 -5
  6. package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +3 -0
  7. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  8. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +915 -114
  9. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +3 -0
  10. package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
  11. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +162 -303
  12. package/chains/previewnet-individuality/generated/dist/descriptors-BFolU1bo.js +25 -0
  13. package/chains/previewnet-individuality/generated/dist/index.js +5 -5
  14. package/chains/previewnet-individuality/generated/dist/metadataTypes-DrB-HZYT.js +3 -0
  15. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  16. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +190 -365
  17. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bqj-d95E.js +3 -0
  18. package/package.json +1 -1
  19. package/chains/paseo-asset-hub/generated/dist/descriptors-DYdxAxn9.js +0 -25
  20. package/chains/paseo-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +0 -3
  21. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-DolGICyF.js +0 -3
  22. package/chains/previewnet-individuality/generated/dist/descriptors-BSwriMav.js +0 -25
  23. package/chains/previewnet-individuality/generated/dist/metadataTypes-B2aDvcHG.js +0 -3
  24. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-C8MsIfh4.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRD9EwAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHoGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAD0BAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIADROZXR3b3JrU3VmZml4BABlAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgCaACBCYWxhbmNlcwQAbQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAIEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAiQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQArQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EALEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAvQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAwQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAMEDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBADFAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBADJAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQA0QMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADlAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQALQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAA5BAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQARQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBABJBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAFUEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAGkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMkEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEANkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQA3QQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBTY2FyY2l0eQQA5QQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NhcmNpdHksIFJ1bnRpbWU+ADoADFBzbQQA+QQBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHNtLCBSdW50aW1lPgA7ACBUcmVhc3VyeQQABQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEABEFAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAJQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEADkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAD0FAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBABBBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEAEUFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBABNBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQADERhcAQAUQUBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGFwLCBSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EAGkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBACBBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAtQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Vm90ZXJMaXN0LCBSdW50aW1lPgBSADxTdGFraW5nUmNDbGllbnQEALkFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmdSY0NsaWVudCwgUnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBADdBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb24sIFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBAARBgH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllciwgUnVudGltZT4AVgBoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQEABUGAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkLCBSdW50aW1lPgBXAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAO0GAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZCwgUnVudGltZT4AWAAcU3Rha2luZwQA9QYBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4AWQAkTmZ0Q2xhaW1zBABBBwG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRDbGFpbXMsIFJ1bnRpbWU+AGAARE1lbWJlcnNTdWJzY3JpYmVyBAB1BwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzU3Vic2NyaWJlciwgUnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQAmQcByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QWxpYXNBY2NvdW50cywgUnVudGltZT4AYgAQUGdhcwQApQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGdhcywgUnVudGltZT4AYwAYUmV2aXZlBACtBwGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAvQcBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RG90bnNHYXRld2F5LCBSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQA0QcB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8T3JpZ2luUmVzdHJpY3Rpb24sIFJ1bnRpbWU+AJkAEFN1ZG8EANkHAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+APsAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBBDYWxsBARUAAEUNG5vdGVfcHJlaW1hZ2UEARRieXRlcxgBHFZlYzx1OD4AABB0UmVnaXN0ZXIgYSBwcmVpbWFnZSBvbi1jaGFpbi4AVQFJZiB0aGUgcHJlaW1hZ2Ugd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkLCBubyBmZWVzIG9yIGRlcG9zaXRzIGFyZSB0YWtlbiBmb3IgcHJvdmlkaW5nVQF0aGUgcHJlaW1hZ2UuIE90aGVyd2lzZSwgYSBkZXBvc2l0IGlzIHRha2VuIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJlaW1hZ2UuPHVubm90ZV9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAEY3ENsZWFyIGFuIHVucmVxdWVzdGVkIHByZWltYWdlIGZyb20gdGhlIHJ1bnRpbWUgc3RvcmFnZS4A/ElmIGBsZW5gIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgYSBtdWNoIGNoZWFwZXIgb3BlcmF0aW9uLgABAS0gYGhhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJlaW1hZ2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yZS64LSBgbGVuYDogVGhlIGxlbmd0aCBvZiB0aGUgcHJlaW1hZ2Ugb2YgYGhhc2hgLkByZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAhBBAVJlcXVlc3QgYSBwcmVpbWFnZSBiZSB1cGxvYWRlZCB0byB0aGUgY2hhaW4gd2l0aG91dCBwYXlpbmcgYW55IGZlZXMgb3IgZGVwb3NpdHMuAFUBSWYgdGhlIHByZWltYWdlIHJlcXVlc3RzIGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQgb24tY2hhaW4sIHdlIHVucmVzZXJ2ZSBhbnkgZGVwb3NpdDkBYSB1c2VyIG1heSBoYXZlIHBhaWQsIGFuZCB0YWtlIHRoZSBjb250cm9sIG9mIHRoZSBwcmVpbWFnZSBvdXQgb2YgdGhlaXIgaGFuZHMuSHVucmVxdWVzdF9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAMMvENsZWFyIGEgcHJldmlvdXNseSBtYWRlIHJlcXVlc3QgZm9yIGEgcHJlaW1hZ2UuAC0BTk9URTogVEhJUyBNVVNUIE5PVCBCRSBDQUxMRUQgT04gYGhhc2hgIE1PUkUgVElNRVMgVEhBTiBgcmVxdWVzdF9wcmVpbWFnZWAuOGVuc3VyZV91cGRhdGVkBAEYaGFzaGVzwAEwVmVjPFQ6Okhhc2g+AAQMvEVuc3VyZSB0aGF0IHRoZSBidWxrIG9mIHByZS1pbWFnZXMgaXMgdXBncmFkZWQuAD0BVGhlIGNhbGxlciBwYXlzIG5vIGZlZSBpZiBhdCBsZWFzdCA5MCUgb2YgcHJlLWltYWdlcyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7AAAACPADEDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBBDYWxsBARUAAEoIHNjaGVkdWxlEAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABHBBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2suGGNhbmNlbAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEQYQFDYW5jZWwgYSBzY2hlZHVsZWQgdGFzayAobmFtZWQgb3IgYW5vbnltb3VzKSwgYnkgcHJvdmlkaW5nIHRoZSBibG9jayBpdCBpcyBzY2hlZHVsZWQgZm9yGQFleGVjdXRpb24gaW4sIGFzIHdlbGwgYXMgdGhlIGluZGV4IG9mIHRoZSB0YXNrIGluIHRoYXQgYmxvY2sncyBhZ2VuZGEuADUBSW4gdGhlIGNhc2Ugb2YgYSBuYW1lZCB0YXNrLCBpdCB3aWxsIHJlbW92ZSBpdCBmcm9tIHRoZSBsb29rdXAgdGFibGUgYXMgd2VsbC44c2NoZWR1bGVfbmFtZWQUAQhpZAgBIFRhc2tOYW1lAAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACBFhTY2hlZHVsZSBhIG5hbWVkIHRhc2suMGNhbmNlbF9uYW1lZAQBCGlkCAEgVGFza05hbWUAAwR4Q2FuY2VsIGEgbmFtZWQgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX2FmdGVyEAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABASoQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrIGFmdGVyIGEgZGVsYXkuUHNjaGVkdWxlX25hbWVkX2FmdGVyFAEIaWQIASBUYXNrTmFtZQABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAUEkFNjaGVkdWxlIGEgbmFtZWQgdGFzayBhZnRlciBhIGRlbGF5LiRzZXRfcmV0cnkMARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABjhZAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdCB3aWxsVQFiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsIGl0JHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ALQFUaGlzIGNhbGwgKipjYW5ub3QqKiBiZSB1c2VkIHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay48c2V0X3JldHJ5X25hbWVkDAEIaWQIASBUYXNrTmFtZQABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAc4XQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXRdAXdpbGwgYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbDBpdCBzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAA0BVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjBjYW5jZWxfcmV0cnkEARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsgEGE9wdGlvbgQEVAHMAQgQTm9uZQAAABBTb21lBADMAAABAADMAAAECDg4ANAMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBBDYWxsBARUAAEENHNldF9wYXJhbWV0ZXIEASRrZXlfdmFsdWXUAVBUOjpSdW50aW1lUGFyYW1ldGVycwAAEHRTZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgYEFkbWluT3JpZ2luYCBmb3IgdGhlIGdpdmVuIGBrZXlgLiBWYWx1ZXMgYmWIZGVsZXRlZCBieSBzZXR0aW5nIHRoZW0gdG8gYE5vbmVgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7UCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lRFJ1bnRpbWVQYXJhbWV0ZXJzAAEQPFN0YWtpbmdFbGVjdGlvbgQA2AGwZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMAAAAkU2NoZWR1bGVyBAABAQGUZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycwABADBNZXNzYWdlUXVldWUEABUBAaRkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycwACADRBbGlhc0FjY291bnRzBAAlAQGoZHluYW1pY19wYXJhbXM6OmFsaWFzX2FjY291bnRzOjpQYXJhbWV0ZXJzAAMAANgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCADcASxTaWduZWRQaGFzZQAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAOABLE9wdGlvbjx1MzI+AAEANFVuc2lnbmVkUGhhc2UIAOgBNFVuc2lnbmVkUGhhc2UAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgA7AEoTWluZXJQYWdlcwAA4AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAPABRE1heEVsZWN0aW5nVm90ZXJzAADgASxPcHRpb248dTMyPgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrCAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADgASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggA+AE4TWF4RXJhRHVyYXRpb24AAPwBLE9wdGlvbjx1NjQ+AAYAANwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADgBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA5BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAOgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRVbnNpZ25lZFBoYXNlAAAAAOwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPAQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAAD0EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25YVGFyZ2V0U25hcHNob3RQZXJCbG9jawAAAAD4EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAA/AQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAAEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcihQYXJhbWV0ZXJzAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrCAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAOABLE9wdGlvbjx1MzI+AAAANE1heGltdW1XZWlnaHQIAAkBATRNYXhpbXVtV2VpZ2h0AAANAQE4T3B0aW9uPFdlaWdodD4AAQAABQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAAkBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRNYXhpbXVtV2VpZ2h0AAAAAA0BBBhPcHRpb24EBFQBEQEBCBBOb25lAAAAEFNvbWUEABEBAAABAAARAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAABUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWUoUGFyYW1ldGVycwABCDxNYXhPbkluaXRXZWlnaHQIABkBATxNYXhPbkluaXRXZWlnaHQAAB0BAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAAAPE1heE9uSWRsZVdlaWdodAgAIQEBPE1heE9uSWRsZVdlaWdodAAAHQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAQAAGQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAHQEEGE9wdGlvbgQEVAENAQEIEE5vbmUAAAAQU29tZQQADQEAAAEAACEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25JZGxlV2VpZ2h0AAAAACUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zOGFsaWFzX2FjY291bnRzKFBhcmFtZXRlcnMAAQggQWxpYXNGZWUIACkBASBBbGlhc0ZlZQAALQEBXE9wdGlvbjxPcHRpb248QmFsYW5jZT4+AAAAXFN0YWxlQWxpYXNTd2VlcEludGVydmFsCAA5AQFcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAQAAKQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHMgQWxpYXNGZWUAAAAALQEEGE9wdGlvbgQEVAExAQEIEE5vbmUAAAAQU29tZQQAMQEAAAEAADEBBBhPcHRpb24EBFQBNQEBCBBOb25lAAAAEFNvbWUEADUBAAABAAA1AQAABQcAOQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHNcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAAAAPQEMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBBDYWxsBARUAAEQQGZvcmNlX3NldF9jdXJzb3IEARhjdXJzb3JBAQFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yUQEBWE9wdGlvbjxSYXdDdXJzb3JPZjxUPj4AAShzdGFydGVkX2F04AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABGFkBQWxsb3dzIHJvb3QgdG8gc2V0IGFuIGFjdGl2ZSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydC9mb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ARQFUaGlzIGlzIGFuIGVkZ2UtY2FzZSB2ZXJzaW9uIG9mIFtgU2VsZjo6Zm9yY2Vfc2V0X2N1cnNvcmBdIHRoYXQgYWxsb3dzIHRvIHNldCB0aGVhAWBzdGFydGVkX2F0YCB2YWx1ZSB0byB0aGUgbmV4dCBibG9jayBudW1iZXIuIE90aGVyd2lzZSB0aGlzIHdvdWxkIG5vdCBiZSBwb3NzaWJsZSwgc2luY2VFAWBmb3JjZV9zZXRfY3Vyc29yYCB0YWtlcyBhbiBhYnNvbHV0ZSBibG9jayBudW1iZXIuIFNldHRpbmcgYHN0YXJ0ZWRfYXRgIHRvIGBOb25lYAEBaW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIHBsdXMgb25lIHNob3VsZCBiZSB1c2VkLkhmb3JjZV9vbmJvYXJkX21ibXMAAhCgRm9yY2VzIHRoZSBvbmJvYXJkaW5nIG9mIHRoZSBtaWdyYXRpb25zLgBdAVRoaXMgcHJvY2VzcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgb24gYSBydW50aW1lIHVwZ3JhZGUuIEl0IGlzIGluIHBsYWNlIGFzIGFuIGVtZXJnZW5jefxtZWFzdXJlbWVudC4gVGhlIGN1cnNvciBuZWVkcyB0byBiZSBgTm9uZWAgZm9yIHRoaXMgdG8gc3VjY2VlZC44Y2xlYXJfaGlzdG9yaWMEASBzZWxlY3RvclUBAaBIaXN0b3JpY0NsZWFudXBTZWxlY3RvcjxJZGVudGlmaWVyT2Y8VD4+AAMUaENsZWFycyB0aGUgYEhpc3RvcmljYCBzZXQuAA0BYG1hcF9jdXJzb3JgIG11c3QgYmUgc2V0IHRvIHRoZSBsYXN0IHZhbHVlIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZV0BYEhpc3RvcmljQ2xlYXJlZGAgZXZlbnQuIFRoZSBmaXJzdCB0aW1lIGBOb25lYCBjYW4gYmUgdXNlZC4gYGxpbWl0YCBtdXN0IGJlIGNob3NlbiBpbiBhqHdheSB0aGF0IHdpbGwgcmVzdWx0IGluIGEgc2Vuc2libGUgd2VpZ2h0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BAQQYT3B0aW9uBARUAUUBAQgQTm9uZQAAABBTb21lBABFAQAAAQAARQEIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAUkBLEJsb2NrTnVtYmVyATgBCBhBY3RpdmUEAE0BAYRBY3RpdmVDdXJzb3I8Q3Vyc29yLCBCbG9ja051bWJlcj4AAAAUU3R1Y2sAAQAASQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABNAQhEcGFsbGV0X21pZ3JhdGlvbnMwQWN0aXZlQ3Vyc29yCBhDdXJzb3IBSQEsQmxvY2tOdW1iZXIBOAAMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvclEBAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAAUQEEGE9wdGlvbgQEVAFJAQEIEE5vbmUAAAAQU29tZQQASQEAAAEAAFUBCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQBWQEBCCBTcGVjaWZpYwQAXQEBHFZlYzxJZD4AAAAgV2lsZGNhcmQIARRsaW1pdOABLE9wdGlvbjx1MzI+AAE8cHJldmlvdXNfY3Vyc29yYQEBPE9wdGlvbjxWZWM8dTg+PgABAABZAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAF0BAAACWQEAYQEEGE9wdGlvbgQEVAEYAQgQTm9uZQAAABBTb21lBAAYAAABAABlAQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBBDYWxsBARUAAEESHNldF9uZXR3b3JrX3N1ZmZpeAQBOG5ldHdvcmtfc3VmZml4aQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAAABPxTZXQgdGhlIG5ldHdvcmsgc3VmZml4IHVzZWQgYnkgYWxsIHByb2R1Y3QtY29udGV4dCBkZXJpdmF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABtAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hveQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlcQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9ufQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YXEBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZXEBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZXUBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBAAAGNQEAdQEAAAUAAHkBAAACBAB9AQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAgQEMOHBhbGxldF92ZXN0aW5nGHBhbGxldBBDYWxsBARUAAEYEHZlc3QAACS4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgdGhlIHNlbmRlciBhY2NvdW50LgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLih2ZXN0X290aGVyBAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASy4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgYSBgdGFyZ2V0YCBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgd2hvc2UgdmVzdGVkIGZ1bmRzIHNob3VsZCBiZSB1bmxvY2tlZC4gTXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPHZlc3RlZF90cmFuc2ZlcggBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGWFAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGWFAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAzhgRm9yY2UgYSB2ZXN0ZWQgdHJhbnNmZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAOgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB3aG9zZSBmdW5kcyBzaG91bGQgYmUgdHJhbnNmZXJyZWQuEQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0aGF0IHNob3VsZCBiZSB0cmFuc2ZlcnJlZCB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPG1lcmdlX3NjaGVkdWxlcwgBPHNjaGVkdWxlMV9pbmRleDgBDHUzMgABPHNjaGVkdWxlMl9pbmRleDgBDHUzMgAEVF0BTWVyZ2UgdHdvIHZlc3Rpbmcgc2NoZWR1bGVzIHRvZ2V0aGVyLCBjcmVhdGluZyBhIG5ldyB2ZXN0aW5nIHNjaGVkdWxlIHRoYXQgdW5sb2NrcyBvdmVyVQF0aGUgaGlnaGVzdCBwb3NzaWJsZSBzdGFydCBhbmQgZW5kIGJsb2Nrcy4gSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBhbHJlYWR5IHN0YXJ0ZWQgdGhlWQFjdXJyZW50IGJsb2NrIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2NoZWR1bGUgc3RhcnQ7IHdpdGggdGhlIGNhdmVhdCB0aGF0IGlmIG9uZSBzY2hlZHVsZV0BaXMgZmluaXNoZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIHRoZSBvdGhlciB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIG5ldyBtZXJnZWQgc2NoZWR1bGUsLHVubW9kaWZpZWQuAPhOT1RFOiBJZiBgc2NoZWR1bGUxX2luZGV4ID09IHNjaGVkdWxlMl9pbmRleGAgdGhpcyBpcyBhIG5vLW9wLkEBTk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2sgcHJpb3IgdG8gbWVyZ2luZy5hAU5PVEU6IElmIGJvdGggc2NoZWR1bGVzIGhhdmUgZW5kZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIG5vIG5ldyBzY2hlZHVsZSB3aWxsIGJlIGNyZWF0ZWRkYW5kIGJvdGggd2lsbCBiZSByZW1vdmVkLgBsTWVyZ2VkIHNjaGVkdWxlIGF0dHJpYnV0ZXM6NQEtIGBzdGFydGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLnN0YXJ0aW5nX2Jsb2NrLCBzY2hlZHVsZWQyLnN0YXJ0aW5nX2Jsb2NrLEggIGN1cnJlbnRfYmxvY2spYC4hAS0gYGVuZGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLmVuZGluZ19ibG9jaywgc2NoZWR1bGUyLmVuZGluZ19ibG9jaylgLlkBLSBgbG9ja2VkYDogYHNjaGVkdWxlMS5sb2NrZWRfYXQoY3VycmVudF9ibG9jaykgKyBzY2hlZHVsZTIubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDoLSBgc2NoZWR1bGUxX2luZGV4YDogaW5kZXggb2YgdGhlIGZpcnN0IHNjaGVkdWxlIHRvIG1lcmdlLuwtIGBzY2hlZHVsZTJfaW5kZXhgOiBpbmRleCBvZiB0aGUgc2Vjb25kIHNjaGVkdWxlIHRvIG1lcmdlLnRmb3JjZV9yZW1vdmVfdmVzdGluZ19zY2hlZHVsZQgBGHRhcmdldAABjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FAQw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkNQEBHEJhbGFuY2UAASRwZXJfYmxvY2s1AQEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrOAEsQmxvY2tOdW1iZXIAAIkBEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0EENhbGwEBFQAARQUY2xhaW0IARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJljQEBOEVjZHNhU2lnbmF0dXJlAABgiE1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246BQFBIGNhbGwgdG8gY2xhaW0gaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOpQ+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpAKRhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7gV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbWAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1pbnRfY2xhaW0QAQx3aG+VAQE8RXRoZXJldW1BZGRyZXNzAAEUdmFsdWU1AQEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZZkBAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50oQEBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZY0BAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xklQEBPEV0aGVyZXVtQWRkcmVzcwABDG5ld5UBATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbakBAVBPcHRpb248VDo6QWNjb3VudElkPgAEAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6NAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zOEVjZHNhU2lnbmF0dXJlAAAEAJEBASBbdTg7IDY1XQAAkQEAAANBAAAADACVAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zPEV0aGVyZXVtQWRkcmVzcwAABAAcASBbdTg7IDIwXQAAmQEEGE9wdGlvbgQEVAGdAQEIEE5vbmUAAAAQU29tZQQAnQEAAAEAAJ0BAAAEDDUBNQE4AKEBBBhPcHRpb24EBFQBpQEBCBBOb25lAAAAEFNvbWUEAKUBAAABAAClAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAKkBBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAArQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXd5AQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kNQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXO1AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutQEIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmG5AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAuQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAvQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2VNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOJAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WNAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbhkCATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u4AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27FAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZHUBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGW5AwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZL0DAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGW5AwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3RNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXP8ASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAMkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQA5QEBMHY0OjpMb2NhdGlvbgAEAAhWNQQAGQIBMHY1OjpMb2NhdGlvbgAFAADJARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcs0BASRKdW5jdGlvbnMAAM0BEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADRAQEgSnVuY3Rpb24AAQAIWDIIANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAIACFgzDADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAMACFg0EADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABAAIWDUUANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAUACFg2GADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAYACFg3HADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABwAIWDggANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAgAANEBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr1QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvVAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr1QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA2QEBJE5ldHdvcmtJZAAJAADVAQQYT3B0aW9uBARUAdkBAQgQTm9uZQAAABBTb21lBADZAQAAAQAA2QEQDHhjbQh2MyBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA3QEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAOEBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAADlARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y6QEBJEp1bmN0aW9ucwAA6QEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA7QEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA/QEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAAQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQABQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQACQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQADQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAEQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAFQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADtAQAAAwEAAADxAQDxARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmv1AQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA+QEBJE5ldHdvcmtJZAAJAAD1AQQYT3B0aW9uBARUAfkBAQgQTm9uZQAAABBTb21lBAD5AQAAAQAA+QEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD9AQAAAwIAAADxAQABAgAAAwMAAADxAQAFAgAAAwQAAADxAQAJAgAAAwUAAADxAQANAgAAAwYAAADxAQARAgAAAwcAAADxAQAVAgAAAwgAAADxAQAZAhAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yHQIBJEp1bmN0aW9ucwAAHQIQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAIQIBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAMQIBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQANQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAOQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAPQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAQQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQARQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQASQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAAAhAgAAAwEAAAAlAgAlAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrKQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmspAgFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrKQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQALQIBJE5ldHdvcmtJZAAJAAApAgQYT3B0aW9uBARUAS0CAQgQTm9uZQAAABBTb21lBAAtAgAAAQAALQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uJE5ldHdvcmtJZAABICRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAADECAAADAgAAACUCADUCAAADAwAAACUCADkCAAADBAAAACUCAD0CAAADBQAAACUCAEECAAADBgAAACUCAEUCAAADBwAAACUCAEkCAAADCAAAACUCAE0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAUQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BADFAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEABEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAABRAgwMeGNtCHYzDFhjbQQQQ2FsbAAABABVAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAVQIAAAJZAgBZAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAF0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAF0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABdAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlfQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVypQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzXQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbK0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEALECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5yQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMkBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmW1AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRdAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc2UCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABRAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABRAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABGHRpY2tldMkBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAXQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABdAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAClAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+xAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACxAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya9kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldGUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLJAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARh0YXJnZXTJAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARRvd25lcskBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldGUCAShNdWx0aUFzc2V0AAEYbG9ja2VyyQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lupQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABdAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQAYQIBPFZlYzxNdWx0aUFzc2V0PgAAYQIAAAJlAgBlAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRpAgEcQXNzZXRJZAABDGZ1bm0CASxGdW5naWJpbGl0eQAAaQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAMkBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABtAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAHEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABxAgE0QXNzZXRJbnN0YW5jZQABAABxAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAHEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAHUCARxbdTg7IDhdAAMAHEFycmF5MTYEAHkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAB1AgAAAwgAAAAMAHkCAAADEAAAAAwAfQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAXQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACNAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAJ0CAThNYXliZUVycm9yQ29kZQAFAACBAgQYT3B0aW9uBARUAYUCAQgQTm9uZQAAABBTb21lBACFAgAAAQAAhQIAAAQIOIkCAIkCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAjQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRAgRTAAAEAJkCARhWZWM8VD4AAJECDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1llQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWWVAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAJUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAmQIAAAKRAgCdAgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAKECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQAoQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAKECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAApQIEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAAKkCDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAAK0CDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AALECDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uyQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAAtQIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAF0CASxNdWx0aUFzc2V0cwAAABBXaWxkBAC5AgE4V2lsZE11bHRpQXNzZXQAAQAAuQIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkaQIBHEFzc2V0SWQAAQxmdW69AgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZGkCARxBc3NldElkAAEMZnVuvQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAL0CEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAwQIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAEQEBGFdlaWdodAABAADFAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAMkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AADJAgAAAs0CAM0CDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADRAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA0QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADRAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZekCASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcv0CAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPRAgEYQXNzZXRzAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbK0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOkBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAABAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZQUDASxBc3NldEZpbHRlcgABEHdhbnTRAgEYQXNzZXRzAAEcbWF4aW1hbHUBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc9kCARRBc3NldAABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAxQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAxQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEYdGlja2V05QEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA0QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA0QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAP0CAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAABAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbukBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTZAgEUQXNzZXQAASB1bmxvY2tlcuUBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V02QIBFEFzc2V0AAEYdGFyZ2V05QEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTZAgEUQXNzZXQAARRvd25lcuUBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTZAgEUQXNzZXQAARhsb2NrZXLlAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA5QEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbv0CAUBPcHRpb248TG9jYXRpb24+AC8AANECECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQA1QIBKFZlYzxBc3NldD4AANUCAAAC2QIA2QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZN0CARxBc3NldElkAAEMZnVu4QIBLEZ1bmdpYmlsaXR5AADdAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABADlAQEgTG9jYXRpb24AAOECECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAcQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAOUCATRBc3NldEluc3RhbmNlAAEAAOUCECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAcQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAdQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAeQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAOkCDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQA0QIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAIECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQA7QIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACdAgE4TWF5YmVFcnJvckNvZGUABQAA7QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHxAgRTAAAEAPkCARhWZWM8VD4AAPECDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWX1AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZfUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA9QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD5AgAAAvECAP0CBBhPcHRpb24EBFQB5QEBCBBOb25lAAAAEFNvbWUEAOUBAAABAAABAwwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u5QEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAAUDECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQA0QIBGEFzc2V0cwAAABBXaWxkBAAJAwEkV2lsZEFzc2V0AAEAAAkDECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWTdAgEcQXNzZXRJZAABDGZ1bg0DATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlk3QIBHEFzc2V0SWQAAQxmdW4NAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAADQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAARAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEABUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAVAwAAAhkDABkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAAdAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZTUDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllclUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnkZAgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMdAwEYQXNzZXRzAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxsrQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAHQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlXQMBLEFzc2V0RmlsdGVyAAEQd2FudB0DARhBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlGQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABEGRlc3QZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c10DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAARAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAARAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0DARhBc3NldHMAARh0aWNrZXQZAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAVQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEADkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAJQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrLQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uHQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABIHVubG9ja2VyGQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAwEUQXNzZXQAARh0YXJnZXQZAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldCUDARRBc3NldAABFG93bmVyGQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUDARRBc3NldAABGGxvY2tlchkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAZAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luVQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0JQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzaQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbnUBARBib29sAAEYYXNzZXRzcQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbREDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW55AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtEQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzfQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAAdAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEACEDAShWZWM8QXNzZXQ+AAAhAwAAAiUDACUDECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWQpAwEcQXNzZXRJZAABDGZ1bi0DASxGdW5naWJpbGl0eQAAKQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQAGQIBIExvY2F0aW9uAAAtAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAHEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAxAwE0QXNzZXRJbnN0YW5jZQABAAAxAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAHEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAHUCARxbdTg7IDhdAAMAHEFycmF5MTYEAHkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAA1Awwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0DARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAA5AwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAEUDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAnQIBOE1heWJlRXJyb3JDb2RlAAUAADkDBBhPcHRpb24EBFQBPQMBCBBOb25lAAAAEFNvbWUEAD0DAAABAAA9AwAABAg4QQMAQQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEABEBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAEUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBSQMEUwAABABRAwEYVmVjPFQ+AABJAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lTQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVNAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAE0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAUQMAAAJJAwBVAwQYT3B0aW9uBARUARkCAQgQTm9uZQAAABBTb21lBAAZAgAAAQAAWQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AABdAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAB0DARhBc3NldHMAAAAQV2lsZAQAYQMBJFdpbGRBc3NldAABAABhAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkKQMBHEFzc2V0SWQAAQxmdW5lAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZCkDARxBc3NldElkAAEMZnVuZQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAGUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAaQMEGE9wdGlvbgQEVAFtAwEIEE5vbmUAAAAQU29tZQQAbQMAAAEAAG0DECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABdAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAF0DASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAF0DASxBc3NldEZpbHRlcgACAABxAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAW0DBFMAAAQAdQMBGFZlYzxUPgAAdQMAAAJtAwB5AwQYT3B0aW9uBARUAR0CAQgQTm9uZQAAABBTb21lBAAdAgAAAQAAfQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGBAwRTAAAEAIUDARhWZWM8VD4AAIEDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9uGQIBIExvY2F0aW9uAAAAAIUDAAACgQMAiQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAF0CATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEANECASh2NDo6QXNzZXRzAAQACFY1BAAdAwEodjU6OkFzc2V0cwAFAACNAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAJEDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAoQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BACtAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAkQMMDHhjbQh2MwxYY20EEENhbGwAAAQAlQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJUDAAACmQMAmQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABdAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABdAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAXQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZX0CASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcqUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5yQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNdAgEsTXVsdGlBc3NldHMAARBkZXN0yQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kqQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGydAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADNAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACxAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeckBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZltQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50XQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbHUBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlyQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0yQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb7ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNlAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAkQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAkQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNdAgEsTXVsdGlBc3NldHMAARh0aWNrZXTJAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAF0CASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAXQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQApQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADRAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvZAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27NAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRlAgEoTXVsdGlBc3NldAABIHVubG9ja2VyyQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldGUCAShNdWx0aUFzc2V0AAEYdGFyZ2V0yQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldGUCAShNdWx0aUFzc2V0AAEUb3duZXLJAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRlAgEoTXVsdGlBc3NldAABGGxvY2tlcskBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAMkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAnQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAoQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAClAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAApQMAAAKpAwCpAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQA0QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEANECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA0QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XpAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXL9AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz0QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ55QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz0QIBGEFzc2V0cwABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kqQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGydAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADpAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ55QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUFAwEsQXNzZXRGaWx0ZXIAARB3YW500QIBGEFzc2V0cwABHG1heGltYWx1AQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABHHJlc2VydmXlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPZAgEUQXNzZXQAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAKEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAKEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz0QIBGEFzc2V0cwABGHRpY2tldOUBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEANECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEANECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAD9AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27pAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V02QIBFEFzc2V0AAEgdW5sb2NrZXLlAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldNkCARRBc3NldAABGHRhcmdldOUBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V02QIBFEFzc2V0AAEUb3duZXLlAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V02QIBFEFzc2V0AAEYbG9ja2Vy5QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOUBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW79AgFAT3B0aW9uPExvY2F0aW9uPgAvAACtAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEALEDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACxAwAAArUDALUDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAAdAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZTUDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllclUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnkZAgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMdAwEYQXNzZXRzAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxsnQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAHQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlXQMBLEFzc2V0RmlsdGVyAAEQd2FudB0DARhBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlGQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABEGRlc3QZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c10DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACtAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACtAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0DARhBc3NldHMAARh0aWNrZXQZAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAVQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEADkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAJQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrLQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uHQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABIHVubG9ja2VyGQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAwEUQXNzZXQAARh0YXJnZXQZAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldCUDARRBc3NldAABFG93bmVyGQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUDARRBc3NldAABGGxvY2tlchkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAZAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luVQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0JQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzaQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbnUBARBib29sAAEYYXNzZXRzcQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbREDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW55AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtrQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzfQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAC5AxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAMUBAURWZXJzaW9uZWRMb2NhdGlvbgADAAC9AwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAGkCASx2Mzo6QXNzZXRJZAADAAhWNAQA3QIBLHY0OjpBc3NldElkAAQACFY1BAApAwEsdjU6OkFzc2V0SWQABQAAwQMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7FAwxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQQQ2FsbAgEVAAESQABBFByZXBvcnRfYnJpZGdlX3N0YXR1cwgBJGJyaWRnZV9pZDwBEEgyNTYAATBpc19jb25nZXN0ZWR1AQEQYm9vbAAABKhOb3RpZmljYXRpb24gYWJvdXQgY29uZ2VzdGVkIGJyaWRnZSBxdWV1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2luzQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuzQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAANEDDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0EENhbGwEBFQAAQxIc2V0X29wZXJhdGluZ19tb2RlBAEQbW9kZdUDATRPcGVyYXRpbmdNb2RlAAAE6FNldCB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIGV4cG9ydGluZyBtZXNzYWdlcyB0byBFdGhlcmV1bS44cmVnaXN0ZXJfdG9rZW4MASBhc3NldF9pZMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEgbWV0YWRhdGHZAwE0QXNzZXRNZXRhZGF0YQABJGZlZV9hc3NldCUDARRBc3NldAABHEkBSW5pdGlhdGVzIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgUG9sa2Fkb3QtbmF0aXZlIHRva2VuIGFzIGEgd3JhcHBlZCBFUkMyMCB0b2tlbiBvbiRFdGhlcmV1bS6MLSBgYXNzZXRfaWRgOiBMb2NhdGlvbiBvZiB0aGUgYXNzZXRBAS0gYG1ldGFkYXRhYDogTWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgaW5zdGFudGlhdGVkIEVSQzIwIGNvbnRyYWN0IG9uIEV0aGVyZXVtAF0BQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQsIGhvd2V2ZXIgYGFzc2V0X2lkYCBtdXN0IGJlIGEgbG9jYXRpb24gbmVzdGVkIHdpdGhpbiB0aGUgb3JpZ2luRGNvbnNlbnN1cyBzeXN0ZW0uHGFkZF90aXAIAShtZXNzYWdlX2lk4QMBJE1lc3NhZ2VJZAABFGFzc2V0JQMBFEFzc2V0AAIIRQFBZGQgYW4gYWRkaXRpb25hbCByZWxheWVyIHRpcCBmb3IgYSBjb21taXR0ZWQgbWVzc2FnZSBpZGVudGlmaWVkIGJ5IGBtZXNzYWdlX2lkYC6gVGhlIHRpcCBhc3NldCB3aWxsIGJlIHN3YXBwZWQgZm9yIGV0aGVyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7VAww8c25vd2JyaWRnZV9jb3JlOG9wZXJhdGluZ19tb2RlSEJhc2ljT3BlcmF0aW5nTW9kZQABCBhOb3JtYWwAAAAYSGFsdGVkAAEAANkDCDxzbm93YnJpZGdlX2NvcmU0QXNzZXRNZXRhZGF0YQAADAEQbmFtZd0DAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AARhzeW1ib2zdAwHAQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8TUVUQURBVEFfRklFTERfTUFYX0xFTj4+AAEgZGVjaW1hbHMMAQh1OAAA3QMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADhAww8c25vd2JyaWRnZV9jb3JlGHJld2FyZCRNZXNzYWdlSWQAAQgcSW5ib3VuZAQAKAEMdTY0AAAAIE91dGJvdW5kBAAoAQx1NjQAAQAA5QMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXjtAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQRAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pAwAAAiAA7QMAAAUEAPEDCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lME9yaWdpbkNhbGxlcgABIBhzeXN0ZW0EAPUDAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQA+QMBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAD9AwFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAgU2NhcmNpdHkEAAEEAZhpbmRpdl9wYWxsZXRfc2NhcmNpdHk6Ok9yaWdpbjxSdW50aW1lPgA6ABxPcmlnaW5zBAANBAF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4APwAQUGdhcwQAEQQBZGluZGl2X3BhbGxldF9wZ2FzOjpPcmlnaW4AYwAYUmV2aXZlBAAlBAF4cGFsbGV0X3Jldml2ZTo6T3JpZ2luPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAKQQBiGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpPcmlnaW4AmAAA9QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAPkDDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAAZAgEgTG9jYXRpb24AAAAgUmVzcG9uc2UEABkCASBMb2NhdGlvbgABAAD9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAAEEDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0GE9yaWdpbgQEVAEFBAEEDE5mdAgBFG93bmVyBAEwVDo6QWNjb3VudElkAAEMbmZ0CQQBDE5mdAAAAAAFBAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxSdW50aW1lAAAAAAkEDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0DE5mdAAAGAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAASRtaW50ZWRfYXQoAQx1NjQAAShsYXN0X21vdmVkKAEMdTY0AAEsc3RhdGVfbm9uY2UoAQx1NjQAAA0EFHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lKGdvdmVybmFuY2Ucb3JpZ2luc1RwYWxsZXRfY3VzdG9tX29yaWdpbnMYT3JpZ2luAAE8MFN0YWtpbmdBZG1pbgAAACRUcmVhc3VyZXIAAQA8RmVsbG93c2hpcEFkbWluAAIAMEdlbmVyYWxBZG1pbgADADBBdWN0aW9uQWRtaW4ABAAoTGVhc2VBZG1pbgAFAExSZWZlcmVuZHVtQ2FuY2VsbGVyAAYAQFJlZmVyZW5kdW1LaWxsZXIABwAsU21hbGxUaXBwZXIACAAkQmlnVGlwcGVyAAkAMFNtYWxsU3BlbmRlcgAKADRNZWRpdW1TcGVuZGVyAAsAKEJpZ1NwZW5kZXIADABEV2hpdGVsaXN0ZWRDYWxsZXIADQA0V2lzaEZvckNoYW5nZQAOAAARBAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABCChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRheRUEAQxEYXkAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAAAREJhdGNoQ2xhaW1BbGlhc2VzDAEcYWxpYXNlcx0EATBCYXRjaEFsaWFzZXMAAQxkYXkVBAEMRGF5AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABAAAVBAw0aW5kaXZfc3VwcG9ydBR1dGlsczBCaWdFbmRpYW5VMzIAAwQAAAAMBBkBQSB1MzIgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLhkEDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb244UGdhc0NvbGxlY3Rpb24AAQgYUGVvcGxlAAAAKExpdGVQZW9wbGUAAQAAHQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAIQQBGFZlYzxUPgAAIQQAAAIIACUEDDRwYWxsZXRfcmV2aXZlGHBhbGxldBhPcmlnaW4EBFQBBQQBBDhFdGhUcmFuc2FjdGlvbgQABAEwVDo6QWNjb3VudElkAAAAACkEDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQYT3JpZ2luAAEESFBlcnNvblJlZ2lzdHJhdGlvbgQACAEUQWxpYXMAAAAALQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50MQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXN5AQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQxBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludDUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4xBAQYT3B0aW9uBARUATUEAQgQTm9uZQAAABBTb21lBAA1BAAAAQAANQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAOQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGU9BAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleO0DAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUaW5kZXjtAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZT0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuPQQEGE9wdGlvbgQEVAFBBAEIEE5vbmUAAAAQU29tZQQAQQQAAAEAAEEECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAAEUEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemV1AQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlAABQ6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeVEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gcmVxdWlyZXMgYSBzcGVjaWZpYyBpZCwgdGhpcyBtdXN0JGVxdWFsIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAF0+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ABQFVbmxpa2UgYGNyZWF0ZWAsIHRoZSBgaWRgIGRvZXMgbm90IGhhdmUgdG8gYmUgdGhlIG9uZSByZXF1aXJlZCBieUkBW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXTogYSBwcml2aWxlZ2VkIG9yaWdpbiBtYXkgcGljayBhbnkgYGlkYCwgd2hpY2ggaXMgdGhlblBtYXJrZWQgYXMgYWxsb2NhdGVkLgAkIyBXYXJuaW5nAD0BRm9yY2luZyBhbiBhcmJpdHJhcnkgYGlkYCBpcyBkYW5nZXJvdXM6IHRoZSBwYWxsZXQgb25seSBjaGVja3MgdGhhdCBgaWRgIGlzIG5vdF0BKmN1cnJlbnRseSogaW4gdXNlLCBub3QgdGhhdCBpdCB3YXMgbmV2ZXIgdXNlZCBiZWZvcmUuIFJldXNpbmcgYW4gaWQgY2FuIGNvcnJ1cHQgc3RhdGUsUQFtb3N0IHNldmVyZWx5IGZvciBicmlkZ2VkIGFzc2V0cywgd2hlcmUgYSBjb2xsaXNpb24gYnJlYWtzIHRoZSBsb2NhbC9yZW1vdGUgbWFwcGluZy4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeUkBYW4gZXhpc3RpbmcgYXNzZXQsIGFuZCBtdXN0IG5ldmVyIGhhdmUgYmVlbiBpbiB1c2UgcHJldmlvdXNseSAoc2VlIHdhcm5pbmcgYWJvdmUpLlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VxAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJudQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNNBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAFEEARhWZWM8VD4AAFEEAAACEABVBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5ndQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzWQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zYQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlXQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmd1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFlBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVudQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlMQEBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2U1AQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5ZBAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABdBAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAGEEAAACOABlBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGkEDCxwYWxsZXRfbmZ0cxhwYWxsZXQQQ2FsbAgEVAAESQABnBhjcmVhdGUIARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnbQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AADwJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uACUBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgDEYENvbGxlY3Rpb25EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczpFAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQgBFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhjb25maWdtBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgABPBkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgCsVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgA5AS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY29sbGVjdGlvbiBvZiBpdGVtcy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlclkBICBwZXJtaXNzaW9ucyBvdmVyIHRoaXMgaXRlbSwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeYICBgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc4kEAThEZXN0cm95V2l0bmVzcwACRJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A3E5PVEU6IFRoZSBjb2xsZWN0aW9uIG11c3QgaGF2ZSAwIGl0ZW1zIHRvIGJlIGRlc3Ryb3llZC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgB0V2VpZ2h0OiBgTyhtICsgYyArIGEpYCB3aGVyZTp4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgcC0gYGMgPSB3aXRuZXNzLml0ZW1fY29uZmlnc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwd2l0bmVzc19kYXRhjQQB2E9wdGlvbjxNaW50V2l0bmVzczxUOjpJdGVtSWQsIERlcG9zaXRCYWxhbmNlT2Y8VCwgST4+PgADQKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGNvbXBseSB3aXRoIHRoZSBgbWludF9zZXR0aW5nc2AgcnVsZXMuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuRQEtIGB3aXRuZXNzX2RhdGFgOiBXaGVuIHRoZSBtaW50IHR5cGUgaXMgYEhvbGRlck9mKGNvbGxlY3Rpb25faWQpYCwgdGhlbiB0aGUgb3duZWRZASAgaXRlbV9pZCBmcm9tIHRoYXQgY29sbGVjdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHdpdG5lc3MgZGF0YSBvYmplY3QuIElmYQEgIHRoZSBtaW50IHByaWNlIGlzIHNldCwgdGhlbiBpdCBzaG91bGQgYmUgYWRkaXRpb25hbGx5IGNvbmZpcm1lZCBpbiB0aGUgYHdpdG5lc3NfZGF0YWAuAFEBTm90ZTogdGhlIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBgb3JpZ2luYCBhbmQgbm90IHRoZSBgb3duZXJgIG9mIHRoZSBgaXRlbWAuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYChmb3JjZV9taW50EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARxtaW50X3RvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxpdGVtX2NvbmZpZ5UEAShJdGVtQ29uZmlnAAQ0BQFNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24gZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWxJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuoC0gYGl0ZW1gOiBBbiBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS7gLSBgbWludF90b2A6IEFjY291bnQgaW50byB3aGljaCB0aGUgaXRlbSB3aWxsIGJlIG1pbnRlZC6oLSBgaXRlbV9jb25maWdgOiBBIGNvbmZpZyBvZiB0aGUgbmV3IGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABSxYRGVzdHJveSBhIHNpbmdsZSBpdGVtLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdGxiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQugC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSBidXJuZWQuADxFbWl0cyBgQnVybmVkYC4AOFdlaWdodDogYE8oMSlgIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABjjATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7NQEtIHRoZSBhcHByb3ZlZCBkZWxlZ2F0ZSBmb3IgdGhlIGBpdGVtYCAoaW4gdGhpcyBjYXNlLCB0aGUgYXBwcm92YWwgaXMgcmVzZXQpLgAoQXJndW1lbnRzOvQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQulC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7cLSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIHJlY2VpdmUgb3duZXJzaGlwIG9mIHRoZSBpdGVtLgBQRW1pdHMgYFRyYW5zZmVycmVkYC4AOFdlaWdodDogYE8oMSlgJHJlZGVwb3NpdAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRpdGVtc2EEAThWZWM8VDo6SXRlbUlkPgAHRJxSZS1ldmFsdWF0ZSB0aGUgZGVwb3NpdHMgb24gc29tZSBpdGVtcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD4LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtcyB0byBiZSByZWV2YWx1YXRlZC4pAS0gYGl0ZW1zYDogVGhlIGl0ZW1zIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGRlcG9zaXRzIHdpbGwgYmUgcmVldmFsdWF0ZWQuAC0BTk9URTogVGhpcyBleGlzdHMgYXMgYSBiZXN0LWVmZm9ydCBmdW5jdGlvbi4gQW55IGl0ZW1zIHdoaWNoIGFyZSB1bmtub3duIG9yOQFpbiB0aGUgY2FzZSB0aGF0IHRoZSBvd25lciBhY2NvdW50IGRvZXMgbm90IGhhdmUgcmVzZXJ2YWJsZSBmdW5kcyB0byBwYXkgZm9yIGFNAWRlcG9zaXQgaW5jcmVhc2UgYXJlIGlnbm9yZWQuIEdlbmVyYWxseSB0aGUgb3duZXIgaXNuJ3QgZ29pbmcgdG8gY2FsbCB0aGlzIG9uIGl0ZW1zVQF3aG9zZSBleGlzdGluZyBkZXBvc2l0IGlzIGxlc3MgdGhhbiB0aGUgcmVmcmVzaGVkIGRlcG9zaXQgYXMgaXQgd291bGQgb25seSBjb3N0IHRoZW0seHNvIGl0J3Mgb2YgbGl0dGxlIGNvbnNlcXVlbmNlLgBZAUl0IHdpbGwgc3RpbGwgcmV0dXJuIGFuIGVycm9yIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbGxlY3Rpb24gaXMgdW5rbm93biBvciB0aGUgc2lnbmVycGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2FsbCBpdC4AYFdlaWdodDogYE8oaXRlbXMubGVuKCkpYEhsb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAIKMhEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLrgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIG5vbi10cmFuc2ZlcmFibGUuAGxFbWl0cyBgSXRlbVRyYW5zZmVyTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgUHVubG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACSioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuqC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgdHJhbnNmZXJhYmxlLgB0RW1pdHMgYEl0ZW1UcmFuc2ZlclVubG9ja2VkYC4AOFdlaWdodDogYE8oMSlgPGxvY2tfY29sbGVjdGlvbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRsb2NrX3NldHRpbmdzcQQBSENvbGxlY3Rpb25TZXR0aW5ncwAKMNhEaXNhbGxvd3Mgc3BlY2lmaWVkIHNldHRpbmdzIGZvciB0aGUgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIGxvY2tlZC60LSBgbG9ja19zZXR0aW5nc2A6IFRoZSBzZXR0aW5ncyB0byBiZSBsb2NrZWQuAB0BTm90ZTogaXQncyBwb3NzaWJsZSB0byBvbmx5IGxvY2soc2V0KSB0aGUgc2V0dGluZywgYnV0IG5vdCB0byB1bnNldCBpdC4AZEVtaXRzIGBDb2xsZWN0aW9uTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3Vlcl0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEUYWRtaW5dBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABHGZyZWV6ZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAMQNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBTm90ZTogYnkgc2V0dGluZyB0aGUgcm9sZSB0byBgTm9uZWAgb25seSB0aGUgYEZvcmNlT3JpZ2luYCB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGl0ZGFmdGVyIHRvIGBTb21lKGFjY291bnQpYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgWGZvcmNlX2NvbGxlY3Rpb25fb3duZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANKIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24usC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgXGZvcmNlX2NvbGxlY3Rpb25fY29uZmlnCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGNvbmZpZ20EAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AA4oiENoYW5nZSB0aGUgY29uZmlnIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24uuC0gYGNvbmZpZ2A6IFRoZSBuZXcgY29uZmlnIG9mIHRoaXMgY29sbGVjdGlvbi4AgEVtaXRzIGBDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE4bWF5YmVfZGVhZGxpbmXgAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AA84FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLuQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS5JAS0gYG1heWJlX2RlYWRsaW5lYDogT3B0aW9uYWwgZGVhZGxpbmUgZm9yIHRoZSBhcHByb3ZhbC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGXYCW51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggdGhlIGFwcHJvdmFsIHdpbGwgZXhwaXJlAJBFbWl0cyBgVHJhbnNmZXJBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQOORDYW5jZWwgb25lIG9mIHRoZSB0cmFuc2ZlciBhcHByb3ZhbHMgZm9yIGEgc3BlY2lmaWMgaXRlbS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW475C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOj0BLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLiUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLgEBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IGlzIGdvaW5nIHRvIGxvb3NlIHRoZWlyIGFwcHJvdmFsLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBwY2xlYXJfYWxsX3RyYW5zZmVyX2FwcHJvdmFscwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABE0sENhbmNlbCBhbGwgdGhlIGFwcHJvdmFscyBvZiBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo5AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLiEBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFscyB3aWxsIGJlIGNsZWFyZWQuAKRFbWl0cyBgQWxsQXBwcm92YWxzQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBQbG9ja19pdGVtX3Byb3BlcnRpZXMQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGF1AQEQYm9vbAABPGxvY2tfYXR0cmlidXRlc3UBARBib29sABJE6ERpc2FsbG93cyBjaGFuZ2luZyB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBvZiB0aGUgaXRlbS4AQQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pblBvZiB0aGUgYGNvbGxlY3Rpb25gLgC0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIGlmIHRoZSBgaXRlbWAufC0gYGl0ZW1gOiBBbiBpdGVtIHRvIGJlIGxvY2tlZC4NAS0gYGxvY2tfbWV0YWRhdGFgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGxvY2tlZC5hAS0gYGxvY2tfYXR0cmlidXRlc2A6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2VMICBzaG91bGQgYmUgbG9ja2VkLgBdAU5vdGU6IGBsb2NrX2F0dHJpYnV0ZXNgIGFmZmVjdHMgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBvbmx5LkUBV2hlbiB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBhcmUgbG9ja2VkLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0aGUgdW5sb2NrIHRoZW0uAHRFbWl0cyBgSXRlbVByb3BlcnRpZXNMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZVkBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgATWKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AAQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgY29uZm9ybSB0byB0aGUgbmFtZXNwYWNlIHJ1bGVzZXQ6PQEtIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYGNvbGxlY3Rpb25gIEFkbWluIG9ubHk7WQEtIGBJdGVtT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYG1heWJlX2l0ZW1gIG93bmVyIG9ubHkuIGBtYXliZV9pdGVtYHQgIHNob3VsZCBiZSBzZXQgaW4gdGhhdCBjYXNlO1UBLSBgQWNjb3VudChBY2NvdW50SWQpYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgb25seSB3aGVuIHRoZSBgb3JpZ2luYCB3YXMgZ2l2ZW4gYVggIHBlcm1pc3Npb24gdG8gZG8gc287APBUaGUgZnVuZHMgb2YgYG9yaWdpbmAgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTotAWBBdHRyaWJ1dGVEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogKGtleS5sZW4gKyB2YWx1ZS5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYExmb3JjZV9zZXRfYXR0cmlidXRlGAEYc2V0X2FzqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZkEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXgBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlWQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFTywQ2xlYXIgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUoYXR0cmlidXRlLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci4NAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxhcHByb3ZlX2l0ZW1fYXR0cmlidXRlcwwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcd2l0bmVzc50EAXxDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzABcoEQFDYW5jZWwgdGhlIHByZXZpb3VzbHkgcHJvdmlkZWQgYXBwcm92YWwgdG8gY2hhbmdlIGl0ZW0ncyBhdHRyaWJ1dGVzLhEBQWxsIHRoZSBwcmV2aW91c2x5IHNldCBhdHRyaWJ1dGVzIGJ5IHRoZSBgZGVsZWdhdGVgIHdpbGwgYmUgcmVtb3ZlZC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgD0LSBgY29sbGVjdGlvbmA6IENvbGxlY3Rpb24gdGhhdCB0aGUgaXRlbSBpcyBjb250YWluZWQgd2l0aGluLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLuAtIGBkZWxlZ2F0ZWA6IFRoZSBwcmV2aW91c2x5IGFwcHJvdmVkIGFjY291bnQgdG8gcmVtb3ZlLgDERW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkYCBvbiBzdWNjZXNzLjBzZXRfbWV0YWRhdGEMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABhAdFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LuwtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0Lk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AYEVtaXRzIGBJdGVtTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAZNHxDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIu9C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AcEVtaXRzIGBJdGVtTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABo8iFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAdJOBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC5QdXBkYXRlX21pbnRfc2V0dGluZ3MIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bWludF9zZXR0aW5nc3kEARUBTWludFNldHRpbmdzPEJhbGFuY2VPZjxULCBJPiwgQmxvY2tOdW1iZXJGb3I8VCwgST4sIFQ6OgpDb2xsZWN0aW9uSWQ+AB4kVFVwZGF0ZSBtaW50IHNldHRpbmdzLgBNAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgSXNzdWVyUG9mIHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLqQtIGBtaW50X3NldHRpbmdzYDogVGhlIG5ldyBtaW50IHNldHRpbmdzLgDwRW1pdHMgYENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuJHNldF9wcmljZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2UxAQFcT3B0aW9uPEl0ZW1QcmljZTxULCBJPj4AAUR3aGl0ZWxpc3RlZF9idXllcl0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AB8slFNldCAob3IgcmVzZXQpIHRoZSBwcmljZSBmb3IgYW4gaXRlbS4A6E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBzoQQBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEsbWF5YmVfcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGR1cmF0aW9uOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIkBRAVJlZ2lzdGVyIGEgbmV3IGF0b21pYyBzd2FwLCBkZWNsYXJpbmcgYW4gaW50ZW50aW9uIHRvIHNlbmQgYW4gYGl0ZW1gIGluIGV4Y2hhbmdlIGZvcvxgZGVzaXJlZF9pdGVtYCBmcm9tIG9yaWdpbiB0byB0YXJnZXQgb24gdGhlIGN1cnJlbnQgYmxvY2tjaGFpbi5NAVRoZSB0YXJnZXQgY2FuIGV4ZWN1dGUgdGhlIHN3YXAgZHVyaW5nIHRoZSBzcGVjaWZpZWQgYGR1cmF0aW9uYCBvZiBibG9ja3MgKGlmIHNldCku8EFkZGl0aW9uYWxseSwgdGhlIHByaWNlIGNvdWxkIGJlIHNldCBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLuwtIGBkZXNpcmVkX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBpdGVtLvQtIGBkZXNpcmVkX2l0ZW1gOiBUaGUgZGVzaXJlZCBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIHJlY2VpdmUuYQEtIGBtYXliZV9wcmljZWA6IFRoZSBwcmljZSBhbiBvd25lciBpcyB3aWxsaW5nIHRvIHBheSBvciByZWNlaXZlIGZvciB0aGUgZGVzaXJlZCBgaXRlbWAuSQEtIGBkdXJhdGlvbmA6IEEgZGVhZGxpbmUgZm9yIHRoZSBzd2FwLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZSBudW1iZXIgb2YgYmxvY2tziAlhZnRlciB3aGljaCB0aGUgc3dhcCB3aWxsIGV4cGlyZS4AfEVtaXRzIGBTd2FwQ3JlYXRlZGAgb24gc3VjY2Vzcy4sY2FuY2VsX3N3YXAIAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAIyRYQ2FuY2VsIGFuIGF0b21pYyBzd2FwLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLhUBT3JpZ2luIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYCBpZiB0aGUgZGVhZGxpbmUgaGFzbid0IGV4cGlyZWQuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLgCERW1pdHMgYFN3YXBDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuKGNsYWltX3N3YXAUATxzZW5kX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW5kX2l0ZW04ASRUOjpJdGVtSWQAAUhyZWNlaXZlX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATByZWNlaXZlX2l0ZW04ASRUOjpJdGVtSWQAATR3aXRuZXNzX3ByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AJDBUQ2xhaW0gYW4gYXRvbWljIHN3YXAuOQFUaGlzIG1ldGhvZCBleGVjdXRlcyBhIHBlbmRpbmcgc3dhcCwgdGhhdCB3YXMgY3JlYXRlZCBieSBhIGNvdW50ZXJwYXJ0IGJlZm9yZS4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgDsLSBgc2VuZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgc2VudC6MLSBgc2VuZF9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgc2VudC4JAS0gYHJlY2VpdmVfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHJlY2VpdmVkLqgtIGByZWNlaXZlX2l0ZW1gOiBUaGUgaXRlbSB0byBiZSByZWNlaXZlZC7kLSBgd2l0bmVzc19wcmljZWA6IEEgcHJpY2UgdGhhdCB3YXMgcHJldmlvdXNseSBhZ3JlZWQgb24uAHxFbWl0cyBgU3dhcENsYWltZWRgIG9uIHN1Y2Nlc3MuPG1pbnRfcHJlX3NpZ25lZAwBJG1pbnRfZGF0YbkEAWhCb3g8UHJlU2lnbmVkTWludE9mPFQsIEk+PgABJHNpZ25hdHVyZb0EAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAlNMhNaW50IGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBdAS0gYG1pbnRfZGF0YWA6IFRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsIHRoYXQgY29uc2lzdHMgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLFEBICBpdHMgbWV0YWRhdGEsIGF0dHJpYnV0ZXMsIHdobyBjYW4gbWludCBpdCAoYE5vbmVgIGZvciBhbnlvbmUpIGFuZCB1bnRpbCB3aGF0IGJsb2NrJCAgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LjkBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBJc3N1ZXIgb2YgdGhlIGNvbGxlY3Rpb24uAGhFbWl0cyBgSXNzdWVkYCBvbiBzdWNjZXNzLtRFbWl0cyBgQXR0cmlidXRlU2V0YCBpZiB0aGUgYXR0cmlidXRlcyB3ZXJlIHByb3ZpZGVkLthFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YCBpZiB0aGUgbWV0YWRhdGEgd2FzIG5vdCBlbXB0eS5kc2V0X2F0dHJpYnV0ZXNfcHJlX3NpZ25lZAwBEGRhdGHFBAFsUHJlU2lnbmVkQXR0cmlidXRlc09mPFQsIEk+AAEkc2lnbmF0dXJlvQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAEYc2lnbmVyBAEwVDo6QWNjb3VudElkACY0AQFTZXQgYXR0cmlidXRlcyBmb3IgYW4gaXRlbSBieSBwcm92aWRpbmcgdGhlIHByZS1zaWduZWQgYXBwcm92YWwuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBkYXRhLml0ZW1gLgBJAS0gYGRhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSzMICBhdHRyaWJ1dGVzIHRvIHVwZGF0ZSBhbmQgdW50aWwgd2hhdCBibG9jayBudW1iZXIuyC0gYHNpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgdGhlIGBkYXRhYCBvYmplY3QuUQEtIGBzaWduZXJgOiBUaGUgYGRhdGFgIG9iamVjdCdzIHNpZ25lci4gU2hvdWxkIGJlIGFuIEFkbWluIG9mIHRoZSBjb2xsZWN0aW9uIGZvciB0aGV4ICBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UuAMRFbWl0cyBgQXR0cmlidXRlU2V0YCBmb3IgZWFjaCBwcm92aWRlZCBhdHRyaWJ1dGUuGQFFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBpZiB0aGUgYXBwcm92YWwgd2Fzbid0IHNldCBiZWZvcmUuqEVtaXRzIGBQcmVTaWduZWRBdHRyaWJ1dGVzU2V0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tBAwscGFsbGV0X25mdHMUdHlwZXNAQ29sbGVjdGlvbkNvbmZpZwwUUHJpY2UBNQEsQmxvY2tOdW1iZXIBODBDb2xsZWN0aW9uSWQBOAAMASBzZXR0aW5nc3EEAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx54AEsT3B0aW9uPHUzMj4AATRtaW50X3NldHRpbmdzeQQBuE1pbnRTZXR0aW5nczxQcmljZSwgQmxvY2tOdW1iZXIsIENvbGxlY3Rpb25JZD4AAHEEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAF1BAAEACgBRENvbGxlY3Rpb25TZXR0aW5nAAB1BAwscGFsbGV0X25mdHMUdHlwZXNEQ29sbGVjdGlvblNldHRpbmcAARREVHJhbnNmZXJhYmxlSXRlbXMAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABABEVW5sb2NrZWRNYXhTdXBwbHkACAA8RGVwb3NpdFJlcXVpcmVkABAAAHkEDCxwYWxsZXRfbmZ0cxR0eXBlczBNaW50U2V0dGluZ3MMFFByaWNlATUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgAFAEkbWludF90eXBlfQQBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZTEBATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2vgAUxPcHRpb248QmxvY2tOdW1iZXI+AAEkZW5kX2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABVGRlZmF1bHRfaXRlbV9zZXR0aW5nc4EEATBJdGVtU2V0dGluZ3MAAH0EDCxwYWxsZXRfbmZ0cxR0eXBlcyBNaW50VHlwZQQwQ29sbGVjdGlvbklkATgBDBhJc3N1ZXIAAAAYUHVibGljAAEAIEhvbGRlck9mBAA4ATBDb2xsZWN0aW9uSWQAAgAAgQQMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAYUEAAQAKAEsSXRlbVNldHRpbmcAAIUEDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtU2V0dGluZwABDDBUcmFuc2ZlcmFibGUAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABAAAiQQMLHBhbGxldF9uZnRzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMAThpdGVtX21ldGFkYXRhc2ABDHUzMgABMGl0ZW1fY29uZmlnc2ABDHUzMgABKGF0dHJpYnV0ZXNgAQx1MzIAAI0EBBhPcHRpb24EBFQBkQQBCBBOb25lAAAAEFNvbWUEAJEEAAABAACRBAwscGFsbGV0X25mdHMUdHlwZXMsTWludFdpdG5lc3MIGEl0ZW1JZAE4HEJhbGFuY2UBNQEACAEob3duZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEobWludF9wcmljZTEBATxPcHRpb248QmFsYW5jZT4AAJUEDCxwYWxsZXRfbmZ0cxR0eXBlcyhJdGVtQ29uZmlnAAAEASBzZXR0aW5nc4EEATBJdGVtU2V0dGluZ3MAAJkEDCxwYWxsZXRfbmZ0cxR0eXBlc0hBdHRyaWJ1dGVOYW1lc3BhY2UEJEFjY291bnRJZAEEARAYUGFsbGV0AAAAPENvbGxlY3Rpb25Pd25lcgABACRJdGVtT3duZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAAJ0EDCxwYWxsZXRfbmZ0cxR0eXBlc3xDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzAAAEAUhhY2NvdW50X2F0dHJpYnV0ZXM4AQx1MzIAAKEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQQEUwAABACpBAEYVmVjPFQ+AAClBAwscGFsbGV0X25mdHMUdHlwZXMcSXRlbVRpcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQYQW1vdW50ATUBABABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEgcmVjZWl2ZXIEASRBY2NvdW50SWQAARhhbW91bnQ1AQEYQW1vdW50AACpBAAAAqUEAK0EBBhPcHRpb24EBFQBsQQBCBBOb25lAAAAEFNvbWUEALEEAAABAACxBAwscGFsbGV0X25mdHMUdHlwZXNIUHJpY2VXaXRoRGlyZWN0aW9uBBhBbW91bnQBNQEACAEYYW1vdW50NQEBGEFtb3VudAABJGRpcmVjdGlvbrUEAThQcmljZURpcmVjdGlvbgAAtQQMLHBhbGxldF9uZnRzFHR5cGVzOFByaWNlRGlyZWN0aW9uAAEIEFNlbmQAAAAcUmVjZWl2ZQABAAC5BAwscGFsbGV0X25mdHMUdHlwZXM0UHJlU2lnbmVkTWludBQwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOBxCYWxhbmNlATUBABwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEoYXR0cmlidXRlcywBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAEgbWV0YWRhdGEYARxWZWM8dTg+AAEwb25seV9hY2NvdW50qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQABKG1pbnRfcHJpY2UxAQE8T3B0aW9uPEJhbGFuY2U+AAC9BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BADBBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAMEEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAJEBAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAkQEBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAwQQAAANAAAAADADFBAwscGFsbGV0X25mdHMUdHlwZXNMUHJlU2lnbmVkQXR0cmlidXRlcxAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOAAUAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZZkEAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAMkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAAUOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlRAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIHJlcXVpcmVzIGEgc3BlY2lmaWMgaWQsIHRoaXMgbXVzdCRlcXVhbCBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAXT4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgAFAVVubGlrZSBgY3JlYXRlYCwgdGhlIGBpZGAgZG9lcyBub3QgaGF2ZSB0byBiZSB0aGUgb25lIHJlcXVpcmVkIGJ5SQFbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdOiBhIHByaXZpbGVnZWQgb3JpZ2luIG1heSBwaWNrIGFueSBgaWRgLCB3aGljaCBpcyB0aGVuUG1hcmtlZCBhcyBhbGxvY2F0ZWQuACQjIFdhcm5pbmcAPQFGb3JjaW5nIGFuIGFyYml0cmFyeSBgaWRgIGlzIGRhbmdlcm91czogdGhlIHBhbGxldCBvbmx5IGNoZWNrcyB0aGF0IGBpZGAgaXMgbm90XQEqY3VycmVudGx5KiBpbiB1c2UsIG5vdCB0aGF0IGl0IHdhcyBuZXZlciB1c2VkIGJlZm9yZS4gUmV1c2luZyBhbiBpZCBjYW4gY29ycnVwdCBzdGF0ZSxRAW1vc3Qgc2V2ZXJlbHkgZm9yIGJyaWRnZWQgYXNzZXRzLCB3aGVyZSBhIGNvbGxpc2lvbiBicmVha3MgdGhlIGxvY2FsL3JlbW90ZSBtYXBwaW5nLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5SQFhbiBleGlzdGluZyBhc3NldCwgYW5kIG11c3QgbmV2ZXIgaGF2ZSBiZWVuIGluIHVzZSBwcmV2aW91c2x5IChzZWUgd2FybmluZyBhYm92ZSkuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASRpc19mcm96ZW51AQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybnUBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzzQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdEEBFMAAAQA1QQBGFZlYzxUPgAA0QQMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlGQIBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxldQEBEGJvb2wAANUEAAAC0QQA2QQMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAFDoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5UQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSByZXF1aXJlcyBhIHNwZWNpZmljIGlkLCB0aGlzIG11c3QkZXF1YWwgaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAXT4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgAFAVVubGlrZSBgY3JlYXRlYCwgdGhlIGBpZGAgZG9lcyBub3QgaGF2ZSB0byBiZSB0aGUgb25lIHJlcXVpcmVkIGJ5SQFbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdOiBhIHByaXZpbGVnZWQgb3JpZ2luIG1heSBwaWNrIGFueSBgaWRgLCB3aGljaCBpcyB0aGVuUG1hcmtlZCBhcyBhbGxvY2F0ZWQuACQjIFdhcm5pbmcAPQFGb3JjaW5nIGFuIGFyYml0cmFyeSBgaWRgIGlzIGRhbmdlcm91czogdGhlIHBhbGxldCBvbmx5IGNoZWNrcyB0aGF0IGBpZGAgaXMgbm90XQEqY3VycmVudGx5KiBpbiB1c2UsIG5vdCB0aGF0IGl0IHdhcyBuZXZlciB1c2VkIGJlZm9yZS4gUmV1c2luZyBhbiBpZCBjYW4gY29ycnVwdCBzdGF0ZSxRAW1vc3Qgc2V2ZXJlbHkgZm9yIGJyaWRnZWQgYXNzZXRzLCB3aGVyZSBhIGNvbGxpc2lvbiBicmVha3MgdGhlIGxvY2FsL3JlbW90ZSBtYXBwaW5nLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5SQFhbiBleGlzdGluZyBhc3NldCwgYW5kIG11c3QgbmV2ZXIgaGF2ZSBiZWVuIGluIHVzZSBwcmV2aW91c2x5IChzZWUgd2FybmluZyBhYm92ZSkuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudHUBARBib29sAAEkaXNfZnJvemVudQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm51AQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZldQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc00EAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QQMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBBDYWxsBARUAAEYLGNyZWF0ZV9wb29sCAEYYXNzZXQxGQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyGQIBREJveDxUOjpBc3NldEtpbmQ+AAAQGQFDcmVhdGVzIGFuIGVtcHR5IGxpcXVpZGl0eSBwb29sIGFuZCBhbiBhc3NvY2lhdGVkIG5ldyBgbHBfdG9rZW5gIGFzc2V0AQEodGhlIGlkIG9mIHdoaWNoIGlzIHJldHVybmVkIGluIHRoZSBgRXZlbnQ6OlBvb2xDcmVhdGVkYCBldmVudCkuABEBT25jZSBhIHBvb2wgaXMgY3JlYXRlZCwgc29tZW9uZSBtYXkgW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSB0byBpdC40YWRkX2xpcXVpZGl0eRwBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgABPGFtb3VudDFfZGVzaXJlZDUBAShUOjpCYWxhbmNlAAE8YW1vdW50Ml9kZXNpcmVkNQEBKFQ6OkJhbGFuY2UAASxhbW91bnQxX21pbjUBAShUOjpCYWxhbmNlAAEsYW1vdW50Ml9taW41AQEoVDo6QmFsYW5jZQABHG1pbnRfdG8EATBUOjpBY2NvdW50SWQAATjkUHJvdmlkZSBsaXF1aWRpdHkgaW50byB0aGUgcG9vbCBvZiBgYXNzZXQxYCBhbmQgYGFzc2V0MmAuDQFOT1RFOiBhbiBvcHRpbWFsIGFtb3VudCBvZiBhc3NldDEgYW5kIGFzc2V0MiB3aWxsIGJlIGNhbGN1bGF0ZWQgYW5kIQFtaWdodCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgcHJvdmlkZWQgYGFtb3VudDFfZGVzaXJlZGAvYGFtb3VudDJfZGVzaXJlZGD8dGh1cyB5b3Ugc2hvdWxkIHByb3ZpZGUgdGhlIG1pbiBhbW91bnQgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuyFBhcmFtcyBgYW1vdW50MV9taW5gL2BhbW91bnQyX21pbmAgcmVwcmVzZW50IHRoYXQuSQFgbWludF90b2Agd2lsbCBiZSBzZW50IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgcmVwcmVzZW50IHRoaXMgc2hhcmUgb2YgdGhlIHBvb2wuAF0BTk9URTogd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW5jb3JyZWN0IGV4Y2hhbmdlIHJhdGUgYW5kIG5vbi13aXRoZHJhd2FibGUgcG9vbCBsaXF1aWRpdHks3GJhdGNoIGFuIGF0b21pYyBjYWxsIHdpdGggW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSBhbmRRAVtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSUBY2FsbHMgdG8gcmVuZGVyIHRoZSBsaXF1aWRpdHkgd2l0aGRyYXdhYmxlIGFuZCByZWN0aWZ5IHRoZSBleGNoYW5nZSByYXRlLgDYT25jZSBsaXF1aWRpdHkgaXMgYWRkZWQsIHNvbWVvbmUgbWF5IHN1Y2Nlc3NmdWxseSBjYWxspFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uQHJlbW92ZV9saXF1aWRpdHkYARhhc3NldDEZAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIZAgFEQm94PFQ6OkFzc2V0S2luZD4AATRscF90b2tlbl9idXJuNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQxX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQyX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZAACDE0BQWxsb3dzIHlvdSB0byByZW1vdmUgbGlxdWlkaXR5IGJ5IHByb3ZpZGluZyB0aGUgYGxwX3Rva2VuX2J1cm5gIHRva2VucyB0aGF0IHdpbGwgYmVRAWJ1cm5lZCBpbiB0aGUgcHJvY2Vzcy4gV2l0aCB0aGUgdXNhZ2Ugb2YgYGFtb3VudDFfbWluX3JlY2VpdmVgL2BhbW91bnQyX21pbl9yZWNlaXZlYDUBaXQncyBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBtaW4gYW1vdW50IG9mIHJldHVybmVkIHRva2VucyB5b3UncmUgaGFwcHkgd2l0aC5wc3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2VucxQBEHBhdGjhBAFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlAAE4YW1vdW50X291dF9taW41AQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZldQEBEGJvb2wAAxjAU3dhcCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGludG8gYGFzc2V0MmAuLQFgYW1vdW50X291dF9taW5gIHBhcmFtIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbWluIGFtb3VudCBvZiB0aGUgYGFzc2V0MmBgeW91J3JlIGhhcHB5IHRvIHJlY2VpdmUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUucHN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMUARBwYXRo4QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AAShhbW91bnRfb3V0NQEBKFQ6OkJhbGFuY2UAATRhbW91bnRfaW5fbWF4NQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZXUBARBib29sAAQYAQFTd2FwIGFueSBhbW91bnQgb2YgYGFzc2V0MWAgdG8gZ2V0IHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuGQFgYW1vdW50X2luX21heGAgcGFyYW0gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIG1heCBhbW91bnQgb2YgdGhlIGBhc3NldDFgYHlvdSdyZSBoYXBweSB0byBwcm92aWRlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLhR0b3VjaAgBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgAFLE0BVG91Y2ggYW4gZXhpc3RpbmcgcG9vbCB0byBmdWxmaWxsIHByZXJlcXVpc2l0ZXMgYmVmb3JlIHByb3ZpZGluZyBsaXF1aWRpdHksIHN1Y2ggYXNJAWVuc3VyaW5nIHRoYXQgdGhlIHBvb2wncyBhY2NvdW50cyBhcmUgaW4gcGxhY2UuIEl0IGlzIHR5cGljYWxseSB1c2VmdWwgd2hlbiBhIHBvb2xVAWNyZWF0b3IgcmVtb3ZlcyB0aGUgcG9vbCdzIGFjY291bnRzIGFuZCBkb2VzIG5vdCBwcm92aWRlIGEgbGlxdWlkaXR5LiBUaGlzIGFjdGlvbiBtYXlVAWludm9sdmUgaG9sZGluZyBhc3NldHMgZnJvbSB0aGUgY2FsbGVyIGFzIGEgZGVwb3NpdCBmb3IgY3JlYXRpbmcgdGhlIHBvb2wncyBhY2NvdW50cy4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuACkBLSBgYXNzZXQxYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4pAS0gYGFzc2V0MmA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgRwUGFsbGV0J3MgY2FsbGFibGUgZnVuY3Rpb25zLuEEAAACGQIA5QQMVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQQQ2FsbAQEVAABOERjcmVhdGVfY29sbGVjdGlvbgAABKBDcmVhdGUgYSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuLGRlZmluZV9pdGVtDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABPHRyYW5zZmVyYWJpbGl0eekEATxUcmFuc2ZlcmFiaWxpdHkAASBtZXRhZGF0Ye0EAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAEU7ERlZmluZSBvbmUgaW1tdXRhYmxlIGl0ZW0gYW5kIGl0cyBzaGFyZWQgbWV0YWRhdGEgZGVmYXVsdHMuAEUBVGhlIHN1cHBsaWVkIG1ldGFkYXRhIGlzIGluaGVyaXRlZCBieSBldmVyeSBpbnN0YW5jZSBtaW50ZWQgZnJvbSB0aGlzIGRlZmluaXRpb24uVQFJbnN0YW5jZS1zcGVjaWZpYyB2YWx1ZXMgYmVsb25nIG9uIFtgU2VsZjo6bWludGBdIG9yIFtgU2VsZjo6c2V0X2luc3RhbmNlX21ldGFkYXRhYF0uLQFgdHJhbnNmZXJhYmlsaXR5YCBpcyBmaXhlZCBoZXJlIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBvbmNlIGluc3RhbmNlcyBleGlzdC4QbWludBABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQAASBtZXRhZGF0Ye0EAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAIcJQFNaW50IGFuIGluc3RhbmNlIG9mIGFuIGltbXV0YWJsZSBpdGVtIGRlZmluaXRpb24gaW50byBhbiBlbXB0eSBwdXJzZSBrZXkuAEUBVGhlIGRlc3RpbmF0aW9uIGdpdmVzIG5vIGNvbnNlbnQ7IGFueSBlbXB0eSBrZXkgaXMgYSB2YWxpZCB0YXJnZXQuIFNlZSB0aGUgbW9kdWxllGRvY3VtZW50YXRpb24gb24gcHVyc2Uta2V5IG9jY3VwYW5jeS4ARQFgbWV0YWRhdGFgIGNvbnRhaW5zIGluc3RhbmNlLXNwZWNpZmljIG92ZXJyaWRlcy4gSXRlbSBtZXRhZGF0YSByZW1haW5zIHRoZSBzaGFyZWTYZGVmYXVsdCBmb3IgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGRlZmluaXRpb24uIHRyYW5zZmVyBAEIdG8EATBUOjpBY2NvdW50SWQAAwzsVHJhbnNmZXIgYW4gTkZUIGhlbGQgYnkgdGhlIGBPcmlnaW46Ok5mdGAgcHVyc2Uta2V5IG9yaWdpbi4AFQFGYWlscyBmb3IgYW4gaW5zdGFuY2Ugb2YgYSBbYFRyYW5zZmVyYWJpbGl0eTo6U291bGJvdW5kYF0gZGVmaW5pdGlvbi4QYnVybgAEFNxCdXJuIGFuIE5GVCBoZWxkIGJ5IHRoZSBgT3JpZ2luOjpOZnRgIHB1cnNlLWtleSBvcmlnaW4uAEkBSXRlbS1kZWZpbml0aW9uIHN1cHBseSBjb3VudHMgbWludGVkLWV2ZXIgaW5zdGFuY2VzIGFuZCBpcyBkZWxpYmVyYXRlbHkgbW9ub3RvbmljLk0BSXRlbSBtZXRhZGF0YSBiZWxvbmdzIHRvIHRoZSBkZWZpbml0aW9uIGFuZCByZW1haW5zIHVudG91Y2hlZC4gSW5zdGFuY2UgbWV0YWRhdGEgaXOwcmVtb3ZlZCBhbmQgaXRzIGV4YWN0IGRlcG9zaXRzIGFyZSByZWxlYXNlZC5kbm9taW5hdGVfY29sbGVjdGlvbl9vd25lcggBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATRwZW5kaW5nX293bmVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAUQ3E5vbWluYXRlIGFuIGFjY291bnQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIGEgY29sbGVjdGlvbi4AVQFPbmx5IHRoZSBjdXJyZW50IG93bmVyIG1heSBub21pbmF0ZSBvciBjbGVhciBhIHByb3NwZWN0aXZlIG93bmVyLiBOb21pbmF0aW9uIGRvZXMgbm90iGNoYW5nZSBhdXRob3JpdHkgb3IgbW92ZSBkZXBvc2l0cy5cc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4AARR2YWx1ZfUEAWhPcHRpb248TWV0YWRhdGFWYWx1ZU9mPFQ+PgAGEMhTZXQgb3IgcmVtb3ZlIGEgY29sbGVjdGlvbi1sZXZlbCBtZXRhZGF0YSBkZWZhdWx0LgBJAU9ubHkgdGhlIGNvbGxlY3Rpb24gb3duZXIgbWF5IG11dGF0ZSBtZXRhZGF0YS4gYE5vbmVgIHJlbGVhc2VzIGFuIGV4aXN0aW5nIGVudHJ5J3PkZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuRHNldF9pdGVtX21ldGFkYXRhEAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl9QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAcUFQFTZXQgb3IgcmVtb3ZlIGEgbWV0YWRhdGEgZGVmYXVsdCBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2Ugb2YgYW4gaXRlbS4ASQFUaGlzIHNjb3BlIG92ZXJyaWRlcyB0aGUgY29sbGVjdGlvbiBkZWZhdWx0IHdpdGhvdXQgY2hhbmdpbmcgYW55IGluc3RhbmNlLXNwZWNpZmljUQFvdmVycmlkZS4gT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcFAWVudHJ5J3MgZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuaGNsYWltX2NvbGxlY3Rpb25fb3duZXJzaGlwBAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAAIFORDbGFpbSBhIGNvbGxlY3Rpb24gYWZ0ZXIgbm9taW5hdGlvbiBieSBpdHMgY3VycmVudCBvd25lci4AUQFBbiBlcXVpdmFsZW50IGFnZ3JlZ2F0ZSBjb25zaWRlcmF0aW9uIGlzIGZpcnN0IGNyZWF0ZWQgZm9yIHRoZSBjbGFpbWFudCBhbmQgdGhlbiB0aGVVAXByZXZpb3VzIG93bmVyJ3MgdGlja2V0IGlzIGRyb3BwZWQuIFRoZSBvcGVyYXRpb24gaXMgYXRvbWljOiBmYWlsdXJlIHRvIGVzdGFibGlzaCB0aGUVAWNsYWltYW50J3MgY29uc2lkZXJhdGlvbiBsZWF2ZXMgb3duZXJzaGlwIGFuZCBib3RoIHRpY2tldHMgdW5jaGFuZ2VkLlRzZXRfaW5zdGFuY2VfbWV0YWRhdGEMASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl9QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAkQ1FNldCBvciByZW1vdmUgYW4gaW5zdGFuY2Utc3BlY2lmaWMgbWV0YWRhdGEgb3ZlcnJpZGUuAEkBT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcgZW50cnknc+RkZXBvc2l0OyB3aGVuIHRoZSBrZXkgaXMgYWJzZW50IGl0IGlzIGEgc3VjY2Vzc2Z1bCBuby1vcC4oZm9yY2VfYnVybgQBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAAKFNRGb3JjZS1idXJuIG9uZSBsaXZlIGluc3RhbmNlIGFzIGl0cyBjb2xsZWN0aW9uIG93bmVyLgBZAVRoZSBjb2xsZWN0aW9uIGxheWVyIGludGVudGlvbmFsbHkgYXBwbGllcyBubyBob2xkZXItbGV2ZWwgQUNMLiBXaGVuIGEgcnVudGltZSBleHBvc2VzWQF0aGlzIGNhbGwgdG8gaXRzIGNvbnRyYWN0IGVudmlyb25tZW50LCBhIGNvbnRyYWN0LW93bmVkIGNvbGxlY3Rpb24gY2FuIGVuZm9yY2UgaXRzIG93bqRjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LixkZWxldGVfaXRlbQgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAsc1ERlbGV0ZSBhbiB1bnVzZWQgaXRlbSBkZWZpbml0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAD0BRXZlcnkgbGl2ZSBpbnN0YW5jZSBtdXN0IGJlIGJ1cm5lZCBhbmQgZXZlcnkgaXRlbSBtZXRhZGF0YSBlbnRyeSByZW1vdmVkIGZpcnN0LmEBRGVsZXRlZCBpdGVtIGluZGljZXMgYXJlIG5ldmVyIHJldXNlZCwgYW5kIHRoZSBjb2xsZWN0aW9uJ3MgbmV4dCBpbmRleCBkb2VzIG5vdCBkcm9wLCBzb1kBYW55dGhpbmcgc2VsZWN0aW5nIGFuIGl0ZW0gYnkgdGhhdCBpbmRleCBjYW4gc2VsZWN0IGEgZGVsZXRlZCBvbmUgYW5kIGZhaWwuIERlZmluaW5nIGFNAXJlcGxhY2VtZW50IHJhaXNlcyB0aGUgaW5kZXggcmF0aGVyIHRoYW4gZmlsbGluZyB0aGUgaG9sZSwgd2hpY2ggY2hhbmdlcyB3aGF0IGV2ZXJ5iG91dHN0YW5kaW5nIHNlbGVjdGlvbiByZXNvbHZlcyB0by5EZGVsZXRlX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAwQvERlbGV0ZSBhbiBlbXB0eSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAEkBRXZlcnkgaXRlbSBkZWZpbml0aW9uIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCBmaXJzdC4gRGVsZXRlZKBjb2xsZWN0aW9uIGlkZW50aWZpZXJzIGFyZSBuZXZlciByZXVzZWQuOGZvcmNlX3RyYW5zZmVyCAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQADRjkRm9yY2UtdHJhbnNmZXIgb25lIGxpdmUgaW5zdGFuY2UgYXMgaXRzIGNvbGxlY3Rpb24gb3duZXIuAFkBVGhlIGNvbGxlY3Rpb24gbGF5ZXIgaW50ZW50aW9uYWxseSBhcHBsaWVzIG5vIGhvbGRlci1sZXZlbCBBQ0wuIFdoZW4gYSBydW50aW1lIGV4cG9zZXNZAXRoaXMgY2FsbCB0byBpdHMgY29udHJhY3QgZW52aXJvbm1lbnQsIGEgY29udHJhY3Qtb3duZWQgY29sbGVjdGlvbiBjYW4gZW5mb3JjZSBpdHMgb3duXQFjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LiBUaGUgbW92ZSBpbmNyZW1lbnRzIHRoZSBpbnN0YW5jZSBzdGF0ZSBub25jZSykaW52YWxpZGF0aW5nIHByaW9yIGhvbGRlciBhdXRob3JpemF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QQMVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQ8VHJhbnNmZXJhYmlsaXR5AAEIMFRyYW5zZmVyYWJsZQAAACRTb3VsYm91bmQAAQAA7QQAAALxBADxBAAABAjdA1kBAPUEBBhPcHRpb24EBFQBWQEBCBBOb25lAAAAEFNvbWUEAFkBAAABAAD5BAwocGFsbGV0X3BzbRhwYWxsZXQQQ2FsbAQEVAABNBBtaW50EAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAATxleHRlcm5hbF9hbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAEcbWF4X2ZlZf0EARxQZXJtaWxsAACc8FN3YXAgZXh0ZXJuYWwgYXNzZXQgZm9yIGludGVybmFsIG9uIGEgc3BlY2lmaWMgUFNNIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAMRNdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB1c2VyIHBlcmZvcm1pbmcgdGhlIHN3YXAuACgjIyBEZXRhaWxzABkBVHJhbnNmZXJzIGBleHRlcm5hbF9hbW91bnRgIG9mIGBleHRlcm5hbF9hc3NldGAgZnJvbSB0aGUgY2FsbGVyIHRvIHRoZSkBYGludGVybmFsX2Fzc2V0YCdzIFBTTSByZXNlcnZlIGFjY291bnQsIHRoZW4gbWludHMgYGludGVybmFsX2Fzc2V0YCB0byB0aGUpAWNhbGxlciBtaW51cyB0aGUgbWludGluZyBmZWUuIFRoZSBmZWUgaXMgY2FsY3VsYXRlZCB1c2luZyBjZWlsaW5nIHJvdW5kaW5nCQEoYG11bF9jZWlsYCksIGVuc3VyaW5nIHRoZSBwcm90b2NvbCBuZXZlciB1bmRlcmNoYXJnZXMuIFRoZSBmZWUgaXMVAXRyYW5zZmVycmVkIHRvIFtgUHNtSW5mbzo6ZmVlX2Rlc3RpbmF0aW9uYF0gb2YgdGhlIHRhcmdldGVkIGluc3RhbmNlLgA0IyMgUGFyYW1ldGVycwA1AS0gYGludGVybmFsX2Fzc2V0YDogVGhlIGludGVybmFsIHN0YWJsZWNvaW4gdGhhdCBpZGVudGlmaWVzIHRoZSBQU00gaW5zdGFuY2UuGQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB0byBkZXBvc2l0IChtdXN0IGJlIGFwcHJvdmVkIG9uUCAgYGludGVybmFsX2Fzc2V0YCku5C0gYGV4dGVybmFsX2Ftb3VudGA6IEFtb3VudCBvZiBleHRlcm5hbCBhc3NldCB0byBkZXBvc2l0LvQtIGBtYXhfZmVlYDogTWF4aW11bSBtaW50aW5nIGZlZSByYXRlIGFjY2VwdGVkIGJ5IHRoZSBjYWxsZXIuACQjIyBFcnJvcnMAHQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IElmIG5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLj0BLSBbYEVycm9yOjpVbnN1cHBvcnRlZEFzc2V0YF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIHRoaXMgUFNNLmEBLSBbYEVycm9yOjpNaW50aW5nU3RvcHBlZGBdOiBJZiB0aGUgcGVyLWV4dGVybmFsIGNpcmN1aXQgYnJlYWtlciBpcyBhdCBgTWludGluZ0Rpc2FibGVkYDAgIG9yIGhpZ2hlci5dAS0gW2BFcnJvcjo6QmVsb3dNaW5pbXVtU3dhcGBdOiBJZiB0aGUgaW50ZXJuYWwtZXF1aXZhbGVudCBvZiBgZXh0ZXJuYWxfYW1vdW50YCBpcyBiZWxvd4wgIHRoZSBpbnN0YW5jZSdzIGBtaW5fc3dhcF9hbW91bnRgLiUBLSBbYEVycm9yOjpGZWVUb29IaWdoYF06IElmIHRoZSBjb25maWd1cmVkIG1pbnRpbmcgZmVlIGV4Y2VlZHMgYG1heF9mZWVgLj0BLSBbYEVycm9yOjpFeGNlZWRzTWF4UHNtRGVidGBdOiBJZiBtaW50aW5nIHdvdWxkIGV4Y2VlZCB0aGlzIFBTTSdzIGRlYnQgY2VpbGluZ2wgIChhZ2dyZWdhdGUgb3IgcGVyLWFzc2V0KS5JAS0gW2BFcnJvcjo6QW1vdW50VG9vU21hbGxBZnRlckNvbnZlcnNpb25gXTogSWYgdGhlIGNvbnZlcnNpb24gdG8gdGhlIGNvdW50ZXItYXNzZXS4ICByb3VuZHMgdG8gemVybzsgc3dhcCB3b3VsZCB0cmFuc2ZlciBub3RoaW5nLgAkIyMgRXZlbnRzAMAtIFtgRXZlbnQ6Ok1pbnRlZGBdOiBFbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgbWludC4YcmVkZWVtEAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAATxpbnRlcm5hbF9hbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAEcbWF4X2ZlZf0EARxQZXJtaWxsAAGg8FN3YXAgaW50ZXJuYWwgZm9yIGV4dGVybmFsIGFzc2V0IG9uIGEgc3BlY2lmaWMgUFNNIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAMRNdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB1c2VyIHBlcmZvcm1pbmcgdGhlIHN3YXAuACgjIyBEZXRhaWxzAEkBQnVybnMgYGludGVybmFsX2Ftb3VudGAgb2YgYGludGVybmFsX2Fzc2V0YCBmcm9tIHRoZSBjYWxsZXIgbWludXMgZmVlICh0cmFuc2ZlcnJlZDUBdG8gdGhlIGluc3RhbmNlJ3MgW2BQc21JbmZvOjpmZWVfZGVzdGluYXRpb25gXSksIHRoZW4gdHJhbnNmZXJzIHRoZSByZXN1bHRpbmclAWFtb3VudCBpbiBgZXh0ZXJuYWxfYXNzZXRgIGZyb20gdGhlIFBTTSByZXNlcnZlIHRvIHRoZSBjYWxsZXIuIFRoZSBmZWUgaXMtAWNhbGN1bGF0ZWQgdXNpbmcgY2VpbGluZyByb3VuZGluZyAoYG11bF9jZWlsYCksIGVuc3VyaW5nIHRoZSBwcm90b2NvbCBuZXZlckUBdW5kZXJjaGFyZ2VzLiBSZWRlbXB0aW9ucyB1c2UgdGhlIGRlY2ltYWxzIHNuYXBzaG90dGVkIHdoZW4gdGhlIFBTTS9leHRlcm5hbCBwYWlyRQF3YXMgcmVnaXN0ZXJlZCwgYWxsb3dpbmcgZXhpc3RpbmcgcG9zaXRpb25zIHRvIHVud2luZCBldmVuIGlmIGxpdmUgbWV0YWRhdGEgbGF0ZXIgY2hhbmdlcy4ANCMjIFBhcmFtZXRlcnMANQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBpbnRlcm5hbCBzdGFibGVjb2luIHRoYXQgaWRlbnRpZmllcyB0aGUgUFNNIGluc3RhbmNlLhkBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgdG8gcmVjZWl2ZSAobXVzdCBiZSBhcHByb3ZlZCBvblAgIGBpbnRlcm5hbF9hc3NldGApLugtIGBpbnRlcm5hbF9hbW91bnRgOiBBbW91bnQgb2YgYGludGVybmFsX2Fzc2V0YCB0byByZWRlZW0uAQEtIGBtYXhfZmVlYDogTWF4aW11bSByZWRlbXB0aW9uIGZlZSByYXRlIGFjY2VwdGVkIGJ5IHRoZSBjYWxsZXIuACQjIyBFcnJvcnMAHQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IElmIG5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLj0BLSBbYEVycm9yOjpVbnN1cHBvcnRlZEFzc2V0YF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIHRoaXMgUFNNLlkBLSBbYEVycm9yOjpBbGxTd2Fwc1N0b3BwZWRgXTogSWYgdGhlIHBlci1leHRlcm5hbCBjaXJjdWl0IGJyZWFrZXIgaXMgYXQgYEFsbERpc2FibGVkYC4tAS0gW2BFcnJvcjo6QmVsb3dNaW5pbXVtU3dhcGBdOiBJZiBgaW50ZXJuYWxfYW1vdW50YCBpcyBiZWxvdyB0aGUgaW5zdGFuY2Unc1AgIGBtaW5fc3dhcF9hbW91bnRgLjEBLSBbYEVycm9yOjpGZWVUb29IaWdoYF06IElmIHRoZSBjb25maWd1cmVkIHJlZGVtcHRpb24gZmVlIGV4Y2VlZHMgYG1heF9mZWVgLlEBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRSZXNlcnZlYF06IElmIHRoZSBQU00gaG9sZHMgbGVzcyBvZiBgZXh0ZXJuYWxfYXNzZXRgIHRoYW4gdGhlWCAgcmVkZW1wdGlvbiByZXF1aXJlcy5JAS0gW2BFcnJvcjo6QW1vdW50VG9vU21hbGxBZnRlckNvbnZlcnNpb25gXTogSWYgdGhlIGNvbnZlcnNpb24gdG8gdGhlIGNvdW50ZXItYXNzZXS4ICByb3VuZHMgdG8gemVybzsgc3dhcCB3b3VsZCB0cmFuc2ZlciBub3RoaW5nLgAkIyMgRXZlbnRzAOAtIFtgRXZlbnQ6OlJlZGVlbWVkYF06IEVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCByZWRlbXB0aW9uLihjcmVhdGVfcHNtGAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABKGZ1bGxfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAE8ZW1lcmdlbmN5X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABPGZlZV9kZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABIG1heF9kZWJ0NQEBMEJhbGFuY2VPZjxUPgABPG1pbl9zd2FwX2Ftb3VudDUBATBCYWxhbmNlT2Y8VD4AApCgQ3JlYXRlIGEgUFNNIGZvciBhIGdpdmVuIGludGVybmFsIGFzc2V0LgABAUlmIFtgQ29uZmlnOjpDcmVhdGVPcmlnaW5gXSByZXNvbHZlcyB0byBgU29tZShhY2NvdW50KWAsIHRha2VzIGFBAVtgQ29uZmlnOjpDb25zaWRlcmF0aW9uYF0gZGVwb3NpdCBmcm9tIHRoYXQgYWNjb3VudCBmb3IgdGhlIGluc3RhbmNlJ3MgZm9vdHByaW50OQEocmVmdW5kZWQgb24gYHJlbW92ZV9wc21gKS4gSWYgaXQgcmVzb2x2ZXMgdG8gYE5vbmVgLCBubyBkZXBvc2l0IGlzIHRha2VuLiBUaGVZAWBmdWxsX2FkbWluYCBhbmQgYGVtZXJnZW5jeV9hZG1pbmAgb3JpZ2lucyBhcmUgc2V0IGZyb20gdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgbWF5VQFsYXRlciBiZSByZWFzc2lnbmVkIHZpYSBbYFBhbGxldDo6c2V0X2Z1bGxfYWRtaW5gXSAvIFtgUGFsbGV0OjpzZXRfZW1lcmdlbmN5X2FkbWluYF0uAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFbYENvbmZpZzo6Q3JlYXRlT3JpZ2luYF0sIHBhcmFtZXRlcmlzZWQgYnkgYGludGVybmFsX2Fzc2V0YC4gV2l0aCB0aGUgcmVjb21tZW5kZWQhAVtgRW5zdXJlQXNzZXRPd25lcmBdIHRoaXMgaXMgYSBzaWduZWQgb3JpZ2luIHRoYXQgb3ducyBgaW50ZXJuYWxfYXNzZXRgLgA0IyMgUGFyYW1ldGVycwBFAS0gYGludGVybmFsX2Fzc2V0YDogVGhlIGludGVybmFsIHN0YWJsZWNvaW4ga2V5aW5nIHRoZSBuZXcgUFNNLiBNdXN0IGV4aXN0IGluIHRoZfAgIGZ1bmdpYmxlcyBiYWNrZW5kOyBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBQU00gcmVnaXN0ZXJlZC74LSBgZnVsbF9hZG1pbmA6IE9yaWdpbiBncmFudGVkIGZ1bGwgbWFuYWdlbWVudCBvZiB0aGUgbmV3IFBTTS4hAS0gYGVtZXJnZW5jeV9hZG1pbmA6IE9yaWdpbiBncmFudGVkIGVtZXJnZW5jeSBtYW5hZ2VtZW50IG9mIHRoZSBuZXcgUFNNLgEBLSBgZmVlX2Rlc3RpbmF0aW9uYDogQWNjb3VudCB0aGF0IHdpbGwgcmVjZWl2ZSBtaW50L3JlZGVlbSBmZWVzLuwtIGBtYXhfZGVidGA6IEluaXRpYWwgYWJzb2x1dGUgaW50ZXJuYWwtYXNzZXQgZGVidCBjZWlsaW5nLlEBLSBgbWluX3N3YXBfYW1vdW50YDogTWluaW11bSBzd2FwIGFtb3VudCBmb3IgdGhpcyBpbnN0YW5jZSwgaW4gaW50ZXJuYWwtYXNzZXQgdW5pdHMuTCAgTXVzdCBiZSBub24temVyby4AJCMjIEVycm9ycwBhAS0gW2BEaXNwYXRjaEVycm9yOjpCYWRPcmlnaW5gXTogVGhlIG9yaWdpbiBpcyBub3QgcGVybWl0dGVkIGJ5IFtgQ29uZmlnOjpDcmVhdGVPcmlnaW5gXS5BAS0gW2BFcnJvcjo6UHNtQWxyZWFkeUV4aXN0c2BdOiBBIFBTTSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAu6C0gW2BFcnJvcjo6WmVyb01pblN3YXBBbW91bnRgXTogYG1pbl9zd2FwX2Ftb3VudGAgaXMgemVyby4JAS0gW2BFcnJvcjo6QXNzZXREb2VzTm90RXhpc3RgXTogVGhlIGludGVybmFsIGFzc2V0IGRvZXMgbm90IGV4aXN0LlkBLSBBbnkgZXJyb3IgZnJvbSBlc3RhYmxpc2hpbmcgdGhlIFtgQ29uZmlnOjpDb25zaWRlcmF0aW9uYF0gZGVwb3NpdCB3aGVuIG9uZSBpcyBuZWVkZWSYICAoZS5nLiB0aGUgYWNjb3VudCBjYW5ub3QgYWZmb3JkIGl0KS4AJCMjIEV2ZW50cwBgLSBbYEV2ZW50OjpQc21DcmVhdGVkYF0uKHJlbW92ZV9wc20EAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAANcKQFSZW1vdmUgYSBQU00uIENhbGxhYmxlIGJ5IHRoZSBjdXJyZW50IGBmdWxsX2FkbWluYC4gQWxsIGFwcHJvdmVkIGV4dGVybmFsc+htdXN0IGJlIHJlbW92ZWQgZmlyc3QgYW5kIGFnZ3JlZ2F0ZSBQU00gZGVidCBtdXN0IGJlIHplcm8uAFUBSWYgYSBjcmVhdGlvbiBkZXBvc2l0IHdhcyB0YWtlbiwgaXQgaXMgYWx3YXlzIHJldHVybmVkIHRvIHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxsedBwYWlkIGl0LCByZWdhcmRsZXNzIG9mIGFueSBsYXRlciBhZG1pbiByZWFzc2lnbm1lbnQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AiE11c3QgbWF0Y2ggdGhlIFBTTSdzIGBmdWxsX2FkbWluYC4ANCMjIFBhcmFtZXRlcnMAvC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byByZW1vdmUuACQjIyBFcnJvcnMAEQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IE5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLhUBLSBbYEVycm9yOjpQc21IYXNBcHByb3ZlZEV4dGVybmFsc2BdOiBBcHByb3ZlZCBleHRlcm5hbHMgc3RpbGwgZXhpc3QuAQEtIFtgRXJyb3I6OlBzbUhhc0RlYnRgXTogT3V0c3RhbmRpbmcgYWdncmVnYXRlIGRlYnQgaXMgbm9uLXplcm8uACQjIyBFdmVudHMAYC0gW2BFdmVudDo6UHNtUmVtb3ZlZGBdLjxzZXRfbWludGluZ19mZWUMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABDGZlZf0EARxQZXJtaWxsAARQDQFTZXQgdGhlIG1pbnRpbmcgZmVlIGZvciBhbiBgKGludGVybmFsX2Fzc2V0LCBleHRlcm5hbF9hc3NldClgIHBhaXIuAEgjIyBEaXNwYXRjaCBPcmlnaW4AIQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgKHRoZSBgRnVsbGAgcHJpdmlsZWdlIGxldmVsKS4ANCMjIFBhcmFtZXRlcnMAyC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBjb25maWd1cmUuKQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB3aG9zZSBtaW50aW5nIGZlZSBpcyBiZWluZyB1cGRhdGVkLnQtIGBmZWVgOiBUaGUgbmV3IG1pbnRpbmcgZmVlLgAkIyMgRXJyb3JzAEkBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBvbmx5IGhhcyBgRW1lcmdlbmN5YCBwcml2aWxlZ2VzLl0BLSBbYEVycm9yOjpBc3NldE5vdEFwcHJvdmVkYF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMAAQEtIFtgRXZlbnQ6Ok1pbnRpbmdGZWVVcGRhdGVkYF06IEVtaXR0ZWQgd2l0aCBvbGQgYW5kIG5ldyB2YWx1ZXMuSHNldF9yZWRlbXB0aW9uX2ZlZQwBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAEMZmVl/QQBHFBlcm1pbGwABVAZAVNldCB0aGUgcmVkZW1wdGlvbiBmZWUgZm9yIGFuIGAoaW50ZXJuYWxfYXNzZXQsIGV4dGVybmFsX2Fzc2V0KWAgcGFpci4ASCMjIERpc3BhdGNoIE9yaWdpbgAhAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYCAodGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwpLgA0IyMgUGFyYW1ldGVycwDILSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGNvbmZpZ3VyZS41AS0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHdob3NlIHJlZGVtcHRpb24gZmVlIGlzIGJlaW5nIHVwZGF0ZWQugC0gYGZlZWA6IFRoZSBuZXcgcmVkZW1wdGlvbiBmZWUuACQjIyBFcnJvcnMASQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFByaXZpbGVnZWBdOiBJZiB0aGUgb3JpZ2luIG9ubHkgaGFzIGBFbWVyZ2VuY3lgIHByaXZpbGVnZXMuXQEtIFtgRXJyb3I6OkFzc2V0Tm90QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwANAS0gW2BFdmVudDo6UmVkZW1wdGlvbkZlZVVwZGF0ZWRgXTogRW1pdHRlZCB3aXRoIG9sZCBhbmQgbmV3IHZhbHVlcy4wc2V0X21heF9kZWJ0CAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABFHZhbHVlNQEBMEJhbGFuY2VPZjxUPgAGVEEBU2V0IHRoZSBQU00gZGVidCBjZWlsaW5nIHBlciBpbnRlcm5hbCBhc3NldCwgc2hhcmVkIGFjcm9zcyBhbGwgYXBwcm92ZWQgZXh0ZXJuYWwcYXNzZXRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAE0BTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gOyBvbmx5IHRoZSBgRnVsbGAgcHJpdmlsZWdlIGxldmVsIG1heSB1c2UodGhpcyBjYWxsLgA0IyMgUGFyYW1ldGVycwDILSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGNvbmZpZ3VyZS4JAS0gYHZhbHVlYDogVGhlIG5ldyBhYnNvbHV0ZSBkZWJ0IGNlaWxpbmcsIGluIGludGVybmFsLWFzc2V0IHVuaXRzLgAkIyMgRXJyb3JzAFEBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBsZXZlbCBjYW5ub3Qgc2V0IHRoZSBkZWJ0IGNlaWxpbmcuHQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IElmIG5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAPQtIFtgRXZlbnQ6Ok1heERlYnRVcGRhdGVkYF06IEVtaXR0ZWQgd2l0aCBvbGQgYW5kIG5ldyB2YWx1ZXMuQHNldF9hc3NldF9zdGF0dXMMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABGHN0YXR1cwEFAUxDaXJjdWl0QnJlYWtlckxldmVsAAdQ9FNldCB0aGUgY2lyY3VpdCBicmVha2VyIHBlciBleHRlcm5hbCBhc3NldCBvbiBhIFBTTSBpbnN0YW5jZS4ASCMjIERpc3BhdGNoIE9yaWdpbgAtAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYCBvciBgZW1lcmdlbmN5X2FkbWluYDsgZWl0aGVyIHRoZeBgRnVsbGAgb3IgYEVtZXJnZW5jeWAgcHJpdmlsZWdlIGxldmVsIG1heSB1c2UgdGhpcyBjYWxsLgA0IyMgUGFyYW1ldGVycwDILSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGNvbmZpZ3VyZS4VAS0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHdob3NlIHN0YXR1cyBpcyBiZWluZyB1cGRhdGVkLvAtIGBzdGF0dXNgOiBUaGUgbmV3IGNpcmN1aXQgYnJlYWtlciBsZXZlbCBmb3IgdGhhdCBleHRlcm5hbC4AJCMjIEVycm9ycwBdAS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAAEBLSBbYEV2ZW50OjpBc3NldFN0YXR1c1VwZGF0ZWRgXTogRW1pdHRlZCBvbiBhIHN1Y2Nlc3NmdWwgdXBkYXRlLmBzZXRfYXNzZXRfY2VpbGluZ193ZWlnaHQMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABGHdlaWdodP0EARxQZXJtaWxsAAhg8FNldCB0aGUgY2VpbGluZyB3ZWlnaHQgcGVyIGV4dGVybmFsIGFzc2V0IG9uIGEgUFNNIGluc3RhbmNlLgAtAVdlaWdodHMgYXJlIG5vcm1hbGlzZWQgYWdhaW5zdCB0aGUgc3VtIG9mIHdlaWdodHMgd2l0aGluIHRoZSBzYW1lIGluc3RhbmNlOvRgbWF4X2Fzc2V0X2RlYnQgPSAod2VpZ2h0IC8gc3VtX29mX3dlaWdodHMpICogaW5mby5tYXhfZGVidGAuAEgjIyBEaXNwYXRjaCBPcmlnaW4ATQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmA7IG9ubHkgdGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwgbWF5IHVzZSh0aGlzIGNhbGwuADQjIyBQYXJhbWV0ZXJzAMgtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gY29uZmlndXJlLjUBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgd2hvc2UgY2VpbGluZyB3ZWlnaHQgaXMgYmVpbmcgdXBkYXRlZC4xAS0gYHdlaWdodGA6IFRoZSBuZXcgY2VpbGluZyB3ZWlnaHQuIFplcm8gZGlzYWJsZXMgbWludGluZyBmb3IgdGhpcyBleHRlcm5hbC4AJCMjIEVycm9ycwBNAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gbGV2ZWwgY2Fubm90IHNldCBjZWlsaW5nIHdlaWdodHMuXQEtIFtgRXJyb3I6OkFzc2V0Tm90QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwAhAS0gW2BFdmVudDo6QXNzZXRDZWlsaW5nV2VpZ2h0VXBkYXRlZGBdOiBFbWl0dGVkIHdpdGggb2xkIGFuZCBuZXcgdmFsdWVzLkhhZGRfZXh0ZXJuYWxfYXNzZXQIAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAAJcNRBcHByb3ZlIGFuIGV4dGVybmFsIGFzc2V0IGZvciBhIGdpdmVuIGludGVybmFsIGFzc2V0LgAVAVNuYXBzaG90cyB0aGUgZXh0ZXJuYWwgYXNzZXQncyBsaXZlIGRlY2ltYWxzIGF0IHJlZ2lzdHJhdGlvbiB0aW1lIGFuZJxpbmNyZW1lbnRzIFtgUHNtSW5mbzo6ZXh0ZXJuYWxfY291bnRgXS4ASCMjIERpc3BhdGNoIE9yaWdpbgAhAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYCAodGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwpLgA0IyMgUGFyYW1ldGVycwABAS0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBhcHByb3ZlIHRoZSBleHRlcm5hbCBvbi7ILSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgdG8gYXBwcm92ZS4AJCMjIEVycm9ycwBJAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gb25seSBoYXMgYEVtZXJnZW5jeWAgcHJpdmlsZWdlcy4dAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogSWYgbm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuOQEtIFtgRXJyb3I6OlRvb01hbnlBc3NldHNgXTogSWYgdGhlIFBTTSBpcyBhbHJlYWR5IGF0IFtgQ29uZmlnOjpNYXhFeHRlcm5hbHNgXS5dAS0gW2BFcnJvcjo6QXNzZXRBbHJlYWR5QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBhbHJlYWR5IGFwcHJvdmVkIG9uIHRoaXMgUFNNLlEBLSBbYEVycm9yOjpBc3NldERvZXNOb3RFeGlzdGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGRvZXMgbm90IGV4aXN0IGluIHRoZSB1bmRlcmx5aW5nUCAgZnVuZ2libGVzIGJhY2tlbmQuXQEtIFtgRXJyb3I6OkRlY2ltYWxzUmFuZ2VFeGNlZWRlZGBdOiBJZiBgfGFzc2V0X2RlY2ltYWxzIOKIkiBpbnRlcm5hbF9kZWNpbWFsc3xgIGV4Y2VlZHNgICBbYE1BWF9ERUNJTUFMU19ESUZGYF0uACQjIyBFdmVudHMACQEtIFtgRXZlbnQ6OkV4dGVybmFsQXNzZXRBZGRlZGBdOiBFbWl0dGVkIG9uIGEgc3VjY2Vzc2Z1bCBhcHByb3ZhbC5UcmVtb3ZlX2V4dGVybmFsX2Fzc2V0CAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQACmS0UmVtb3ZlIGFuIGV4dGVybmFsIGFzc2V0IGZyb20gYSBQU00gaW5zdGFuY2UuACEBV2lwZXMgdGhlIGV4dGVybmFsJ3MgcGVyLWluc3RhbmNlIHN0YXRlIChzdGF0dXMsIGRlY2ltYWxzLCBmZWVzLCBjZWlsaW5nFQF3ZWlnaHQsIGRlYnQgY291bnRlcikgYW5kIGRlY3JlbWVudHMgW2BQc21JbmZvOjpleHRlcm5hbF9jb3VudGBdLiBUaGXoZXh0ZXJuYWwgbXVzdCBoYXZlIHplcm8gb3V0c3RhbmRpbmcgZGVidCBvbiB0aGlzIGluc3RhbmNlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luACEBTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gICh0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCkuADQjIyBQYXJhbWV0ZXJzAAUBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIHJlbW92ZSB0aGUgZXh0ZXJuYWwgZnJvbS7ELSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgdG8gcmVtb3ZlLgAkIyMgRXJyb3JzAEkBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBvbmx5IGhhcyBgRW1lcmdlbmN5YCBwcml2aWxlZ2VzLh0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC49AS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiB0aGlzIFBTTS49AS0gW2BFcnJvcjo6QXNzZXRIYXNEZWJ0YF06IElmIHRoZSBleHRlcm5hbCBzdGlsbCBoYXMgbm9uLXplcm8gb3V0c3RhbmRpbmcgZGVidC4AJCMjIEV2ZW50cwANAS0gW2BFdmVudDo6RXh0ZXJuYWxBc3NldFJlbW92ZWRgXTogRW1pdHRlZCBvbiBhIHN1Y2Nlc3NmdWwgcmVtb3ZhbC44c2V0X2Z1bGxfYWRtaW4IAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAEkbmV3X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgALSBkBUmVhc3NpZ24gdGhlIFBTTSdzIGBmdWxsX2FkbWluYC4gQ2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgYGZ1bGxfYWRtaW5gLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAKhNdXN0IG1hdGNoIHRoZSBQU00ncyBjdXJyZW50IGBmdWxsX2FkbWluYC4ANCMjIFBhcmFtZXRlcnMAAQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gd2hvc2UgYGZ1bGxfYWRtaW5gIGlzIGJlaW5nIGNoYW5nZWQurC0gYG5ld19hZG1pbmA6IFRoZSBuZXcgYGZ1bGxfYWRtaW5gIG9yaWdpbi4AJCMjIEVycm9ycwARAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogTm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMAeC0gW2BFdmVudDo6RnVsbEFkbWluQ2hhbmdlZGBdLkxzZXRfZW1lcmdlbmN5X2FkbWluCAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4ADEgtAVJlYXNzaWduIHRoZSBQU00ncyBgZW1lcmdlbmN5X2FkbWluYC4gQ2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgYGZ1bGxfYWRtaW5gLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAKhNdXN0IG1hdGNoIHRoZSBQU00ncyBjdXJyZW50IGBmdWxsX2FkbWluYC4ANCMjIFBhcmFtZXRlcnMAFQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gd2hvc2UgYGVtZXJnZW5jeV9hZG1pbmAgaXMgYmVpbmcgY2hhbmdlZC7ALSBgbmV3X2FkbWluYDogVGhlIG5ldyBgZW1lcmdlbmN5X2FkbWluYCBvcmlnaW4uACQjIyBFcnJvcnMAEQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IE5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAIwtIFtgRXZlbnQ6OkVtZXJnZW5jeUFkbWluQ2hhbmdlZGBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy79BAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAABBQwocGFsbGV0X3BzbRhwYWxsZXRMQ2lyY3VpdEJyZWFrZXJMZXZlbAABDChBbGxFbmFibGVkAAAAPE1pbnRpbmdEaXNhYmxlZAABACxBbGxEaXNhYmxlZAACAAAFBQw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBBDYWxsCARUAARJAAEYLHNwZW5kX2xvY2FsCAEYYW1vdW50cQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AA0S4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEUBTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3QgYGFtb3VudGAuACwjIyMgRGV0YWlsc0UBTk9URTogRm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLCB0aGUgcHJvcG9zZXIgaXMgZGVlbWVkIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlMGJlbmVmaWNpYXJ5LgA4IyMjIFBhcmFtZXRlcnNBAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAu6C0gYGJlbmVmaWNpYXJ5YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB0cmFuc2Zlci4AJCMjIEV2ZW50cwC0RW1pdHMgW2BFdmVudDo6U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuPHJlbW92ZV9hcHByb3ZhbAQBLHByb3Bvc2FsX2lkYAE0UHJvcG9zYWxJbmRleAAEVC0BRm9yY2UgYSBwcmV2aW91c2x5IGFwcHJvdmVkIHByb3Bvc2FsIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgYXBwcm92YWwgcXVldWUuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwDAVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBubyBsb25nZXIgYmUgcmV0dXJuZWQuADgjIyMgUGFyYW1ldGVyc6AtIGBwcm9wb3NhbF9pZGA6IFRoZSBpbmRleCBvZiBhIHByb3Bvc2FsADgjIyMgQ29tcGxleGl0eawtIE8oQSkgd2hlcmUgYEFgIGlzIHRoZSBudW1iZXIgb2YgYXBwcm92YWxzACgjIyMgRXJyb3JzRQEtIFtgRXJyb3I6OlByb3Bvc2FsTm90QXBwcm92ZWRgXTogVGhlIGBwcm9wb3NhbF9pZGAgc3VwcGxpZWQgd2FzIG5vdCBmb3VuZCBpbiB0aGVRASAgYXBwcm92YWwgcXVldWUsIGkuZS4sIHRoZSBwcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuIFRoaXMgY291bGQgYWxzbyBtZWFuIHRoZVkBICBwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCBhbHRvZ2V0aGVyLCB0aHVzIHRoZXJlIGlzIG5vIHdheSBpdCB3b3VsZCBoYXZlIGJlZW4gYXBwcm92ZWRUICBpbiB0aGUgZmlyc3QgcGxhY2UuFHNwZW5kEAEoYXNzZXRfa2luZAkFAURCb3g8VDo6QXNzZXRLaW5kPgABGGFtb3VudHEBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5DQUBeEJveDxCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+PgABKHZhbGlkX2Zyb23gAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AAVouFByb3Bvc2UgYW5kIGFwcHJvdmUgYSBzcGVuZCBvZiB0cmVhc3VyeSBmdW5kcy4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0VQFgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgaW4gdGhlIG5hdGl2ZSBhc3NldC4gVGhlIGFtb3VudCBvZiBgYXNzZXRfa2luZGAgaXMgY29udmVydGVk1GZvciBhc3NlcnRpb24gdXNpbmcgdGhlIFtgQ29uZmlnOjpCYWxhbmNlQ29udmVydGVyYF0uACgjIyBEZXRhaWxzAEkBQ3JlYXRlIGFuIGFwcHJvdmVkIHNwZW5kIGZvciB0cmFuc2ZlcnJpbmcgYSBzcGVjaWZpYyBgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgdG8gYWEBZGVzaWduYXRlZCBiZW5lZmljaWFyeS4gVGhlIHNwZW5kIG11c3QgYmUgY2xhaW1lZCB1c2luZyB0aGUgYHBheW91dGAgZGlzcGF0Y2hhYmxlIHdpdGhpbnR0aGUgW2BDb25maWc6OlBheW91dFBlcmlvZGBdLgA4IyMjIFBhcmFtZXRlcnMVAS0gYGFzc2V0X2tpbmRgOiBBbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmljIGFzc2V0IGNsYXNzIHRvIGJlIHNwZW50LkEBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC64LSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgb2YgdGhlIHNwZW5kLlUBLSBgdmFsaWRfZnJvbWA6IFRoZSBibG9jayBudW1iZXIgZnJvbSB3aGljaCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQuIEl0IGNhbiByZWZlciB0bxkBICB0aGUgcGFzdCBpZiB0aGUgcmVzdWx0aW5nIHNwZW5kIGhhcyBub3QgeWV0IGV4cGlyZWQgYWNjb3JkaW5nIHRvIHRoZUUBICBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uIElmIGBOb25lYCwgdGhlIHNwZW5kIGNhbiBiZSBjbGFpbWVkIGltbWVkaWF0ZWx5IGFmdGVyLCAgYXBwcm92YWwuACQjIyBFdmVudHMAyEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuGHBheW91dAQBFGluZGV4OAEoU3BlbmRJbmRleAAGTDhDbGFpbSBhIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADhNdXN0IGJlIHNpZ25lZAAoIyMgRGV0YWlscwBVAVNwZW5kcyBtdXN0IGJlIGNsYWltZWQgd2l0aGluIHNvbWUgdGVtcG9yYWwgYm91bmRzLiBBIHNwZW5kIG1heSBiZSBjbGFpbWVkIHdpdGhpbiBvbmXUW2BDb25maWc6OlBheW91dFBlcmlvZGBdIGZyb20gdGhlIGB2YWxpZF9mcm9tYCBibG9jay5VAUluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIHNwZW5kIHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUgYGNoZWNrX3N0YXR1c2DcZGlzcGF0Y2hhYmxlIGJlZm9yZSByZXRyeWluZyB3aXRoIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAkEVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMEARRpbmRleDgBKFNwZW5kSW5kZXgAB0wpAUNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZW5kIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgc3RvcmFnZSBpZiBwcm9jZXNzZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwABAVRoZSBzdGF0dXMgY2hlY2sgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIHJldHJ5aW5nIGEgZmFpbGVkIHBheW91dC5JAUlmIGEgc3BlbmQgaGFzIGVpdGhlciBzdWNjZWVkZWQgb3IgZXhwaXJlZCwgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlIGJ5IHRoaXPsZnVuY3Rpb24uIEluIHN1Y2ggaW5zdGFuY2VzLCB0cmFuc2FjdGlvbiBmZWVzIGFyZSByZWZ1bmRlZC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAPhFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIHNwZW5kIHBheW91dCBoYXMgZmFpbGVkLgEBRW1pdHMgW2BFdmVudDo6U3BlbmRQcm9jZXNzZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBzdWNjZWVkLih2b2lkX3NwZW5kBAEUaW5kZXg4AShTcGVuZEluZGV4AAhAfFZvaWQgcHJldmlvdXNseSBhcHByb3ZlZCBzcGVuZC4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAB0BQSBzcGVuZCB2b2lkIGlzIG9ubHkgcG9zc2libGUgaWYgdGhlIHBheW91dCBoYXMgbm90IGJlZW4gYXR0ZW1wdGVkIHlldC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAMBFbWl0cyBbYEV2ZW50OjpBc3NldFNwZW5kVm9pZGVkYF0gaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFGltcGxzXFZlcnNpb25lZExvY2F0YWJsZUFzc2V0AAEMCFYzCAEgbG9jYXRpb27JAQFEeGNtOjp2Mzo6TG9jYXRpb24AASBhc3NldF9pZGkCAUB4Y206OnYzOjpBc3NldElkAAMACFY0CAEgbG9jYXRpb27lAQFEeGNtOjp2NDo6TG9jYXRpb24AASBhc3NldF9pZN0CAUB4Y206OnY0OjpBc3NldElkAAQACFY1CAEgbG9jYXRpb24ZAgFEeGNtOjp2NTo6TG9jYXRpb24AASBhc3NldF9pZCkDAUB4Y206OnY1OjpBc3NldElkAAUAAA0FDERwYXJhY2hhaW5zX2NvbW1vbgxwYXlkVmVyc2lvbmVkTG9jYXRhYmxlQWNjb3VudAABCAhWNAgBIGxvY2F0aW9u5QEBRHhjbTo6djQ6OkxvY2F0aW9uAAEoYWNjb3VudF9pZOUBAUR4Y206OnY0OjpMb2NhdGlvbgAEAAhWNQgBIGxvY2F0aW9uGQIBRHhjbTo6djU6OkxvY2F0aW9uAAEoYWNjb3VudF9pZBkCAUR4Y206OnY1OjpMb2NhdGlvbgAFAAARBQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBBDYWxsCARUAARJAAEYEHZvdGUIAShwb2xsX2luZGV4YAFEUG9sbEluZGV4T2Y8VCwgST4AARB2b3RlFQUBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AACQZAVZvdGUgaW4gYSBwb2xsLiBJZiBgdm90ZS5pc19heWUoKWAsIHRoZSB2b3RlIGlzIHRvIGVuYWN0IHRoZSBwcm9wb3NhbDu4b3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AyC0gYHBvbGxfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHBvbGwgdG8gdm90ZSBmb3IuhC0gYHZvdGVgOiBUaGUgdm90ZSBjb25maWd1cmF0aW9uLgAVAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgaGFzIHZvdGVkIG9uLiBkZWxlZ2F0ZRABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AAQh0bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoY29udmljdGlvbh0FAShDb252aWN0aW9uAAEcYmFsYW5jZTUBATxCYWxhbmNlT2Y8VCwgST4AAVxNAURlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgKHdpdGggc29tZSBnaXZlbiBjb252aWN0aW9uKSBvZiB0aGUgc2VuZGluZyBhY2NvdW50IGZvciBhaHBhcnRpY3VsYXIgY2xhc3Mgb2YgcG9sbHMuAFUBVGhlIGJhbGFuY2UgZGVsZWdhdGVkIGlzIGxvY2tlZCBmb3IgYXMgbG9uZyBhcyBpdCdzIGRlbGVnYXRlZCwgYW5kIHRoZXJlYWZ0ZXIgZm9yIHRoZch0aW1lIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udmljdGlvbidzIGxvY2sgcGVyaW9kLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgZWl0aGVyOnQgIC0gYmUgZGVsZWdhdGluZyBhbHJlYWR5OyBvckUBICAtIGhhdmUgbm8gdm90aW5nIGFjdGl2aXR5IChpZiB0aGVyZSBpcywgdGhlbiBpdCB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCB0aHJvdWdoTCAgICBgcmVtb3ZlX3ZvdGVgKS4ARQEtIGB0b2A6IFRoZSBhY2NvdW50IHdob3NlIHZvdGluZyB0aGUgYHRhcmdldGAgYWNjb3VudCdzIHZvdGluZyBwb3dlciB3aWxsIGZvbGxvdy5dAS0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIGRlbGVnYXRlLiBUbyBkZWxlZ2F0ZSBtdWx0aXBsZSBjbGFzc2VzLCBtdWx0aXBsZSBjYWxsc4AgIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHJlcXVpcmVkLlUBLSBgY29udmljdGlvbmA6IFRoZSBjb252aWN0aW9uIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgZGVsZWdhdGVkIHZvdGVzLiBXaGVuIHRoZUEBICBhY2NvdW50IGlzIHVuZGVsZWdhdGVkLCB0aGUgZnVuZHMgd2lsbCBiZSBsb2NrZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHBlcmlvZC5hAS0gYGJhbGFuY2VgOiBUaGUgYW1vdW50IG9mIHRoZSBhY2NvdW50J3MgYmFsYW5jZSB0byBiZSB1c2VkIGluIGRlbGVnYXRpbmcuIFRoaXMgbXVzdCBub3S0ICBiZSBtb3JlIHRoYW4gdGhlIGFjY291bnQncyBjdXJyZW50IGJhbGFuY2UuAEhFbWl0cyBgRGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLih1bmRlbGVnYXRlBAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgACOE0BVW5kZWxlZ2F0ZSB0aGUgdm90aW5nIHBvd2VyIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGEgcGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AXQFUb2tlbnMgbWF5IGJlIHVubG9ja2VkIGZvbGxvd2luZyBvbmNlIGFuIGFtb3VudCBvZiB0aW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9jayBwZXJpb2QJAW9mIHRoZSBjb252aWN0aW9uIHdpdGggd2hpY2ggdGhlIGRlbGVnYXRpb24gd2FzIGlzc3VlZCBoYXMgcGFzc2VkLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZVRjdXJyZW50bHkgZGVsZWdhdGluZy4A8C0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHJlbW92ZSB0aGUgZGVsZWdhdGlvbiBmcm9tLgBQRW1pdHMgYFVuZGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLhh1bmxvY2sIARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyRdAVJlbW92ZSB0aGUgbG9jayBjYXVzZWQgYnkgcHJpb3Igdm90aW5nL2RlbGVnYXRpbmcgd2hpY2ggaGFzIGV4cGlyZWQgd2l0aGluIGEgcGFydGljdWxhchhjbGFzcy4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAKAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byB1bmxvY2suuC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSB0aGUgbG9jayBvbi4AvFdlaWdodDogYE8oUilgIHdpdGggUiBudW1iZXIgb2Ygdm90ZSBvZiB0YXJnZXQuLHJlbW92ZV92b3RlCAEUY2xhc3MhBQFUT3B0aW9uPENsYXNzT2Y8VCwgST4+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAEdGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAAxJZjpwLSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBvcmQtIHRoZSBwb2xsIGlzIG9uZ29pbmcsIG9yeC0gdGhlIHBvbGwgaGFzIGVuZGVkIHN1Y2ggdGhhdPwgIC0gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQgd2FzIGluIG9wcG9zaXRpb24gdG8gdGhlIHJlc3VsdDsgb3LUICAtIHRoZXJlIHdhcyBubyBjb252aWN0aW9uIHRvIHRoZSBhY2NvdW50J3Mgdm90ZTsgb3KEICAtIHRoZSBhY2NvdW50IG1hZGUgYSBzcGxpdCB2b3RlXQEuLi50aGVuIHRoZSB2b3RlIGlzIHJlbW92ZWQgY2xlYW5seSBhbmQgYSBmb2xsb3dpbmcgY2FsbCB0byBgdW5sb2NrYCBtYXkgcmVzdWx0IGluIG1vcmVYZnVuZHMgYmVpbmcgYXZhaWxhYmxlLgCQSWYsIGhvd2V2ZXIsIHRoZSBwb2xsIGhhcyBlbmRlZCBhbmQ67C0gaXQgZmluaXNoZWQgY29ycmVzcG9uZGluZyB0byB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCwgYW5k3C0gdGhlIGFjY291bnQgbWFkZSBhIHN0YW5kYXJkIHZvdGUgd2l0aCBjb252aWN0aW9uLCBhbmS8LSB0aGUgbG9jayBwZXJpb2Qgb2YgdGhlIGNvbnZpY3Rpb24gaXMgbm90IG92ZXJZAS4uLnRoZW4gdGhlIGxvY2sgd2lsbCBiZSBhZ2dyZWdhdGVkIGludG8gdGhlIG92ZXJhbGwgYWNjb3VudCdzIGxvY2ssIHdoaWNoIG1heSBpbnZvbHZlWQEqb3ZlcmxvY2tpbmcqICh3aGVyZSB0aGUgdHdvIGxvY2tzIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvY2sgdGhhdCBpcyB0aGUgbWF4aW11beRvZiBib3RoIHRoZSBhbW91bnQgbG9ja2VkIGFuZCB0aGUgdGltZSBpcyBpdCBsb2NrZWQgZm9yKS4ASQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25lciBtdXN0IGhhdmUgYSB2b3RlcHJlZ2lzdGVyZWQgZm9yIHBvbGwgYGluZGV4YC4A3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC5VAS0gYGNsYXNzYDogT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiBnaXZlbiBpdCBpbmRpY2F0ZXMgdGhlIGNsYXNzIG9mIHRoZSBwb2xsLiBGb3IgcG9sbHPwICB3aGljaCBoYXZlIGZpbmlzaGVkIG9yIGFyZSBjYW5jZWxsZWQsIHRoaXMgbXVzdCBiZSBgU29tZWAuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLkRyZW1vdmVfb3RoZXJfdm90ZQwBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABFGluZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4ABUBkUmVtb3ZlIGEgdm90ZSBmb3IgYSBwb2xsLgBNAUlmIHRoZSBgdGFyZ2V0YCBpcyBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvLQFgcmVtb3ZlX3ZvdGVgLiBJZiBub3QgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGUgdm90ZSBtdXN0IGhhdmUgZXhwaXJlZCwlAWVpdGhlciBiZWNhdXNlIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIGJlY2F1c2UgdGhlIHZvdGVyIGxvc3QgdGhlIHBvbGwgb3KYYmVjYXVzZSB0aGUgY29udmljdGlvbiBwZXJpb2QgaXMgb3Zlci4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAGEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZDsgdGhpcyBhY2NvdW50IG11c3QgaGF2ZSB2b3RlZCBmb3IgcG9sbCggIGBpbmRleGAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC6ELSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgdGhlIHBvbGwuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4VBQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUsQWNjb3VudFZvdGUEHEJhbGFuY2UBNQEBDCBTdGFuZGFyZAgBEHZvdGUZBQEQVm90ZQABHGJhbGFuY2U1AQEcQmFsYW5jZQAAABRTcGxpdAgBDGF5ZTUBARxCYWxhbmNlAAEMbmF5NQEBHEJhbGFuY2UAAQAwU3BsaXRBYnN0YWluDAEMYXllNQEBHEJhbGFuY2UAAQxuYXk1AQEcQmFsYW5jZQABHGFic3RhaW41AQEcQmFsYW5jZQACAAAZBQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUQVm90ZQAABAAMAAAAHQUMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZyhjb252aWN0aW9uKENvbnZpY3Rpb24AARwQTm9uZQAAACBMb2NrZWQxeAABACBMb2NrZWQyeAACACBMb2NrZWQzeAADACBMb2NrZWQ0eAAEACBMb2NrZWQ1eAAFACBMb2NrZWQ2eAAGAAAhBQQYT3B0aW9uBARUAe0DAQgQTm9uZQAAABBTb21lBADtAwAAAQAAJQUMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0EENhbGwIBFQABEkAASQYc3VibWl0DAE8cHJvcG9zYWxfb3JpZ2lu8QMBXEJveDxQYWxsZXRzT3JpZ2luT2Y8VD4+AAEgcHJvcG9zYWwpBQFMQm91bmRlZENhbGxPZjxULCBJPgABQGVuYWN0bWVudF9tb21lbnQxBQGIRGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAAJLBQcm9wb3NlIGEgcmVmZXJlbmR1bSBvbiBhIHByaXZpbGVnZWQgYWN0aW9uLgBZAS0gYG9yaWdpbmA6IG11c3QgYmUgYFN1Ym1pdE9yaWdpbmAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBgU3VibWlzc2lvbkRlcG9zaXRgIGZ1bmRzMCAgYXZhaWxhYmxlLi0BLSBgcHJvcG9zYWxfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZXhlY3V0ZWQubC0gYHByb3Bvc2FsYDogVGhlIHByb3Bvc2FsLhUBLSBgZW5hY3RtZW50X21vbWVudGA6IFRoZSBtb21lbnQgdGhhdCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGVuYWN0ZWQuAEhFbWl0cyBgU3VibWl0dGVkYC5YcGxhY2VfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEgrFBvc3QgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgcmVmZXJlbmR1bS4AOQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgZnVuZHMgYXZhaWxhYmxlIGZvciB0aGWgICByZWZlcmVuZHVtJ3MgdHJhY2sncyBEZWNpc2lvbiBEZXBvc2l0LlEBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHN1Ym1pdHRlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaXMgeWV0IHRvIGJlJCAgcG9zdGVkLgB4RW1pdHMgYERlY2lzaW9uRGVwb3NpdFBsYWNlZGAuXHJlZnVuZF9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAhwpAVJlZnVuZCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5NAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIBFbWl0cyBgRGVjaXNpb25EZXBvc2l0UmVmdW5kZWRgLhhjYW5jZWwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAADGHRDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtLgCcLSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYENhbmNlbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4ASEVtaXRzIGBDYW5jZWxsZWRgLhBraWxsBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABBjQQ2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bSBhbmQgc2xhc2ggdGhlIGRlcG9zaXRzLgCULSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYEtpbGxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAJBFbWl0cyBgS2lsbGVkYCBhbmQgYERlcG9zaXRTbGFzaGVkYC5AbnVkZ2VfcmVmZXJlbmR1bQQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAUQHQFBZHZhbmNlIGEgcmVmZXJlbmR1bSBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAupC0gYGluZGV4YDogdGhlIHJlZmVyZW5kdW0gdG8gYmUgYWR2YW5jZWQuSG9uZV9mZXdlcl9kZWNpZGluZwQBFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgAGJAkBQWR2YW5jZSBhIHRyYWNrIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6QLSBgdHJhY2tgOiB0aGUgdHJhY2sgdG8gYmUgYWR2YW5jZWQuAFEBQWN0aW9uIGl0ZW0gZm9yIHdoZW4gdGhlcmUgaXMgbm93IG9uZSBmZXdlciByZWZlcmVuZHVtIGluIHRoZSBkZWNpZGluZyBwaGFzZSBhbmQgdGhlFQFgRGVjaWRpbmdDb3VudGAgaXMgbm90IHlldCB1cGRhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGVpdGhlcjolAS0gYmVnaW4gZGVjaWRpbmcgYW5vdGhlciByZWZlcmVuZHVtIChhbmQgbGVhdmUgYERlY2lkaW5nQ291bnRgIGFsb25lKTsgb3JwLSBkZWNyZW1lbnQgYERlY2lkaW5nQ291bnRgLmRyZWZ1bmRfc3VibWlzc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABxwxAVJlZnVuZCB0aGUgU3VibWlzc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLlUBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBTdWJtaXNzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCIRW1pdHMgYFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWRgLjBzZXRfbWV0YWRhdGEIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAABKG1heWJlX2hhc2g1BQE8T3B0aW9uPFQ6Okhhc2g+AAgcmFNldCBvciBjbGVhciBtZXRhZGF0YSBvZiBhIHJlZmVyZW5kdW0uACxQYXJhbWV0ZXJzOkUBLSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYCBieSBhIGNyZWF0b3Igb2YgYSByZWZlcmVuZHVtIG9yIGJ5IGFueW9uZSB0byBjbGVhciBhkCAgbWV0YWRhdGEgb2YgYSBmaW5pc2hlZCByZWZlcmVuZHVtLg0BLSBgaW5kZXhgOiAgVGhlIGluZGV4IG9mIGEgcmVmZXJlbmR1bSB0byBzZXQgb3IgY2xlYXIgbWV0YWRhdGEgZm9yLlEBLSBgbWF5YmVfaGFzaGA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZS4gYE5vbmVgIHRvIGNsZWFyIGEgbWV0YWRhdGEuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikFEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyRwcmVpbWFnZXMcQm91bmRlZAgEVAEgBEgBLQUBDBhMZWdhY3kEARBoYXNoPAEkSDo6T3V0cHV0AAAAGElubGluZQQAZQQBNEJvdW5kZWRJbmxpbmUAAQAYTG9va3VwCAEQaGFzaDwBJEg6Ok91dHB1dAABDGxlbjgBDHUzMgACAAAtBQwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAMQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIHNjaGVkdWxlMERpc3BhdGNoVGltZQQsQmxvY2tOdW1iZXIBOAEICEF0BAA4ASxCbG9ja051bWJlcgAAABRBZnRlcgQAOAEsQmxvY2tOdW1iZXIAAQAANQUEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAAA5BQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQQQ2FsbAQEVAABEDh3aGl0ZWxpc3RfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAABccmVtb3ZlX3doaXRlbGlzdGVkX2NhbGwEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEAZGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGwMASRjYWxsX2hhc2g8ARxUOjpIYXNoAAFAY2FsbF9lbmNvZGVkX2xlbjgBDHUzMgABTGNhbGxfd2VpZ2h0X3dpdG5lc3MRAQEYV2VpZ2h0AAIAnGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGxfd2l0aF9wcmVpbWFnZQQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLj0FDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0EENhbGwIBFQABEkAASw4cHJvcG9zZV9ib3VudHkIARR2YWx1ZXEBATxCYWxhbmNlT2Y8VCwgST4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AADBUUHJvcG9zZSBhIG5ldyBib3VudHkuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQFQYXltZW50OiBgVGlwUmVwb3J0RGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQsIGFzIHdlbGwgYXNRAWBEYXRhRGVwb3NpdFBlckJ5dGVgIGZvciBlYWNoIGJ5dGUgaW4gYHJlYXNvbmAuIEl0IHdpbGwgYmUgdW5yZXNlcnZlZCB1cG9uIGFwcHJvdmFsLGRvciBzbGFzaGVkIHdoZW4gcmVqZWN0ZWQuAPgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuJQEtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eSwgY3VyYXRvciBmZWUgaW5jbHVkZWQuwC0gYGRlc2NyaXB0aW9uYDogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYm91bnR5LjhhcHByb3ZlX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcXQFBcHByb3ZlIGEgYm91bnR5IHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBib3VudHkgd2lsbCBiZSBmdW5kZWQgYW5kIGJlY29tZSBhY3RpdmWoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuPHByb3Bvc2VfY3VyYXRvcgwBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBPEJhbGFuY2VPZjxULCBJPgACGJRQcm9wb3NlIGEgY3VyYXRvciB0byBhIGZ1bmRlZCBib3VudHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuQHVuYXNzaWduX2N1cmF0b3IEASRib3VudHlfaWRgASxCb3VudHlJbmRleAADRHxVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBib3VudHkuAB0BVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIGEgc2lnbmVkIG9yaWdpbi4APQFJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzMQFtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuAGEBSWYgdGhlIG9yaWdpbiBpcyB0aGUgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iIGFuZF0BdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byByZWNvdmVyIHRoZWlyNQFkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZiBpdCBpcyBhYnVzZWQuKQBdAUZpbmFsbHksIHRoZSBvcmlnaW4gY2FuIGJlIGFueW9uZSBpZiBhbmQgb25seSBpZiB0aGUgY3VyYXRvciBpcyAiaW5hY3RpdmUiLiBUaGlzIGFsbG93c2EBYW55b25lIGluIHRoZSBjb21tdW5pdHkgdG8gY2FsbCBvdXQgdGhhdCBhIGN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZDkBd2Ugc2hvdWxkIHBpY2sgYSBuZXcgY3VyYXRvci4gSW4gdGhpcyBjYXNlIHRoZSBjdXJhdG9yIHNob3VsZCBhbHNvIGJlIHNsYXNoZWQuADQjIyBDb21wbGV4aXR5HC0gTygxKS44YWNjZXB0X2N1cmF0b3IEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAEHJRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBib3VudHkuKQFBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgCQTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGN1cmF0b3IuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wYXdhcmRfYm91bnR5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAUoWQFBd2FyZCBib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50LiBUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kczhhZnRlciBhIGRlbGF5LgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGF3YXJkLhkBLSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgYWNjb3VudCB3aG9tIHdpbGwgcmVjZWl2ZSB0aGUgcGF5b3V0LgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsYWltX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAYg7ENsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGJlbmVmaWNpYXJ5IG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNsYWltLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsb3NlX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAckOQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgYm91bnR5LiBBbGwgdGhlIGZ1bmRzIHdpbGwgYmUgc2VudCB0byB0cmVhc3VyeSBhbmTMdGhlIGN1cmF0b3IgZGVwb3NpdCB3aWxsIGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAMhPbmx5IGBUOjpSZWplY3RPcmlnaW5gIGlzIGFibGUgdG8gY2FuY2VsIGEgYm91bnR5LgCMLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNhbmNlbC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLlBleHRlbmRfYm91bnR5X2V4cGlyeQgBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEYcmVtYXJrGAEcVmVjPHU4PgAIJKxFeHRlbmQgdGhlIGV4cGlyeSB0aW1lIG9mIGFuIGFjdGl2ZSBib3VudHkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gZXh0ZW5kLowtIGByZW1hcmtgOiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkubGFwcHJvdmVfYm91bnR5X3dpdGhfY3VyYXRvcgwBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBPEJhbGFuY2VPZjxULCBJPgAJLNRBcHByb3ZlIGJvdW50cnkgYW5kIHByb3Bvc2UgYSBjdXJhdG9yIHNpbXVsdGFuZW91c2x5LlUBVGhpcyBjYWxsIGlzIGEgc2hvcnRjdXQgdG8gY2FsbGluZyBgYXBwcm92ZV9ib3VudHlgIGFuZCBgcHJvcG9zZV9jdXJhdG9yYCBzZXBhcmF0ZWx5LgCkTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlNwZW5kT3JpZ2luYC4AkC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBhcHByb3ZlLvgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wcG9rZV9kZXBvc2l0BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgACjzkUG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgY3JlYXRpbmcgYSBib3VudHkgcHJvcG9zYWwuAPRUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHVwZGF0ZSB0aGVpciByZXNlcnZlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGJvdW50eV9pZGA6IFRoZSBib3VudHkgaWQgZm9yIHdoaWNoIHRvIGFkanVzdCB0aGUgZGVwb3NpdC4AOQFJZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLCB0aGUgZGlmZmVyZW5jZSB3aWxsIGJlIHJlc2VydmVkL3VucmVzZXJ2ZWQgZnJvbSB0aGVMcHJvcG9zZXIncyBhY2NvdW50LgApAVRoZSB0cmFuc2FjdGlvbiBpcyBtYWRlIGZyZWUgaWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZCBhbmQgcGFpZCBvdGhlcndpc2UuALxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBBDYWxsBARUAAEcQGFkZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AAExcQWRkIGEgbmV3IGNoaWxkLWJvdW50eS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHBhcmVudNxib3VudHkgYW5kIHRoZSBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gImFjdGl2ZSIgc3RhdGUuAAUBQ2hpbGQtYm91bnR5IGdldHMgYWRkZWQgc3VjY2Vzc2Z1bGx5ICYgZnVuZCBnZXRzIHRyYW5zZmVycmVkIGZyb20JAXBhcmVudCBib3VudHkgdG8gY2hpbGQtYm91bnR5IGFjY291bnQsIGlmIHBhcmVudCBib3VudHkgaGFzIGVub3VnaGxmdW5kcywgZWxzZSB0aGUgY2FsbCBmYWlscy4ADQFVcHBlciBib3VuZCB0byBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlqGFkZGVkIGFyZSBtYW5hZ2VkIHZpYSBydW50aW1lIHRyYWl0IGNvbmZpZ5hbYENvbmZpZzo6TWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGBdLgABAUlmIHRoZSBjYWxsIGlzIHN1Y2Nlc3MsIHRoZSBzdGF0dXMgb2YgY2hpbGQtYm91bnR5IGlzIHVwZGF0ZWQgdG8gIkFkZGVkIi4ATQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLrAtIGB2YWx1ZWA6IFZhbHVlIGZvciBleGVjdXRpbmcgdGhlIHByb3Bvc2FsLtwtIGBkZXNjcmlwdGlvbmA6IFRleHQgZGVzY3JpcHRpb24gZm9yIHRoZSBjaGlsZC1ib3VudHkuPHByb3Bvc2VfY3VyYXRvchABQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBMEJhbGFuY2VPZjxUPgABPKBQcm9wb3NlIGN1cmF0b3IgZm9yIGZ1bmRlZCBjaGlsZC1ib3VudHkuAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgY3VyYXRvciBvZiBwYXJlbnQgYm91bnR5LgARAVBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvFHdvcmsuAA0BQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gIkFkZGVkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZAUBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJDdXJhdG9yUHJvcG9zZWQiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS60LSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgY2hpbGQtYm91bnR5IGN1cmF0b3Iu7C0gYGZlZWA6IHBheW1lbnQgZmVlIHRvIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZvciBleGVjdXRpb24uOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAAky0QWNjZXB0IHRoZSBjdXJhdG9yIHJvbGUgZm9yIHRoZSBjaGlsZC1ib3VudHkuAPRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzNGNoaWxkLWJvdW50eS4A7EEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uiHN1Y2Nlc3NmdWwgcGF5b3V0IG9yIGNhbmNlbGxhdGlvbi4A+EZlZSBmb3IgY3VyYXRvciBpcyBkZWR1Y3RlZCBmcm9tIGN1cmF0b3IgZmVlIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQ3VyYXRvclByb3Bvc2VkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlCQFjYWxsLiBBbmQgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJBY3RpdmUiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAOIlFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGNoaWxkLWJvdW50eS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgY2FuIGJlIGVpdGhlciBgUmVqZWN0T3JpZ2luYCwgb3LcdGhlIGN1cmF0b3Igb2YgdGhlIHBhcmVudCBib3VudHksIG9yIGFueSBzaWduZWQgb3JpZ2luLgD4Rm9yIHRoZSBvcmlnaW4gb3RoZXIgdGhhbiBUOjpSZWplY3RPcmlnaW4gYW5kIHRoZSBjaGlsZC1ib3VudHkBAWN1cmF0b3IsIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNhbGwgdG8JAXdvcmsuIFdlIGFsbG93IGNoaWxkLWJvdW50eSBjdXJhdG9yIGFuZCBUOjpSZWplY3RPcmlnaW4gdG8gZXhlY3V0Zch0aGlzIGNhbGwgaXJyZXNwZWN0aXZlIG9mIHRoZSBwYXJlbnQgYm91bnR5IHN0YXRlLgDcSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZQUBcGFyZW50IGJvdW50eSBjdXJhdG9yLCB3ZSBhc3N1bWUgdGhhdCB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMNAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4ABQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbgkBdGhhdCB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iLCBhbmQgYXJlIHdpbGxpbmdseSBnaXZpbmcgdXAuCQFXZSBjb3VsZCBzbGFzaCB0aGUgZGVwb3NpdCwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byB1bnJlc2VydmURAXRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmOGl0IGlzIGFidXNlZC4pAAUBRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmZiB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMJASJpbmFjdGl2ZSIuIEV4cGlyeSB1cGRhdGUgZHVlIG9mIHBhcmVudCBib3VudHkgaXMgdXNlZCB0byBlc3RpbWF0ZZxpbmFjdGl2ZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4ADQFUaGlzIGFsbG93cyBhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY2hpbGQtYm91bnR5CQFjdXJhdG9yIGlzIG5vdCBkb2luZyB0aGVpciBkdWUgZGlsaWdlbmNlLCBhbmQgd2Ugc2hvdWxkIHBpY2sgYSBuZXf4b25lLiBJbiB0aGlzIGNhc2UgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4AAQFTdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gQWRkZWQgc3RhdGUgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5Lkhhd2FyZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABESQQXdhcmQgY2hpbGQtYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkuAPhUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kcyBhZnRlciBhIGRlbGF5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhcmVudCBjdXJhdG9yIG9ydGN1cmF0b3Igb2YgdGhpcyBjaGlsZC1ib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ACQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZSBjYWxsLiBBbmQRAXN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiUGVuZGluZ1BheW91dCIgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LpQtIGBiZW5lZmljaWFyeWA6IEJlbmVmaWNpYXJ5IGFjY291bnQuSGNsYWltX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAVABQFDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBjaGlsZC1ib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG1heSBiZSBhbnkgc2lnbmVkIG9yaWdpbi4ABQFDYWxsIHdvcmtzIGluZGVwZW5kZW50IG9mIHBhcmVudCBib3VudHkgc3RhdGUsIE5vIG5lZWQgZm9yIHBhcmVudHRib3VudHkgdG8gYmUgaW4gYWN0aXZlIHN0YXRlLgARAVRoZSBCZW5lZmljaWFyeSBpcyBwYWlkIG91dCB3aXRoIGFncmVlZCBib3VudHkgdmFsdWUuIEN1cmF0b3IgZmVlIGlzlHBhaWQgJiBjdXJhdG9yIGRlcG9zaXQgaXMgdW5yZXNlcnZlZC4ABQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiUGVuZGluZ1BheW91dCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZfxjYWxsLiBBbmQgaW5zdGFuY2Ugb2YgY2hpbGQtYm91bnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhdGUgb25sc3VjY2Vzc2Z1bCBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkhjbG9zZV9jaGlsZF9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAAGWBEBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGNoaWxkLWJvdW50eS4gQ2hpbGQtYm91bnR5IGFjY291bnQgZnVuZHMJAWFyZSB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgYm91bnR5IGFjY291bnQuIFRoZSBjaGlsZC1ib3VudHkgY3VyYXRvcphkZXBvc2l0IG1heSBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlciBwYXJlbnQgY3VyYXRvciBvckhgVDo6UmVqZWN0T3JpZ2luYC4A8ElmIHRoZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgYEFjdGl2ZWAsIGN1cmF0b3IgZGVwb3NpdCBpcyx1bnJlc2VydmVkLgD0SWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgUGVuZGluZ1BheW91dGAsIGNhbGwgZmFpbHMgJnhyZXR1cm5zIGBQZW5kaW5nUGF5b3V0YCBlcnJvci4ADQFGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGlu8GFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8gd29yay4gRm9yIG9yaWdpbpBUOjpSZWplY3RPcmlnaW4gZXhlY3V0aW9uIGlzIGZvcmNlZC4AAQFJbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUFDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQQQ2FsbAQEVAABDBhjcmVhdGUIAShhc3NldF9raW5kCQUBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZUkFASRGaXhlZFUxMjgAABANAUluaXRpYWxpemUgYSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHVwZGF0ZQgBKGFzc2V0X2tpbmQJBQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlSQUBJEZpeGVkVTEyOAABEAUBVXBkYXRlIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHJlbW92ZQQBKGFzc2V0X2tpbmQJBQFEQm94PFQ6OkFzc2V0S2luZD4AAhAlAVJlbW92ZSBhbiBleGlzdGluZyBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkFDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAA1AQEQdTEyOAAATQUMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABKCxmdW5kX2JvdW50eRABKGFzc2V0X2tpbmQJBQFEQm94PFQ6OkFzc2V0S2luZD4AARR2YWx1ZXEBAShUOjpCYWxhbmNlAAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbWV0YWRhdGE8ARxUOjpIYXNoAABoKQFGdW5kIGEgbmV3IGJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZbhmdW5kaW5nIHNvdXJjZSB0byB0aGUgYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AHQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdEEBdGhlIGJvdW50eSB2YWx1ZSBjb252ZXJ0ZWQgdG8gbmF0aXZlIGJhbGFuY2UgdXNpbmcgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS41AVRoZSBjb252ZXJ0ZWQgbmF0aXZlIGFtb3VudCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgbWF4aW11bSBzcGVuZGFibGUgYW1vdW50kHJldHVybmVkIGJ5IFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdLgAoIyMgRGV0YWlscwAhAS0gVGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gZnVuZCB0aGUgYm91bnR5LlkBLSBUaGUgYm91bnR5IGB2YWx1ZWAgKGluIGFzc2V0IGJhbGFuY2UpIGlzIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdmFsaWRhdGlvbi4pAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGJvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlAQEgIGBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVycxkBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgZnVuZGVkLswtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eS6cLSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgYm91bnR5IGN1cmF0b3IuLQEtIGBtZXRhZGF0YWA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZSB3aXRoIGJvdW50eSBtZXRhZGF0YS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNyZWF0ZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuRGZ1bmRfY2hpbGRfYm91bnR5EAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQABIG1ldGFkYXRhPAEcVDo6SGFzaAABHGN1cmF0b3JdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABYF0BRnVuZCBhIG5ldyBjaGlsZC1ib3VudHkgd2l0aCBhIHByb3Bvc2VkIGN1cmF0b3IsIGluaXRpYXRpbmcgdGhlIHBheW1lbnQgZnJvbSB0aGUgcGFyZW50sGJvdW50eSB0byB0aGUgY2hpbGQtYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwYXJlbnQgY3VyYXRvci4AKCMjIERldGFpbHMARQEtIElmIGBjdXJhdG9yYCBpcyBub3QgcHJvdmlkZWQsIHRoZSBjaGlsZC1ib3VudHkgd2lsbCBkZWZhdWx0IHRvIHVzaW5nIHRoZSBwYXJlbnQ1ASAgY3VyYXRvciwgYWxsb3dpbmcgdGhlIHBhcmVudCBjdXJhdG9yIHRvIGltbWVkaWF0ZWx5IGNhbGwgYGNoZWNrX3N0YXR1c2AgYW5ksCAgYGF3YXJkX2JvdW50eWAgdG8gcGF5b3V0IHRoZSBjaGlsZC1ib3VudHkuRQEtIEluIGNhc2Ugb2YgYSBmdW5kaW5nIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzTQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLswtIGB2YWx1ZWA6IFRoZSBwYXltZW50IGFtb3VudCBvZiB0aGlzIGNoaWxkLWJvdW50eS5FAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggY2hpbGQtYm91bnR5IG1ldGFkYXRhLrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4AJCMjIEV2ZW50cwAZAUVtaXRzIFtgRXZlbnQ6OkNoaWxkQm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC48cHJvcG9zZV9jdXJhdG9yDAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACVDEBUHJvcG9zZSBhIG5ldyBjdXJhdG9yIGZvciBhIGNoaWxkLS9ib3VudHkgYWZ0ZXIgdGhlIHByZXZpb3VzIHdhcyB1bmFzc2lnbmVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEEBTXVzdCBiZSBzaWduZWQgYnkgYFQ6OlNwZW5kT3JpZ2luYCBmb3IgYSBib3VudHksIG9yIGJ5IHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3JMZm9yIGEgY2hpbGQtYm91bnR5LgAoIyMgRGV0YWlscwD0LSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQ3VyYXRvclVuYXNzaWduZWRgIHN0YXRlLkUBLSBGb3IgYSBib3VudHksIHRoZSBgU3BlbmRPcmlnaW5gIG11c3QgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHByb3Bvc2UgdGhlKCAgY3VyYXRvci4AOCMjIyBQYXJhbWV0ZXJzmC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS7MLSBgY3VyYXRvcmA6IEFjY291bnQgdG8gYmUgcHJvcG9zZWQgYXMgdGhlIGN1cmF0b3IuACQjIyBFdmVudHMAvEVtaXRzIFtgRXZlbnQ6OkN1cmF0b3JQcm9wb3NlZGBdIGlmIHN1Y2Nlc3NmdWwuOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgADTLBBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAJxNdXN0IGJlIHNpZ25lZCBieSB0aGUgcHJvcG9zZWQgY3VyYXRvci4AKCMjIERldGFpbHMAyC0gVGhlIGNoaWxkLS9ib3VudHkgbXVzdCBiZSBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUu8C0gVGhlIGN1cmF0b3IgbXVzdCBhY2NlcHQgdGhlIHJvbGUgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLkkBLSBBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBjdXJhdG9yIGFuZCByZWZ1bmRlZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgc3VjY2Vzc2Z1bC5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ABGSYVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gLCBvciBieSB0aGUgcGFyZW50IGN1cmF0b3IgaW4gdGhlIGNhc2VZASAgb2YgYSBjaGlsZCBib3VudHksIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzIG1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsqCAgd2Ugd2lsbCBzbGFzaCB0aGUgY3VyYXRvciB3aGVuIHBvc3NpYmxlLl0BLSBJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IsIHdlIHRha2UgdGhpcyBhcyBhIHNpZ24gdGhleSBhcmUgdW5hYmxlIHRvUQEgIGRvIHRoZWlyIGpvYiBhbmQgdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3dZASAgdGhlbSB0byByZWNvdmVyIHRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmQCAgaXQgaXMgYWJ1c2VkKS49AS0gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYEN1cmF0b3JVbmFzc2lnbmVkYC4gVG9FASAgcmVhY3RpdmF0ZSB0aGUgYm91bnR5LCBhIG5ldyBjdXJhdG9yIG11c3QgYmUgcHJvcG9zZWQgYW5kIG11c3QgYWNjZXB0IHRoZSByb2xlLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDERW1pdHMgW2BFdmVudDo6Q3VyYXRvclVuYXNzaWduZWRgXSBpZiBzdWNjZXNzZnVsLjBhd2FyZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnkNBQFkQmVuZWZpY2lhcnlMb29rdXBPZjxULCBJPgAFYOxBd2FyZHMgdGhlIGNoaWxkLS9ib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLB0BaW5pdGlhdGluZyB0aGUgcGF5b3V0IHBheW1lbnRzIHRvIGJvdGggdGhlIGJlbmVmaWNpYXJ5IGFuZCB0aGUgY3VyYXRvci4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS49AS0gaWYgYXdhcmRpbmcgYSBwYXJlbnQgYm91bnR5IGl0IG11c3Qgbm90IGhhdmUgYWN0aXZlIG9yIGZ1bmRlZCBjaGlsZCBib3VudGllcy5ZAS0gSW5pdGlhdGVzIHBheW91dCBwYXltZW50IGZyb20gdGhlIGNoaWxkLS9ib3VudHkgdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uJQEtIElmIHN1Y2Nlc3NmdWwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYFBheW91dEF0dGVtcHRlZGAuMQEtIEluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRo+GBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgkBLSBgYmVuZWZpY2lhcnlgOiBBY2NvdW50L2xvY2F0aW9uIHRvIGJlIGF3YXJkZWQgdGhlIGNoaWxkLS9ib3VudHkuACQjIyBFdmVudHMABQFFbWl0cyBbYEV2ZW50OjpCb3VudHlBd2FyZGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjbG9zZV9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAZcYQFDYW5jZWwgYW4gYWN0aXZlIGNoaWxkLS9ib3VudHkuIEEgcGF5bWVudCB0byBzZW5kIGFsbCB0aGUgZnVuZHMgdG8gdGhlIGZ1bmRpbmcgc291cmNlIGlzMGluaXRpYWxpemVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAD0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEFjdGl2ZWAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkIGFuZCB0aGURASAgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJhdG9yIGFjY291bnQvbG9jYXRpb24uQQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBmdW5kaW5nIG9yIHBheW91dCBwaGFzZSwgaXQgY2Fubm90IGJlIGNhbmNlbGVkLkEBLSBJbiBjYXNlIG9mIGEgcmVmdW5kIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGX4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMACQFFbWl0cyBbYEV2ZW50OjpCb3VudHlDYW5jZWxlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2hlY2tfc3RhdHVzCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAHZNxDaGVjayBhbmQgdXBkYXRlIHRoZSBwYXltZW50IHN0YXR1cyBvZiBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBVAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBmdW5kaW5nIHBheW1lbnQNASAgaGFzIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGJvdW50eSBzdGF0dXMgYmVjb21lcyBgRnVuZGVkYC5dAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIHJlZnVuZCBwYXltZW50IGhhcxkBICBzdWNjZWVkZWQuIElmIHN1Y2Nlc3NmdWwsIHRoZSBjaGlsZC0vYm91bnR5IGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFBheW91dEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAF0BRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgdGhlIGNoaWxkL2JvdW50eSBzdGF0dXMgdHJhbnNpdGlvbnMgdG8gYEFjdGl2ZWAuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlSZWZ1bmRQcm9jZXNzZWRgXSBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzIHN1Y2NlZWQuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlQYXlvdXRQcm9jZXNzZWRgXSBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzIHN1Y2NlZWQuVQFFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvdXIgcGF5bWVudCBwYXltZW50IGhhcyBmYWlsZWQuNHJldHJ5X3BheW1lbnQIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAhYtFJldHJ5IHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAYQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgRnVuZGluZ0F0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIGZ1bmRpbmcgcGF5bWVudCBmcm9t0CAgZnVuZGluZyBzb3VyY2UgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbi5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSByZWZ1bmQgcGF5bWVudCBmcm9t7CAgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbiB0byB0aGUgZnVuZGluZyBzb3VyY2UuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgcGF5b3V0IHBheW1lbnQgZnJvbSUBICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwA1AUVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG9yIHBheW91dCBwYXltZW50IGhhcyBpbml0aWF0ZWQuOGluY3JlYXNlX3ZhbHVlCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACXjMSW5jcmVhc2UgdGhlIHZhbHVlIG9mIGFuIGFjdGl2ZSBib3VudHkgYnkgYGFtb3VudGAuAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMArC0gVGhlIGJvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS5NAS0gUmFpc2VzIHRoZSByZWNvcmRlZCBgdmFsdWVgIGJ5IGBhbW91bnRgLiBUaGlzIGlzIHVzZWQgdG8gcmVnaXN0ZXIgZnVuZHMgdGhhdCB3ZXJlXQEgIHRyYW5zZmVycmVkIGludG8gdGhlIGJvdW50eSBhY2NvdW50IG91dC1vZi1iYW5kIChlLmcuIHJlY3VycmluZyBleHRlcm5hbCB0b3AtdXBzKSwgc29VASAgdGhleSBiZWNvbWUgYXZhaWxhYmxlIHRvIGF3YXJkIG9yIHRvIGFsbG9jYXRlIHRvIGNoaWxkIGJvdW50aWVzLiBJdCBtdXN0IGJlIGdyZWF0ZXIkICB0aGFuIDAuVQEtIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgcmUtZXZhbHVhdGVkIGZvciB0aGUgbmV3IHZhbHVlIGFuZCBhbnkgYWRkaXRpb25hbCBkZXBvc2l0IGlzdCAgY29sbGVjdGVkIGZyb20gdGhlIGN1cmF0b3IuUQEtIFRoZSB2YWx1ZSBjYW4gb25seSBiZSBpbmNyZWFzZWQsIG5ldmVyIGRlY3JlYXNlZCwgc28gdGhlIGludmFyaWFudCB0aGF0IHRoZSBzdW0gb2YJASAgY2hpbGQtYm91bnR5IHZhbHVlcyBuZXZlciBleGNlZWRzIHRoZSBwYXJlbnQgdmFsdWUgaXMgcHJlc2VydmVkLkUBLSBUaGlzIGNhbGwgZG9lcyAqKm5vdCoqIGNoZWNrIHRoYXQgdGhlIGJvdW50eSBhY2NvdW50IGhvbGRzIGBuZXdfdmFsdWVgOyBpdCBvbmx5TQEgIHVwZGF0ZXMgdGhlIHJlY29yZGVkIHZhbHVlLiBQYXlvdXRzIHN0YXkgYm91bmRlZCBieSB0aGUgYWNjb3VudCdzIHJlYWwgYmFsYW5jZSBhdFUBICBzZXR0bGVtZW50LCBzbyBpbmNyZWFzaW5nIHRoZSB2YWx1ZSBiZXlvbmQgdGhlIGF2YWlsYWJsZSBmdW5kcyBzaW1wbHkgbWFrZXMgYSBsYXRlcsggIHBheW91dCBmYWlsIOKAlCBubyBmdW5kcyBhcmUgbW92ZWQgYnkgdGhpcyBjYWxsLvgtIE9ubHkgYSBwYXJlbnQgYm91bnR5J3MgdmFsdWUgY2FuIGJlIGluY3JlYXNlZCB2aWEgdGhpcyBjYWxsLgA4IyMjIFBhcmFtZXRlcnMNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiB0aGUgYm91bnR5IHdob3NlIHZhbHVlIGlzIGluY3JlYXNlZC7ILSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBhZGQgdG8gdGhlIGJvdW50eSB2YWx1ZS4AJCMjIEV2ZW50cwDQRW1pdHMgW2BFdmVudDo6Qm91bnR5VmFsdWVJbmNyZWFzZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RBQwocGFsbGV0X2RhcBhwYWxsZXQQQ2FsbAQEVAABBFRzZXRfYnVkZ2V0X2FsbG9jYXRpb24EATxuZXdfYWxsb2NhdGlvbnNVBQFMQnVkZ2V0QWxsb2NhdGlvbk1hcAAAEHhTZXQgdGhlIGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4AOQFFYWNoIGtleSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50YC4gVGhlIHN1bSBvZiBhbGwgcGVyY2VudGFnZXMlAW11c3QgYmUgZXhhY3RseSAxMDAlLiBSZWNpcGllbnRzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWFwIHJlY2VpdmUgbm90aGluZy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQUMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAd0DBFYBWQUEUwAABABdBQE4QlRyZWVNYXA8SywgVj4AAFkFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAF0FBCBCVHJlZU1hcAgESwHdAwRWAVkFAAQAYQUAAABhBQAAAmUFAGUFAAAECN0DWQUAaQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnbQUBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzcQUBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlcjgBDHUzMgABMHdpdG5lc3NfdGFza3UFAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5czQBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZTgBDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290GAEcVmVjPHU4PgABKGNoaWxkX2tleXM0ATBWZWM8VmVjPHU4Pj4AASh0b3RhbF9zaXplOAEMdTMyAAMYEQFNaWdyYXRlIHRoZSBsaXN0IG9mIGNoaWxkIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgANAUFsbCBvZiB0aGUgZ2l2ZW4gY2hpbGQga2V5cyBtdXN0IGJlIHByZXNlbnQgdW5kZXIgb25lIGBjaGlsZF9yb290YC4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlRzZXRfc2lnbmVkX21heF9saW1pdHMEARhsaW1pdHNxBQE8TWlncmF0aW9uTGltaXRzAAQEuFNldCB0aGUgbWF4aW11bSBsaW1pdCBvZiB0aGUgc2lnbmVkIG1pZ3JhdGlvbi5IZm9yY2Vfc2V0X3Byb2dyZXNzCAEwcHJvZ3Jlc3NfdG9weQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZHkFATRQcm9ncmVzc09mPFQ+AAUkyEZvcmNlZnVsbHkgc2V0IHRoZSBwcm9ncmVzcyB0aGUgcnVubmluZyBtaWdyYXRpb24uAF0BVGhpcyBpcyBvbmx5IHVzZWZ1bCBpbiBvbmUgY2FzZTogdGhlIG5leHQga2V5IHRvIG1pZ3JhdGUgaXMgdG9vIGJpZyB0byBiZSBtaWdyYXRlZCB3aXRoVQFhIHNpZ25lZCBhY2NvdW50LCBpbiBhIHBhcmFjaGFpbiBjb250ZXh0LCBhbmQgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC4gQSByZWFzb25hYmxlYQFleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgYDpjb2RlOmAsIHdoaWNoIGlzIGJvdGggdmVyeSBleHBlbnNpdmUgdG8gbWlncmF0ZSwgYW5kIGNvbW1vbmx5pHVzZWQsIHNvIHByb2JhYmx5IGl0IGlzIGFscmVhZHkgbWlncmF0ZWQuAF0BSW4gY2FzZSB5b3UgbWVzcyB0aGluZ3MgdXAsIHlvdSBjYW4gYWxzbywgaW4gcHJpbmNpcGxlLCB1c2UgdGhpcyB0byByZXNldCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLm0FBBhPcHRpb24EBFQBcQUBCBBOb25lAAAAEFNvbWUEAHEFAAABAABxBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDxNaWdyYXRpb25MaW1pdHMAAAgBEHNpemU4AQx1MzIAARBpdGVtOAEMdTMyAAB1BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDRNaWdyYXRpb25UYXNrBARUAAAUATBwcm9ncmVzc190b3B5BQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkeQUBNFByb2dyZXNzT2Y8VD4AARBzaXplOAEMdTMyAAEkdG9wX2l0ZW1zOAEMdTMyAAEsY2hpbGRfaXRlbXM4AQx1MzIAAHkFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0IFByb2dyZXNzBCRNYXhLZXlMZW4AAQwcVG9TdGFydAAAABxMYXN0S2V5BAB9BQFkQm91bmRlZFZlYzx1OCwgTWF4S2V5TGVuPgABACBDb21wbGV0ZQACAAB9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAIEFDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50cQEBMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYYUFAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHNxAQEwQmFsYW5jZU9mPFQ+AAN8RQFVbmJvbmQgdXAgdG8gYHVuYm9uZGluZ19wb2ludHNgIG9mIHRoZSBgbWVtYmVyX2FjY291bnRgJ3MgZnVuZHMgZnJvbSB0aGUgcG9vbC4gSXRFAWltcGxpY2l0bHkgY29sbGVjdHMgdGhlIHJld2FyZHMgb25lIGxhc3QgdGltZSwgc2luY2Ugbm90IGRvaW5nIHNvIHdvdWxkIG1lYW4gc29tZWxyZXdhcmRzIHdvdWxkIGJlIGZvcmZlaXRlZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaC4AXQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuIFRoaXMgaXMgcmVmZXJlZWQgdG8wICBhcyBhIGtpY2su9CogVGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgdGhlIG1lbWJlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIHBvb2wgaXMgZGVzdHJveWluZywgdGhlIG1lbWJlciBpcyB0aGUgZGVwb3NpdG9yIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgARASMjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaCAoaS5lLiB0aGUgY2FsbGVyIGlzIGFsc28gdGhlSGBtZW1iZXJfYWNjb3VudGApOgCIKiBUaGUgY2FsbGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgY2FsbGVyIGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABgjIE5vdGUAHQFJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byB1bmJvbmQgd2l0aCB0aGUgcG9vbCBhY2NvdW50LFEBW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF0gY2FuIGJlIGNhbGxlZCB0byB0cnkgYW5kIG1pbmltaXplIHVubG9ja2luZyBjaHVua3MuWQFUaGUgW2BTdGFraW5nSW50ZXJmYWNlOjp1bmJvbmRgXSB3aWxsIGltcGxpY2l0bHkgY2FsbCBbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXVUBdG8gdHJ5IHRvIGZyZWUgY2h1bmtzIGlmIG5lY2Vzc2FyeSAoaWUuIGlmIHVuYm91bmQgd2FzIGNhbGxlZCBhbmQgbm8gdW5sb2NraW5nIGNodW5rc2EBYXJlIGF2YWlsYWJsZSkuIEhvd2V2ZXIsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsZWFzZSB0aGUgY3VycmVudCB1bmxvY2tpbmcgY2h1bmtzLF0BaW4gd2hpY2ggY2FzZSwgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwgd2lsbCBsaWtlbHkgYmUgdGhlIGBOb01vcmVDaHVua3NgIGVycm9yIGZyb20gdGhlPHN0YWtpbmcgc3lzdGVtLlhwb29sX3dpdGhkcmF3X3VuYm9uZGVkCAEccG9vbF9pZDgBGFBvb2xJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAEGFUBQ2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIGZvciB0aGUgcG9vbHMgYWNjb3VudC4gVGhpcyBjYWxsIGNhbiBiZSBtYWRlIGJ5IGFueSBhY2NvdW50LgBBAVRoaXMgaXMgdXNlZnVsIGlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIGNhbGwgYHVuYm9uZGAsIGFuZCBzb21lYQFjYW4gYmUgY2xlYXJlZCBieSB3aXRoZHJhd2luZy4gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MsIHRoZSB1c2VyUQF3b3VsZCBwcm9iYWJseSBzZWUgYW4gZXJyb3IgbGlrZSBgTm9Nb3JlQ2h1bmtzYCBlbWl0dGVkIGZyb20gdGhlIHN0YWtpbmcgc3lzdGVtIHdoZW5cdGhleSBhdHRlbXB0IHRvIHVuYm9uZC5Ed2l0aGRyYXdfdW5ib25kZWQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAVYVQFXaXRoZHJhdyB1bmJvbmRlZCBmdW5kcyBmcm9tIGBtZW1iZXJfYWNjb3VudGAuIElmIG5vIGJvbmRlZCBmdW5kcyBjYW4gYmUgdW5ib25kZWQsIGFuSGVycm9yIGlzIHJldHVybmVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCoIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoAAkBKiBUaGUgcG9vbCBpcyBpbiBkZXN0cm95IG1vZGUgYW5kIHRoZSB0YXJnZXQgaXMgbm90IHRoZSBkZXBvc2l0b3IuMQEqIFRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciBhbmQgdGhleSBhcmUgdGhlIG9ubHkgbWVtYmVyIGluIHRoZSBzdWIgcG9vbHMuDQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuAJgjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaADoKiBUaGUgY2FsbGVyIGlzIHRoZSB0YXJnZXQgYW5kIHRoZXkgYXJlIG5vdCB0aGUgZGVwb3NpdG9yLgAYIyBOb3RlAPQtIElmIHRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQuYQEtIElmIHRoZSBwb29sIGhhcyBhbnkgcGVuZGluZyBzbGFzaCwgd2UgYWxzbyB0cnkgdG8gc2xhc2ggdGhlIG1lbWJlciBiZWZvcmUgbGV0dGluZyB0aGVtXQF3aXRoZHJhdy4gVGhpcyBjYWxjdWxhdGlvbiBhZGRzIHNvbWUgd2VpZ2h0IG92ZXJoZWFkIGFuZCBpcyBvbmx5IGRlZmVuc2l2ZS4gSW4gcmVhbGl0eSxVAXBvb2wgc2xhc2hlcyBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGFwcGxpZWQgdmlhIHBlcm1pc3Npb25sZXNzIFtgQ2FsbDo6YXBwbHlfc2xhc2hgXS4YY3JlYXRlEAEYYW1vdW50cQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAZEdENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wuACwjIEFyZ3VtZW50cwBVASogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIGZ1bmRzIHRvIGRlbGVnYXRlIHRvIHRoZSBwb29sLiBUaGlzIGFsc28gYWN0cyBvZiBhIHNvcnQgb2ZNASAgZGVwb3NpdCBzaW5jZSB0aGUgcG9vbHMgY3JlYXRvciBjYW5ub3QgZnVsbHkgdW5ib25kIGZ1bmRzIHVudGlsIHRoZSBwb29sIGlzIGJlaW5nMCAgZGVzdHJveWVkLlEBKiBgaW5kZXhgIC0gQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBmb3IgY3JlYXRpbmcgdGhlIGFjY291bnQuIExpa2VseSBvbmx5IHVzZWZ1bCB3aGVuwCAgY3JlYXRpbmcgbXVsdGlwbGUgcG9vbHMgaW4gdGhlIHNhbWUgZXh0cmluc2ljLtQqIGByb290YCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyBbYFBvb2xSb2xlczo6cm9vdGBdLg0BKiBgbm9taW5hdG9yYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6Om5vbWluYXRvcmBdLvwqIGBib3VuY2VyYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6OmJvdW5jZXJgXS4AGCMgTm90ZQBhAUluIGFkZGl0aW9uIHRvIGBhbW91bnRgLCB0aGUgY2FsbGVyIHdpbGwgdHJhbnNmZXIgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQ7IHNvIHRoZSBjYWxsZXINAW5lZWRzIGF0IGhhdmUgYXQgbGVhc3QgYGFtb3VudCArIGV4aXN0ZW50aWFsX2RlcG9zaXRgIHRyYW5zZmVyYWJsZS5MY3JlYXRlX3dpdGhfcG9vbF9pZBQBGGFtb3VudHEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc3kBAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgAYIyBOb3RlAFkBSW4gYWRkaXRpb24gdG8gYSBgcm9vdGAgb3IgYG5vbWluYXRvcmAgcm9sZSBvZiBgb3JpZ2luYCwgdGhlIHBvb2wncyBkZXBvc2l0b3IgbmVlZHMgdG8NAWhhdmUgYXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZDgBGFBvb2xJZAABFHN0YXRliQUBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkOAEYUG9vbElkAAEgbWV0YWRhdGEYARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZI0FAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25kjQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHORBQE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJzkQUBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbJEFATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9ulQUBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZDgBGFBvb2xJZAABIG5ld19yb290mQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9ymQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcpkFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQ4ARhQb29sSWQADURwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoOlUBKiBXaGVuIHBvb2wgZGVwb3NpdG9yIGhhcyBsZXNzIHRoYW4gYE1pbk5vbWluYXRvckJvbmRgIHN0YWtlZCwgb3RoZXJ3aXNlIHBvb2wgbWVtYmVyc1wgIGFyZSB1bmFibGUgdG8gdW5ib25kLgCcIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2g6tCogVGhlIGNhbGxlciBpcyB0aGUgcG9vbCdzIG5vbWluYXRvciBvciByb290LkBib25kX2V4dHJhX290aGVyCAEYbWVtYmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYYUFAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9unQUBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgQBMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABOG5ld19jb21taXNzaW9uoQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvblkFARxQZXJiaWxsABIUlFNldCB0aGUgbWF4aW11bSBjb21taXNzaW9uIG9mIGEgcG9vbC4AOQEtIEluaXRpYWwgbWF4IGNhbiBiZSBzZXQgdG8gYW55IGBQZXJiaWxsYCwgYW5kIG9ubHkgc21hbGxlciB2YWx1ZXMgdGhlcmVhZnRlci41AS0gQ3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgbG93ZXJlZCBpbiB0aGUgZXZlbnQgaXQgaXMgaGlnaGVyIHRoYW4gYSBuZXcgbWF4NCAgY29tbWlzc2lvbi5oc2V0X2NvbW1pc3Npb25fY2hhbmdlX3JhdGUIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGWpBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+ABMQqFNldCB0aGUgY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBmb3IgYSBwb29sLgA9AUluaXRpYWwgY2hhbmdlIHJhdGUgaXMgbm90IGJvdW5kZWQsIHdoZXJlYXMgc3Vic2VxdWVudCB1cGRhdGVzIGNhbiBvbmx5IGJlIG1vcmV0cmVzdHJpY3RpdmUgdGhhbiB0aGUgY3VycmVudC5AY2xhaW1fY29tbWlzc2lvbgQBHHBvb2xfaWQ4ARhQb29sSWQAFEBkQ2xhaW0gcGVuZGluZyBjb21taXNzaW9uLgA9AVRoZSBgcm9vdGAgcm9sZSBvZiB0aGUgcG9vbCBpcyBfYWx3YXlzXyBhbGxvd2VkIHRvIGNsYWltIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AVQFJZiB0aGUgcG9vbCBoYXMgc2V0IGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uOjpQZXJtaXNzaW9ubGVzc2AsIHRoZW4gYW55IGFjY291bnQgY2Fu2HRyaWdnZXIgdGhlIHByb2Nlc3Mgb2YgY2xhaW1pbmcgdGhlIHBvb2wncyBjb21taXNzaW9uLgBBAUlmIHRoZSBwb29sIGhhcyBzZXQgaXRzIGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uYCB0byBgQWNjb3VudChhY2MpYCwgdGhlbiBvbmx5IGFjY291bnRzMCogYGFjY2AsIGFuZGQqIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50ALhtYXkgY2FsbCB0aGlzIGV4dHJpbnNpYyBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAC0BUGVuZGluZyBjb21taXNzaW9ucyBhcmUgcGFpZCBvdXQgYW5kIGFkZGVkIHRvIHRoZSB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb24uuFRoZSB0b3RhbCBwZW5kaW5nIGNvbW1pc3Npb24gaXMgcmVzZXQgdG8gemVyby5MYWRqdXN0X3Bvb2xfZGVwb3NpdAQBHHBvb2xfaWQ4ARhQb29sSWQAFRzsVG9wIHVwIHRoZSBkZWZpY2l0IG9yIHdpdGhkcmF3IHRoZSBleGNlc3MgRUQgZnJvbSB0aGUgcG9vbC4AUQFXaGVuIGEgcG9vbCBpcyBjcmVhdGVkLCB0aGUgcG9vbCBkZXBvc2l0b3IgdHJhbnNmZXJzIEVEIHRvIHRoZSByZXdhcmQgYWNjb3VudCBvZiB0aGVVAXBvb2wuIEVEIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFuZCBvdmVyIHRpbWUsIHRoZSBkZXBvc2l0IGluIHRoZSByZXdhcmQgYWNjb3VudCBtYXkgYmVRAWluc3VmZmljaWVudCB0byBjb3ZlciB0aGUgRUQgZGVmaWNpdCBvZiB0aGUgcG9vbCBvciB2aWNlLXZlcnNhIHdoZXJlIHRoZXJlIGlzIGV4Y2VzczEBZGVwb3NpdCB0byB0aGUgcG9vbC4gVGhpcyBjYWxsIGFsbG93cyBhbnlvbmUgdG8gYWRqdXN0IHRoZSBFRCBkZXBvc2l0IG9mIHRoZfRwb29sIGJ5IGVpdGhlciB0b3BwaW5nIHVwIHRoZSBkZWZpY2l0IG9yIGNsYWltaW5nIHRoZSBleGNlc3MufHNldF9jb21taXNzaW9uX2NsYWltX3Blcm1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbq0FAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAWEMxTZXQgb3IgcmVtb3ZlIGEgcG9vbCdzIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbi4AYQFEZXRlcm1pbmVzIHdobyBjYW4gY2xhaW0gdGhlIHBvb2wncyBwZW5kaW5nIGNvbW1pc3Npb24uIE9ubHkgdGhlIGBSb290YCByb2xlIG9mIHRoZSBwb29syGlzIGFibGUgdG8gY29uZmlndXJlIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbnMuLGFwcGx5X3NsYXNoBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXJIhBcHBseSBhIHBlbmRpbmcgc2xhc2ggb24gYSBtZW1iZXIuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBdAVRoZSBwZW5kaW5nIHNsYXNoIGFtb3VudCBvZiB0aGUgbWVtYmVyIG11c3QgYmUgZXF1YWwgb3IgbW9yZSB0aGFuIGBFeGlzdGVudGlhbERlcG9zaXRgLlEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgZXhlY3V0aW9uSQFpcyBzdWNjZXNzZnVsLCBmZWUgaXMgcmVmdW5kZWQgYW5kIGNhbGxlciBtYXkgYmUgcmV3YXJkZWQgd2l0aCBhIHBhcnQgb2YgdGhlIHNsYXNoDQFiYXNlZCBvbiB0aGUgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGNvbmZpZ3VyYXRpb24uSG1pZ3JhdGVfZGVsZWdhdGlvbgQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkOAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBNQEBCCxGcmVlQmFsYW5jZQQANQEBHEJhbGFuY2UAAAAcUmV3YXJkcwABAACJBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFN0YXRlAAEMEE9wZW4AAAAcQmxvY2tlZAABAChEZXN0cm95aW5nAAIAAI0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE1AQEMEE5vb3AAAAAMU2V0BAA1AQEEVAABABhSZW1vdmUAAgAAkQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAlQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAVkFAQwQTm9vcAAAAAxTZXQEAFkFAQRUAAEAGFJlbW92ZQACAACZBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBBAEMEE5vb3AAAAAMU2V0BAAEAQRUAAEAGFJlbW92ZQACAACdBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAAoQUEGE9wdGlvbgQEVAGlBQEIEE5vbmUAAAAQU29tZQQApQUAAAEAAKUFAAAECFkFBACpBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNlWQUBHFBlcmJpbGwAASRtaW5fZGVsYXk4ASxCbG9ja051bWJlcgAArQUEGE9wdGlvbgQEVAGxBQEIEE5vbmUAAAAQU29tZQQAsQUAAAEAALEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc2RDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uBCRBY2NvdW50SWQBBAEIOFBlcm1pc3Npb25sZXNzAAAAHEFjY291bnQEAAQBJEFjY291bnRJZAABAAC1BQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQQQ2FsbAgEVAAESQABDBRyZWJhZwQBKGRpc2xvY2F0ZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKNBNb3ZlIHRoZSBjYWxsZXIncyBJZCBkaXJlY3RseSBpbiBmcm9udCBvZiBgbGlnaHRlcmAuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgSWQgb2Y1AXRoZSBhY2NvdW50IGdvaW5nIGluIGZyb250IG9mIGBsaWdodGVyYC4gRmVlIGlzIHBheWVkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsOGNpcmN1bXN0YW5jZXMuADhPbmx5IHdvcmtzIGlmOgCULSBib3RoIG5vZGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgYmFnLNAtIGFuZCBgb3JpZ2luYCBoYXMgYSBncmVhdGVyIGBTY29yZWAgdGhhbiBgbGlnaHRlcmAuVHB1dF9pbl9mcm9udF9vZl9vdGhlcggBHGhlYXZpZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkFDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0EENhbGwEBFQAARBQcmVsYXlfc2Vzc2lvbl9yZXBvcnQEARhyZXBvcnS9BQFsU2Vzc2lvblJlcG9ydDxUOjpBY2NvdW50SWQ+AAAEBQFDYWxsZWQgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHNlc3Npb24gb24gdGhlIHJlbGF5IGNoYWluLlxyZWxheV9uZXdfb2ZmZW5jZV9wYWdlZAQBIG9mZmVuY2Vz0QUBqFZlYzwoU2Vzc2lvbkluZGV4LCBPZmZlbmNlPFQ6OkFjY291bnRJZD4pPgABACBzZXRfa2V5cwwBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZTEBAVBPcHRpb248QmFsYW5jZU9mPFQ+PgAKfFUBU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleXMgYXJlIHZhbGlkYXRlZCBvbiBBc3NldEh1YiBhbmQgZm9yd2FyZGVkIHRvIFJDLgBVAU9uIHRoZSBmaXJzdCBjYWxsLCBhIGRlcG9zaXQgb2YgYEtleURlcG9zaXRgIGlzIGhlbGQgZnJvbSB0aGUgc3Rhc2guIFN1YnNlcXVlbnQgY2FsbHP0ZG8gbm90IGNoYXJnZSBhZ2Fpbi4gVGhlIGRlcG9zaXQgaXMgcmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgBsKipWYWxpZGF0aW9uIG9uIEFzc2V0SHViOioqTQEtIEtleXMgYXJlIGRlY29kZWQgYXMgYFQ6OlJlbGF5Q2hhaW5TZXNzaW9uS2V5c2AgdG8gZW5zdXJlIHRoZXkgbWF0Y2ggUkMncyBleHBlY3RlZCQgIGZvcm1hdC4xAS0gT3duZXJzaGlwIHByb29mIGlzIHZhbGlkYXRlZCB1c2luZyBgT3BhcXVlS2V5czo6b3duZXJzaGlwX3Byb29mX2lzX3ZhbGlkYC4AQQFJZiB2YWxpZGF0aW9uIHBhc3Nlcywgb25seSB0aGUgdmFsaWRhdGVkIGtleXMgYXJlIHNlbnQgdG8gUkMgKHdpdGggZW1wdHkgcHJvb2YpLIBzaW5jZSBSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uLgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuUQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIHN0YXNoIGFjY291bnQgaXMgY2hhcmdlZCBhbiBYQ01JAWZlZSAoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW49AXVzZXMgYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSzYd2hpbGUgdGhlIHN0YXNoIChkZWxlZ2F0aW5nIGFjY291bnQpIHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgBZAU5PVEU6IHVubGlrZSB0aGUgY3VycmVudCBmbG93IGZvciBuZXcgdmFsaWRhdG9ycyBvbiBSQyAoYm9uZCAtPiBzZXRfa2V5cyAtPiB2YWxpZGF0ZSksVQF1c2VycyBvbiBBc3NldCBIdWIgTVVTVCBjYWxsIGJvbmQgYW5kIHZhbGlkYXRlIEJFRk9SRSBjYWxsaW5nIHNldF9rZXlzLiBBdHRlbXB0aW5nIHRvJQFzZXQga2V5cyBiZWZvcmUgZGVjbGFyaW5nIGludGVudCB0byB2YWxpZGF0ZSB3aWxsIGZhaWwgd2l0aCBOb3RWYWxpZGF0b3IuKHB1cmdlX2tleXMEAZRtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlMQEBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAtoAQFSZW1vdmUgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvciBhbmQgcmVsZWFzZSB0aGUga2V5IGRlcG9zaXQuAKhUaGlzIHB1cmdlcyB0aGUga2V5cyBmcm9tIHRoZSBSZWxheSBDaGFpbi4ARQFVbmxpa2UgYHNldF9rZXlzYCwgdGhpcyBkb2VzIG5vdCByZXF1aXJlIHRoZSBjYWxsZXIgdG8gYmUgYSByZWdpc3RlcmVkIHZhbGlkYXRvci5JAVRoaXMgaXMgaW50ZW50aW9uYWw6IGEgdmFsaWRhdG9yIHdobyBoYXMgY2hpbGxlZCAoc3RvcHBlZCB2YWxpZGF0aW5nKSBzaG91bGQgc3RpbGw5AWJlIGFibGUgdG8gcHVyZ2UgdGhlaXIgc2Vzc2lvbiBrZXlzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvcmlnaW5hbPBgcGFsbGV0LXNlc3Npb246OnB1cmdlX2tleXNgIHdoaWNoIGFsbG93cyBhbnlvbmUgdG8gY2FsbCBpdC4AOQFUaGUgUmVsYXkgQ2hhaW4gd2lsbCByZWplY3QgdGhlIGNhbGwgd2l0aCBgTm9LZXlzYCBlcnJvciBpZiB0aGUgYWNjb3VudCBoYXMgbm8ka2V5cyBzZXQuACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5FAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgY2FsbGVyIGlzIGNoYXJnZWQgYW4gWENNIGZlZU0BKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluIHVzZXMpAWBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsuHdoaWxlIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0FCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ0U2Vzc2lvblJlcG9ydAQkQWNjb3VudElkAQQAEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFAdmFsaWRhdG9yX3BvaW50c8EFAVRWZWM8KEFjY291bnRJZCwgdTMyKT4AAVBhY3RpdmF0aW9uX3RpbWVzdGFtcMkFAUhPcHRpb248KHU2NCwgdTMyKT4AASBsZWZ0b3ZlcnUBARBib29sAADBBQAAAsUFAMUFAAAECAQ4AMkFBBhPcHRpb24EBFQBzQUBCBBOb25lAAAAEFNvbWUEAM0FAAABAADNBQAABAgoOADRBQAAAtUFANUFAAAECDjZBQDZBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50HE9mZmVuY2UEJEFjY291bnRJZAEEAAwBIG9mZmVuZGVyBAEkQWNjb3VudElkAAEkcmVwb3J0ZXJzeQEBOFZlYzxBY2NvdW50SWQ+AAE4c2xhc2hfZnJhY3Rpb25ZBQEcUGVyYmlsbAAA3QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQQQ2FsbAQEVAABCBhtYW5hZ2UEAQhvcOEFAUxNYW5hZ2VyT3BlcmF0aW9uPFQ+AAAUTE1hbmFnZSB0aGlzIHBhbGxldC4A6FRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4ACQFTZWUgW2BNYW5hZ2VyT3BlcmF0aW9uYF0gZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGFyZSBwb3NzaWJsZS4UYWRtaW4EAQhvcOkFAURBZG1pbk9wZXJhdGlvbjxUPgABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrQE1hbmFnZXJPcGVyYXRpb24EBFQAAQxARm9yY2VSb3RhdGVSb3VuZAAAADRGb3JjZVNldFBoYXNlBADlBQEgUGhhc2U8VD4AAQBERW1lcmdlbmN5RmFsbGJhY2sAAgAA5QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlcxRQaGFzZQQEVAABIAxPZmYAAAAYU2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgABAEBTaWduZWRWYWxpZGF0aW9uBAA4AURCbG9ja051bWJlckZvcjxUPgACACBVbnNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwAgU25hcHNob3QEADgBJFBhZ2VJbmRleAAEABBEb25lAAUAGEV4cG9ydAQAOAEkUGFnZUluZGV4AAYAJEVtZXJnZW5jeQAHAADpBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOEFkbWluT3BlcmF0aW9uBARUAAEIUEVtZXJnZW5jeVNldFNvbHV0aW9uCADtBQGEQm94PEJvdW5kZWRTdXBwb3J0c09mPFBhbGxldDxUPj4+AAANBgE0RWxlY3Rpb25TY29yZQAAAFBTZXRNaW5VbnRydXN0ZWRTY29yZQQADQYBNEVsZWN0aW9uU2NvcmUAAQAA7QUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ8Qm91bmRlZFN1cHBvcnRzDCRBY2NvdW50SWQBBBhCT3V0ZXIAGEJJbm5lcgAABADxBQEJAUJvdW5kZWRWZWM8KEFjY291bnRJZCwgQm91bmRlZFN1cHBvcnQ8QWNjb3VudElkLCBCSW5uZXI+KSwgQk91dGVyPgAA8QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH1BQRTAAAEAAkGARhWZWM8VD4AAPUFAAAECAT5BQD5BQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDhCb3VuZGVkU3VwcG9ydAgkQWNjb3VudElkAQQUQm91bmQAAAgBFHRvdGFsNQEBPEV4dGVuZGVkQmFsYW5jZQABGHZvdGVyc/0FAbxCb3VuZGVkVmVjPChBY2NvdW50SWQsIEV4dGVuZGVkQmFsYW5jZSksIEJvdW5kPgAA/QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEBBgRTAAAEAAUGARhWZWM8VD4AAAEGAAAECAQ1AQAFBgAAAgEGAAkGAAAC9QUADQYIRHNwX25wb3NfZWxlY3Rpb25zNEVsZWN0aW9uU2NvcmUAAAwBNG1pbmltYWxfc3Rha2U1AQE8RXh0ZW5kZWRCYWxhbmNlAAEkc3VtX3N0YWtlNQEBPEV4dGVuZGVkQmFsYW5jZQABRHN1bV9zdGFrZV9zcXVhcmVkNQEBPEV4dGVuZGVkQmFsYW5jZQAAEQYUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4VBhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHVuc2lnbmVkGHBhbGxldBBDYWxsBARUAAEEPHN1Ym1pdF91bnNpZ25lZAQBOHBhZ2VkX3NvbHV0aW9uGQYBlEJveDxQYWdlZFJhd1NvbHV0aW9uPFQ6Ok1pbmVyQ29uZmlnPj4AADxwU3VibWl0IGFuIHVuc2lnbmVkIHNvbHV0aW9uLgBVAVRoaXMgd29ya3MgdmVyeSBtdWNoIGxpa2UgYW4gaW5oZXJlbnQsIGFzIG9ubHkgdGhlIHZhbGlkYXRvcnMgYXJlIHBlcm1pdHRlZCB0byBzdWJtaXRZAWFueXRoaW5nLiBCeSBkZWZhdWx0IHZhbGlkYXRvcnMgd2lsbCBjb21wdXRlIHRoaXMgY2FsbCBpbiB0aGVpciBgb2ZmY2hhaW5fd29ya2VyYCBob29rbGFuZCB0cnkgYW5kIHN1Ym1pdCBpdCBiYWNrLgBFAVRoaXMgaXMgZGlmZmVyZW50IGZyb20gc2lnbmVkIHBhZ2Ugc3VibWlzc2lvbiBtYWlubHkgaW4gdGhhdCB0aGUgc29sdXRpb24gcGFnZSBpc1B2ZXJpZmllZCBvbiB0aGUgZmx5LgA9AVRoZSBgcGFnZWRfc29sdXRpb25gIG1heSBjb250YWluIGF0IG1vc3QgW2BDb25maWc6Ok1pbmVyUGFnZXNgXSBwYWdlcy4gVGhleSBhcmUNAWludGVycHJldGVkIGFzIG1zcCAtPiBsc3AsIGFzIHBlciBbYGNyYXRlOjpQYWxsZXQ6Om1zcF9yYW5nZV9mb3JgXS4AXQFGb3IgZXhhbXBsZSwgaWYgYFBhZ2VzID0gNGAsIGFuZCBgTWluZXJQYWdlcyA9IDJgLCBvdXIgZnVsbCBzbmFwc2hvdCByYW5nZSB3b3VsZCBiZSBbMCxVATEsIDIsIDNdLCB3aXRoIDMgYmVpbmcgbXNwLiBCdXQsIGluIHRoaXMgY2FzZSwgdGhlbiB0aGUgYHBhZ2VkX3Jhd19zb2x1dGlvbi5wYWdlc2AgaXPcZXhwZWN0ZWQgdG8gY29ycmVzcG9uZCB0byBgW3NuYXBzaG90KDIpLCBzbmFwc2hvdCgzKV1gLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4ZBgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzQFBhZ2VkUmF3U29sdXRpb24EBFQAAAwBOHNvbHV0aW9uX3BhZ2VzHQYBSFZlYzxTb2x1dGlvbk9mPFQ+PgABFHNjb3JlDQYBNEVsZWN0aW9uU2NvcmUAARRyb3VuZDgBDHUzMgAAHQYAAAIhBgAhBgxwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxzdGFraW5nVE5wb3NDb21wYWN0U29sdXRpb24xNgAAQAEYdm90ZXMxJQYAAAEYdm90ZXMyMQYAAAEYdm90ZXMzRQYAAAEYdm90ZXM0UQYAAAEYdm90ZXM1XQYAAAEYdm90ZXM2aQYAAAEYdm90ZXM3dQYAAAEYdm90ZXM4gQYAAAEYdm90ZXM5jQYAAAEcdm90ZXMxMJkGAAABHHZvdGVzMTGlBgAAARx2b3RlczEysQYAAAEcdm90ZXMxM70GAAABHHZvdGVzMTTJBgAAARx2b3RlczE11QYAAAEcdm90ZXMxNuEGAAAAJQYAAAIpBgApBgAABAhgLQYALQYAAAbtAwAxBgAAAjUGADUGAAAEDGA5Bi0GADkGAAAECC0GPQYAPQYAAAZBBgBBBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzGFBlclUxNgAABADtAwEMdTE2AABFBgAAAkkGAEkGAAAEDGBNBi0GAE0GAAADAgAAADkGAFEGAAACVQYAVQYAAAQMYFkGLQYAWQYAAAMDAAAAOQYAXQYAAAJhBgBhBgAABAxgZQYtBgBlBgAAAwQAAAA5BgBpBgAAAm0GAG0GAAAEDGBxBi0GAHEGAAADBQAAADkGAHUGAAACeQYAeQYAAAQMYH0GLQYAfQYAAAMGAAAAOQYAgQYAAAKFBgCFBgAABAxgiQYtBgCJBgAAAwcAAAA5BgCNBgAAApEGAJEGAAAEDGCVBi0GAJUGAAADCAAAADkGAJkGAAACnQYAnQYAAAQMYKEGLQYAoQYAAAMJAAAAOQYApQYAAAKpBgCpBgAABAxgrQYtBgCtBgAAAwoAAAA5BgCxBgAAArUGALUGAAAEDGC5Bi0GALkGAAADCwAAADkGAL0GAAACwQYAwQYAAAQMYMUGLQYAxQYAAAMMAAAAOQYAyQYAAALNBgDNBgAABAxg0QYtBgDRBgAAAw0AAAA5BgDVBgAAAtkGANkGAAAEDGDdBi0GAN0GAAADDgAAADkGAOEGAAAC5QYA5QYAAAQMYOkGLQYA6QYAAAMPAAAAOQYA7QYQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0EENhbGwEBFQAARQgcmVnaXN0ZXIEATRjbGFpbWVkX3Njb3JlDQYBNEVsZWN0aW9uU2NvcmUAAATEUmVnaXN0ZXIgb25lc2VsZiBmb3IgYW4gdXBjb21pbmcgc2lnbmVkIGVsZWN0aW9uLixzdWJtaXRfcGFnZQgBEHBhZ2U4ASRQYWdlSW5kZXgAAThtYXliZV9zb2x1dGlvbvEGAZxPcHRpb248Qm94PFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AASCMU3VibWl0IGEgc2luZ2xlIHBhZ2Ugb2YgYSBzb2x1dGlvbi4AsE11c3QgYWx3YXlzIGNvbWUgYWZ0ZXIgW2BQYWxsZXQ6OnJlZ2lzdGVyYF0uAOBgbWF5YmVfc29sdXRpb25gIGNhbiBiZSBzZXQgdG8gYE5vbmVgIHRvIGVyYXNlIHRoZSBwYWdlLgA1AUNvbGxlY3RzIGRlcG9zaXRzIGZyb20gdGhlIHNpZ25lZCBvcmlnaW4gYmFzZWQgb24gW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYW5kbFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdLhBiYWlsAAIUVFJldHJhY3QgYSBzdWJtaXNzaW9uLgBNAUEgcG9ydGlvbiBvZiB0aGUgZGVwb3NpdCBtYXkgYmUgcmV0dXJuZWQsIGJhc2VkIG9uIHRoZSBbYENvbmZpZzo6RWplY3RHcmFjZVJhdGlvYF0uAMRUaGlzIHdpbGwgZnVsbHkgcmVtb3ZlIHRoZSBzb2x1dGlvbiBmcm9tIHN0b3JhZ2UuUGNsZWFyX29sZF9yb3VuZF9kYXRhCAEUcm91bmQ4AQx1MzIAATR3aXRuZXNzX3BhZ2VzOAEMdTMyAAMYwENsZWFyIHRoZSBkYXRhIG9mIGEgc3VibWl0dGVyIGZvcm0gYW4gb2xkIHJvdW5kLgAxAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkLCBhbmQgdGhlIG9yaWdpbmFsIHN1Ym1pdHRlci4AXQFUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3Igc3VibWlzc2lvbnMgdGhhdCBlbmQgdXAgYmVpbmcgZGlzY2FyZGVkLCBhcyBpbiB0aGV5IGFyZSBub3TEcHJvY2Vzc2VkIGFuZCB0aGV5IGVuZCB1cCBsaW5nZXJpbmcgaW4gdGhlIHF1ZXVlLkRzZXRfaW52dWxuZXJhYmxlcwQBDGludnkBAURWZWM8VDo6QWNjb3VudElkPgAEDGhTZXQgdGhlIGludnVsbmVyYWJsZSBsaXN0LgARAURpc3BhdGNoIG9yaWdpbiBtdXN0IHRoZSB0aGUgc2FtZSBhcyBbYGNyYXRlOjpDb25maWc6OkFkbWluT3JpZ2luYF0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvEGBBhPcHRpb24EBFQBIQYBCBBOb25lAAAAEFNvbWUEACEGAAABAAD1BhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBBDYWxsBARUAAGIEGJvbmQIARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AARRwYXllZfkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAAwYQFUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxsgGJlIHRoZSBhY2NvdW50IHRoYXQgY29udHJvbHMgaXQuAC0BYHZhbHVlYCBtdXN0IGJlIG1vcmUgdGhhbiB0aGUgYG1pbmltdW1fYmFsYW5jZWAgc3BlY2lmaWVkIGJ5IGBUOjpDdXJyZW5jeWAuACEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuADxFbWl0cyBgQm9uZGVkYC4ATQFOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZFkBdW5sZXNzIHRoZSBgb3JpZ2luYCBmYWxscyBiZWxvdyBfZXhpc3RlbnRpYWwgZGVwb3NpdF8gKG9yIGVxdWFsIHRvIDApIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4oYm9uZF9leHRyYQQBOG1heF9hZGRpdGlvbmFscQEBMEJhbGFuY2VPZjxUPgABKGEBQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggYGZyZWVfYmFsYW5jZWAgaW50byB0aGUgYmFsYW5jZSB1cDBmb3Igc3Rha2luZy4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci4ATQFVc2UgdGhpcyBpZiB0aGVyZSBhcmUgYWRkaXRpb25hbCBmdW5kcyBpbiB5b3VyIHN0YXNoIGFjY291bnQgdGhhdCB5b3Ugd2lzaCB0byBib25kLlUBVW5saWtlIFtgYm9uZGBdKFNlbGY6OmJvbmQpIG9yIFtgdW5ib25kYF0oU2VsZjo6dW5ib25kKSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZbxhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50IHRoYXQgY2FuIGJlIGFkZGVkLgA8RW1pdHMgYEJvbmRlZGAuGHVuYm9uZAQBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgACTFEBU2NoZWR1bGUgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCB0byBiZSB1bmxvY2tlZCByZWFkeSBmb3IgdHJhbnNmZXIgb3V0IGFmdGVyIHRoZSBib25k/HBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiEBW2Bhc3NldDo6ZXhpc3RlbnRpYWxfZGVwb3NpdGBdLCB0aGVuIGl0IGlzIGluY3JlYXNlZCB0byB0aGUgZnVsbCBhbW91bnQuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAEUBT25jZSB0aGUgdW5sb2NrIHBlcmlvZCBpcyBkb25lLCB5b3UgY2FuIGNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCB0byBhY3R1YWxseSBtb3ZlvHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuADEBTm8gbW9yZSB0aGFuIGEgbGltaXRlZCBudW1iZXIgb2YgdW5sb2NraW5nIGNodW5rcyAoc2VlIGBNYXhVbmxvY2tpbmdDaHVua3NgKUEBY2FuIGNvLWV4aXN0cyBhdCB0aGUgc2FtZSB0aW1lLiBJZiB0aGVyZSBhcmUgbm8gdW5sb2NraW5nIGNodW5rcyBzbG90cyBhdmFpbGFibGVFAVtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXSBpcyBjYWxsZWQgdG8gcmVtb3ZlIHNvbWUgb2YgdGhlIGNodW5rcyAoaWYgcG9zc2libGUpLgA5AUlmIGEgdXNlciBlbmNvdW50ZXJzIHRoZSBgSW5zdWZmaWNpZW50Qm9uZGAgZXJyb3Igd2hlbiBjYWxsaW5nIHRoaXMgZXh0cmluc2ljLBkBdGhleSBzaG91bGQgY2FsbCBgY2hpbGxgIGZpcnN0IGluIG9yZGVyIHRvIGZyZWUgdXAgdGhlaXIgYm9uZGVkIGZ1bmRzLgBERW1pdHMgYFVuYm9uZGVkYC4AlFNlZSBhbHNvIFtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXS5Ed2l0aGRyYXdfdW5ib25kZWQEAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAA0wpAVJlbW92ZSBhbnkgc3Rha2UgdGhhdCBoYXMgYmVlbiBmdWxseSB1bmJvbmRlZCBhbmQgaXMgcmVhZHkgZm9yIHdpdGhkcmF3YWwuAFUBU3Rha2UgaXMgY29uc2lkZXJlZCBmdWxseSB1bmJvbmRlZCBvbmNlIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBoYXMgZWxhcHNlZCBzaW5jZV0BdGhlIHVuYm9uZGluZyB3YXMgaW5pdGlhdGVkLiBJbiByYXJlIGNhc2Vz4oCUc3VjaCBhcyB3aGVuIG9mZmVuY2VzIGZvciB0aGUgdW5ib25kZWQgZXJhVQFoYXZlIGJlZW4gcmVwb3J0ZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2Vk4oCUd2l0aGRyYXdhbCBpcyByZXN0cmljdGVkIHRvIGVyYXMgZm9yIHdoaWNohGFsbCBvZmZlbmNlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLgAlAVRoZSB1bmxvY2tlZCBzdGFrZSB3aWxsIGJlIHJldHVybmVkIGFzIGZyZWUgYmFsYW5jZSBpbiB0aGUgc3Rhc2ggYWNjb3VudC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlci4ASEVtaXRzIGBXaXRoZHJhd25gLgBoU2VlIGFsc28gW2BDYWxsOjp1bmJvbmRgXS4ANCMjIFBhcmFtZXRlcnMAWQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiAqKkRlcHJlY2F0ZWQqKi4gUmV0YWluZWQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsgdGhpc2ggIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiB2YWxpZGF0ZQQBFHByZWZz/QYBOFZhbGlkYXRvclByZWZzAAQU5ERlY2xhcmUgdGhlIGRlc2lyZSB0byB2YWxpZGF0ZSBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guIG5vbWluYXRlBAEcdGFyZ2V0cwUHAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+AAUUDQFEZWNsYXJlIHRoZSBkZXNpcmUgdG8gbm9taW5hdGUgYHRhcmdldHNgIGZvciB0aGUgb3JpZ2luIGNvbnRyb2xsZXIuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4UY2hpbGwABijERGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR55C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LlAtIENvbnRhaW5zIG9uZSByZWFkLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJHNldF9wYXllZQQBFHBheWVl+QYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4ABxS0KFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guOHNldF9jb250cm9sbGVyAAggRQEoUmUtKXNldHMgdGhlIGNvbnRyb2xsZXIgb2YgYSBzdGFzaCB0byB0aGUgc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uIHByZXZpb3VzbHlNAWFjY2VwdGVkIGEgYGNvbnRyb2xsZXJgIGFyZ3VtZW50IHRvIHNldCB0aGUgY29udHJvbGxlciB0byBhbiBhY2NvdW50IG90aGVyIHRoYW4gdGhlWQFzdGFzaCBpdHNlbGYuIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbm93IGJlZW4gcmVtb3ZlZCwgbm93IG9ubHkgc2V0dGluZyB0aGUgY29udHJvbGxlcox0byB0aGUgc3Rhc2gsIGlmIGl0IGlzIG5vdCBhbHJlYWR5LgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLkxzZXRfdmFsaWRhdG9yX2NvdW50BAEMbmV3YAEMdTMyAAkMkFNldHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuYGluY3JlYXNlX3ZhbGlkYXRvcl9jb3VudAQBKGFkZGl0aW9uYWxgAQx1MzIAChDoSW5jcmVtZW50cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgdXAgdG8gbWF4aW11bSBvZlRgVDo6TWF4VmFsaWRhdG9yU2V0YC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LlRzY2FsZV92YWxpZGF0b3JfY291bnQEARhmYWN0b3IJBwEcUGVyY2VudAALEBEBU2NhbGUgdXAgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIGJ5IGEgZmFjdG9yIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40Zm9yY2Vfbm9fZXJhcwAMJKxGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS45AVRodXMgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IGJlIG9uZ29pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4gSW4gdGhpcyBjYXNlIHRoZdxlbGVjdGlvbiB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBuZXh0IGVyYSBpcyB0cmlnZ2VyZWQuNGZvcmNlX25ld19lcmEADShJAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHNlc3Npb24uIEFmdGVyIHRoaXMsIGl0IHdpbGwgYmWccmVzZXQgdG8gbm9ybWFsIChub24tZm9yY2VkKSBiZWhhdmlvdXIuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC40Zm9yY2VfdW5zdGFrZQgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAA8gCQFGb3JjZSBhIGN1cnJlbnQgc3Rha2VyIHRvIGJlY29tZSBjb21wbGV0ZWx5IHVuc3Rha2VkLCBpbW1lZGlhdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LjQjIyBQYXJhbWV0ZXJzALAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHVuc3Rha2VkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuUGZvcmNlX25ld19lcmFfYWx3YXlzABAkAQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiBzZXNzaW9ucyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC5UY2FuY2VsX2RlZmVycmVkX3NsYXNoCAEMZXJhOAEgRXJhSW5kZXgAAUR2YWxpZGF0b3Jfc2xhc2hlcw0HAXBWZWM8KFQ6OkFjY291bnRJZCwgUGVyYmlsbCk+ABEsCQFDYW5jZWxzIHNjaGVkdWxlZCBzbGFzaGVzIGZvciBhIGdpdmVuIGVyYSBiZWZvcmUgdGhleSBhcmUgYXBwbGllZC4AYQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBgVDo6QWRtaW5PcmlnaW5gIHRvIGNhbmNlbCBwZW5kaW5nIHNsYXNoZXMgZm9yIHNwZWNpZmllZCB2YWxpZGF0b3JzSQFpbiBhIGdpdmVuIGVyYS4gVGhlIGNhbmNlbGxlZCBzbGFzaGVzIGFyZSBzdG9yZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCB3aGVuIGFwcGx5aW5nIHNsYXNoZXMuADQjIyBQYXJhbWV0ZXJzVQEtIGBlcmFgOiBUaGUgc3Rha2luZyBlcmEgZm9yIHdoaWNoIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZC4gVGhpcyBpcyB0aGUgZXJhIHdoZXJlNQEgIHRoZSBzbGFzaCB3b3VsZCBiZSBhcHBsaWVkLCBub3QgdGhlIGVyYSBpbiB3aGljaCB0aGUgb2ZmZW5jZSB3YXMgY29tbWl0dGVkLlkBLSBgdmFsaWRhdG9yX3NsYXNoZXNgOiBBIGxpc3Qgb2YgdmFsaWRhdG9yIHN0YXNoIGFjY291bnRzIGFuZCB0aGVpciBzbGFzaCBmcmFjdGlvbnMgdG88ICBiZSBjYW5jZWxsZWQuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEMZXJhOAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgATDNxSZWJvbmQgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCBzY2hlZHVsZWQgdG8gYmUgdW5sb2NrZWQuANRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBjb250cm9sbGVyLihyZWFwX3N0YXNoCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAFGBdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToAFQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC4hATIuIG9yLCB0aGUgYGxlZGdlci50b3RhbGAgb2YgdGhlIHN0YXNoIGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LgBVAVRoZSBmb3JtZXIgY2FuIGhhcHBlbiBpbiBjYXNlcyBsaWtlIGEgc2xhc2g7IHRoZSBsYXR0ZXIgd2hlbiBhIGZ1bGx5IHVuYm9uZGVkIGFjY291bnQJAWlzIHN0aWxsIHJlY2VpdmluZyBzdGFraW5nIHJld2FyZHMgaW4gYFJld2FyZERlc3RpbmF0aW9uOjpTdGFrZWRgLgBFAVRoZSBnYXRlIGlzIGludGVudGlvbmFsbHkgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYW5kICpub3QqIGBtaW5fY2hpbGxlZF9ib25kYDogYVUBZ292ZXJuYW5jZSBjaGFuZ2UgdG8gYE1pblZhbGlkYXRvckJvbmRgIC8gYE1pbk5vbWluYXRvckJvbmRgIG11c3Qgbm90IHR1cm4gcHJldmlvdXNseUkBc2FmZSBzdGFzaGVzIGludG8gcGVybWlzc2lvbmxlc3NseSByZWFwYWJsZSBvbmVzLiBBY2NvdW50cyB0aGF0IGZhbGwgYmVsb3cgdGhlIG5ld1UBbWluaW11bXMgYWZ0ZXIgc3VjaCBhIGNoYW5nZSBzaG91bGQgYmUgYGNoaWxsX290aGVyYC1lZCAod2hpY2ggaGFzIGEgZGVuc2l0eSBnYXRlIGFuZKRkb2VzIG5vdCBkZXN0cm95IHRoZSBsZWRnZXIpLCBub3QgcmVhcGVkLgAxAUl0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLCBhcyBsb25nIGFzIGBzdGFzaGAgbWVldHMgdGhlIGFib3ZlIHJlcXVpcmVtZW50cy4A3FJlZnVuZHMgdGhlIHRyYW5zYWN0aW9uIGZlZXMgdXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4ANCMjIFBhcmFtZXRlcnMAqC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgdG8gYmUgcmVhcGVkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuEGtpY2sEAQx3aG8FBwFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAVLOBSZW1vdmUgdGhlIGdpdmVuIG5vbWluYXRpb25zIGZyb20gdGhlIGNhbGxpbmcgdmFsaWRhdG9yLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAE0BLSBgd2hvYDogQSBsaXN0IG9mIG5vbWluYXRvciBzdGFzaCBhY2NvdW50cyB3aG8gYXJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3Igd2hpY2jAICBzaG91bGQgbm8gbG9uZ2VyIGJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3IuAFUBTm90ZTogTWFraW5nIHRoaXMgY2FsbCBvbmx5IG1ha2VzIHNlbnNlIGlmIHlvdSBmaXJzdCBzZXQgdGhlIHZhbGlkYXRvciBwcmVmZXJlbmNlcyB0b3hibG9jayBhbnkgZnVydGhlciBub21pbmF0aW9ucy5Mc2V0X3N0YWtpbmdfY29uZmlncyABSG1pbl9ub21pbmF0b3JfYm9uZBUHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFIbWluX3ZhbGlkYXRvcl9ib25kFQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW50GQcBNENvbmZpZ09wPHUzMj4AAUxtYXhfdmFsaWRhdG9yX2NvdW50GQcBNENvbmZpZ09wPHUzMj4AATxjaGlsbF90aHJlc2hvbGQdBwFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbiEHAURDb25maWdPcDxQZXJiaWxsPgABSG1heF9zdGFrZWRfcmV3YXJkcx0HAURDb25maWdPcDxQZXJjZW50PgABYGFyZV9ub21pbmF0b3JzX3NsYXNoYWJsZSUHAThDb25maWdPcDxib29sPgAWRKxVcGRhdGUgdGhlIHZhcmlvdXMgc3Rha2luZyBjb25maWd1cmF0aW9ucyAuACUBKiBgbWluX25vbWluYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgbm9taW5hdG9yLiUBKiBgbWluX3ZhbGlkYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgdmFsaWRhdG9yLlUBKiBgbWF4X25vbWluYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSBub21pbmF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlUBKiBgbWF4X3ZhbGlkYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSB2YWxpZGF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlkBKiBgY2hpbGxfdGhyZXNob2xkYDogVGhlIHJhdGlvIG9mIGBtYXhfbm9taW5hdG9yX2NvdW50YCBvciBgbWF4X3ZhbGlkYXRvcl9jb3VudGAgd2hpY2gZASAgc2hvdWxkIGJlIGZpbGxlZCBpbiBvcmRlciBmb3IgdGhlIGBjaGlsbF9vdGhlcmAgdHJhbnNhY3Rpb24gdG8gd29yay5hASogYG1pbl9jb21taXNzaW9uYDogVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi5VASAgVGhpcyBpcyBjaGVja2VkIG9ubHkgdXBvbiBjYWxsaW5nIGB2YWxpZGF0ZWAuIEV4aXN0aW5nIHZhbGlkYXRvcnMgYXJlIG5vdCBhZmZlY3RlZC4AxFJ1bnRpbWVPcmlnaW4gbXVzdCBiZSBSb290IHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4ANQFOT1RFOiBFeGlzdGluZyBub21pbmF0b3JzIGFuZCB2YWxpZGF0b3JzIHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IHRoaXMgdXBkYXRlLhEBdG8ga2ljayBwZW9wbGUgdW5kZXIgdGhlIG5ldyBsaW1pdHMsIGBjaGlsbF9vdGhlcmAgc2hvdWxkIGJlIGNhbGxlZC4sY2hpbGxfb3RoZXIEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAXaEEBRGVjbGFyZSBhIGBjb250cm9sbGVyYCB0byBzdG9wIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBidXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAFkBSWYgdGhlIGNhbGxlciBpcyB0aGUgc2FtZSBhcyB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlbiBubyBmdXJ0aGVyIGNoZWNrcyBhcmXYZW5mb3JjZWQsIGFuZCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMganVzdCBsaWtlIGBjaGlsbGAuAF0BSWYgdGhlIGNhbGxlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zMG11c3QgYmUgbWV0OgAdASogYGNvbnRyb2xsZXJgIG11c3QgYmVsb25nIHRvIGEgbm9taW5hdG9yIHdobyBoYXMgYmVjb21lIG5vbi1kZWNvZGFibGUsAAxPcjoAPQEqIEEgYENoaWxsVGhyZXNob2xkYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCB3aGljaCBkZWZpbmVzIGhvdyBjbG9zZSB0byB0aGUgbWF4VQEgIG5vbWluYXRvcnMgb3IgdmFsaWRhdG9ycyB3ZSBtdXN0IHJlYWNoIGJlZm9yZSB1c2VycyBjYW4gc3RhcnQgY2hpbGxpbmcgb25lLWFub3RoZXIuWQEqIEEgYE1heE5vbWluYXRvckNvdW50YCBhbmQgYE1heFZhbGlkYXRvckNvdW50YCBtdXN0IGJlIHNldCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZZAgIGhvdyBjbG9zZSB3ZSBhcmUgdG8gdGhlIHRocmVzaG9sZC5dASogQSBgTWluTm9taW5hdG9yQm9uZGAgYW5kIGBNaW5WYWxpZGF0b3JCb25kYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCwgd2hpY2ggZGV0ZXJtaW5lc1EBICBpZiB0aGlzIGlzIGEgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGNoaWxsZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm90IG1ldCB0aGUgdGhyZXNob2xkQCAgYm9uZCByZXF1aXJlZC4AVQFUaGlzIGNhbiBiZSBoZWxwZnVsIGlmIGJvbmQgcmVxdWlyZW1lbnRzIGFyZSB1cGRhdGVkLCBhbmQgd2UgbmVlZCB0byByZW1vdmUgb2xkIHVzZXJzmHdobyBkbyBub3Qgc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuaGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uBAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkABgQOQFDbGFtcHMgYSB2YWxpZGF0b3IncyBjb21taXNzaW9uIHRvIHRoZSBgW01pbkNvbW1pc3Npb24sIE1heENvbW1pc3Npb25dYCByYW5nZS4AOQFOYW1lZCBgZm9yY2VfYXBwbHlfbWluX2NvbW1pc3Npb25gIGZvciBsZWdhY3kgcmVhc29ucyDigJQgaXQgYWxzbyBlbmZvcmNlcyB0aGWMbWF4aW11bS4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcy5Ic2V0X21pbl9jb21taXNzaW9uBAEMbmV3WQUBHFBlcmJpbGwAGRAlAVNldHMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi4AWQFUaGlzIGNhbGwgaGFzIGxvd2VyIHByaXZpbGVnZSByZXF1aXJlbWVudHMgdGhhbiBgc2V0X3N0YWtpbmdfY29uZmlnYCBhbmQgY2FuIGJlIGNhbGxlZMxieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4gUm9vdCBjYW4gYWx3YXlzIGNhbGwgdGhpcy5YcGF5b3V0X3N0YWtlcnNfYnlfcGFnZQwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAEQcGFnZTgBEFBhZ2UAGlQxAVBheSBvdXQgYSBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYSBhbmQgcGFnZS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4xAS0gYHBhZ2VgIGlzIHRoZSBwYWdlIGluZGV4IG9mIG5vbWluYXRvcnMgdG8gcGF5IG91dCB3aXRoIHZhbHVlIGJldHdlZW4gMCBhbmSwICBgbnVtX25vbWluYXRvcnMgLyBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAD0BSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdIG5vbWluYXRvcnMgYmFja2luZykBdGhlbSwgdGhlbiB0aGUgbGlzdCBvZiBub21pbmF0b3JzIGlzIHBhZ2VkLCB3aXRoIGVhY2ggcGFnZSBiZWluZyBjYXBwZWQgYXRVAVtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYF0uIElmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gb25lIHBhZ2Ugb2Ygbm9taW5hdG9ycyxJAXRoZSBjYWxsIG5lZWRzIHRvIGJlIG1hZGUgZm9yIGVhY2ggcGFnZSBzZXBhcmF0ZWx5IGluIG9yZGVyIGZvciBhbGwgdGhlIG5vbWluYXRvcnNVAWJhY2tpbmcgYSB2YWxpZGF0b3IgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLiBUaGUgbm9taW5hdG9ycyBhcmUgbm90IHNvcnRlZCBhY3Jvc3MgcGFnZXNhAWFuZCBzbyBpdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlIGhpZ2hlc3Qgc3Rha2VyIHdvdWxkIGJlIG9uIHRoZSB0b3Btb3N0IHBhZ2UgYW5kIHZpY2VJAXZlcnNhLiBJZiByZXdhcmRzIGFyZSBub3QgY2xhaW1lZCBpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcywgdGhleSBhcmUgbG9zdC4ASQFUaGUgdmFsaWRhdG9yJ3Mgb3duIHJld2FyZCAoY29tbWlzc2lvbiArIG93bi1zdGFrZSBzaGFyZSkgaXMgcHJvcmF0ZWQgYWNyb3NzIHBhZ2VzSQFwcm9wb3J0aW9uYWwgdG8gZWFjaCBwYWdlJ3Mgc3Rha2UuIFRoZSBmdWxsIHZhbGlkYXRvciByZXdhcmQgaXMgdGhlIHN1bSBhY3Jvc3MgYWxsGHBhZ2VzLjB1cGRhdGVfcGF5ZWUEAShjb250cm9sbGVyBAEwVDo6QWNjb3VudElkABsY4E1pZ3JhdGVzIGFuIGFjY291bnQncyBgUmV3YXJkRGVzdGluYXRpb246OkNvbnRyb2xsZXJgIHRvpGBSZXdhcmREZXN0aW5hdGlvbjo6QWNjb3VudChjb250cm9sbGVyKWAuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuADEBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgdGhlIGBwYXllZWAgaXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLmhkZXByZWNhdGVfY29udHJvbGxlcl9iYXRjaAQBLGNvbnRyb2xsZXJzKQcB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASxtYXliZV90b3RhbDEBAVBPcHRpb248QmFsYW5jZU9mPFQ+PgABPG1heWJlX3VubG9ja2luZy0HARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLkBtaWdyYXRlX2N1cnJlbmN5BAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAHhzYTWlncmF0ZXMgcGVybWlzc2lvbmxlc3NseSBhIHN0YXNoIGZyb20gbG9ja3MgdG8gaG9sZHMuAEkBVGhpcyByZW1vdmVzIHRoZSBvbGQgbG9jayBvbiB0aGUgc3Rha2UgYW5kIGNyZWF0ZXMgYSBob2xkIG9uIGl0IGF0b21pY2FsbHkuIElmIGFsbGEBc3Rha2UgY2Fubm90IGJlIGhlbGQsIHRoZSBiZXN0IGVmZm9ydCBpcyBtYWRlIHRvIGhvbGQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhlIHJlbWFpbmluZ4RzdGFrZSBpcyByZW1vdmVkIGZyb20gdGhlIGxlZGdlci4AxFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBtaWdyYXRpb24gaXMgc3VjY2Vzc2Z1bC4sYXBwbHlfc2xhc2gIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2tleT0HAXAoVDo6QWNjb3VudElkLCBQZXJiaWxsLCB1MzIpAB+IHQFNYW51YWxseSBhbmQgcGVybWlzc2lvbmxlc3NseSBhcHBsaWVzIGEgZGVmZXJyZWQgc2xhc2ggZm9yIGEgZ2l2ZW4gZXJhLgBdAU5vcm1hbGx5LCBzbGFzaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgc2hvcnRseSBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIGBzbGFzaF9lcmFgLlkBVGhlIGF1dG9tYXRpYyBhcHBsaWNhdGlvbiBvZiBzbGFzaGVzIGlzIGhhbmRsZWQgYnkgdGhlIHBhbGxldCdzIGludGVybmFsIGxvZ2ljLCBhbmQgaXTMdHJpZXMgdG8gYXBwbHkgb25lIHNsYXNoIHBhZ2UgcGVyIGJsb2NrIG9mIHRoZSBlcmEuVQFJZiBmb3Igc29tZSByZWFzb24sIG9uZSBlcmEgaXMgbm90IGVub3VnaCBmb3IgYXBwbHlpbmcgYWxsIHNsYXNoIHBhZ2VzLCB0aGUgcmVtYWluaW5n3HNsYXNoZXMgbmVlZCB0byBiZSBtYW51YWxseSAocGVybWlzc2lvbmxlc3NseSkgYXBwbGllZC4ASQFGb3IgYSBnaXZlbiBlcmEgeCwgaWYgYXQgZXJhIHgrMSwgc2xhc2hlcyBhcmUgc3RpbGwgdW5hcHBsaWVkLCBhbGwgd2l0aGRyYXdhbHMgZ2V0IQFibG9ja2VkLCBhbmQgdGhlc2UgbmVlZCB0byBiZSBtYW51YWxseSBhcHBsaWVkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5NAVRoaXMgZnVuY3Rpb24gZXhpc3RzIGFzIGEgKipmYWxsYmFjayBtZWNoYW5pc20qKiBmb3IgdGhpcyBleHRyZW1lIHNpdHVhdGlvbiwgYnV0IHdlzG5ldmVyIGV4cGVjdCB0byBlbmNvdW50ZXIgdGhpcyBpbiBub3JtYWwgc2NlbmFyaW9zLgBhAVRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGNhbGwgY2FuIGJlIHF1ZXJpZWQgYnkgbG9va2luZyBhdCB0aGUgYFVuYXBwbGllZFNsYXNoZXNgIHN0b3JhZ2WMZm9yIGVyYXMgb2xkZXIgdGhhbiB0aGUgYWN0aXZlIGVyYS4ANCMjIFBhcmFtZXRlcnNVAS0gYHNsYXNoX2VyYWA6IFRoZSBhcHBsaWNhdGlvbiBlcmEgKGBvZmZlbmNlX2VyYSArIFNsYXNoRGVmZXJEdXJhdGlvbmApLCBpLmUuIHRoZSBrZXlwICBpbnRvIFtgVW5hcHBsaWVkU2xhc2hlc2BdLiUBLSBgc2xhc2hfa2V5YDogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNsYXNoLCByZXByZXNlbnRlZCBhcyBhIHR1cGxlOvggIC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvciBiZWluZyBzbGFzaGVkLgUBICAtIGBzbGFzaF9mcmFjdGlvbmA6IFRoZSBmcmFjdGlvbiBvZiB0aGUgc3Rha2UgdGhhdCB3YXMgc2xhc2hlZC4FASAgLSBgcGFnZV9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgZXhwb3N1cmUgcGFnZSBiZWluZyBwcm9jZXNzZWQuACwjIyBCZWhhdmlvcugtIFRoZSBmdW5jdGlvbiBpcyAqKnBlcm1pc3Npb25sZXNzKirigJRhbnlvbmUgY2FuIGNhbGwgaXQu8C0gVGhlIGBzbGFzaF9lcmFgICoqbXVzdCBiZSB0aGUgY3VycmVudCBlcmEgb3IgYSBwYXN0IGVyYSoqLmxJZiBpdCBpcyBpbiB0aGUgZnV0dXJlLCB0aGWIICBjYWxsIGZhaWxzIHdpdGggYEVyYU5vdFN0YXJ0ZWRgLuQtIFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBzbGFzaCBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZC4AVCMjIEZ1dHVyZSBJbXByb3ZlbWVudGEBLSBJbXBsZW1lbnQgYW4gKipvZmYtY2hhaW4gd29ya2VyIChPQ1cpIHRhc2sqKiB0byBhdXRvbWF0aWNhbGx5IGFwcGx5IHNsYXNoZXMgd2hlbiB0aGVyZbggIGlzIHVudXNlZCBibG9jayBzcGFjZSwgaW1wcm92aW5nIGVmZmljaWVuY3kuOHBydW5lX2VyYV9zdGVwBAEMZXJhOAEgRXJhSW5kZXgAICxhAVBlcmZvcm0gb25lIHN0ZXAgb2YgZXJhIHBydW5pbmcgdG8gcHJldmVudCBQb1Ygc2l6ZSBleGhhdXN0aW9uIGZyb20gdW5ib3VuZGVkIGRlbGV0aW9ucy4AMQFUaGlzIGV4dHJpbnNpYyBlbmFibGVzIHBlcm1pc3Npb25sZXNzIGxhenkgcHJ1bmluZyBvZiBlcmEgZGF0YSBieSBwZXJmb3JtaW5nLQFpbmNyZW1lbnRhbCBkZWxldGlvbiBvZiBzdG9yYWdlIGl0ZW1zLiBFYWNoIGNhbGwgcHJvY2Vzc2VzIGEgbGltaXRlZCBudW1iZXIlAW9mIGl0ZW1zIGJhc2VkIG9uIGF2YWlsYWJsZSBibG9jayB3ZWlnaHQgdG8gYXZvaWQgZXhjZWVkaW5nIGJsb2NrIGxpbWl0cy4ANQFSZXR1cm5zIGBQYXlzOjpOb2Agd2hlbiB3b3JrIGlzIHBlcmZvcm1lZCB0byBpbmNlbnRpdml6ZSByZWd1bGFyIG1haW50ZW5hbmNlLgUBQW55b25lIGNhbiBjYWxsIHRoaXMgdG8gaGVscCBtYWludGFpbiB0aGUgY2hhaW4ncyBzdG9yYWdlIGhlYWx0aC4ADQFUaGUgZXJhIG11c3QgYmUgZWxpZ2libGUgZm9yIHBydW5pbmcgKG9sZGVyIHRoYW4gSGlzdG9yeURlcHRoICsgMSkuOQFDaGVjayBgRXJhUHJ1bmluZ1N0YXRlYCBzdG9yYWdlIHRvIHNlZSBpZiBhbiBlcmEgbmVlZHMgcHJ1bmluZyBiZWZvcmUgY2FsbGluZy5Ic2V0X21heF9jb21taXNzaW9uBAEMbmV3WQUBHFBlcmJpbGwAIQzQU2V0cyB0aGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAupHNldF92YWxpZGF0b3Jfc2VsZl9zdGFrZV9pbmNlbnRpdmVfY29uZmlnDAFIb3B0aW11bV9zZWxmX3N0YWtlFQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlFQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAVxzZWxmX3N0YWtlX3Nsb3BlX2ZhY3RvciEHAURDb25maWdPcDxQZXJiaWxsPgAiFOBDb25maWd1cmUgdGhlIHZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBwYXJhbWV0ZXJzLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuAAEBQ2hhbmdlcyB0YWtlIGVmZmVjdCBpbiB0aGUgbmV4dCBlcmEgd2hlbiByZXdhcmRzIGFyZSBjYWxjdWxhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy75BghQcGFsbGV0X3N0YWtpbmdfYXN5bmNEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAA/QYIUHBhbGxldF9zdGFraW5nX2FzeW5jOFZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9uAQcBHFBlcmJpbGwAARxibG9ja2VkdQEBEGJvb2wAAAEHAAAGWQUABQcAAAIAAAkHDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAADQcAAAIRBwARBwAABAgEWQUAFQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBNQEBDBBOb29wAAAADFNldAQANQEBBFQAAQAYUmVtb3ZlAAIAABkHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAHQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBCQcBDBBOb29wAAAADFNldAQACQcBBFQAAQAYUmVtb3ZlAAIAACEHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVkFAQwQTm9vcAAAAAxTZXQEAFkFAQRUAAEAGFJlbW92ZQACAAAlBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAF1AQEMEE5vb3AAAAAMU2V0BAB1AQEEVAABABhSZW1vdmUAAgAAKQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAALQcEGE9wdGlvbgQEVAExBwEIEE5vbmUAAAAQU29tZQQAMQcAAAEAADEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBNQcEUwAABAA5BwEYVmVjPFQ+AAA1BwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyLFVubG9ja0NodW5rBBxCYWxhbmNlATUBAAgBFHZhbHVlcQEBHEJhbGFuY2UAAQxlcmFgASBFcmFJbmRleAAAOQcAAAI1BwA9BwAABAwEWQU4AEEHDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxhwYWxsZXQQQ2FsbAQEVAABFFByZWNlaXZlX2NyZWRpdF90cmVlcwQBFGJhdGNoRQcBSENyZWRpdFRyZWVCYXRjaDxUPgAAKOxTdG9yZXMgdGhlIGNyZWRpdCB0cmVlcyBvZiBhIGJhdGNoIHNlbnQgYnkgdGhlIGdhbWUgcGFsbGV0LgAkIyMgT3JpZ2lu/FJlcXVpcmVzIHRoZSBnYW1lIGNoYWluJ3MgWENNIG9yaWdpbiAoYEVuc3VyZUdhbWVDaGFpbk9yaWdpbmApLgBVAVRoaXMgZG9lcyBub3Qgc3RvcmUgYSB0cmVlIHBhc3QgaXRzIGRlYWRsaW5lLCBub3Igb25lIGZvciBhIGJsb2NrIHdob3NlIHRyZWUgaXQgaG9sZHMgYWxyZWFkeS4ANCMjIFBhcmFtZXRlcnP8LSBgYmF0Y2hgOiBUaGUgY3JlZGl0IHRyZWVzIHRvIHN0b3JlLCBpbiBhc2NlbmRpbmcgYmxvY2sgb3JkZXIuFGNsYWltHAEgY2xhaW1hbnRdBwEwQ2xhaW1hbnRLaW5kAAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sAARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAABKGxlYWZfaW5kZXg4AQx1MzIAARRwcm9vZmEHAbRCb3VuZGVkVmVjPENyZWRpdFByb29mTm9kZSwgVDo6TWF4UHJvb2ZOb2Rlcz4AAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABgEUBTWludHMgdGhlIE5GVCBvZiBvbmUgTkZUIGNsYWltIGNyZWRpdCB0aGUgZ2FtZSBjaGFpbiBjb21taXR0ZWQgaW4gYGJsb2NrYCdzIHRyZWUuAFkBVGhlIGNyZWRpdCBpcyBzcGVudCBieSB0aGUgY2xhaW06IGl0cyBsZWFmIGlzIHJlY29yZGVkLCBhbmQgYSBzZWNvbmQgY2xhaW0gb2YgdGhlIHNhbWWEY3JlZGl0IGZhaWxzLCB3aG9ldmVyIHN1Ym1pdHMgaXQuACQjIyBPcmlnaW5JAVRoZSBzaWduZXIgb2YgdGhlIGNsYWltYW50IHRoZSBjcmVkaXQgd2FzIGF3YXJkZWQgdG8gKFtgQ29uZmlnOjpFbnN1cmVDbGFpbWFudGBdKS4ANCMjIFBhcmFtZXRlcnNJAS0gYGNsYWltYW50YDogV2hpY2ggb2YgdGhlIHNpZ25lcidzIGlkZW50aXRpZXMgdGhlIGNyZWRpdCB3YXMgYXdhcmRlZCB0by4gQSBwZXJzb25hASAgY2xhaW1zIGFzIFtgQ2xhaW1hbnRLaW5kOjpQZXJzb25gXSwgd2hpY2ggcmVzb2x2ZXMgdG8gdGhlIGFsaWFzIHRoZWlyIGFjY291bnQgaXMgYm91bmQUICB0by5hAS0gYGJsb2NrYDogVGhlIFBlb3BsZS1jaGFpbiBibG9jayB3aG9zZSB0cmVlIGNvbW1pdHRlZCB0aGUgY3JlZGl0LCB3aGljaCBpcyB0aGUgdHJlZSB0aGVJASAgcHJvb2YgaXMgdmVyaWZpZWQgYWdhaW5zdC4gSXQgaXMgYXQgb3IgYWZ0ZXIgdGhlIGJsb2NrIHRoZSBjcmVkaXQgd2FzIGVhcm5lZCBpbi5VAS0gYGNyZWRpdGA6IFRoZSBjcmVkaXQgYmVpbmcgY2xhaW1lZC4gSGFzaGVkIHRvZ2V0aGVyIHdpdGggdGhlIG9yaWdpbidzIGlkZW50aXR5IGludG9FASAgdGhlIGxlYWYsIHNvIGEgY3JlZGl0IG9mIHNvbWVib2R5IGVsc2UncyByZWhhc2hlcyB0byBhIGxlYWYgdGhhdCBpcyBpbiBubyB0cmVlLkEBLSBgbGVhZl9pbmRleGA6IFRoZSBwb3NpdGlvbiBvZiB0aGF0IGxlYWYgaW4gdGhlIGJsb2NrJ3MgbGVhdmVzLCBpbiBhd2FyZCBvcmRlci5ZAS0gYHByb29mYDogVGhlIHNpYmxpbmcgaGFzaGVzIHRoYXQgcmVoYXNoIHRoZSBsZWFmIHVwIHRvIHRoZSB0cmVlJ3Mgcm9vdCwgYm90dG9tIGxheWVyEQEgIGZpcnN0LCBhcyB0aGUgZ2FtZSBjaGFpbidzIGBuZnRfY2xhaW1fY3JlZGl0X3Byb29mc2AgcmV0dXJucyB0aGVtLj0BLSBgY29sbGVjdGlvbmA6IFRoZSBTY2FyY2l0eSBjb2xsZWN0aW9uIHRoZSBORlQgaXMgbWludGVkIGludG8sIHdoaWNoIGhhcyB0byBiZVUBICByZWdpc3RlcmVkIHRocm91Z2ggW2BQYWxsZXQ6OnNldF9jb2xsZWN0aW9uX21pbnRlcmBdLiBJdHMgW2BJdGVtU2VsZWN0aW9uYF0gZGVjaWRlcywgIHRoZSBpdGVtLl0BLSBgbWludF90b2A6IFRoZSBTY2FyY2l0eSBwdXJzZSBrZXkgdGhlIE5GVCBpcyBtaW50ZWQgdG8uIEEgcHVyc2Uga2V5IGhvbGRzIG9uZSBORlQsIHNvUQEgIHRoaXMgaGFzIHRvIGJlIGFuIGVtcHR5IG9uZSwgYW5kIGhvbGRlcnMgYXJlIG1lYW50IHRvIHVzZSBhIGZyZXNoIGtleSB0aGV5IGNvbnRyb2zYICByYXRoZXIgdGhhbiBhbiBhY2NvdW50IHRoYXQgYWxyZWFkeSBob2xkcyBzb21ldGhpbmcuAEUBVGhlIGNsYWltIHRoYXQgc3BlbmRzIHRoZSB0cmVlJ3MgbGFzdCBjcmVkaXQgYWxzbyByZW1vdmVzIHRoZSB0cmVlIGFuZCBxdWV1ZXMgaXRzTQFkZWxldGlvbiBmb3IgdGhlIGdhbWUgY2hhaW4sIGFuZCB0aGUgY2FsbCBpcyBjaGFyZ2VkIGZvciB0aGF0LiBUaGUgY2xhaW1zIHRoYXQgY2FtZU0BYmVmb3JlIGRlY2lkZSB3aGljaCBjbGFpbSB0aGF0IGlzLCBub3QgdGhlIGNhbGwncyBhcmd1bWVudHMsIHNvIGEgY2xhaW0gdGhhdCBsZWF2ZXNdAWNyZWRpdHMgYmVoaW5kIGlzIHJlZnVuZGVkIGRvd24gdG8gYSBwbGFpbiBjbGFpbSBvZiB0aGUga2luZCB0aGUgY2FsbCBuYW1lcy4gVGhlIGNoYXJnZWEBYWxzbyByZXNlcnZlcyBbYENvbGxlY3Rpb25TZWxlY3Rvcjo6bWF4X3dlaWdodGBdIHdoYXRldmVyIHRoZSBjb2xsZWN0aW9uJ3Mgc2VsZWN0aW9uIGlzLCkBcmVmdW5kZWQgZG93biB0byB3aGF0IHRoZSBzZWxlY3Rpb24gY29uc3VtZWQsIGluY2x1ZGluZyBvbiB0aGUgZXJyb3IgcGF0aC5Uc2V0X2NvbGxlY3Rpb25fbWludGVyCAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJHNlbGVjdGlvbmkHAVRPcHRpb248SXRlbVNlbGVjdGlvbj4AAkQ9AVJlZ2lzdGVycyBgY29sbGVjdGlvbmAgZm9yIGNsYWltcyB3aXRoIGBzZWxlY3Rpb25gIGRlY2lkaW5nIHRoZSBtaW50ZWQgaXRlbSwgb3Jkd2l0aGRyYXdzIGl0IHdpdGggYE5vbmVgLgBVAVJlZ2lzdHJhdGlvbiBpcyB0aGUgb3duZXIncyBvcHQtaW4gdG8gZGVwb3NpdC1mcmVlIHN1cHBseSBncm93dGg6IHdpdGhvdXQgaXQgbm8gY2xhaW1FAWNhbiBtaW50IGludG8gdGhlIGNvbGxlY3Rpb24uIFdpdGhkcmF3aW5nIHN0b3BzIGZ1cnRoZXIgY2xhaW1zIGFuZCBzcGVuZHMgbm90aGluZyEBYWxyZWFkeSBjbGFpbWVkLiBEZWxldGluZyB0aGUgY29sbGVjdGlvbiBjbGVhcnMgaXRzIHJlZ2lzdHJhdGlvbiB0aHJvdWdoXQFbYGluZGl2X3BhbGxldF9zY2FyY2l0eTo6T25Db2xsZWN0aW9uRGVsZXRlZGBdLCBzbyBhbiB1bmtub3duIGNvbGxlY3Rpb24gY2FuIGJlIG5laXRoZXINAXJlZ2lzdGVyZWQgbm9yIHdpdGhkcmF3bi4gQSBjb250cmFjdCBzZWxlY3Rpb24gaXMgdmFsaWRhdGVkIHRocm91Z2hZAVtgQ29sbGVjdGlvblNlbGVjdG9yOjp2YWxpZGF0ZWBdLCBzbyBhbiBhZGRyZXNzIHdpdGggbm8gY29kZSBmYWlscyBoZXJlIHJhdGhlciB0aGFuIG9uQHRoZSBmaXJzdCBjbGFpbS4AJCMjIE9yaWdpboBUaGUgY29sbGVjdGlvbidzIFNjYXJjaXR5IG93bmVyLgA0IyMgUGFyYW1ldGVycwEBLSBgY29sbGVjdGlvbmA6IFRoZSBTY2FyY2l0eSBjb2xsZWN0aW9uIHRvIHJlZ2lzdGVyIG9yIHdpdGhkcmF3Lh0BLSBgc2VsZWN0aW9uYDogSG93IGNsYWltcyBwaWNrIHRoZSBpdGVtIHRvIG1pbnQsIG9yIGBOb25lYCB0byB3aXRoZHJhdy5Mc3dlZXBfZXhwaXJlZF90cmVlcwgBGG9sZGVzdDgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgADKFEBUmVtb3ZlcyB0aGUgdHJlZXMgd2hvc2UgZGVhZGxpbmUgaGFzIHBhc3NlZCwgb2xkZXN0IGZpcnN0LCBhbmQgcXVldWVzIHRoZWlyIGRlbGV0aW9uTGZvciB0aGUgZ2FtZSBjaGFpbi4AXQFUaGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlciBzdWJtaXRzIHRoaXMgYXV0aG9yaXplZCBjYWxsLiBJdCBpcyBhY2NlcHRlZCBmcm9tIGEgbG9jYWz4b3IgaW4tYmxvY2sgc291cmNlIG9ubHksIHNvIG5vIGV4dGVybmFsIHN1Ym1pc3Npb24gcmVhY2hlcyBpdC4ATQFgb2xkZXN0YCBtdXN0IGJlIHRoZSB0aW1lc3RhbXAgW2BUcmVlRXhwaXJpZXNgXSBob2xkcyBpdHMgb2xkZXN0IGVudHJ5IHVuZGVyLCB3aGljaFEBbWFrZXMgYSByZXRyeSB0aGF0IHJhY2VkIGEgc3VjY2Vzc2Z1bCBzd2VlcCBzdGFsZSBpbnN0ZWFkIG9mIGEgc2Vjb25kIHBhc3MuIE9uZSBjYWxsUQFyZW1vdmVzIGF0IG1vc3QgW2BDb25maWc6Ok1heFRyZWVEZWxldGlvbnNQZXJNZXNzYWdlYF0gdHJlZXMsIHNvIGNsZWFyaW5nIG1vcmUgdHJlZXN8dGhhbiB0aGF0IHRha2VzIHNldmVyYWwgYmxvY2tzLkxzZW5kX3RyZWVfZGVsZXRpb25zCAEUZnJvbnQ4ATxDcmVkaXRUcmVlQmxvY2sAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4ABCA5AVRlbGxzIHRoZSBnYW1lIGNoYWluIGFib3V0IHRoZSBxdWV1ZWQgdHJlZSBkZWxldGlvbnMgdGhhdCBmaXQgb25lIFhDTSBtZXNzYWdlLgBdAVRoaXMgcGFsbGV0J3Mgb2ZmY2hhaW4gd29ya2VyIHN1Ym1pdHMgdGhpcyBhdXRob3JpemVkIGNhbGwuIEl0IGlzIGFjY2VwdGVkIGZyb20gYSBsb2NhbPhvciBpbi1ibG9jayBzb3VyY2Ugb25seSwgc28gbm8gZXh0ZXJuYWwgc3VibWlzc2lvbiByZWFjaGVzIGl0LgBZAWBmcm9udGAgbXVzdCBiZSB0aGUgYmxvY2sgYXQgdGhlIGZyb250IG9mIFtgUGVuZGluZ1RyZWVEZWxldGlvbnNgXSwgd2hpY2ggYSBzdWNjZXNzZnVsXQFzZW5kIHJlcGxhY2VzLiBBIHJldHJ5IHRoYXQgcmFjZWQgdGhhdCBzZW5kIGlzIHN0YWxlIGluc3RlYWQgb2YgYSBzZWNvbmQgc2VuZC4gVGhlIG5leHQxAWJhdGNoJ3Mgc2VuZCBuYW1lcyBhIG5ldyBmcm9udCwgc28gaXQgY2FycmllcyBhIHRyYW5zYWN0aW9uIGhhc2ggb2YgaXRzIG93bi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzPENyZWRpdFRyZWVCYXRjaAQgTWF4VHJlZXMAAAgBLHNvdXJjZV90aW1lKAEMdTY0AAEUdHJlZXNJBwGgQm91bmRlZFZlYzxDcmVkaXRUcmVlRGVsaXZlcnksIE1heFRyZWVzPgAASQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNBwRTAAAEAFkHARhWZWM8VD4AAE0HDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hDcmVkaXRUcmVlRGVsaXZlcnkAAAwBIHNlcXVlbmNl/AFQT3B0aW9uPFRyZWVTZXF1ZW5jZT4AARRibG9jazgBPENyZWRpdFRyZWVCbG9jawABEHRyZWVRBwFITmZ0Q2xhaW1DcmVkaXRUcmVlAABRBww0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXNITmZ0Q2xhaW1DcmVkaXRUcmVlAAAQAShnYW1lX2luZGV4OAEMdTMyAAEQcm9vdFUHATxDcmVkaXRQcm9vZk5vZGUAAShsZWFmX2NvdW50OAEMdTMyAAEkdGltZXN0YW1wOAEMdTMyAABVBww0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXM8Q3JlZGl0UHJvb2ZOb2RlAAAEAAgBIFt1ODsgMzJdAABZBwAAAk0HAF0HDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxR0eXBlczBDbGFpbWFudEtpbmQAAQgcQWNjb3VudAAAABhQZXJzb24AAQAAYQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFVBwRTAAAEAGUHARhWZWM8VD4AAGUHAAACVQcAaQcEGE9wdGlvbgQEVAFtBwEIEE5vbmUAAAAQU29tZQQAbQcAAAEAAG0HDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxR0eXBlczRJdGVtU2VsZWN0aW9uAAEIGFJhbmRvbQAAACBDb250cmFjdAQAcQcBEEgxNjAAAQAAcQcIPHByaW1pdGl2ZV90eXBlcxBIMTYwAAAEABwBIFt1ODsgMjBdAAB1Bwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABFFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50eQcBMFJpbmdFeHBvbmVudAABFHJvb3RzfQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNofQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlc5UHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLlhwdXJnZV9zdGFsZV9yaW5nX3Jvb3RzAAQM3FJlbW92ZXMgYSBwYWdlIG9mIHN0YWxlLWdlbmVyYXRpb24gYFJpbmdSb290c2AgZW50cmllcy4A+FN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnkHEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdFeHBvbmVudAABDBBSMmU5AAkAFFIyZTEwAAoAFFIyZTE0AA4AAH0HDDRpbmRpdl9zdXBwb3J0bG1lbWJlcnNfbm90aWZpZXJfc3Vic2NyaWJlclBSaW5nUm9vdFVwZGF0ZXNCYXRjaAQEVAAAFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAARx1cGRhdGVzgQcB0EJvdW5kZWRWZWM8UmluZ1Jvb3RVcGRhdGU8VD4sIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAAIEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQcEUwAABACRBwEYVmVjPFQ+AACFBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXI4UmluZ1Jvb3RVcGRhdGUEBFQAAAgBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAQhvcIkHAWBSaW5nUm9vdE9wPE1lbWJlcnNPZjxUPj4AAIkHDDRpbmRpdl9zdXBwb3J0bG1lbWJlcnNfbm90aWZpZXJfc3Vic2NyaWJlcihSaW5nUm9vdE9wBARSAY0HAQgUQnVpbHQIASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARByb290jQcBBFIAAAAcRGVsZXRlZAABAACNBwwodmVyaWZpYWJsZRByaW5nRE1lbWJlcnNDb21taXRtZW50AAMgAQAADACRBwAAAoUHAJUHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAJkHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0EENhbGwEBFQAARhMdW5zZXRfYWxpYXNfYWNjb3VudAABEKBSZW1vdmUgdGhlIGFsaWFzIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCBjdXJyZW50bHkgYm91bmQgdG8gYSByaW5nIGFsaWFzLiBUaGWYbWFwcGluZyBpcyByZW1vdmVkIGluIGJvdGggZGlyZWN0aW9ucy5Ec2V0X2FsaWFzX2FjY291bnQYARRwcm9vZp0HAShQcm9vZk9mPFQ+AAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmluZ19yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARxjb250ZXh0CAEcQ29udGV4dAABOHByb29mX3ZhbGlkX2F0KAEMdTY0AAMw6ExpbmsgYW4gYWNjb3VudCB0byBhIHJpbmcgYWxpYXMsIG9uIHBheW1lbnQgb2YgYSBQR0FTIGZlZS4ANQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkOyB0aGUgc2lnbmVyIGJlY29tZXMgdGhlIGJvdW5kIGFjY291bnQuIFRoZSBQR0FTIGZlZVkBKFtgQ29uZmlnOjpBbGlhc0ZlZWBdKSBpcyBidXJuZWQgZnJvbSB0aGUgc2lnbmVyJ3MgUEdBUyBiYWxhbmNlLiBUaGUgYWxpYXMgbXVzdCB2ZXJpZnlBAWFnYWluc3QgdGhlIHN1cHBsaWVkIGBjb2xsZWN0aW9uYC9gcmluZ19pbmRleGAvYHJpbmdfcmV2aXNpb25gIGluIGBjb250ZXh0YC4gVGhlvGNvbGxlY3Rpb24gbXVzdCBzdGlsbCBiZSBQZW9wbGUgb3IgUGVvcGxlIExpdGUuAEkBSWYgYSBkaWZmZXJlbnQgYWNjb3VudCBpcyBhbHJlYWR5IGJvdW5kIHRvIHRoZSBzYW1lIGFsaWFzIHVuZGVyIHRoaXMgY29udGV4dCwgdGhhdPhtYXBwaW5nIGlzIGRyb3BwZWQgYW5kIHRoZSBzd2FwIGlzIHBhaWQgZm9yIGJ5IHRoZSBuZXcgc2lnbmVyLgApAVJlLXByb3ZpbmcgdGhlIHNhbWUgYWxpYXMgdW5kZXIgYSBmcmVzaGVyIHJpbmcgcmV2aXNpb24gc2hvdWxkIGluc3RlYWQgdXNlxFtgUGFsbGV0OjpyZXByb3ZlX2FsaWFzX2FjY291bnRgXSwgd2hpY2ggaXMgZnJlZS5UcmVwcm92ZV9hbGlhc19hY2NvdW50EAEUcHJvb2adBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX3JldmlzaW9uOAE0UmV2aXNpb25JbmRleAABOHByb29mX3ZhbGlkX2F0KAEMdTY0AAQcYQFSZS1wcm92ZSB0aGUgaG9sZGVyJ3MgYWxpYXMgYWdhaW5zdCBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiwgZnJlZSBvZiBjaGFyZ2UgaW4gY2FzZSBvZiBhWHN1Y2Nlc3NmdWwgb3BlcmF0aW9ucy4AEQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGFuZCBtdXN0IGFscmVhZHkgaG9sZCBhIGFsaWFzIG1hcHBpbmcuIFRoZRkBcHJvb2YgaXMgdmVyaWZpZWQgYWdhaW5zdCB0aGUgc3RvcmVkIGNvbnRleHQ7IHRoZSByZXN1bHRpbmcgYWxpYXMgbXVzdBEBbWF0Y2ggdGhlIHN0b3JlZCBhbGlhcy4gT25seSB0aGUgYHJldmlzaW9uYCBhbmQgYHJpbmdgIGZpZWxkcyBvZiB0aGURAXN0b3JlZCBtYXBwaW5nIGNoYW5nZTsgY29sbGVjdGlvbiwgY29udGV4dCwgYW5kIGFsaWFzIGFyZSBwcmVzZXJ2ZWQuUHJlcG9ydF9zdGFsZV9hbGlhc2VzBAEgYWNjb3VudHOhBwG8Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFN0YWxlQWxpYXNCYXRjaD4ABizwU3RhbXAgW2BTdGFsZVNpbmNlYF0gb24gZWFjaCBtYXBwaW5nIGluIGBhY2NvdW50c2AsIHN0YXJ0aW5ndFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0uAGEBQSBtYXBwaW5nIGlzIHN0YWxlIG9uY2UgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXSBzdG9wcyBhY2NlcHRpbmcgaXRzIHJldmlzaW9uLCB3aGljaCBpc1kBd2hlbiB0aGUgcmluZyB3YXMgcmVidWlsdCBhbmQgdGhlIG9sZCByZXZpc2lvbiByYW4gb3V0IG9mIHJldGVudGlvbiB0aGVyZSwgb3Igd2hlbiB0aGUlAXJpbmcgd2FzIGRlbGV0ZWQuIFN0YW1waW5nIHJlbW92ZXMgbm90aGluZywgYmVjYXVzZSBhIGNvbnN1bWVyIHRoYXQgcmVhZHMxAVtgQWNjb3VudFRvQWxpYXNgXSB3aXRob3V0IGNoZWNraW5nIHRoZSByZXZpc2lvbiBzdGlsbCByZXNvbHZlcyB0aGUgbWFwcGluZzstAVtgUGFsbGV0OjpyZXRpcmVfc3RhbGVfYWxpYXNlc2BdIHJlbW92ZXMgaXQgb25jZSB0aGUgcmV0ZW50aW9uIGhhcyBydW4gb3V0LgBZAWBhY2NvdW50c2AgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIsIHNvIG9uZSBhY2NvdW50IGNhbm5vdCBiZSBzdGFtcGVkIHR3aWNlOQFpbiBhIGJhdGNoLCBhbmQgZXZlcnkgb25lIG9mIHRoZW0gbXVzdCBob2xkIGEgc3RhbGUgbWFwcGluZyB3aXRoIG5vIHN0YW1wIHlldC5QcmV0aXJlX3N0YWxlX2FsaWFzZXMEASBhY2NvdW50c6EHAbxCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3RhbGVBbGlhc0JhdGNoPgAHFEkBUmVtb3ZlIGVhY2ggbWFwcGluZyBpbiBgYWNjb3VudHNgLCB3aG9zZSBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGhhcyBydW4gb3V0LgBRAUJvdGggZGlyZWN0aW9ucyBvZiB0aGUgbWFwcGluZyBnbywgYWxvbmcgd2l0aCB0aGUgc3RhbXAgYW5kIHRoZSBhY2NvdW50J3Mgc3VmZmljaWVudFUBcmVmZXJlbmNlLiBgYWNjb3VudHNgIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLCBhbmQgZXZlcnkgb25lIG9mIHRoZW0gbXVzdCEBaG9sZCBhIHN0YWxlIG1hcHBpbmcgc3RhbXBlZCBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGFnbyBvciBsb25nZXIuZGNsZWFyX3N0YWxlX2FsaWFzX3JlcG9ydHMEASBhY2NvdW50c6EHAbxCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3RhbGVBbGlhc0JhdGNoPgAIJEkBRHJvcCB0aGUgW2BTdGFsZVNpbmNlYF0gc3RhbXAgb2YgZWFjaCBtYXBwaW5nIGluIGBhY2NvdW50c2AsIHdoaWNoIHZlcmlmaWVzIGFnYWluLgBNAUEgcmV2aXNpb24gY2FuIHZlcmlmeSBhZ2FpbiBhZnRlciBpdCBzdG9wcGVkOiBhIGNvbGxlY3Rpb24gdG9ybiBkb3duIGFuZCByZS1jcmVhdGVkVQF1bmRlciB0aGUgc2FtZSBpZGVudGlmaWVyIHJlc3RhcnRzIGl0cyByZXZpc2lvbnMgYXQgemVybywgc28gYSBzdG9yZWQgcmV2aXNpb24gY2FuIGJl/HJlaXNzdWVkLiBEcm9wcGluZyB0aGUgc3RhbXAga2VlcHMgdGhlIG5leHQgc3RhbGVuZXNzIHRvIGEgZnVsbE0BW2BDb25maWc6Ok1hcHBpbmdSZXRlbnRpb25gXSByYXRoZXIgdGhhbiBsZXR0aW5nIGl0IHJlbW92ZSB0aGUgbWFwcGluZyBvbiB0aGUgc3BvdC4ARQFgYWNjb3VudHNgIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLCBhbmQgZXZlcnkgb25lIG9mIHRoZW0gbXVzdCBob2xkIGGgc3RhbXBlZCBtYXBwaW5nIHdob3NlIHJldmlzaW9uIHZlcmlmaWVzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6dBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAKEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AAKUHDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQQQ2FsbAQEVAABEChjbGFpbV9wZ2FzCAEoc2xvdF9pbmRleDgBDHUzMgABGHRhcmdldAQBMFQ6OkFjY291bnRJZAAAJJBNaW50IFBHQVMgZm9yIGEgdmVyaWZpZWQgY2xhaW0gc2xvdC4ACQFNdXN0IGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBbYEFzUGdhc2BdIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiwgd2hpY2hRAXZlcmlmaWVzIHRoZSByaW5nLVZSRiBwcm9vZiBhbmQgcHJvZHVjZXMgYW4gW2BPcmlnaW46OkNsYWltQWxpYXNgXS4gVGhlIG91dGVyIG9yaWdpblUBbXVzdCBiZSBgTm9uZWAgKHRoZSBleHRlbnNpb24gcmVwbGFjZXMgaXQgd2l0aCB0aGUgbG9jYWwgb3JpZ2luKTsgYW55IG90aGVyIG9yaWdpbiBpcyRyZWplY3RlZC4AWQFgc2xvdF9pbmRleGAgaXMgcGFydCBvZiB0aGUgY2FsbCBwYXlsb2FkIHNvIHRoZSBleHRlbnNpb24gY2FuIGRlcml2ZSB0aGUgY2xhaW0gY29udGV4dFEBb24tY2hhaW4gYW5kIHNvIHRoZSBwcm9vZiBiaW5kcyB0byB0aGUgcmVxdWVzdGVkIHNsb3QgdmlhIHRoZSBpbmhlcml0ZWQgaW1wbGljYXRpb24uQGJhdGNoX2NsYWltX3BnYXMIATBzbG90X2luZGljZXOpBwGkQm91bmRlZFZlYzx1MzIsIFQ6Ok1heFBnYXNDbGFpbXNQZXJCYXRjaD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQAAyi4TWludCBQR0FTIGZvciBhIGJhdGNoIG9mIHZlcmlmaWVkIGNsYWltIHNsb3RzLgARAU11c3QgYmUgc3VibWl0dGVkIHdpdGggdGhlIFtgQXNQZ2FzYF0gdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGNhcnJ5aW5nsFtgQXNQZ2FzSW5mbzo6QmF0Y2hDbGFpbWBdLCB3aGljaCB2ZXJpZmllcyBhPQFzaW5nbGUgbXVsdGktY29udGV4dCBwcm9vZiBjb3ZlcmluZyBvbmUgY29udGV4dCBwZXIgZW50cnkgaW4gYHNsb3RfaW5kaWNlc2AgYW5kPQFwcm9kdWNlcyBhbiBbYE9yaWdpbjo6QmF0Y2hDbGFpbUFsaWFzZXNgXS4gVGhlIG91dGVyIG9yaWdpbiBtdXN0IGJlIGBOb25lYDsgYW55ZG90aGVyIG9yaWdpbiBpcyByZWplY3RlZC4APQFUaGUgd2VpZ2h0IGlzIGEgY29uc3RhbnQgd29yc3QgY2FzZSBzaXplZCBmb3IgW2BDb25maWc6Ok1heFBnYXNDbGFpbXNQZXJCYXRjaGBdrGNvbnRleHRzOyBzbWFsbGVyIGJhdGNoZXMgYXJlIG5vdCByZWZ1bmRlZC5EY3JlYXRlX3BnYXNfYXNzZXQAAQhVAUNyZWF0ZSB0aGUgUEdBUyBhc3NldC4gVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGF1dGhvcml6ZWQgY2FsbCB0aGF0IGNhbiBvbmx5IHN1Y2NlZWSkaWYgdGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5gY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzCAEkZGF5X2luZGV4OAEMdTMyAAEsZmlyc3RfYWxpYXMIARRBbGlhcwACJORSZW1vdmUgb2xkIFBHQVMgY2xhaW0gcmVjb3JkcyBmb3IgYSBzcGVjaWZpYyBgZGF5X2luZGV4YC4ABQFUaGlzIGlzIGFuIGF1dGhvcml6ZWQgZXh0cmluc2ljIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLjUBT25seSByZWNvcmRzIGZyb20gZGF5cyB0aGF0IGhhdmUgZnVsbHkgZWxhcHNlZCAob3V0c2lkZSB0aGUgZ3JhY2Ugd2luZG93KSBjYW4pAWJlIGNsZWFuZWQuIFVwIHRvIFtgQ29uZmlnOjpNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbGBdIGVudHJpZXMgYXJlRHJlbW92ZWQgcGVyIGNhbGwuAGEBYGZpcnN0X2FsaWFzYCBpcyB0aGUgZmlyc3QgYWxpYXMgY3VycmVudGx5IHN0b3JlZCBmb3IgYGRheV9pbmRleGAgYW5kIGlzIGluY2x1ZGVkIGluIHRoZYB0YWdzIGZvciB0cmFuc2FjdGlvbiB1bmlxdWVuZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6pBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABhBAEYVmVjPFQ+AACtBww0cGFsbGV0X3Jldml2ZRhwYWxsZXQQQ2FsbAQEVAABODBldGhfdHJhbnNhY3QEARxwYXlsb2FkGAEcVmVjPHU4PgAAMC0BQSByYXcgRVZNIHRyYW5zYWN0aW9uLCB0eXBpY2FsbHkgZGlzcGF0Y2hlZCBieSBhbiBFdGhlcmV1bSBKU09OLVJQQyBzZXJ2ZXIuADAjIFBhcmFtZXRlcnMA7CogYHBheWxvYWRgOiBUaGUgZW5jb2RlZCBbYGNyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkYF0uABgjIE5vdGUAUQFUaGlzIGNhbGwgY2Fubm90IGJlIGRpc3BhdGNoZWQgZGlyZWN0bHk7IGF0dGVtcHRpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBmYWlsZWRRAXRyYW5zYWN0aW9uLiBJdCBzZXJ2ZXMgYXMgYSB3cmFwcGVyIGZvciBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4gV2hlbiBzdWJtaXR0ZWQsIHRoZVkBcnVudGltZSBjb252ZXJ0cyBpdCBpbnRvIGEgW2BzcF9ydW50aW1lOjpnZW5lcmljOjpDaGVja2VkRXh0cmluc2ljYF0gYnkgcmVjb3ZlcmluZyB0aGWYc2lnbmVyIGFuZCB2YWxpZGF0aW5nIHRoZSB0cmFuc2FjdGlvbi4QY2FsbBQBEGRlc3RxBwEQSDE2MAABFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRxAQEwQmFsYW5jZU9mPFQ+AAEQZGF0YRgBHFZlYzx1OD4AAUAFAU1ha2VzIGEgY2FsbCB0byBhbiBhY2NvdW50LCBvcHRpb25hbGx5IHRyYW5zZmVycmluZyBzb21lIGJhbGFuY2UuADAjIFBhcmFtZXRlcnMAqCogYGRlc3RgOiBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byBjYWxsLvwqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIGBkZXN0YC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZCBmcm9tIHRoZaQgIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLsQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QuACUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQsIHRoZSBhc3NvY2lhdGVkIGNvZGUgd2lsbCBiZaxleGVjdXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuFQEqIElmIHRoZSBhY2NvdW50IGlzIGEgcmVndWxhciBhY2NvdW50LCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5FASogSWYgbm8gYWNjb3VudCBleGlzdHMgYW5kIHRoZSBjYWxsIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gYGV4aXN0ZW50aWFsX2RlcG9zaXRgLBEBYSByZWd1bGFyIGFjY291bnQgd2lsbCBiZSBjcmVhdGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4saW5zdGFudGlhdGUYARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0cQEBMEJhbGFuY2VPZjxUPgABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAARBkYXRhGAEcVmVjPHU4PgABEHNhbHSxBwFAT3B0aW9uPFt1ODsgMzJdPgACFPRJbnN0YW50aWF0ZXMgYSBjb250cmFjdCBmcm9tIGEgcHJldmlvdXNseSBkZXBsb3llZCB2bSBiaW5hcnkuADUBVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSBidXQgd2l0aG91dCB0aGVBAWNvZGUgZGVwbG95bWVudCBzdGVwLiBJbnN0ZWFkLCB0aGUgYGNvZGVfaGFzaGAgb2YgYW4gb24tY2hhaW4gZGVwbG95ZWQgdm0gYmluYXJ5RG11c3QgYmUgc3VwcGxpZWQuVGluc3RhbnRpYXRlX3dpdGhfY29kZRgBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRxAQEwQmFsYW5jZU9mPFQ+AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABEHNhbHSxBwFAT3B0aW9uPFt1ODsgMzJdPgADbDEBSW5zdGFudGlhdGVzIGEgbmV3IGNvbnRyYWN0IGZyb20gdGhlIHN1cHBsaWVkIGBjb2RlYCBvcHRpb25hbGx5IHRyYW5zZmVycmluZzRzb21lIGJhbGFuY2UuACEBVGhpcyBkaXNwYXRjaGFibGUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBjYWxsaW5nIFtgU2VsZjo6dXBsb2FkX2NvZGVgXSArPQFbYFNlbGY6Omluc3RhbnRpYXRlYF0uIEJ1bmRsaW5nIHRoZW0gdG9nZXRoZXIgcHJvdmlkZXMgZWZmaWNpZW5jeSBnYWlucy4gUGxlYXNl2GFsc28gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BTZWxmOjp1cGxvYWRfY29kZWBdLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZC9yZXNlcnZlZMggIGZyb20gdGhlIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLj0BKiBgc2FsdGA6IFVzZWQgZm9yIHRoZSBhZGRyZXNzIGRlcml2YXRpb24uIElmIGBTb21lYCBpcyBzdXBwbGllZCB0aGVuIGBDUkVBVEUyYNQJc2VtYW50aWNzIGFyZSB1c2VkLiBJZiBgTm9uZWAgdGhlbiBgQ1JBVEUxYCBpcyB1c2VkLgAAlEluc3RhbnRpYXRpb24gaXMgZXhlY3V0ZWQgYXMgZm9sbG93czoAOQEtIFRoZSBzdXBwbGllZCBgY29kZWAgaXMgZGVwbG95ZWQsIGFuZCBhIGBjb2RlX2hhc2hgIGlzIGNyZWF0ZWQgZm9yIHRoYXQgY29kZS5ZAS0gSWYgdGhlIGBjb2RlX2hhc2hgIGFscmVhZHkgZXhpc3RzIG9uIHRoZSBjaGFpbiB0aGUgdW5kZXJseWluZyBgY29kZWAgd2lsbCBiZSBzaGFyZWQuSQEtIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBzZW5kZXIsIGNvZGVfaGFzaCBhbmQgdGhlIHNhbHQuAQEtIFRoZSBzbWFydC1jb250cmFjdCBhY2NvdW50IGlzIGNyZWF0ZWQgYXQgdGhlIGNvbXB1dGVkIGFkZHJlc3MuwC0gVGhlIGB2YWx1ZWAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LkEBLSBUaGUgYGRlcGxveWAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ld2x5LWNyZWF0ZWQgYWNjb3VudC5kZXRoX2luc3RhbnRpYXRlX3dpdGhfY29kZSABFHZhbHVltQcBEFUyNTYAATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdLUHARBVMjU2AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZbUHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAClQ9AVNhbWUgYXMgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb27MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWMAOQFDYWxsaW5nIHRoaXMgZGlzcGF0Y2hhYmxlIGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luJ3Mgbm9uY2UgaXMgYnVtcGVkIG9ubHkgb25jZSxhAXZpYSB0aGUgYENoZWNrTm9uY2VgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gSW4gY29udHJhc3QsIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF1NAWFsc28gYnVtcHMgdGhlIG5vbmNlIGFmdGVyIGNvbnRyYWN0IGluc3RhbnRpYXRpb24sIHNpbmNlIGl0IG1heSBiZSBpbnZva2VkIG11bHRpcGxlmHRpbWVzIHdpdGhpbiBhIGJhdGNoIGNhbGwgdHJhbnNhY3Rpb24uIGV0aF9jYWxsIAEQZGVzdHEHARBIMTYwAAEUdmFsdWW1BwEQVTI1NgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0tQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZbUHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAC0D4U2FtZSBhcyBbYFNlbGY6OmNhbGxgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAOgqIGBkZXN0YDogVGhlIEV0aGVyZXVtIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgdG8gYmUgY2FsbGVkTQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljSGV0aF9zdWJzdHJhdGVfY2FsbAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4ADCj8RXhlY3V0ZXMgYSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIGZyb20gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uAEUBVGhpcyBkaXNwYXRjaGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkICoqb25seSoqIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5GQFsYXllci4gVGhlIHByb3ZpZGVkIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHVzaW5nIGBSYXdPcmlnaW46OlNpZ25lZGAuADAjIFBhcmFtZXRlcnMA5CogYG9yaWdpbmA6IE11c3QgYmUgYW4gW2BPcmlnaW46OkV0aFRyYW5zYWN0aW9uYF0gb3JpZ2luLsAqIGBjYWxsYDogVGhlIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgdG8gZXhlY3V0ZS4ZASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiwsdXBsb2FkX2NvZGUIARBjb2RlGAEcVmVjPHU4PgABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdHEBATBCYWxhbmNlT2Y8VD4ABDjsVXBsb2FkIG5ldyBgY29kZWAgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4AIQFJZiB0aGUgY29kZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGEgZGVwb3NpdCBpcyByZXNlcnZlZCBmcm9tIHRoZSBjYWxsZXINAVRoZSBzaXplIG9mIHRoZSByZXNlcnZlIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIHN1cHBsaWVkIGBjb2RlYC4AGCMgTm90ZQBZAUFueW9uZSBjYW4gaW5zdGFudGlhdGUgYSBjb250cmFjdCBmcm9tIGFueSB1cGxvYWRlZCBjb2RlIGFuZCB0aHVzIHByZXZlbnQgaXRzIHJlbW92YWwuQQFUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiBhIGNvbnN0cnVjdG9yIGNvdWxkIGVtcGxveSBhY2Nlc3MgY29udHJvbCBzbyB0aGF0IGl0IGNhbjkBb25seSBiZSBpbnN0YW50aWF0ZWQgYnkgcGVybWlzc2lvbmVkIGVudGl0aWVzLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4gdXBsb2FkaW5noHRocm91Z2ggW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXS4ARQFJZiB0aGUgcmVmY291bnQgb2YgdGhlIGNvZGUgcmVhY2hlcyB6ZXJvIGFmdGVyIHRlcm1pbmF0aW5nIHRoZSBsYXN0IGNvbnRyYWN0IHRoYXT0cmVmZXJlbmNlcyB0aGlzIGNvZGUsIHRoZSBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LixyZW1vdmVfY29kZQQBJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYABRA1AVJlbW92ZSB0aGUgY29kZSBzdG9yZWQgdW5kZXIgYGNvZGVfaGFzaGAgYW5kIHJlZnVuZCB0aGUgZGVwb3NpdCB0byBpdHMgb3duZXIuAEUBQSBjb2RlIGNhbiBvbmx5IGJlIHJlbW92ZWQgYnkgaXRzIG9yaWdpbmFsIHVwbG9hZGVyIChpdHMgb3duZXIpIGFuZCBvbmx5IGlmIGl0IGlzZG5vdCB1c2VkIGJ5IGFueSBjb250cmFjdC4gc2V0X2NvZGUIARBkZXN0cQcBEEgxNjAAASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAYoCQFQcml2aWxlZ2VkIGZ1bmN0aW9uIHRoYXQgY2hhbmdlcyB0aGUgY29kZSBvZiBhbiBleGlzdGluZyBjb250cmFjdC4ARQFUaGlzIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgcmVmY291bnRzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5IG9wZXJhdGlvbnMuIFJldHVybnPoYW4gZXJyb3IgaWYgZWl0aGVyIHRoZSBgY29kZV9oYXNoYCBvciBgZGVzdGAgZG8gbm90IGV4aXN0LgAYIyBOb3RlADEBVGhpcyBkb2VzICoqbm90KiogY2hhbmdlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCBpbiBxdWVzdGlvbi4gVGhpcyBtZWFucz0BdGhhdCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBubyBsb25nZXIgZGVyaXZlZCBmcm9tIGl0cyBjb2RlIGhhc2ggYWZ0ZXIgY2FsbGluZ0h0aGlzIGRpc3BhdGNoYWJsZS4sbWFwX2FjY291bnQABxxBAVJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBjb250cmFjdCBpbnRlcmFjdGlvbnMuAF0BVGhpcyB3aWxsIGVycm9yIGlmIHRoZSBvcmlnaW4gaXMgYWxyZWFkeSBtYXBwZWQgb3IgaXMgYSBldGggbmF0aXZlIGBBZGRyZXNzMjBgLiBJdCB3aWxsHQF0YWtlIGEgZGVwb3NpdCB0aGF0IGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIFtgU2VsZjo6dW5tYXBfYWNjb3VudGBdLgA5AU5vb3Agd2hlbiBbYENvbmZpZzo6QXV0b01hcGBdIGlzIGVuYWJsZWQsIGFzIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZHxvbiBjcmVhdGlvbiB2aWEgW2BBdXRvTWFwcGVyYF0uSGJhdGNoX21hcF9hY2NvdW50cwQBIGFjY291bnRzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AA0EWQFNYXAgbWFueSBhY2NvdW50cyBhbmQgbWFrZSB0aGUgVFggZnJlZSBpZiBhdCBsZWFzdCA5MCUgd2VyZSB1bm1hcHBlZCBvciBoZWxkIGRlcG9zaXRzLjR1bm1hcF9hY2NvdW50AAgc/FVucmVnaXN0ZXIgdGhlIGNhbGxlcnMgYWNjb3VudCBpZCBpbiBvcmRlciB0byBmcmVlIHRoZSBkZXBvc2l0LgBBAVRoZXJlIGlzIG5vIHJlYXNvbiB0byBldmVyIGNhbGwgdGhpcyBmdW5jdGlvbiBvdGhlciB0aGFuIGZyZWVpbmcgdXAgdGhlIGRlcG9zaXQu+FRoaXMgaXMgb25seSB1c2VmdWwgd2hlbiB0aGUgYWNjb3VudCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuAFEBRGlzYWJsZWQgd2hlbiBbYENvbmZpZzo6QXV0b01hcGBdIGlzIGVuYWJsZWQsIGFzIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IHVubWFwcGVkbG9uIGtpbGwgdmlhIFtgQXV0b01hcHBlcmBdLnBkaXNwYXRjaF9hc19mYWxsYmFja19hY2NvdW50BAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACRQdAURpc3BhdGNoIGFuIGBjYWxsYCB3aXRoIHRoZSBvcmlnaW4gc2V0IHRvIHRoZSBjYWxsZXJzIGZhbGxiYWNrIGFkZHJlc3MuAGEBRXZlcnkgYEFjY291bnRJZDMyYCBjYW4gY29udHJvbCBpdHMgY29ycmVzcG9uZGluZyBmYWxsYmFjayBhY2NvdW50LiBUaGUgZmFsbGJhY2sgYWNjb3VudEEBaXMgdGhlIGBBY2NvdW50SWQyMGAgd2l0aCB0aGUgbGFzdCAxMiBieXRlcyBzZXQgdG8gYDB4RUVgLiBUaGlzIGlzIGVzc2VudGlhbGx5IGFVAXJlY292ZXJ5IGZ1bmN0aW9uIGluIGNhc2UgYW4gYEFjY291bnRJZDIwYCB3YXMgdXNlZCB3aXRob3V0IGNyZWF0aW5nIGEgbWFwcGluZyBmaXJzdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQcEGE9wdGlvbgQEVAEIAQgQTm9uZQAAABBTb21lBAAIAAABAAC1Bwg8cHJpbWl0aXZlX3R5cGVzEFUyNTYAAAQAuQcBIFt1NjQ7IDRdAAC5BwAAAwQAAAAoAL0HDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQQQ2FsbAQEVAABFDByZXNlcnZlX25hbWUYASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAUxjYW5kaWRhdGVfc2lnbmF0dXJlvQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAEobGl0ZV9sYWJlbMEHASRCYXNlTGFiZWwAASBjaGF0X2tlecUHARxDaGF0S2V5AAFMcmVzZXJ2ZWRfYmFzZV9sYWJlbMkHAURPcHRpb248QmFzZUxhYmVsPgABJHNpZ25lZF9hdCgBDHU2NAAAbEkBUmVzZXJ2ZXMgYSBsaXRlLXBlcnNvbiBsYWJlbCBvbiBgRG90bnNQb3BDb250cm9sbGVyYCAodmlhIGBSb290R2F0ZXdheURpc3BhdGNoZXJgKUkBZm9yIGEgTGl0ZSBQZXJzb24sIGFuZCBvcHRpb25hbGx5IGVucXVldWVzIGEgcmVzZXJ2YXRpb24gZm9yIGEgYmFzZSBsYWJlbCB0aGUgdXNlcqBpbnRlbmRzIHRvIGNsYWltIGFzIGEgRnVsbCBQZXJzb24gbGF0ZXIuAA0BVGhlIGNhbGxlciBtdXN0IGJlIGFuIGF0dGVzdGVyIHdpdGggYXZhaWxhYmxlIGFsbG93YW5jZS4gVGhlIHVzZXIncykBc2lnbmF0dXJlIHByb3ZlcyB0aGVpciBjb25zZW50IHRvIHRoZSByZXNlcnZhdGlvbiB3aXRoIHRoaXMgc3BlY2lmaWMgbGFiZWw0YW5kIGF0dGVzdGVyLgAwIyBQYXJhbWV0ZXJzXQEtIGBjYW5kaWRhdGVgOiB0aGUgTGl0ZSBQZXJzb24ncyBhY2NvdW50IGZvciB3aG9tIHRoZSBsYWJlbCBpcyBiZWluZyByZXNlcnZlZC4gQWxzbyB0aGWIICBzaWduZXIgb2YgYGNhbmRpZGF0ZV9zaWduYXR1cmVgLvQtIGBjYW5kaWRhdGVfc2lnbmF0dXJlYDogc2lnbmF0dXJlIG92ZXIgdGhlIGJ5dGVzIHJldHVybmVkIGJ5ZQEgIGBQYWxsZXQ6OmNvbnN0cnVjdF9yZXNlcnZhdGlvbl9tZXNzYWdlYCDigJQgYSBTQ0FMRS1lbmNvZGVkIHR1cGxlIGJpbmRpbmcgdGhlIGF0dGVzdGVyLFkBICBjYW5kaWRhdGUsIHRoZSBjYW5kaWRhdGUncyBjaG9zZW4gKmJhc2UqIHVzZXJuYW1lLCBhbmQgY2hhdCBrZXkuIFRoZSBkaWdpdCBzdWZmaXggb2Y5ASAgYGxpdGVfbGFiZWxgIGlzICoqbm90KiogcGFydCBvZiB0aGUgc2lnbmVkIG1lc3NhZ2UgKHRoZSBkaWdpdHMgYXJlIGFsbG9jYXRlZEkBICBzZXJ2ZXItc2lkZSBhZnRlciB0aGUgY2FuZGlkYXRlIHNpZ25zLCBzbyB0aGUgY2FuZGlkYXRlIGNhbm5vdCBjb21taXQgdG8gdGhlbSBhdEAgIHNpZ25pbmcgdGltZSkuNQEtIGBsaXRlX2xhYmVsYDogdGhlIGxpdGUtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCAoZS5nLkkBICBgYWxpY2UuNDJgKSwgbWF0Y2hpbmcgYFN0cmluZ1V0aWxzLmlzTGl0ZVBlcnNvbkxhYmVsYCBpbiB0aGUgY29udHJhY3RzLiBPbmx5IHRoZVkBICBgPGRucy1zdGVtPmAgcG9ydGlvbiBlbnRlcnMgdGhlIHNpZ25lZCBtZXNzYWdlOyB0aGUgZGlnaXRzIHJpZGUgYWxvbmcgYXMgYW4gdW5zaWduZWQRASAgZXh0cmluc2ljIGFyZ3VtZW50IHVzZWQgZm9yIHRoZSBjb250cmFjdCBjYWxsZGF0YSBhbmQgc3RvcmFnZSBrZXku0C0gYGNoYXRfa2V5YDogNjUtYnl0ZSBwdWJsaWMga2V5IHVzZWQgZm9yIEVDREggY2hhdC5ZAS0gYHJlc2VydmVkX2Jhc2VfbGFiZWxgOiBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciB0aGUgY2FuZGlkYXRlIHRvIGxhdGVyIGNsYWlt+CAgYXMgYSBGdWxsIFBlcnNvbi4gTXVzdCBiZSBhIHNpbmdsZSBETlMgbGFiZWwgKGUuZy4gYGFsaWNlYCkuWQEtIGBzaWduZWRfYXRgOiBVbml4LXRpbWUgc2Vjb25kIGF0IHdoaWNoIHRoZSBjYW5kaWRhdGUgc2lnbmVkIHRoZSByZXNlcnZhdGlvbiBtZXNzYWdlLlkBICBUaGUgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AgYW5kIGBub3dJASAgPD0gc2lnbmVkX2F0ICsgTWF4VmFsaWRpdHlTZWNvbmRzYCwgd2hlcmUgYG5vd2AgY29tZXMgZnJvbSBbYENvbmZpZzo6VW5peFRpbWVgXS40cmVnaXN0ZXJfbmFtZQwBDHdobwQBMFQ6OkFjY291bnRJZAABFGxhYmVswQcBJEJhc2VMYWJlbAABEGxpbmvNBwEQTGluawABSE0BUmVnaXN0ZXJzIGEgZnVsbC1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCloZm9yIGEgZnVsbHkgcHJvdmVuIHBlcnNvbi4AXQFUaGUgb3JpZ2luIG11c3QgYmUgW2BPcmlnaW46OlBlcnNvblJlZ2lzdHJhdGlvbmBdLCBwcm9kdWNlZCBieSBbYEFzRG90bnNHYXRld2F5YF0gYWZ0ZXJFAWl0IHZlcmlmaWVzIHRoZSByaW5nIG1lbWJlcnNoaXAgcHJvb2YgYW5kIHRoZSBvZmYtY2hhaW4gc2lnbmF0dXJlIGZyb20gYHdob2AuIEFsbPxhdXRoZW50aWNhdGlvbiwgZm9ybWF0IGFuZCByZXBsYXkgY2hlY2tzIGxpdmUgaW4gdGhlIGV4dGVuc2lvbi4AMCMgUGFyYW1ldGVyc00BLSBgd2hvYDogdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSBmdWxsLXBlcnNvbiBsYWJlbDsgaXRzIEVWTS1tYXBwZWQgYWRkcmVzcyBpcyB0aGU5ASAgcmVjaXBpZW50IG9uIHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBjb250cmFjdC4gTXVzdCBtYXRjaCB0aGUgYHdob2AgYWxyZWFkeZggIGF1dGhlbnRpY2F0ZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdLlUBLSBgbGFiZWxgOiB0aGUgZnVsbC1wZXJzb24gbGFiZWwuIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLCBtYXRjaGluZ7wgIGBTdHJpbmdVdGlscy5pc1NpbmdsZUxhYmVsYCBpbiB0aGUgY29udHJhY3RzLkEBLSBgbGlua2A6IGhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIHByZS1leGlzdGluZyBsaXRlLXBlcnNvbiBsYWJlbDpVASAgLSBgTGluazo6TGl0ZVVzZXJuYW1lKGxpdGVfbGFiZWwpYCDigJQgbGlua3MgdG8gYW4gZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWwgKG11c3RdASAgICBtYXRjaCB0aGUgbGl0ZSBmb3JtYXQgYDxkbnMtc3RlbT4uPDIrIGRpZ2l0cz5gKTsgdGhlIGNoYXQga2V5IGlzIGluaGVyaXRlZCBmcm9tIHRoZTwgICAgbGl0ZSBlbnRyeS5JASAgLSBgTGluazo6Tm9uZShjaGF0X2tleSlgIOKAlCBzdGFuZGFsb25lIHJlZ2lzdHJhdGlvbiB3aXRoIGEgZnJlc2ggRUNESCBjaGF0IGtleS54aW5jcmVhc2VfYXR0ZXN0YXRpb25fYWxsb3dhbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAIM0EdyYW50cyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADDORDbGVhcnMgYWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBmb3IgYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5Yc2V0X2Rpc3BhdGNoZXJfYWRkcmVzcwQBHGFkZHJlc3NxBwEQSDE2MAAEDMhTZXRzIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzLgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgRGlzcGF0Y2hlckFkZHJlc3NNYW5hZ2VyYC4gT3ZlcndyaXRlcyBhbnkgcHJpb3IgdmFsdWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyRCYXNlTGFiZWwAAAQA3QMBcEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDMyPj4AAMUHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxxDaGF0S2V5AAAEAJEBASBbdTg7IDY1XQAAyQcEGE9wdGlvbgQEVAHBBwEIEE5vbmUAAAAQU29tZQQAwQcAAAEAAM0HDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxBMaW5rAAEIMExpdGVVc2VybmFtZQQAwQcBJEJhc2VMYWJlbAAAABBOb25lBADFBwEcQ2hhdEtleQABAADRBwx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQQQ2FsbAQEVAABBCxjbGVhbl91c2FnZQQBGGVudGl0edUHAUxUOjpSZXN0cmljdGVkRW50aXR5AAEISQFBbGxvdyB0byBjbGVhbiB1c2FnZSBhc3NvY2lhdGVkIHdpdGggYW4gZW50aXR5IHdoZW4gaXQgaXMgemVybyBvciB3aGVuIHRoZXJlIGlzIG5vkGxvbmdlciBhbnkgYWxsb3dhbmNlIGZvciB0aGUgb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7VBwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZUBSZXN0cmljdGVkRW50aXR5AAEEXERvdG5zUGVyc29uUmVnaXN0cmF0aW9uBAAIAXBpbmRpdl9zdXBwb3J0Ojp0cmFpdHM6OkFsaWFzAAAAANkHDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0EQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLt0HDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkkZXh0ZW5zaW9uKEFzU2NhcmNpdHkEBFQAAAQA4QcBWE9wdGlvbjxBc1NjYXJjaXR5SW5mbz4AAOEHBBhPcHRpb24EBFQB5QcBCBBOb25lAAAAEFNvbWUEAOUHAAABAADlBwxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5JGV4dGVuc2lvbjhBc1NjYXJjaXR5SW5mbwABBBRBc05mdAgBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABLHN0YXRlX25vbmNlKAEMdTY0AAAAAOkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAO0HDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24YQXNQZ2FzBARUAAAEAPEHAVRPcHRpb248QXNQZ2FzSW5mbzxUPj4AAPEHBBhPcHRpb24EBFQB9QcBCBBOb25lAAAAEFNvbWUEAPUHAAABAAD1BwxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uKEFzUGdhc0luZm8EBFQAAQgUQ2xhaW0UARRwcm9vZp0HAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABKGNvbGxlY3Rpb24ZBAE4UGdhc0NvbGxlY3Rpb24AAQxkYXk4AQx1MzIAAAAoQmF0Y2hDbGFpbRQBFHByb29mnQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgABAAD5BwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkkZXh0ZW5zaW9uOEFzRG90bnNHYXRld2F5BARUAAAEAP0HAXRPcHRpb248QXNEb3Ruc0dhdGV3YXlJbmZvPFQ+PgAA/QcEGE9wdGlvbgQEVAEBCAEIEE5vbmUAAAAQU29tZQQAAQgAAAEAAAEIDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheSRleHRlbnNpb25IQXNEb3Ruc0dhdGV3YXlJbmZvBARUAAEEQFJlZ2lzdGVyRnVsbE5hbWUQARRwcm9vZp0HAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABJHNpZ25hdHVyZb0EAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQAAAAAFCAh8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjhSZXN0cmljdE9yaWdpbgQEVAAABAB1AQEQYm9vbAAACQgQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAADQgQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAABEIEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAABUIEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAAAZCBAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAB0IAQxFcmEAAB0IEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAAIQgQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAACUIEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAAKQgIiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnRQQ2hhcmdlQXNzZXRUeFBheW1lbnQEBFQAAAgBDHRpcHEBATBCYWxhbmNlT2Y8VD4AASBhc3NldF9pZFUDAUhPcHRpb248VDo6QXNzZXRJZD4AAC0ICHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZTEIARBNb2RlAAAxCAh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAADUIEDRwYWxsZXRfcmV2aXZlDGV2bTB0eF9leHRlbnNpb24kU2V0T3JpZ2luBARUAAAAADkICDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBPQgAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YT0IASxBY2NvdW50RGF0YQAAPQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQE1AQAQARBmcmVlNQEBHEJhbGFuY2UAASByZXNlcnZlZDUBARxCYWxhbmNlAAEYZnJvemVuNQEBHEJhbGFuY2UAARRmbGFnc0EIAShFeHRyYUZsYWdzAABBCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQANQEBEHUxMjgAAEUIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBEQEADAEYbm9ybWFsEQEBBFQAASxvcGVyYXRpb25hbBEBAQRUAAEkbWFuZGF0b3J5EQEBBFQAAEkIAAACTQgATQgIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQFRCARUATwADAEUcGhhc2VBCgEUUGhhc2UAARRldmVudFEIAQRFAAEYdG9waWNzwAEYVmVjPFQ+AABRCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAfQYU3lzdGVtBABVCAFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAH0IAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBQcmVpbWFnZQQAgQgBfHBhbGxldF9wcmVpbWFnZTo6RXZlbnQ8UnVudGltZT4ABQAkU2NoZWR1bGVyBACFCAGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4ABgAoUGFyYW1ldGVycwQAjQgBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgAHAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAvQgBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAIADROZXR3b3JrU3VmZml4BADBCAGsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4OjpFdmVudDxSdW50aW1lPgCaACBCYWxhbmNlcwQAxQgBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BAAFCQGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BAAJCQHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQAcVmVzdGluZwQADQkBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAOABhDbGFpbXMEABEJAXRwYWxsZXRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQAFQkBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EABkJAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAAdCQGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EACEJAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBAAxCQGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAERUb0t1c2FtYVhjbVJvdXRlcgQANQkBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEADkJAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBABBCQHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFdmVudDxSdW50aW1lPgAkABxVdGlsaXR5BABFCQFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBABJCQF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQATQkBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAcSW5kaWNlcwQAVQkBeHBhbGxldF9pbmRpY2VzOjpFdmVudDxSdW50aW1lPgArABhBc3NldHMEAFkJAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEAF0JAXhwYWxsZXRfdW5pcXVlczo6RXZlbnQ8UnVudGltZT4AMwAQTmZ0cwQAYQkBbHBhbGxldF9uZnRzOjpFdmVudDxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBABpCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBABtCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAHEJAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAgQkBHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEAIUJARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFNjYXJjaXR5BACJCQGUaW5kaXZfcGFsbGV0X3NjYXJjaXR5OjpFdmVudDxSdW50aW1lPgA6AAxQc20EAI0JAWhwYWxsZXRfcHNtOjpFdmVudDxSdW50aW1lPgA7ACBUcmVhc3VyeQQAkQkBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAlQkBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4APQAkUmVmZXJlbmRhBACZCQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4APgAkV2hpdGVsaXN0BAChCQGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AQAAgQm91bnRpZXMEALEJAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEALUJAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAuQkBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAL0JAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEQADERhcAQAwQkBaHBhbGxldF9kYXA6OkV2ZW50PFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQAyQkBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXZlbnQ8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBADVCQGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQA3QkB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQA4QkBoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXZlbnQ8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BADlCQG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFdmVudDxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAO0JAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkV2ZW50PFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADxCQH4cGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjp2ZXJpZmllcjo6RXZlbnQ8UnVudGltZT4AVgBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAABCgHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkV2ZW50PFJ1bnRpbWU+AFgAHFN0YWtpbmcEAAUKAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXZlbnQ8UnVudGltZT4AWQAkTmZ0Q2xhaW1zBAAVCgGcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXM6OkV2ZW50PFJ1bnRpbWU+AGAARE1lbWJlcnNTdWJzY3JpYmVyBAAhCgG8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlcjo6RXZlbnQ8UnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQAJQoBrGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6RXZlbnQ8UnVudGltZT4AYgAQUGdhcwQAKQoBhGluZGl2X3BhbGxldF9wZ2FzOjpFdmVudDxSdW50aW1lPgBjABhSZXZpdmUEAC0KAXRwYWxsZXRfcmV2aXZlOjpFdmVudDxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEADEKAahpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6RXZlbnQ8UnVudGltZT4AmABET3JpZ2luUmVzdHJpY3Rpb24EADUKAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFdmVudDxSdW50aW1lPgCZABBTdWRvBAA5CgFscGFsbGV0X3N1ZG86OkV2ZW50PFJ1bnRpbWU+APsANFBnYXNBbGxvd2FuY2UEAD0KAZRwYWxsZXRfcGdhc19hbGxvd2FuY2U6OkV2ZW50PFJ1bnRpbWU+APwAAFUIDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZvWQgBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcmUIATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb1kIAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbnUBARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9yZQgBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQuWQgIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0EQEBGFdlaWdodAABFGNsYXNzXQgBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZWEIARBQYXlzAABdCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAAYQgMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAZQgIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAaQgBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAG0IAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAHEIATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAdQgBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAB5CAEkVHJpZUVycm9yAA4AAGkICChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAbQgIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAcQgINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAB1CAgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAeQgMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAH0IDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZBEBARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNosQcBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXZlbnQEBFQAAQwUTm90ZWQEARBoYXNoPAEcVDo6SGFzaAAABGhBIHByZWltYWdlIGhhcyBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQEARBoYXNoPAEcVDo6SGFzaAABBHhBIHByZWltYWdlIGhhcyBiZWVuIHJlcXVlc3RlZC4cQ2xlYXJlZAQBEGhhc2g8ARxUOjpIYXNoAAIEbEEgcHJlaW1hZ2UgaGFzIGJlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUIDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFdmVudAQEVAABKCRTY2hlZHVsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgAABFBTY2hlZHVsZWQgc29tZSB0YXNrLiBDYW5jZWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEETENhbmNlbGVkIHNvbWUgdGFzay4oRGlzcGF0Y2hlZAwBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZLEHAUBPcHRpb248VGFza05hbWU+AAEYcmVzdWx0iQgBOERpc3BhdGNoUmVzdWx0AAIEVERpc3BhdGNoZWQgc29tZSB0YXNrLiBSZXRyeVNldBABEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZLEHAUBPcHRpb248VGFza05hbWU+AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4AARxyZXRyaWVzDAEIdTgAAwSgU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjhSZXRyeUNhbmNlbGxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZLEHAUBPcHRpb248VGFza05hbWU+AAQErENhbmNlbCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay48Q2FsbFVuYXZhaWxhYmxlCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlksQcBQE9wdGlvbjxUYXNrTmFtZT4ABQQpAVRoZSBjYWxsIGZvciB0aGUgcHJvdmlkZWQgaGFzaCB3YXMgbm90IGZvdW5kIHNvIHRoZSB0YXNrIGhhcyBiZWVuIGFib3J0ZWQuOFBlcmlvZGljRmFpbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlksQcBQE9wdGlvbjxUYXNrTmFtZT4ABgQ9AVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmVuZXdlZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jay4sUmV0cnlGYWlsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSxBwFAT3B0aW9uPFRhc2tOYW1lPgAHCF0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZXRyaWVkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrIG9yIHRoZXJlnHdhcyBub3QgZW5vdWdoIHdlaWdodCB0byByZXNjaGVkdWxlIGl0LlRQZXJtYW5lbnRseU92ZXJ3ZWlnaHQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSxBwFAT3B0aW9uPFRhc2tOYW1lPgAIBPBUaGUgZ2l2ZW4gdGFzayBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgc2luY2UgaXQgaXMgb3ZlcndlaWdodC5AQWdlbmRhSW5jb21wbGV0ZQQBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgAJBIRBZ2VuZGEgaXMgaW5jb21wbGV0ZSBmcm9tIGB3aGVuYC4EMEV2ZW50cyB0eXBlLokIBBhSZXN1bHQIBFQBEARFAWUIAQgIT2sEABAAAAAADEVycgQAZQgAAAEAAI0IDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQURXZlbnQEBFQAAQQcVXBkYXRlZAwBDGtleZEIAcQ8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6S2V5BGRUaGUga2V5IHRoYXQgd2FzIHVwZGF0ZWQuASRvbGRfdmFsdWWlCAHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EfFRoZSBvbGQgdmFsdWUgYmVmb3JlIHRoaXMgY2FsbC4BJG5ld192YWx1ZaUIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR4VGhlIG5ldyB2YWx1ZSBhZnRlciB0aGlzIGNhbGwuAAxQQSBQYXJhbWV0ZXIgd2FzIHNldC4AvElzIGFsc28gZW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSB3YXMgbm90IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVQUnVudGltZVBhcmFtZXRlcnNLZXkAARA8U3Rha2luZ0VsZWN0aW9uBACVCAHFATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAJFNjaGVkdWxlcgQAmQgBqQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAME1lc3NhZ2VRdWV1ZQQAnQgBuQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQACADRBbGlhc0FjY291bnRzBAChCAG9ATxkeW5hbWljX3BhcmFtczo6YWxpYXNfYWNjb3VudHM6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQADAACVCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFBhcmFtZXRlcnNLZXkAARwsU2lnbmVkUGhhc2UEANwBLFNpZ25lZFBoYXNlAAAAUE1heFNpZ25lZFN1Ym1pc3Npb25zBADkAVBNYXhTaWduZWRTdWJtaXNzaW9ucwABADRVbnNpZ25lZFBoYXNlBADoATRVbnNpZ25lZFBoYXNlAAIAKE1pbmVyUGFnZXMEAOwBKE1pbmVyUGFnZXMAAwBETWF4RWxlY3RpbmdWb3RlcnMEAPABRE1heEVsZWN0aW5nVm90ZXJzAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEAPQBWFRhcmdldFNuYXBzaG90UGVyQmxvY2sABQA4TWF4RXJhRHVyYXRpb24EAPgBOE1heEVyYUR1cmF0aW9uAAYAAJkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRQYXJhbWV0ZXJzS2V5AAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAA0TWF4aW11bVdlaWdodAQACQEBNE1heGltdW1XZWlnaHQAAQAAnQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTRQYXJhbWV0ZXJzS2V5AAEIPE1heE9uSW5pdFdlaWdodAQAGQEBPE1heE9uSW5pdFdlaWdodAAAADxNYXhPbklkbGVXZWlnaHQEACEBATxNYXhPbklkbGVXZWlnaHQAAQAAoQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHM0UGFyYW1ldGVyc0tleQABCCBBbGlhc0ZlZQQAKQEBIEFsaWFzRmVlAAAAXFN0YWxlQWxpYXNTd2VlcEludGVydmFsBAA5AQFcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAQAApQgEGE9wdGlvbgQEVAGpCAEIEE5vbmUAAAAQU29tZQQAqQgAAAEAAKkICHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lWFJ1bnRpbWVQYXJhbWV0ZXJzVmFsdWUAARA8U3Rha2luZ0VsZWN0aW9uBACtCAHNATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAAAkU2NoZWR1bGVyBACxCAGxATxkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQABADBNZXNzYWdlUXVldWUEALUIAcEBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQACADRBbGlhc0FjY291bnRzBAC5CAHFATxkeW5hbWljX3BhcmFtczo6YWxpYXNfYWNjb3VudHM6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAMAAK0IEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAALEIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjxQYXJhbWV0ZXJzVmFsdWUAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEADgBDHUzMgAAADRNYXhpbXVtV2VpZ2h0BAARAQEYV2VpZ2h0AAEAALUIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAEAALkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zOGFsaWFzX2FjY291bnRzPFBhcmFtZXRlcnNWYWx1ZQABCCBBbGlhc0ZlZQQAMQEBPE9wdGlvbjxCYWxhbmNlPgAAAFxTdGFsZUFsaWFzU3dlZXBJbnRlcnZhbAQAOAEsQmxvY2tOdW1iZXIAAQAAvQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3JhAQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCAxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBRFdmVudAQEVAABBEBOZXR3b3JrU3VmZml4U2V0CAEMb2xkaQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAABDG5ld2kBAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAARsVGhlIG5ldHdvcmsgc3VmZml4IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWU1AQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzyQgBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnQ1AQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudDUBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudDUBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkNQEBKFQ6OkJhbGFuY2UAAQxuZXc1AQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb27NCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29uzQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbs0IAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbs0IAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZDUBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb27NCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQAAQkBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAADNCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABMCBQcmVpbWFnZQQA0QgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBADVCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EANkIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AIFNjYXJjaXR5BADdCAGEaW5kaXZfcGFsbGV0X3NjYXJjaXR5OjpIb2xkUmVhc29uADoADFBzbQQA4QgBWHBhbGxldF9wc206OkhvbGRSZWFzb24AOwBITXVsdGlBc3NldEJvdW50aWVzBADlCAGccGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpIb2xkUmVhc29uAEQASFN0YXRlVHJpZU1pZ3JhdGlvbgQA6QgBnHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6SG9sZFJlYXNvbgBGAEBEZWxlZ2F0ZWRTdGFraW5nBADtCAGQcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpIb2xkUmVhc29uAFMAPFN0YWtpbmdSY0NsaWVudAQA8QgBqHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6SG9sZFJlYXNvbgBUAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAPUIAeBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6SG9sZFJlYXNvbgBYABxTdGFraW5nBAD5CAGAcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkhvbGRSZWFzb24AWQAYUmV2aXZlBAD9CAFkcGFsbGV0X3Jldml2ZTo6SG9sZFJlYXNvbgBkAADRCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldChIb2xkUmVhc29uAAEEIFByZWltYWdlAAAAANUIDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAANkIDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAN0IDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0KEhvbGRSZWFzb24AAQQ4U3RvcmFnZURlcG9zaXQAAAAA4QgMKHBhbGxldF9wc20YcGFsbGV0KEhvbGRSZWFzb24AAQQ8Q3JlYXRpb25EZXBvc2l0AAAAAOUIDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0KEhvbGRSZWFzb24EBEkAAQQ4Q3VyYXRvckRlcG9zaXQAAAAA6QgMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAA7QgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQoSG9sZFJlYXNvbgABBERTdGFraW5nRGVsZWdhdGlvbgAAAADxCAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAA9QgQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0KEhvbGRSZWFzb24AAQRAU2lnbmVkU3VibWlzc2lvbgAAAAD5CBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldChIb2xkUmVhc29uAAEEHFN0YWtpbmcAAAAA/QgMNHBhbGxldF9yZXZpdmUYcGFsbGV0KEhvbGRSZWFzb24AAQxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAAAVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABADhBZGRyZXNzTWFwcGluZwACAAABCQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAABQkMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlNQEBMEJhbGFuY2VPZjxUPgABDHRpcDUBATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0CQkMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAQx0aXA1AQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLkRBc3NldFJlZnVuZEZhaWxlZAQBSG5hdGl2ZV9hbW91bnRfa2VwdDUBATBCYWxhbmNlT2Y8VD4AAQT0QSBzd2FwIG9mIHRoZSByZWZ1bmQgaW4gbmF0aXZlIGN1cnJlbmN5IGJhY2sgdG8gYXNzZXQgZmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldA0JDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXZlbnQEBFQAAQw4VmVzdGluZ0NyZWF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIAAASQQSB2ZXN0aW5nIHNjaGVkdWxlIGhhcyBiZWVuIGNyZWF0ZWQuOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABIHVudmVzdGVkNQEBMEJhbGFuY2VPZjxUPgABCFEBVGhlIGFtb3VudCB2ZXN0ZWQgaGFzIGJlZW4gdXBkYXRlZC4gVGhpcyBjb3VsZCBpbmRpY2F0ZSBhIGNoYW5nZSBpbiBmdW5kcyBhdmFpbGFibGUuJQFUaGUgYmFsYW5jZSBnaXZlbiBpcyB0aGUgYW1vdW50IHdoaWNoIGlzIGxlZnQgdW52ZXN0ZWQgKGFuZCB0aHVzIGxvY2tlZCkuQFZlc3RpbmdDb21wbGV0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAIEnEFuIFxbYWNjb3VudFxdIGhhcyBiZWNvbWUgZnVsbHkgdmVzdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEJEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEV2ZW50BARUAAEEHENsYWltZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAUBldGhlcmV1bV9hZGRyZXNzlQEBPEV0aGVyZXVtQWRkcmVzcwABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAARoU29tZW9uZSBjbGFpbWVkIHNvbWUgRE9Ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXN5AQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudDUBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZCQw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQdCQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQhCQwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZSUJAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbhkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEcbWVzc2FnZREDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW4ZAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABFGVycm9yLQkBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW4ZAgEgTG9jYXRpb24AARRlcnJvckEDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlNQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQRAQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodBEBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvblUDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW4ZAgEgTG9jYXRpb24AARhhc3NldHOJAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdB0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbhkCASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb24ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvckEDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27FAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllchkCASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVyVQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEQY29zdB0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABEGNvc3QdAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARBjb3N0HQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nGQIBIExvY2F0aW9uAAEQZmVlcx0DARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luGQIBIExvY2F0aW9uAAEYYXNzZXRziQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXIZAgEgTG9jYXRpb24AARh0YXJnZXQZAgEgTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXIZAgEgTG9jYXRpb24AARh0YXJnZXQZAgEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXQZAgEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQkQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZBEBARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWQRAQEYV2VpZ2h0AAEUZXJyb3IpCQFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQAKQkBQEluc3RydWN0aW9uRXJyb3IAAgAAKQkQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvckEDARRFcnJvcgAALQkQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAMQkMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAAJQkBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDUJDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBRFdmVudAgEVAAESQABCGhEZWxpdmVyeUZlZUZhY3RvckRlY3JlYXNlZAQBJG5ld192YWx1ZUkFASRGaXhlZFUxMjgElE5ldyB2YWx1ZSBvZiB0aGUgYERlbGl2ZXJ5RmVlRmFjdG9yYC4ABJxEZWxpdmVyeSBmZWUgZmFjdG9yIGhhcyBiZWVuIGRlY3JlYXNlZC5oRGVsaXZlcnlGZWVGYWN0b3JJbmNyZWFzZWQEASRuZXdfdmFsdWVJBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAQScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBpbmNyZWFzZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0OQkMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcj0JAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZBEBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc3UBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbs0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbs0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAEQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAABBCQyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFdmVudAQEVAABCCxNZXNzYWdlU2VudBABGG9yaWdpbhkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEcbWVzc2FnZREDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAAQ8QW4gWENNIHdhcyBzZW50aEV4cG9ydE9wZXJhdGluZ01vZGVDaGFuZ2VkBAEQbW9kZdUDATRPcGVyYXRpbmdNb2RlAAEERFNldCBPcGVyYXRpbmdNb2RlBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0RQkMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcmUIATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcmUIATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHSJCAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcmUIATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEkJDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50NQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQ1BAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHSJCAE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0JDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHSJCAE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUEEATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleO0DAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjtAwEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5kUQkBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCQgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAABVCQw4cGFsbGV0X2luZGljZXMYcGFsbGV0FEV2ZW50BARUAAEQNEluZGV4QXNzaWduZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAABHRBIGFjY291bnQgaW5kZXggd2FzIGFzc2lnbmVkLihJbmRleEZyZWVkBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQS8QSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyZWVkIHVwICh1bmFzc2lnbmVkKS4sSW5kZXhGcm96ZW4IARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABDHdobwQBMFQ6OkFjY291bnRJZAACBOhBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJvemVuIHRvIGl0cyBjdXJyZW50IGFjY291bnQgSUQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAME6EEgZGVwb3NpdCB0byByZXNlcnZlIGFuIGluZGV4IGhhcyBiZWVuIHBva2VkL3JlY29uc2lkZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRZCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZTUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzUQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldF0JDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXZlbnQIBFQABEkAAWwcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuGEZyb3plbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEXFNvbWUgYGl0ZW1gIHdhcyBmcm96ZW4uGFRoYXdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEXFNvbWUgYGl0ZW1gIHdhcyB0aGF3ZWQuQENvbGxlY3Rpb25Gcm96ZW4EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAgEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBmcm96ZW4uQENvbGxlY3Rpb25UaGF3ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyB0aGF3ZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQEFwcHJvdmVkVHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5ESXRlbVN0YXR1c0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA4EEQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YWUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAAPBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEAS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuLE1ldGFkYXRhU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhZQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbnUBARBib29sABEEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uPE1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABIEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNhBAE4VmVjPFQ6Okl0ZW1JZD4AEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4wQXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtled0DAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZXgBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABQEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtled0DAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFQQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbuABXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABYEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFwSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZTUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgAYBIxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGluc3RhbmNlLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGQScVGhlIHByaWNlIGZvciB0aGUgaW5zdGFuY2Ugd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkABoETEFuIGl0ZW0gd2FzIGJvdWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRhCQwscGFsbGV0X25mdHMYcGFsbGV0FEV2ZW50CARUAARJAAGYHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLkhJdGVtVHJhbnNmZXJMb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBIhBbiBgaXRlbWAgYmVjYW1lIG5vbi10cmFuc2ZlcmFibGUuUEl0ZW1UcmFuc2ZlclVubG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwR4QW4gYGl0ZW1gIGJlY2FtZSB0cmFuc2ZlcmFibGUuUEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhdQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXN1AQEQYm9vbAAIBKhgaXRlbWAgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyB3ZXJlIGxvY2tlZC5AQ29sbGVjdGlvbkxvY2tlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGxvY2tlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEUYWRtaW6pAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxmcmVlemVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AVHJhbnNmZXJBcHByb3ZlZBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABIGRlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLlRBbGxBcHByb3ZhbHNDYW5jZWxsZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EnEFsbCBhcHByb3ZhbHMgb2YgYW4gaXRlbSBnb3QgY2FuY2VsbGVkLlxDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADwQBAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGNvbmZpZyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABAEtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAARBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC48SXRlbU1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhWQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgASBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLkxJdGVtTWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtc2EEAThWZWM8VDo6SXRlbUlkPgAUBCEBVGhlIGRlcG9zaXQgZm9yIGEgc2V0IG9mIGBpdGVtYHMgd2l0aGluIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIHVwZGF0ZWQuMEF0dHJpYnV0ZVNldBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZVkBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgABJG5hbWVzcGFjZZkEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAVBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFgQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAubEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAFwTMQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgYWRkZWQudEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAYBNRBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyByZW1vdmVkLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAZBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABoEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24udENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbBKxNaW50IHNldHRpbmdzIGZvciBhIGNvbGxlY3Rpb24gaGFkIGNoYW5nZWQubE5leHRDb2xsZWN0aW9uSWRJbmNyZW1lbnRlZAQBHG5leHRfaWTgAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcBAEBRXZlbnQgZ2V0cyBlbWl0dGVkIHdoZW4gdGhlIGBOZXh0Q29sbGVjdGlvbklkYCBnZXRzIGluY3JlbWVudGVkLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AB0EfFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaXRlbS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAB4EjFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkAB8ETEFuIGl0ZW0gd2FzIGJvdWdodC4cVGlwU2VudBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEgcmVjZWl2ZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQFYRGVwb3NpdEJhbGFuY2VPZjxULCBJPgAgBDxBIHRpcCB3YXMgc2VudC4sU3dhcENyZWF0ZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACEEiEFuIGBpdGVtYCBzd2FwIGludGVudCB3YXMgY3JlYXRlZC40U3dhcENhbmNlbGxlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIgRcVGhlIHN3YXAgd2FzIGNhbmNlbGxlZC4sU3dhcENsYWltZWQgATxzZW50X2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW50X2l0ZW04ASRUOjpJdGVtSWQAATxzZW50X2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAAUxyZWNlaXZlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0cmVjZWl2ZWRfaXRlbTgBJFQ6Okl0ZW1JZAABTHJlY2VpdmVkX2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAARRwcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAjBGhUaGUgc3dhcCBoYXMgYmVlbiBjbGFpbWVkLlhQcmVTaWduZWRBdHRyaWJ1dGVzU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AJAT8TmV3IGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCBmb3IgYW4gYGl0ZW1gIG9mIHRoZSBgY29sbGVjdGlvbmAuSFBhbGxldEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRhdHRyaWJ1dGVlCQGEUGFsbGV0QXR0cmlidXRlczxUOjpDb2xsZWN0aW9uSWQ+AAEUdmFsdWVZAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AJQhNAUEgbmV3IGF0dHJpYnV0ZSBpbiB0aGUgYFBhbGxldGAgbmFtZXNwYWNlIHdhcyBzZXQgZm9yIHRoZSBgY29sbGVjdGlvbmAgb3IgYW4gYGl0ZW1gZHdpdGhpbiB0aGF0IGBjb2xsZWN0aW9uYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRlCQwscGFsbGV0X25mdHMUdHlwZXNAUGFsbGV0QXR0cmlidXRlcwQwQ29sbGVjdGlvbklkATgBCCxVc2VkVG9DbGFpbQQAOAEwQ29sbGVjdGlvbklkAAAAQFRyYW5zZmVyRGlzYWJsZWQAAQAAaQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZBkCAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAASByZXNlcnZlc9UEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0JDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXNRBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0cQkMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFdmVudAQEVAABGCxQb29sQ3JlYXRlZBABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQEiFRoZSBhY2NvdW50IHRoYXQgY3JlYXRlZCB0aGUgcG9vbC4BHHBvb2xfaWR1CQEkVDo6UG9vbElkCEkBVGhlIHBvb2wgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhc3NldHMgbWF5IG5vdCBiZfR0aGUgc2FtZSBhcyB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBjcmVhdGUgcG9vbCBleHRyaW5zaWMuATBwb29sX2FjY291bnQEATBUOjpBY2NvdW50SWQEbFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAhBAVRoZSBpZCBvZiB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHdpbGwgYmUgbWludGVkIHdoZW4gYXNzZXRzIGFyZSBhZGRlZCB0byB0aGlzFHBvb2wuAAQdAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQ3JlYXRlUG9vbGAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuOExpcXVpZGl0eUFkZGVkHAEMd2hvBAEwVDo6QWNjb3VudElkBLhUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHRha2VuIGZyb20uARxtaW50X3RvBAEwVDo6QWNjb3VudElkBNRUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgbWludGVkIHRvLgEccG9vbF9pZHUJASRUOjpQb29sSWQE4FRoZSBwb29sIGlkIG9mIHRoZSBwb29sIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgYWRkZWQgdG8uAUBhbW91bnQxX3Byb3ZpZGVkNQEBKFQ6OkJhbGFuY2UE5FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgFAYW1vdW50Ml9wcm92aWRlZDUBAShUOjpCYWxhbmNlBOhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIG1pbnRlZC4BPGxwX3Rva2VuX21pbnRlZDUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgbWludGVkIG9mIHRoYXQgaWQuAQQlAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQWRkTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC5ATGlxdWlkaXR5UmVtb3ZlZCABDHdobwQBMFQ6OkFjY291bnRJZATcVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIGJ1cm5lZCBmcm9tLgEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEccG9vbF9pZHUJASRUOjpQb29sSWQEwFRoZSBwb29sIGlkIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgcmVtb3ZlZCBmcm9tLgEcYW1vdW50MTUBAShUOjpCYWxhbmNlBPRUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuARxhbW91bnQyNQEBKFQ6OkJhbGFuY2UE+FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIGJ1cm5lZC4BPGxwX3Rva2VuX2J1cm5lZDUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgYnVybmVkIG9mIHRoYXQgaWQuATh3aXRoZHJhd2FsX2ZlZf0EARxQZXJtaWxsBHRMaXF1aWRpdHkgd2l0aGRyYXdhbCBmZWUgKCUpLgIEMQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYFJlbW92ZUxpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuMFN3YXBFeGVjdXRlZBQBDHdobwQBMFQ6OkFjY291bnRJZAS0V2hpY2ggYWNjb3VudCB3YXMgdGhlIGluc3RpZ2F0b3Igb2YgdGhlIHN3YXAuARxzZW5kX3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dDUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoeQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkDCDUBQXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4gQm90aCBgU3dhcEV4YWN0VG9rZW5Gb3JUb2tlbmDYYW5kIGBTd2FwVG9rZW5Gb3JFeGFjdFRva2VuYCB3aWxsIGdlbmVyYXRlIHRoaXMgZXZlbnQuSFN3YXBDcmVkaXRFeGVjdXRlZAwBJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dDUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoeQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkEBLxBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLhxUb3VjaGVkCAEccG9vbF9pZHUJASRUOjpQb29sSWQETFRoZSBJRCBvZiB0aGUgcG9vbC4BDHdobwQBMFQ6OkFjY291bnRJZASEVGhlIGFjY291bnQgaW5pdGlhdGluZyB0aGUgdG91Y2guBQQNAVBvb2wgaGFzIGJlZW4gdG91Y2hlZCBpbiBvcmRlciB0byBmdWxmaWxsIG9wZXJhdGlvbmFsIHJlcXVpcmVtZW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1CQAABAgZAhkCAHkJAAACfQkAfQkAAAQIGQI1AQCBCQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFdmVudAgEVAAESQABCBhGcm96ZW4MAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAAABhUaGF3ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUJDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbs0IAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudDUBAShUOjpCYWxhbmNlAAAExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YC4gUmVsZWFzZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb27NCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABBMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAuGEJ1cm5lZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbs0IAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJCQxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldBRFdmVudAQEVAABQERDb2xsZWN0aW9uQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABOxBIGNvbGxlY3Rpb24gd2FzIGNyZWF0ZWQgYW5kIGFzc2lnbmVkIHRvIGl0cyBpbml0aWFsIG93bmVyLmBDb2xsZWN0aW9uT3duZXJOb21pbmF0ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAE0cGVuZGluZ19vd25lcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABBPhUaGUgY29sbGVjdGlvbiBvd25lciBub21pbmF0ZWQgb3IgY2xlYXJlZCBhIHByb3NwZWN0aXZlIG93bmVyLlhDb2xsZWN0aW9uT3duZXJDaGFuZ2VkDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJG9sZF9vd25lcgQBMFQ6OkFjY291bnRJZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAACBFUBQSBub21pbmF0ZWQgYWNjb3VudCBjbGFpbWVkIHRoZSBjb2xsZWN0aW9uIGFuZCBhc3N1bWVkIGl0cyBhZ2dyZWdhdGUgc3RvcmFnZSBkZXBvc2l0LkRDb2xsZWN0aW9uRGVsZXRlZAQBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAAwQNAUFuIGVtcHR5IGNvbGxlY3Rpb24gd2FzIGRlbGV0ZWQgYW5kIGl0cyByZW1haW5pbmcgZGVwb3NpdCByZWxlYXNlZC4sSXRlbURlZmluZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAAEBPhBbiBpbW11dGFibGUgaXRlbSBkZWZpbml0aW9uIHdhcyBhc3NpZ25lZCB3aXRoaW4gYSBjb2xsZWN0aW9uLixJdGVtRGVsZXRlZAgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAUE/EFuIHVudXNlZCBpdGVtIGRlZmluaXRpb24gd2FzIGRlbGV0ZWQgYW5kIGl0cyBkZXBvc2l0IHJlbGVhc2VkLhhNaW50ZWQQASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABFG93bmVyBAEwVDo6QWNjb3VudElkAAYEvEFuIGluc3RhbmNlIHdhcyBtaW50ZWQgaW50byBhbiBlbXB0eSBwdXJzZSBrZXkuLFRyYW5zZmVycmVkEAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAHBORBIGhvbGRlciBtb3ZlZCBhbiBpbnN0YW5jZSBmcm9tIG9uZSBwdXJzZSBrZXkgdG8gYW5vdGhlci5ARm9yY2VUcmFuc2ZlcnJlZBABIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQACAQRAUEgY29sbGVjdGlvbiBvd25lciBmb3JjZWQgYW4gaW5zdGFuY2UgZnJvbSBvbmUgcHVyc2Uga2V5IHRvIGFub3RoZXIuGEJ1cm5lZAwBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAJBBEBQW4gaW5zdGFuY2Ugd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQgZnJvbSB0aGUgcHVyc2Uga2V5IHRoYXQgaGVsZCBpdC5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AAoEAQFBIGNvbGxlY3Rpb24tbGV2ZWwgbWV0YWRhdGEgZGVmYXVsdCB3YXMgaW5zZXJ0ZWQgb3Igb3ZlcndyaXR0ZW4uZENvbGxlY3Rpb25NZXRhZGF0YVJlbW92ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4ACwTAQSBjb2xsZWN0aW9uLWxldmVsIG1ldGFkYXRhIGRlZmF1bHQgd2FzIHJlbW92ZWQuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4ADATwQW4gaXRlbS1sZXZlbCBtZXRhZGF0YSBvdmVycmlkZSB3YXMgaW5zZXJ0ZWQgb3Igb3ZlcndyaXR0ZW4uTEl0ZW1NZXRhZGF0YVJlbW92ZWQMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AA0EsEFuIGl0ZW0tbGV2ZWwgbWV0YWRhdGEgb3ZlcnJpZGUgd2FzIHJlbW92ZWQuTEluc3RhbmNlTWV0YWRhdGFTZXQIASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgAOBAEBQW4gaW5zdGFuY2UtbGV2ZWwgbWV0YWRhdGEgb3ZlcnJpZGUgd2FzIGluc2VydGVkIG9yIG92ZXJ3cml0dGVuLlxJbnN0YW5jZU1ldGFkYXRhUmVtb3ZlZAgBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AA8EwEFuIGluc3RhbmNlLWxldmVsIG1ldGFkYXRhIG92ZXJyaWRlIHdhcyByZW1vdmVkLhAdAUV2ZXJ5IGluc3RhbmNlIGV2ZW50IG5hbWVzIGl0cyBjb2xsZWN0aW9uIGFuZCBib3RoIHB1cnNlIGtleXMgaW52b2x2ZWQuAFUBT2ZmLWNoYWluIGNvbnN1bWVycyByZWNvbnN0cnVjdCBwZXItY29sbGVjdGlvbiB2aWV3cyBmcm9tIHRoZXNlIGV2ZW50cyBhbG9uZSwgYW5kIHRoZSUBc3RhdGUgYSBsb29rdXAgd291bGQgbmVlZCBpcyBhbHJlYWR5IGdvbmUgYnkgdGhlIHRpbWUgYSBidXJuIGlzIG9ic2VydmVkLo0JDChwYWxsZXRfcHNtGHBhbGxldBRFdmVudAQEVAABNBhNaW50ZWQYAQx3aG8EATBUOjpBY2NvdW50SWQAAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABRGV4dGVybmFsX2NvbnN1bWVkNQEBMEJhbGFuY2VPZjxUPgABRGludGVybmFsX3JlY2VpdmVkNQEBMEJhbGFuY2VPZjxUPgABMGludGVybmFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAASkVXNlciBzd2FwcGVkIGV4dGVybmFsIGFzc2V0IGZvciBpbnRlcm5hbC4gUmVkZWVtZWQYAQx3aG8EATBUOjpBY2NvdW50SWQAAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABRGludGVybmFsX2NvbnN1bWVkNQEBMEJhbGFuY2VPZjxUPgABRGV4dGVybmFsX3JlY2VpdmVkNQEBMEJhbGFuY2VPZjxUPgABMGludGVybmFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAQSkVXNlciBzd2FwcGVkIGludGVybmFsIGZvciBleHRlcm5hbCBhc3NldC5ETWludGluZ0ZlZVVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zf0EARxQZXJtaWxsAAEkbmV3X3ZhbHVl/QQBHFBlcm1pbGwAAgS8TWludGluZyBmZWUgdXBkYXRlZCBmb3IgYW4gYXNzZXQgYnkgZ292ZXJuYW5jZS5QUmVkZW1wdGlvbkZlZVVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zf0EARxQZXJtaWxsAAEkbmV3X3ZhbHVl/QQBHFBlcm1pbGwAAwTIUmVkZW1wdGlvbiBmZWUgdXBkYXRlZCBmb3IgYW4gYXNzZXQgYnkgZ292ZXJuYW5jZS44TWF4RGVidFVwZGF0ZWQMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAEkb2xkX3ZhbHVlNQEBMEJhbGFuY2VPZjxUPgABJG5ld192YWx1ZTUBATBCYWxhbmNlT2Y8VD4ABAScUFNNIGRlYnQgY2VpbGluZyB1cGRhdGVkIGJ5IGdvdmVybmFuY2UuZEFzc2V0Q2VpbGluZ1dlaWdodFVwZGF0ZWQQAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1Zf0EARxQZXJtaWxsAAEkbmV3X3ZhbHVl/QQBHFBlcm1pbGwABQTQUGVyLWFzc2V0IGRlYnQgY2VpbGluZyB3ZWlnaHQgdXBkYXRlZCBieSBnb3Zlcm5hbmNlLkhBc3NldFN0YXR1c1VwZGF0ZWQMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABGHN0YXR1cwEFAUxDaXJjdWl0QnJlYWtlckxldmVsAAYEpFBlci1hc3NldCBjaXJjdWl0IGJyZWFrZXIgc3RhdHVzIHVwZGF0ZWQuSEV4dGVybmFsQXNzZXRBZGRlZAgBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAcExEFuIGV4dGVybmFsIGFzc2V0IHdhcyBhZGRlZCB0byB0aGUgYXBwcm92ZWQgbGlzdC5QRXh0ZXJuYWxBc3NldFJlbW92ZWQIAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAAIBNRBbiBleHRlcm5hbCBhc3NldCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZlZCBsaXN0LihQc21DcmVhdGVkFAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABKGZ1bGxfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAE8ZW1lcmdlbmN5X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABPGZlZV9kZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABIG1heF9kZWJ0NQEBMEJhbGFuY2VPZjxUPgAJBGxBIFBTTSBpbnN0YW5jZSB3YXMgY3JlYXRlZC4oUHNtUmVtb3ZlZAQBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQACgRsQSBQU00gaW5zdGFuY2Ugd2FzIHJlbW92ZWQuQEZ1bGxBZG1pbkNoYW5nZWQMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAEkb2xkX2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4ACwSQQSBQU00ncyBgZnVsbF9hZG1pbmAgd2FzIHJlYXNzaWduZWQuVEVtZXJnZW5jeUFkbWluQ2hhbmdlZAwBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAASRvbGRfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEkbmV3X2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgAMBKRBIFBTTSdzIGBlbWVyZ2VuY3lfYWRtaW5gIHdhcyByZWFzc2lnbmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJEJDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEV2ZW50CARUAARJAAEwIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZzUBATxCYWxhbmNlT2Y8VCwgST4AAATkV2UgaGF2ZSBlbmRlZCBhIHNwZW5kIHBlcmlvZCBhbmQgd2lsbCBub3cgYWxsb2NhdGUgZnVuZHMuHEF3YXJkZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARRhd2FyZDUBATxCYWxhbmNlT2Y8VCwgST4AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGFsbG9jYXRlZC4UQnVybnQEASxidXJudF9mdW5kczUBATxCYWxhbmNlT2Y8VCwgST4AAgSIU29tZSBvZiBvdXIgZnVuZHMgaGF2ZSBiZWVuIGJ1cm50LiBSb2xsb3ZlcgQBQHJvbGxvdmVyX2JhbGFuY2U1AQE8QmFsYW5jZU9mPFQsIEk+AAMELQFTcGVuZGluZyBoYXMgZmluaXNoZWQ7IHRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHJvbGxzIG92ZXIgdW50aWwgbmV4dCBzcGVuZC4cRGVwb3NpdAQBFHZhbHVlNQEBPEJhbGFuY2VPZjxULCBJPgAEBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBkZXBvc2l0ZWQuNFNwZW5kQXBwcm92ZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABQScQSBuZXcgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuPFVwZGF0ZWRJbmFjdGl2ZQgBLHJlYWN0aXZhdGVkNQEBPEJhbGFuY2VPZjxULCBJPgABLGRlYWN0aXZhdGVkNQEBPEJhbGFuY2VPZjxULCBJPgAGBMxUaGUgaW5hY3RpdmUgZnVuZHMgb2YgdGhlIHBhbGxldCBoYXZlIGJlZW4gdXBkYXRlZC5IQXNzZXRTcGVuZEFwcHJvdmVkGAEUaW5kZXg4AShTcGVuZEluZGV4AAEoYXNzZXRfa2luZAkFATBUOjpBc3NldEtpbmQAARhhbW91bnQ1AQFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQ0FAThUOjpCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204AVBCbG9ja051bWJlckZvcjxULCBJPgABJGV4cGlyZV9hdDgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAcEtEEgbmV3IGFzc2V0IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLkBBc3NldFNwZW5kVm9pZGVkBAEUaW5kZXg4AShTcGVuZEluZGV4AAgEdEFuIGFwcHJvdmVkIHNwZW5kIHdhcyB2b2lkZWQuEFBhaWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAJBExBIHBheW1lbnQgaGFwcGVuZWQuNFBheW1lbnRGYWlsZWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC44U3BlbmRQcm9jZXNzZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACwhNAUEgc3BlbmQgd2FzIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlLiBJdCBtaWdodCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5cHBhaWQgb3IgaXQgbWF5IGhhdmUgZXhwaXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSVCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFdmVudAgEVAAESQABFCREZWxlZ2F0ZWQMAAQBMFQ6OkFjY291bnRJZAAABAEwVDo6QWNjb3VudElkAADtAwE0Q2xhc3NPZjxULCBJPgAABB0BQW4gYWNjb3VudCBoYXMgZGVsZWdhdGVkIHRoZWlyIHZvdGUgdG8gYW5vdGhlciBhY2NvdW50LiBcW3dobywgdGFyZ2V0XF0sVW5kZWxlZ2F0ZWQIAAQBMFQ6OkFjY291bnRJZAAA7QMBNENsYXNzT2Y8VCwgST4AAQT0QW4gXFthY2NvdW50XF0gaGFzIGNhbmNlbGxlZCBhIHByZXZpb3VzIGRlbGVnYXRpb24gb3BlcmF0aW9uLhRWb3RlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGUVBQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgACBFBBbiBhY2NvdW50IGhhcyB2b3RlZCxWb3RlUmVtb3ZlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGUVBQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgADBFxBIHZvdGUgaGFzIGJlZW4gcmVtb3ZlZDBWb3RlVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAQERQFUaGUgbG9ja3VwIHBlcmlvZCBvZiBhIGNvbnZpY3Rpb24gdm90ZSBleHBpcmVkLCBhbmQgdGhlIGZ1bmRzIGhhdmUgYmVlbiB1bmxvY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSZCQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXZlbnQIBFQABEkAAUAkU3VibWl0dGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWwpBQFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4ABIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gc3VibWl0dGVkLlREZWNpc2lvbkRlcG9zaXRQbGFjZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4BBJRUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiBwbGFjZWQuXERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAgScVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuOERlcG9zaXRTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAwRsQSBkZXBvc2l0IGhhcyBiZWVuIHNsYXNoZWQuPERlY2lzaW9uU3RhcnRlZBABFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsKQUBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uARR0YWxseZ0JASBUOjpUYWxseQS4VGhlIGN1cnJlbnQgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgQEvEEgcmVmZXJlbmR1bSBoYXMgbW92ZWQgaW50byB0aGUgZGVjaWRpbmcgcGhhc2UuOENvbmZpcm1TdGFydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgUAOENvbmZpcm1BYm9ydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgYAJENvbmZpcm1lZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgcEIQFBIHJlZmVyZW5kdW0gaGFzIGVuZGVkIGl0cyBjb25maXJtYXRpb24gcGhhc2UgYW5kIGlzIHJlYWR5IGZvciBhcHByb3ZhbC4gQXBwcm92ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uCAQNAUEgcmVmZXJlbmR1bSBoYXMgYmVlbiBhcHByb3ZlZCBhbmQgaXRzIHByb3Bvc2FsIGhhcyBiZWVuIHNjaGVkdWxlZC4gUmVqZWN0ZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseZ0JASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4JBKxBIHByb3Bvc2FsIGhhcyBiZWVuIHJlamVjdGVkIGJ5IHJlZmVyZW5kdW0uIFRpbWVkT3V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmdCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCgTYQSByZWZlcmVuZHVtIGhhcyBiZWVuIHRpbWVkIG91dCB3aXRob3V0IGJlaW5nIGRlY2lkZWQuJENhbmNlbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgsEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjYW5jZWxsZWQuGEtpbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5nQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgwEdEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBraWxsZWQuZFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4NBKRUaGUgc3VibWlzc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLixNZXRhZGF0YVNldAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g8ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg4EnE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gc2V0LjxNZXRhZGF0YUNsZWFyZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoPAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4PBKxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcxRUYWxseQgUVm90ZXMBNQEUVG90YWwAAAwBEGF5ZXM1AQEUVm90ZXMAARBuYXlzNQEBFFZvdGVzAAEcc3VwcG9ydDUBARRWb3RlcwAAoQkMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEV2ZW50BARUAAEMPENhbGxXaGl0ZWxpc3RlZAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAABYV2hpdGVsaXN0ZWRDYWxsUmVtb3ZlZAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkV2hpdGVsaXN0ZWRDYWxsRGlzcGF0Y2hlZAgBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAARhyZXN1bHSlCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSlCQQYUmVzdWx0CARUAakJBEUBrQkBCAhPawQAqQkAAAAADEVycgQArQkAAAEAAKkJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZWEIARBQYXlzAACtCQgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAakJAAgBJHBvc3RfaW5mb6kJARBJbmZvAAEUZXJyb3JlCAE0RGlzcGF0Y2hFcnJvcgAAsQkMPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATA4Qm91bnR5UHJvcG9zZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAEUE5ldyBib3VudHkgcHJvcG9zYWwuOEJvdW50eVJlamVjdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABEGJvbmQ1AQE8QmFsYW5jZU9mPFQsIEk+AAEEzEEgYm91bnR5IHByb3Bvc2FsIHdhcyByZWplY3RlZDsgZnVuZHMgd2VyZSBzbGFzaGVkLkhCb3VudHlCZWNhbWVBY3RpdmUEARRpbmRleDgBLEJvdW50eUluZGV4AAIEuEEgYm91bnR5IHByb3Bvc2FsIGlzIGZ1bmRlZCBhbmQgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAADBJRBIGJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuNEJvdW50eUNsYWltZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0NQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAQEjEEgYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuOEJvdW50eUNhbmNlbGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAFBFhBIGJvdW50eSBpcyBjYW5jZWxsZWQuOEJvdW50eUV4dGVuZGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAGBHBBIGJvdW50eSBleHBpcnkgaXMgZXh0ZW5kZWQuOEJvdW50eUFwcHJvdmVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAHBFRBIGJvdW50eSBpcyBhcHByb3ZlZC48Q3VyYXRvclByb3Bvc2VkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAgEdEEgYm91bnR5IGN1cmF0b3IgaXMgcHJvcG9zZWQuREN1cmF0b3JVbmFzc2lnbmVkBAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgACQR8QSBib3VudHkgY3VyYXRvciBpcyB1bmFzc2lnbmVkLjxDdXJhdG9yQWNjZXB0ZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACgR0QSBib3VudHkgY3VyYXRvciBpcyBhY2NlcHRlZC4wRGVwb3NpdFBva2VkEAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAASBwcm9wb3NlcgQBMFQ6OkFjY291bnRJZAABLG9sZF9kZXBvc2l0NQEBPEJhbGFuY2VPZjxULCBJPgABLG5ld19kZXBvc2l0NQEBPEJhbGFuY2VPZjxULCBJPgALBIBBIGJvdW50eSBkZXBvc2l0IGhhcyBiZWVuIHBva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLUJDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEV2ZW50BARUAAEQFEFkZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAARgQSBjaGlsZC1ib3VudHkgaXMgYWRkZWQuHEF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEErEEgY2hpbGQtYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS4cQ2xhaW1lZBABFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAIEpEEgY2hpbGQtYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuIENhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAwRwQSBjaGlsZC1ib3VudHkgaXMgY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkJDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmQJBQEwVDo6QXNzZXRLaW5kAAEQcmF0ZUkFASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmQJBQEwVDo6QXNzZXRLaW5kAAEAQEFzc2V0UmF0ZVVwZGF0ZWQMAShhc3NldF9raW5kCQUBMFQ6OkFzc2V0S2luZAABDG9sZEkFASRGaXhlZFUxMjgAAQxuZXdJBQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0vQkMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATQ0Qm91bnR5Q3JlYXRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAATgQSBuZXcgYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQ2hpbGRCb3VudHlDcmVhdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAQT4QSBuZXcgY2hpbGQtYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQm91bnR5QmVjYW1lQWN0aXZlDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQAAgToVGhlIGN1cmF0b3IgYWNjZXB0ZWQgcm9sZSBhbmQgY2hpbGQtL2JvdW50eSBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABLGJlbmVmaWNpYXJ5DQUBOFQ6OkJlbmVmaWNpYXJ5AAMEtEEgY2hpbGQtL2JvdW50eSB3YXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LlRCb3VudHlQYXlvdXRQcm9jZXNzZWQUARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEoYXNzZXRfa2luZAkFATBUOjpBc3NldEtpbmQAARR2YWx1ZTUBAShUOjpCYWxhbmNlAAEsYmVuZWZpY2lhcnkNBQE4VDo6QmVuZWZpY2lhcnkABAT0UGF5b3V0IHBheW1lbnQgdG8gdGhlIGJlbmVmaWNpYXJ5IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlhCb3VudHlGdW5kaW5nUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAFBKxGdW5kaW5nIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuVEJvdW50eVJlZnVuZFByb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABgSoUmVmdW5kIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuOEJvdW50eUNhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAHBHhBIGNoaWxkLS9ib3VudHkgd2FzIGNhbmNlbGxlZC5EQ3VyYXRvclVuYXNzaWduZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAgEnEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyB1bmFzc2lnbmVkLjxDdXJhdG9yUHJvcG9zZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAJBJRBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgcHJvcG9zZWQuNFBheW1lbnRGYWlsZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLhBQYWlkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgALBJhBIHBheW1lbnQgaGFwcGVuZWQgYW5kIGNhbiBiZSBjaGVja2VkLlBCb3VudHlWYWx1ZUluY3JlYXNlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASRvbGRfdmFsdWU1AQEoVDo6QmFsYW5jZQABJG5ld192YWx1ZTUBAShUOjpCYWxhbmNlAAwEuEEgYm91bnR5J3MgdmFsdWUgd2FzIGluY3JlYXNlZCBieSBpdHMgY3VyYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCQwocGFsbGV0X2RhcBhwYWxsZXQURXZlbnQEBFQAARA4SXNzdWFuY2VNaW50ZWQIATB0b3RhbF9taW50ZWQ1AQEwQmFsYW5jZU9mPFQ+BIRUb3RhbCBhbW91bnQgbWludGVkIGluIHRoaXMgZHJpcC4BOGVsYXBzZWRfbWlsbGlzKAEMdTY0BIhFbGFwc2VkIHRpbWUgKG1zKSBzaW5jZSBsYXN0IGRyaXAuAATcSW5mbGF0aW9uIGRyaXBwZWQgYW5kIGRpc3RyaWJ1dGVkIHRvIGJ1ZGdldCByZWNpcGllbnRzLlxCdWRnZXRBbGxvY2F0aW9uVXBkYXRlZAQBLGFsbG9jYXRpb25zVQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAEeFRoZSBuZXcgYnVkZ2V0IGFsbG9jYXRpb24gbWFwLgEEtEJ1ZGdldCBhbGxvY2F0aW9uIHdhcyB1cGRhdGVkIHZpYSBnb3Zlcm5hbmNlLjhTdGFnaW5nRHJhaW5lZAQBGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4EPEFtb3VudCBkcmFpbmVkLgIEAQFGdW5kcyB3ZXJlIGRyYWluZWQgZnJvbSB0aGUgc3RhZ2luZyBhY2NvdW50IGludG8gdGhlIERBUCBidWZmZXIuKFVuZXhwZWN0ZWQEAMUJAThVbmV4cGVjdGVkS2luZAADBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUJDChwYWxsZXRfZGFwGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCChNaW50RmFpbGVkAAAAOEVsYXBzZWRDbGFtcGVkCAE4YWN0dWFsX2VsYXBzZWQoAQx1NjQAARxjZWlsaW5nKAEMdTY0AAEAAMkJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wOAEMdTMyAAEUY2hpbGQ4AQx1MzIAARxjb21wdXRlzQkBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAEEtFNvbWUgYWNjb3VudCBnb3Qgc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LlRBdXRvTWlncmF0aW9uRmluaXNoZWQAAgSEVGhlIGF1dG8gbWlncmF0aW9uIHRhc2sgZmluaXNoZWQuGEhhbHRlZAQBFGVycm9y0QkBIEVycm9yPFQ+AAME7E1pZ3JhdGlvbiBnb3QgaGFsdGVkIGR1ZSB0byBhbiBlcnJvciBvciBtaXNzLWNvbmZpZ3VyYXRpb24uBHBJbm5lciBldmVudHMgb2YgdGhpcyBwYWxsZXQuzQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXRATWlncmF0aW9uQ29tcHV0ZQABCBhTaWduZWQAAAAQQXV0bwABAADRCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFcnJvcgQEVAABGDxNYXhTaWduZWRMaW1pdHMAAASATWF4IHNpZ25lZCBsaW1pdHMgbm90IHJlc3BlY3RlZC4oS2V5VG9vTG9uZwABHLRBIGtleSB3YXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgbWF4aW11bS4AEQFUaGlzIG1lYW5zIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYWx0ZWQgYXQgdGhlIGN1cnJlbnQgW2BQcm9ncmVzc2BdIGFuZAEBY2FuIGJlIHJlc3VtZWQgd2l0aCBhIGxhcmdlciBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlLiEBUmV0cnlpbmcgd2l0aCB0aGUgc2FtZSBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlIHdpbGwgbm90IHdvcmsuRQFUaGUgdmFsdWUgc2hvdWxkIG9ubHkgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGEgc3RvcmFnZSBtaWdyYXRpb24gZm9yIHRoZSBjdXJyZW50bHmQc3RvcmVkIFtgY3JhdGU6OlByb2dyZXNzOjpMYXN0S2V5YF0uOE5vdEVub3VnaEZ1bmRzAAIElHN1Ym1pdHRlciBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcy4oQmFkV2l0bmVzcwADBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLmRTaWduZWRNaWdyYXRpb25Ob3RBbGxvd2VkAAQEJQFTaWduZWQgbWlncmF0aW9uIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgdGhlIG1heGltdW0gbGltaXQgaXMgbm90IHNldCB5ZXQuMEJhZENoaWxkUm9vdAAFBGBCYWQgY2hpbGQgcm9vdCBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QkMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFdmVudAQEVAABXBxDcmVhdGVkCAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAAABGBBIHBvb2wgaGFzIGJlZW4gY3JlYXRlZC4YQm9uZGVkEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGGJvbmRlZDUBATBCYWxhbmNlT2Y8VD4AARhqb2luZWR1AQEQYm9vbAABBJRBIG1lbWJlciBoYXMgYmVjYW1lIGJvbmRlZCBpbiBhIHBvb2wuHFBhaWRPdXQMARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgACBIxBIHBheW91dCBoYXMgYmVlbiBtYWRlIHRvIGEgbWVtYmVyLiBVbmJvbmRlZBQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgABGHBvaW50czUBATBCYWxhbmNlT2Y8VD4AAQxlcmE4ASBFcmFJbmRleAADLJhBIG1lbWJlciBoYXMgdW5ib25kZWQgZnJvbSB0aGVpciBwb29sLgA5AS0gYGJhbGFuY2VgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJhbGFuY2Ugb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBoYXMgYmVlblUBICByZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQgKHRoZSBhcmd1bWVudCBvZiB0aGUgYHVuYm9uZGAgdHJhbnNhY3Rpb24pIGZyb20gdGhlIGJvbmRlZBwgIHBvb2wuRQEtIGBwb2ludHNgIGlzIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBhcyBhIHJlc3VsdCBvZiBgYmFsYW5jZWAgYmVpbmfAZGlzc29sdmVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5ib25kaW5nIHBvb2wu5C0gYGVyYWAgaXMgdGhlIGVyYSBpbiB3aGljaCB0aGUgYmFsYW5jZSB3aWxsIGJlIHVuYm9uZGVkLlUBSW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZXNlIHZhbHVlcyB3aWxsIG1hdGNoLiBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZU0BbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHVuYm9uZGluZyBwb29sIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSBhbW91bnRkcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkLiRXaXRoZHJhd24QARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAQYnEEgbWVtYmVyIGhhcyB3aXRoZHJhd24gZnJvbSB0aGVpciBwb29sLgAhAVRoZSBnaXZlbiBudW1iZXIgb2YgYHBvaW50c2AgaGF2ZSBiZWVuIGRpc3NvbHZlZCBpbiByZXR1cm4gb2YgYGJhbGFuY2VgLgBZAVNpbWlsYXIgdG8gYFVuYm9uZGVkYCBldmVudCwgaW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZSByYXRpbyBvZiBwb2ludCB0byBiYWxhbmNlKHdpbGwgYmUgMS4kRGVzdHJveWVkBAEccG9vbF9pZDgBGFBvb2xJZAAFBGhBIHBvb2wgaGFzIGJlZW4gZGVzdHJveWVkLjBTdGF0ZUNoYW5nZWQIARxwb29sX2lkOAEYUG9vbElkAAEkbmV3X3N0YXRliQUBJFBvb2xTdGF0ZQAGBHxUaGUgc3RhdGUgb2YgYSBwb29sIGhhcyBjaGFuZ2VkNE1lbWJlclJlbW92ZWQMARxwb29sX2lkOAEYUG9vbElkAAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAFAcmVsZWFzZWRfYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4ABxSYQSBtZW1iZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGEgcG9vbC4AUQFUaGUgcmVtb3ZhbCBjYW4gYmUgdm9sdW50YXJ5ICh3aXRoZHJhd24gYWxsIHVuYm9uZGVkIGZ1bmRzKSBvciBpbnZvbHVudGFyeSAoa2lja2VkKS5JAUFueSBmdW5kcyB0aGF0IGFyZSBzdGlsbCBkZWxlZ2F0ZWQgKGkuZS4gZGFuZ2xpbmcgZGVsZWdhdGlvbikgYXJlIHJlbGVhc2VkIGFuZCBhcmWIcmVwcmVzZW50ZWQgYnkgYHJlbGVhc2VkX2JhbGFuY2VgLjBSb2xlc1VwZGF0ZWQMARByb290qQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABJG5vbWluYXRvcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgAICFUBVGhlIHJvbGVzIG9mIGEgcG9vbCBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUgZ2l2ZW4gbmV3IHJvbGVzLiBOb3RlIHRoYXQgdGhlIGRlcG9zaXRvckRjYW4gbmV2ZXIgY2hhbmdlLixQb29sU2xhc2hlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgAJBA0BVGhlIGFjdGl2ZSBiYWxhbmNlIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlBVbmJvbmRpbmdQb29sU2xhc2hlZAwBHHBvb2xfaWQ4ARhQb29sSWQAAQxlcmE4ASBFcmFJbmRleAABHGJhbGFuY2U1AQEwQmFsYW5jZU9mPFQ+AAoEJQFUaGUgdW5ib25kIHBvb2wgYXQgYGVyYWAgb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuVFBvb2xDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxjdXJyZW50oQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4ACwS0QSBwb29sJ3MgY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQuYFBvb2xNYXhDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvblkFARxQZXJiaWxsAAwE1EEgcG9vbCdzIG1heGltdW0gY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQufFBvb2xDb21taXNzaW9uQ2hhbmdlUmF0ZVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGWpBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+AA0EzEEgcG9vbCdzIGNvbW1pc3Npb24gYGNoYW5nZV9yYXRlYCBoYXMgYmVlbiBjaGFuZ2VkLpBQb29sQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbq0FAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAOBMhQb29sIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLlRQb29sQ29tbWlzc2lvbkNsYWltZWQIARxwb29sX2lkOAEYUG9vbElkAAEoY29tbWlzc2lvbjUBATBCYWxhbmNlT2Y8VD4ADwSEUG9vbCBjb21taXNzaW9uIGhhcyBiZWVuIGNsYWltZWQuZE1pbkJhbGFuY2VEZWZpY2l0QWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAQBMhUb3BwZWQgdXAgZGVmaWNpdCBpbiBmcm96ZW4gRUQgb2YgdGhlIHJld2FyZCBwb29sLmBNaW5CYWxhbmNlRXhjZXNzQWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgARBLxDbGFpbWVkIGV4Y2VzcyBmcm96ZW4gRUQgb2YgYWYgdGhlIHJld2FyZCBwb29sLnBNZW1iZXJDbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEocGVybWlzc2lvbp0FATxDbGFpbVBlcm1pc3Npb24AEgTIQSBwb29sIG1lbWJlcidzIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC48TWV0YWRhdGFVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAATBHhBIHBvb2wncyBtZXRhZGF0YSB3YXMgdXBkYXRlZC5IUG9vbE5vbWluYXRpb25NYWRlCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAUCFkBQSBwb29sJ3Mgbm9taW5hdGluZyBhY2NvdW50IChvciB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudCkgaGFzIG5vbWluYXRlZCBhIHZhbGlkYXRvciBzZXRYb24gYmVoYWxmIG9mIHRoZSBwb29sLlBQb29sTm9taW5hdG9yQ2hpbGxlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFQS4VGhlIHBvb2wgaXMgY2hpbGxlZCBpLmUuIG5vIGxvbmdlciBub21pbmF0aW5nLkxHbG9iYWxQYXJhbXNVcGRhdGVkGAE0bWluX2pvaW5fYm9uZDUBATBCYWxhbmNlT2Y8VD4AATxtaW5fY3JlYXRlX2JvbmQ1AQEwQmFsYW5jZU9mPFQ+AAEkbWF4X3Bvb2xz4AEsT3B0aW9uPHUzMj4AASxtYXhfbWVtYmVyc+ABLE9wdGlvbjx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2zgASxPcHRpb248dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbtkJATxPcHRpb248UGVyYmlsbD4AFgQBAUdsb2JhbCBwYXJhbWV0ZXJzIHJlZ3VsYXRpbmcgbm9taW5hdGlvbiBwb29scyBoYXZlIGJlZW4gdXBkYXRlZC4EWEV2ZW50cyBvZiB0aGlzIHBhbGxldC7ZCQQYT3B0aW9uBARUAVkFAQgQTm9uZQAAABBTb21lBABZBQAAAQAA3QkMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEV2ZW50CARUAARJAAEIIFJlYmFnZ2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJvbSgBIFQ6OlNjb3JlAAEIdG8oASBUOjpTY29yZQAABKRNb3ZlZCBhbiBhY2NvdW50IGZyb20gb25lIGJhZyB0byBhbm90aGVyLjBTY29yZVVwZGF0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAASRuZXdfc2NvcmUoASBUOjpTY29yZQABBNhVcGRhdGVkIHRoZSBzY29yZSBvZiBzb21lIGFjY291bnQgdG8gdGhlIGdpdmVuIGFtb3VudC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXThCQxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFdmVudAQEVAABECREZWxlZ2F0ZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAAR8RnVuZHMgZGVsZWdhdGVkIGJ5IGEgZGVsZWdhdG9yLiBSZWxlYXNlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABBHhGdW5kcyByZWxlYXNlZCB0byBhIGRlbGVnYXRvci4cU2xhc2hlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgACBHxGdW5kcyBzbGFzaGVkIGZyb20gYSBkZWxlZ2F0b3IuSE1pZ3JhdGVkRGVsZWdhdGlvbgwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgADBMRVbmNsYWltZWQgZGVsZWdhdGlvbiBmdW5kcyBtaWdyYXRlZCB0byBkZWxlZ2F0b3IuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQURXZlbnQEBFQAARBUU2Vzc2lvblJlcG9ydFJlY2VpdmVkEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFQYWN0aXZhdGlvbl90aW1lc3RhbXDJBQFIT3B0aW9uPCh1NjQsIHUzMik+AAFcdmFsaWRhdG9yX3BvaW50c19jb3VudHM4AQx1MzIAASBsZWZ0b3ZlcnUBARBib29sAAAEjEEgc2FpZCBzZXNzaW9uIHJlcG9ydCB3YXMgcmVjZWl2ZWQuPE9mZmVuY2VSZWNlaXZlZAgBNHNsYXNoX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAThvZmZlbmNlc19jb3VudDgBDHUzMgABBGxBIG5ldyBvZmZlbmNlIHdhcyByZXBvcnRlZC4gRmVlc1BhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmZWVzNQEBMEJhbGFuY2VPZjxUPgACDAEBRmVlcyB3ZXJlIGNoYXJnZWQgZm9yIGEgdXNlciBvcGVyYXRpb24gKHNldF9rZXlzIG9yIHB1cmdlX2tleXMpLgAZAVRoZSBmZWUgaW5jbHVkZXMgYm90aCBYQ00gZGVsaXZlcnkgZmVlIGFuZCByZWxheSBjaGFpbiBleGVjdXRpb24gY29zdC4oVW5leHBlY3RlZAQA6QkBOFVuZXhwZWN0ZWRLaW5kAAMIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV06QkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAARhwU2Vzc2lvblJlcG9ydEludGVncml0eUZhaWxlZAAAAGxWYWxpZGF0b3JTZXRJbnRlZ3JpdHlGYWlsZWQAAQA4U2Vzc2lvblNraXBwZWQAAgBcU2Vzc2lvbkFscmVhZHlQcm9jZXNzZWQAAwBYVmFsaWRhdG9yU2V0U2VuZEZhaWxlZAAEAExWYWxpZGF0b3JTZXREcm9wcGVkAAUAAO0JDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEV2ZW50BARUAAEURFBoYXNlVHJhbnNpdGlvbmVkCAEQZnJvbeUFASBQaGFzZTxUPgRAdGhlIHNvdXJjZSBwaGFzZQEIdG/lBQEgUGhhc2U8VD4EQFRoZSB0YXJnZXQgcGhhc2UACF0BQSBwaGFzZSB0cmFuc2l0aW9uIGhhcHBlbmVkLiBPbmx5IGNoZWNrcyBtYWpvciBjaGFuZ2VzIGluIHRoZSB2YXJpYW50cywgbm90IG1pbm9yIGlubmVyHHZhbHVlcy54VW5leHBlY3RlZFRhcmdldFNuYXBzaG90RmFpbGVkAAEEgFRhcmdldCBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQudFVuZXhwZWN0ZWRWb3RlclNuYXBzaG90RmFpbGVkAAIEfFZvdGVyIHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZC6QVW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbk91dE9mV2VpZ2h0EAEQZnJvbeUFASBQaGFzZTxUPgABCHRv5QUBIFBoYXNlPFQ+AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAADBPhQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBwcm9jZWVkIGR1ZSB0byBiZWluZyBvdXQgb2Ygd2VpZ2h0LnRVbmV4cGVjdGVkUGhhc2VUcmFuc2l0aW9uSGFsdAgBIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQABAQVAVBoYXNlIHRyYW5zaXRpb24gY291bGQgbm90IGV2ZW4gYmVnaW4gYmVjYXNldSBvZiBiZWluZyBvdXQgb2Ygd2VpZ2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEJFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0FEV2ZW50BARUAAEMSFZlcmlmaWNhdGlvbkZhaWxlZAgAOAEkUGFnZUluZGV4AAD1CQFARmVhc2liaWxpdHlFcnJvcgAAEKBBIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgdGhlIGdpdmVuIHBhZ2UuAFUBTk9URTogaWYgdGhlIGluZGV4IGlzIDAsIHRoZW4gdGhpcyBjb3VsZCBtZWFuIGVpdGhlciB0aGUgZmVhc2liaWxpdHkgb2YgdGhlIGxhc3QgcGFnZQUBd2FzIHdyb25nLCBvciB0aGUgZmluYWwgY2hlY2tzIG9mIGBmaW5hbGl6ZV92ZXJpZmljYXRpb25gIGZhaWxlZC4gVmVyaWZpZWQIADgBJFBhZ2VJbmRleAAAOAEMdTMyAAEIWQFUaGUgZ2l2ZW4gcGFnZSBvZiBhIHNvbHV0aW9uIGhhcyBiZWVuIHZlcmlmaWVkLCB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2Ygd2lubmVycyBiZWluZzBmb3VuZCBpbiBpdC4YUXVldWVkCAANBgE0RWxlY3Rpb25TY29yZQAA/QkBVE9wdGlvbjxFbGVjdGlvblNjb3JlPgACBB0BQSBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBzY29yZSBoYXMgcmVwbGFjZWQgb3VyIGN1cnJlbnQgYmVzdCBzb2x1dGlvbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1CQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyQEZlYXNpYmlsaXR5RXJyb3IAASxAV3JvbmdXaW5uZXJDb3VudAAAAExTbmFwc2hvdFVuYXZhaWxhYmxlAAEALEludmFsaWRWb3RlAAIAMEludmFsaWRWb3RlcgADADRJbnZhbGlkV2lubmVyAAQAMEludmFsaWRTY29yZQAFADBJbnZhbGlkUm91bmQABgAsU2NvcmVUb29Mb3cABwBQRmFpbGVkVG9Cb3VuZFN1cHBvcnQACAAwTnBvc0VsZWN0aW9uBAD5CQFgc3BfbnBvc19lbGVjdGlvbnM6OkVycm9yAAkAKEluY29tcGxldGUACgAA+QkIRHNwX25wb3NfZWxlY3Rpb25zFEVycm9yAAEoWFNvbHV0aW9uV2VpZ2h0T3ZlcmZsb3cAAABYU29sdXRpb25UYXJnZXRPdmVyZmxvdwABAFBTb2x1dGlvbkludmFsaWRJbmRleAACAGBTb2x1dGlvbkludmFsaWRQYWdlSW5kZXgAAwA8QXJpdGhtZXRpY0Vycm9yAAQASEludmFsaWRTdXBwb3J0RWRnZQAFADRUb29NYW55Vm90ZXJzAAYAOEJvdW5kc0V4Y2VlZGVkAAcAOER1cGxpY2F0ZVZvdGVyAAgAPER1cGxpY2F0ZVRhcmdldAAJAAD9CQQYT3B0aW9uBARUAQ0GAQgQTm9uZQAAABBTb21lBAANBgAAAQAAAQoQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEV2ZW50BARUAAEcKFJlZ2lzdGVyZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAANBgE0RWxlY3Rpb25TY29yZQAABFEBVXBjb21pbmcgc3VibWlzc2lvbiBoYXMgYmVlbiByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gYWNjb3VudCwgd2l0aCB0aGUgZ2l2ZW4gc2NvcmUuGFN0b3JlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAADgBJFBhZ2VJbmRleAABBF0BQSBwYWdlIG9mIHNvbHV0aW9uIHNvbHV0aW9uIHdpdGggdGhlIGdpdmVuIGluZGV4IGhhcyBiZWVuIHN0b3JlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQuIFJld2FyZGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAANQEBMEJhbGFuY2VPZjxUPgACBOhUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiByZXdhcmRlZCB3aXRoIHRoZSBnaXZlbiBhbW91bnQuHFNsYXNoZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA1AQEwQmFsYW5jZU9mPFQ+AAME5FRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIHNsYXNoZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxFamVjdGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAEBNRUaGUgZ2l2ZW4gc29sdXRpb24sIGZvciB0aGUgZ2l2ZW4gcm91bmQsIHdhcyBlamVjdGVkLiREaXNjYXJkZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAUElFRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIGRpc2NhcmRlZC4YQmFpbGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAGBHRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUKEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0FEV2ZW50BARUAAFsHEVyYVBhaWQMASRlcmFfaW5kZXg4ASBFcmFJbmRleAABQHZhbGlkYXRvcl9wYXlvdXQ1AQEwQmFsYW5jZU9mPFQ+AAEkcmVtYWluZGVyNQEBMEJhbGFuY2VPZjxUPgAAFHBUaGUgZXJhIHBheW91dCBoYXMgYmVlbiBzZXQuAA0BSW4gbm9uLW1pbnRpbmcgbW9kZSwgYHZhbGlkYXRvcl9wYXlvdXRgIGlzIHRoZSBzdGFrZXIgcmV3YXJkIGJ1ZGdldAUBc25hcHNob3R0ZWQgZnJvbSB0aGUgZ2VuZXJhbCBwb3QsIGFuZCBgcmVtYWluZGVyYCBpcyBhbHdheXMgemVyby4hAUluIGxlZ2FjeSBtaW50aW5nIG1vZGUsIGJvdGggZmllbGRzIHJlZmxlY3QgdGhlIGBFcmFQYXlvdXRgIGNvbXB1dGF0aW9uLiBSZXdhcmRlZAwBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdPkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABBA0BVGhlIG5vbWluYXRvciBoYXMgYmVlbiByZXdhcmRlZCBieSB0aGlzIGFtb3VudCB0byB0aGlzIGRlc3RpbmF0aW9uLhxTbGFzaGVkCAEYc3Rha2VyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgACBB0BQSBzdGFrZXIgKHZhbGlkYXRvciBvciBub21pbmF0b3IpIGhhcyBiZWVuIHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5oT2xkU2xhc2hpbmdSZXBvcnREaXNjYXJkZWQEATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAMIGQFBbiBvbGQgc2xhc2hpbmcgcmVwb3J0IGZyb20gYSBwcmlvciBlcmEgd2FzIGRpc2NhcmRlZCBiZWNhdXNlIGl0IGNvdWxkRG5vdCBiZSBwcm9jZXNzZWQuGEJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAEENBBbiBhY2NvdW50IGhhcyBib25kZWQgdGhpcyBhbW91bnQuIFxbc3Rhc2gsIGFtb3VudFxdAE0BTk9URTogVGhpcyBldmVudCBpcyBvbmx5IGVtaXR0ZWQgd2hlbiBmdW5kcyBhcmUgYm9uZGVkIHZpYSBhIGRpc3BhdGNoYWJsZS4gTm90YWJseSwhAWl0IHdpbGwgbm90IGJlIGVtaXR0ZWQgZm9yIHN0YWtpbmcgcmV3YXJkcyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHN0YWtlLiBVbmJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAFBJBBbiBhY2NvdW50IGhhcyB1bmJvbmRlZCB0aGlzIGFtb3VudC4kV2l0aGRyYXduCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAYIWQFBbiBhY2NvdW50IGhhcyBjYWxsZWQgYHdpdGhkcmF3X3VuYm9uZGVkYCBhbmQgcmVtb3ZlZCB1bmJvbmRpbmcgY2h1bmtzIHdvcnRoIGBCYWxhbmNlYGRmcm9tIHRoZSB1bmxvY2tpbmcgcXVldWUuNFN0YWtlclJlbW92ZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAHCFUBQSBzdWJzZXF1ZW50IGV2ZW50IG9mIGBXaXRoZHJhd25gLCBpbmRpY2F0aW5nIHRoYXQgYHN0YXNoYCB3YXMgZnVsbHkgcmVtb3ZlZCBmcm9tIHRoZRxzeXN0ZW0uGEtpY2tlZAgBJG5vbWluYXRvcgQBMFQ6OkFjY291bnRJZAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAgEtEEgbm9taW5hdG9yIGhhcyBiZWVuIGtpY2tlZCBmcm9tIGEgdmFsaWRhdG9yLhxDaGlsbGVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACQQhAUFuIGFjY291bnQgaGFzIHN0b3BwZWQgcGFydGljaXBhdGluZyBhcyBlaXRoZXIgYSB2YWxpZGF0b3Igb3Igbm9taW5hdG9yLjRQYXlvdXRTdGFydGVkEAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBwYWdlOAEQUGFnZQABEG5leHTgATBPcHRpb248UGFnZT4ACgRZAUEgUGFnZSBvZiBzdGFrZXJzIHJld2FyZHMgYXJlIGdldHRpbmcgcGFpZC4gYG5leHRgIGlzIGBOb25lYCBpZiBhbGwgcGFnZXMgYXJlIGNsYWltZWQuRFZhbGlkYXRvclByZWZzU2V0CAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARRwcmVmc/0GAThWYWxpZGF0b3JQcmVmcwALBJhBIHZhbGlkYXRvciBoYXMgc2V0IHRoZWlyIHByZWZlcmVuY2VzLmhTbmFwc2hvdFZvdGVyc1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADARoVm90ZXJzIHNpemUgbGltaXQgcmVhY2hlZC5sU25hcHNob3RUYXJnZXRzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgANBGxUYXJnZXRzIHNpemUgbGltaXQgcmVhY2hlZC4gRm9yY2VFcmEEARBtb2RlCQoBHEZvcmNpbmcADgBkQ29udHJvbGxlckJhdGNoRGVwcmVjYXRlZAQBIGZhaWx1cmVzOAEMdTMyAA8EpFJlcG9ydCBvZiBhIGNvbnRyb2xsZXIgYmF0Y2ggZGVwcmVjYXRpb24uQEN1cnJlbmN5TWlncmF0ZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABOGZvcmNlX3dpdGhkcmF3NQEBMEJhbGFuY2VPZjxUPgAQCFUBU3Rha2luZyBiYWxhbmNlIG1pZ3JhdGVkIGZyb20gbG9ja3MgdG8gaG9sZHMsIHdpdGggYW55IGJhbGFuY2UgdGhhdCBjb3VsZCBub3QgYmUgaGVsZExpcyBmb3JjZSB3aXRoZHJhd24uWFBhZ2VkRWxlY3Rpb25Qcm9jZWVkZWQIARBwYWdlOAEkUGFnZUluZGV4AAEYcmVzdWx0DQoBQFJlc3VsdDx1MzIsIHUzMj4AESRBAUEgcGFnZSBmcm9tIGEgbXVsdGktcGFnZSBlbGVjdGlvbiB3YXMgZmV0Y2hlZC4gQSBudW1iZXIgb2YgdGhlc2UgYXJlIGZvbGxvd2VkIGJ5RGBTdGFrZXJzRWxlY3RlZGAuAPBgT2soY291bnQpYCBpbmRpY2F0ZXMgdGhlIGdpdmUgbnVtYmVyIG9mIHN0YXNoZXMgd2VyZSBhZGRlZC4FAWBFcnIoaW5kZXgpYCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Rhc2hlcyBhZnRlciBpbmRleCB3ZXJlIGRyb3BwZWQuQQFgRXJyKDApYCBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBoYXBwZW5lZCBidXQgbm8gc3Rhc2hlcyB3ZXJlIGRyb3BwZWQgbm9yIGFkZGVkLgBRAVRoZSBlcnJvciBpbmRpY2F0ZXMgdGhhdCBhIG51bWJlciBvZiB2YWxpZGF0b3JzIHdlcmUgZHJvcHBlZCBkdWUgdG8gZXhjZXNzIHNpemUsIGJ1dIx0aGUgb3ZlcmFsbCBlbGVjdGlvbiB3aWxsIGNvbnRpbnVlLjxPZmZlbmNlUmVwb3J0ZWQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb25ZBQEcUGVyYmlsbAASCE0BQW4gb2ZmZW5jZSBmb3IgdGhlIGdpdmVuIHZhbGlkYXRvciwgZm9yIHRoZSBnaXZlbiBwZXJjZW50YWdlIG9mIHRoZWlyIHN0YWtlLCBhdCB0aGVsZ2l2ZW4gZXJhIGFzIGJlZW4gcmVwb3J0ZWQuNFNsYXNoQ29tcHV0ZWQQASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASBvZmZlbmRlcgQBMFQ6OkFjY291bnRJZAABEHBhZ2U4AQx1MzIAEwQxAUFuIG9mZmVuY2UgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzbGFzaCBoYXMgYmVlbiBjb21wdXRlZC44U2xhc2hDYW5jZWxsZWQIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAAUBJhBbiB1bmFwcGxpZWQgc2xhc2ggaGFzIGJlZW4gY2FuY2VsbGVkLjhTZXNzaW9uUm90YXRlZAwBQHN0YXJ0aW5nX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAShhY3RpdmVfZXJhOAEgRXJhSW5kZXgAASxwbGFubmVkX2VyYTgBIEVyYUluZGV4ABUQiFNlc3Npb24gY2hhbmdlIGhhcyBiZWVuIHRyaWdnZXJlZC4AWQFJZiBwbGFubmVkX2VyYSBpcyBvbmUgZXJhIGFoZWFkIG9mIGFjdGl2ZV9lcmEsIGl0IGltcGxpZXMgbmV3IGVyYSBpcyBiZWluZyBwbGFubmVkIGFuZFBlbGVjdGlvbiBpcyBvbmdvaW5nLihVbmV4cGVjdGVkBAARCgFEVW5leHBlY3RlZEtpbmQ8VD4AFggNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS40T2ZmZW5jZVRvb09sZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvblkFARxQZXJiaWxsABcEPQFBbiBvZmZlbmNlIHdhcyByZXBvcnRlZCB0aGF0IHdhcyB0b28gb2xkIHRvIGJlIHByb2Nlc3NlZCwgYW5kIHRodXMgd2FzIGRyb3BwZWQuJEVyYVBydW5lZAQBFGluZGV4OAEgRXJhSW5kZXgAGASsQW4gb2xkIGVyYSB3aXRoIHRoZSBnaXZlbiBpbmRleCB3YXMgcHJ1bmVkLlhWYWxpZGF0b3JJbmNlbnRpdmVQYWlkEAEMZXJhOAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN0+QYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+ABkE9FRoZSB2YWxpZGF0b3IgaGFzIGJlZW4gcGFpZCB0aGVpciBzZWxmLXN0YWtlIGluY2VudGl2ZSBib251cy5sVmFsaWRhdG9ySW5jZW50aXZlQ29uZmlnU2V0DAFIb3B0aW11bV9zZWxmX3N0YWtlNQEBMEJhbGFuY2VPZjxUPgABTGhhcmRfY2FwX3NlbGZfc3Rha2U1AQEwQmFsYW5jZU9mPFQ+AAEwc2xvcGVfZmFjdG9yWQUBHFBlcmJpbGwAGgT4VmFsaWRhdG9yIHNlbGYtc3Rha2UgaW5jZW50aXZlIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCghQcGFsbGV0X3N0YWtpbmdfYXN5bmMcRm9yY2luZwABEChOb3RGb3JjaW5nAAAAIEZvcmNlTmV3AAEAJEZvcmNlTm9uZQACACxGb3JjZUFsd2F5cwADAAANCgQYUmVzdWx0CARUATgERQE4AQgIT2sEADgAAAAADEVycgQAOAAAAQAAEQoQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQEBFQAARhgRXJhRHVyYXRpb25Cb3VuZEV4Y2VlZGVkAAAAaFVua25vd25WYWxpZGF0b3JBY3RpdmF0aW9uAAEAYFBhZ2VkRWxlY3Rpb25PdXRPZldlaWdodAwBEHBhZ2U4ASRQYWdlSW5kZXgAASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAIAME1pc3NpbmdQYXllZQgBDGVyYTgBIEVyYUluZGV4AAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAwCAVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0TWlzbWF0Y2gEAQxlcmE4ASBFcmFJbmRleAAEAIBWYWxpZGF0b3JJbmNlbnRpdmVUcmFuc2ZlckZhaWxlZAQBDGVyYTgBIEVyYUluZGV4AAUAABUKDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxhwYWxsZXQURXZlbnQEBFQAATBMQ3JlZGl0VHJlZXNSZWNlaXZlZAgBFGNvdW50OAEMdTMyAAEYc3RvcmVkOAEMdTMyAAAEmENyZWRpdCB0cmVlcyB3ZXJlIHJlY2VpdmVkIGFuZCBzdG9yZWQuSENyZWRpdFRyZWVzTWlzc2luZwgBNGZyb21fc2VxdWVuY2UoATBUcmVlU2VxdWVuY2UAASx0b19zZXF1ZW5jZSgBMFRyZWVTZXF1ZW5jZQABGEkBVHJlZXMgb2YgdGhlIGxpdmUgc3RyZWFtIG5ldmVyIGFycml2ZWQuIFRoZSBnYW1lIHBhbGxldCdzIGBDcmVkaXRUcmVlc1NlbnRgIGV2ZW50cy0BcmVzb2x2ZSB0aGVzZSBzZXF1ZW5jZXMgdG8gdGhlIHRyZWUgYmxvY2tzIHRoZXkgd2VyZSBkZWxpdmVyZWQgdW5kZXIsIGFuZCBh9GByZXBsYXlfY3JlZGl0X3RyZWVzYCBuYW1pbmcgdGhvc2UgYmxvY2tzIHJlY292ZXJzIHRoZSB0cmVlcy4ASQFBIHNlcXVlbmNlIHRoYXQgcmVzb2x2ZXMgdG8gbm8gYmxvY2sgaXMgb25lIHRoZSBnYW1lIHBhbGxldCBzcGVudCBvbiBhIHRyZWUgaXQgaGFk6GFscmVhZHkgZHJvcHBlZCB0aGUgcm9vdCBvZiwgYW5kIG5vIHJlcGxheSBicmluZ3MgaXQgYmFjay5IQ3JlZGl0VHJlZUNvbmZsaWN0BAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sAAgg9AUEgdHJlZSB3YXMgcmVjZWl2ZWQgZm9yIGEgYmxvY2sgdGhhdCBhbHJlYWR5IGhvbGRzIGEgZGlmZmVyZW50IHJvb3QuIFRoZSBzdG9yZWTgcm9vdCBpcyBrZXB0LCBzbyB0aGUgcHJvb2ZzIGJ1aWx0IGFnYWluc3QgaXQgc3RheSB2YWxpZC40Q3JlZGl0Q2xhaW1lZBgBFGJsb2NrOAE8Q3JlZGl0VHJlZUJsb2NrAAEQbGVhZhkKAUhOZnRDbGFpbUNyZWRpdExlYWYAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAMITQFBIGNyZWRpdCBgYmxvY2tgIGNvbW1pdHRlZCB3YXMgY2xhaW1lZCwgbWludGluZyBgaW5zdGFuY2VgIG9mIGBjb2xsZWN0aW9uYCdzIGBpdGVtYGR0byB0aGUgcHVyc2Uga2V5IGBvd25lcmAuQFRyZWVGdWxseUNsYWltZWQEARRibG9jazgBPENyZWRpdFRyZWVCbG9jawAECFEBRXZlcnkgY3JlZGl0IGNvbW1pdHRlZCB0byBieSBgYmxvY2tgJ3MgdHJlZSBoYXMgYmVlbiBjbGFpbWVkLiBUaGlzIGNoYWluIHJlbW92ZWQgdGhlwHRyZWUgYW5kIHF1ZXVlZCBpdHMgZGVsZXRpb24gZm9yIHRoZSBnYW1lIGNoYWluLkxDb2xsZWN0aW9uTWludGVyU2V0CAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJHNlbGVjdGlvbmkHAVRPcHRpb248SXRlbVNlbGVjdGlvbj4ABQhNAWBjb2xsZWN0aW9uYCdzIG93bmVyIHJlZ2lzdGVyZWQgaXQgZm9yIGNsYWltcyB3aXRoIGBzZWxlY3Rpb25gLCBvciB3aXRoZHJldyBpdCB3aXRoHGBOb25lYC5IQ3JlZGl0VHJlZXNFeHBpcmVkBAEUY291bnQ4AQx1MzIABhRRAWBjb3VudGAgdHJlZXMgb3V0bGl2ZWQgW2BDb25maWc6OlRyZWVUdGxgXSwgYW5kIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtIHdpdGggY3JlZGl0c0UBbGVmdCB1bmNsYWltZWQuIE5vdGhpbmcgY2FuIG1pbnQgdGhvc2UgY3JlZGl0cyBhZ2Fpbiwgb24gdGhpcyBjaGFpbiBvciBhbnkgb3RoZXIuAE0BVGhlIGJsb2NrcyBhcmUgbm90IG5hbWVkIGhlcmUuIFRoZSBzYW1lIHRyZWVzIHRyYXZlbCBpbiBhIGRlbGV0aW9uIG1lc3NhZ2UsIGFuZCB0aGXsW2BFdmVudDo6VHJlZURlbGV0aW9uc1NlbnRgXSBjYXJyeWluZyB0aGVtIG5hbWVzIGV2ZXJ5IG9uZS48Q3JlZGl0VHJlZVN0YWxlBAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sABwhFAUEgdHJlZSBhcnJpdmVkIGZvciBgYmxvY2tgIHBhc3QgaXRzIGRlYWRsaW5lLCBzbyB0aGlzIGNoYWluIGRpZCBub3Qgc3RvcmUgaXQuIEl0c+hjcmVkaXRzIHdlcmUgYWxyZWFkeSB1bm1pbnRhYmxlIHdoZW4gdGhlIGRlbGl2ZXJ5IGFycml2ZWQuRFRyZWVEZWxldGlvbnNTZW50BAEYYmxvY2tzHQoB6EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZT4ACAQtAVRyZWUgYmxvY2tzIHdob3NlIGRlbGV0aW9uIHdhcyBoYW5kZWQgdG8gdGhlIFhDTSByb3V0ZXIgZm9yIHRoZSBnYW1lIGNoYWluLlhUcmVlRGVsZXRpb25TZW5kRmFpbGVkAAkITQFEZWxpdmVyeSBvZiB0aGUgZGVsZXRpb25zIHRvIHRoZSBnYW1lIGNoYWluIGZhaWxlZC4gVGhlIGJsb2NrcyBzdGF5IHF1ZXVlZCwgYW5kIHRoZaBuZXh0IG9mZmNoYWluIHdvcmtlciBjeWNsZSByZXRyaWVzIHRoZW0uUFRyZWVEZWxldGlvbnNEcm9wcGVkBAEYYmxvY2tzHQoB6EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZT4ACgxJAVtgUGVuZGluZ1RyZWVEZWxldGlvbnNgXSBpcyBmdWxsLCBzbyB0aGlzIGNoYWluIGRyb3BwZWQgdGhlIGRlbGV0aW9ucyBvZiBgYmxvY2tzYC5BAURlbGl2ZXJ5IGhhcyBmYWlsZWQgZm9yIFtgQ29uZmlnOjpNYXhRdWV1ZWRUcmVlRGVsZXRpb25zYF0gdHJlZXMuIFRoZSBnYW1lIGNoYWlutHJlbW92ZXMgaXRzIG93biBjb3BpZXMgd2hlbiBpdHMgVFRMIHJ1bnMgb3V0LkxDcmVkaXRUcmVlT3ZlcnNpemVkBAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sACwzkQSB0cmVlIGFycml2ZWQgZm9yIGBibG9ja2AgY29tbWl0dGluZyB0byBtb3JlIGxlYXZlcyB0aGFuKQFbYENvbmZpZzo6TWF4Q3JlZGl0c1BlclRyZWVgXSwgc28gdGhpcyBjaGFpbiBkaWQgbm90IHN0b3JlIGl0LiBOb25lIG9mIGl0cyUBY3JlZGl0cyBjYW4gYmUgY2xhaW1lZCBoZXJlIHVudGlsIHRoYXQgYm91bmQgY292ZXJzIHRoZSBnYW1lIGNoYWluJ3Mgb3duLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkKDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hOZnRDbGFpbUNyZWRpdExlYWYAAAQACAEgW3U4OyAzMl0AAB0KDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AACEKDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyGHBhbGxldBRFdmVudAQEVAABGFBSaW5nUm9vdHNJbml0aWFsaXplZAgBFGNvdW50OAEMdTMyBIROdW1iZXIgb2YgcmluZyByb290cyBpbml0aWFsaXplZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEsFNlcXVlbmNlIG51bWJlciBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYmF0Y2guAATMUmluZyByb290cyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbm90aWZpZXIuQFJpbmdSb290c1VwZGF0ZWQIARRjb3VudDgBDHUzMgRwTnVtYmVyIG9mIHVwZGF0ZXMgcHJvY2Vzc2VkLgEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgR0U2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBiYXRjaC4BBJhSaW5nIHJvb3QgdXBkYXRlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLlhTdWJzY3JpcHRpb25UZXJtaW5hdGVkBAFEbm90aWZpZXJfbm90aWZpZWR1AQEQYm9vbATQV2hldGhlciB0aGUgdW5zdWJzY3JpYmUgWENNIHdhcyBzdWNjZXNzZnVsbHkgcXVldWVkLgIEhFN1YnNjcmlwdGlvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkLlBNaXNzaW5nUmluZ3NEZXRlY3RlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGNvdW50OAEMdTMyBLhOdW1iZXIgb2YgbmV3bHkgZGV0ZWN0ZWQgbWlzc2luZyByaW5nIGluZGljZXMuAwTgTmV3IG1pc3NpbmcgcmluZyByb290cyBkZXRlY3RlZCBkdXJpbmcgYmF0Y2ggcHJvY2Vzc2luZy5EUmVwbGF5UmVxdWVzdFNlbnQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuATRpbmRpY2VzX2NvdW50OAEMdTMyBKBOdW1iZXIgb2YgbWlzc2luZyBpbmRpY2VzIGluIHRoaXMgY2h1bmsuBAS0UmVwbGF5IHJlcXVlc3Qgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gbm90aWZpZXIuYERlbGV0ZWRJbmRpY2VzQXRDYXBhY2l0eQQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4FBA0BTWlzc2luZyByaW5nIHNjYW4gc2tpcHBlZCBiZWNhdXNlIGRlbGV0ZWRfaW5kaWNlcyByZWFjaGVkIGNhcGFjaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCUKDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEV2ZW50BARUAAEUPEFsaWFzQWNjb3VudFNldAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQEcFRoZSBhY2NvdW50IHRoYXQgd2FzIGxpbmtlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuAASkQW4gYWxpYXMgYWNjb3VudCBoYXMgYmVlbiBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHhUaGUgYWNjb3VudCB0aGF0IHdhcyB1bmxpbmtlZC4BBIhBbiBhbGlhcyBhY2NvdW50IGhhcyBiZWVuIHJlbW92ZWQuRFN0YWxlQWxpYXNSZW1vdmVkDAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgIEiEEgc3RhbGUgYWxpYXMgbWFwcGluZyB3YXMgcmVtb3ZlZC5IU3RhbGVBbGlhc1JlcG9ydGVkEAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAScVGhlIGFjY291bnQgd2hvc2UgbWFwcGluZyB3YXMgcmVwb3J0ZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgEwcmVtb3ZhYmxlX2F0KAEMdTY0BMRUaGUgc2Vjb25kIGZyb20gd2hpY2ggdGhlIG1hcHBpbmcgY2FuIGJlIHJlbW92ZWQuAwhRAUEgbWFwcGluZyB3YXMgcmVwb3J0ZWQgc3RhbGUsIHdoaWNoIHN0YXJ0cyBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdLiBJdCBpcyBzdGlsbNRzdG9yZWQsIGFuZCBhIGNhbGwgZnJvbSBgcmVtb3ZhYmxlX2F0YCBvbiByZW1vdmVzIGl0LlxTdGFsZUFsaWFzUmVwb3J0Q2xlYXJlZAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQElFRoZSBhY2NvdW50IHdob3NlIHJlcG9ydCB3YXMgZHJvcHBlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuBAhVAUEgbWFwcGluZyByZXBvcnRlZCBzdGFsZSB2ZXJpZmllcyBhZ2Fpbiwgc28gaXRzIHJlcG9ydCB3YXMgZHJvcHBlZC4gQSBsYXRlciBzdGFsZW5lc3Okc3RhcnRzIFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0gb3Zlci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpCgxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEV2ZW50BARUAAEMLFBnYXNDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHRhcmdldAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBASEBPDxUIGFzIENvbmZpZz46OkZ1bmdpYmxlcyBhcyBmdW5naWJsZXM6Okluc3BlY3Q8VDo6QWNjb3VudElkPj46OgpCYWxhbmNlAAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAABHRQR0FTIHdhcyBjbGFpbWVkIGJ5IGEgcGVyc29uLkBQZ2FzQXNzZXRDcmVhdGVkAAEEbFRoZSBQR0FTIGFzc2V0IHdhcyBjcmVhdGVkLlxQZ2FzQ2xhaW1SZWNvcmRzQ2xlYW5lZAgBJGRheV9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAIEnE9sZCBQR0FTIGNsYWltIHJlY29yZHMgd2VyZSBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0KDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFdmVudAQEVAABDDxDb250cmFjdEVtaXR0ZWQMASBjb250cmFjdHEHARBIMTYwBJBUaGUgY29udHJhY3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4BEGRhdGEYARxWZWM8dTg+CDUBRGF0YSBzdXBwbGllZCBieSB0aGUgY29udHJhY3QuIE1ldGFkYXRhIGdlbmVyYXRlZCBkdXJpbmcgY29udHJhY3QgY29tcGlsYXRpb25caXMgbmVlZGVkIHRvIGRlY29kZSBpdC4BGHRvcGljc8ABJFZlYzxIMjU2PgikQSBsaXN0IG9mIHRvcGljcyB1c2VkIHRvIGluZGV4IHRoZSBldmVudC7sTnVtYmVyIG9mIHRvcGljcyBpcyBjYXBwZWQgYnkgW2BsaW1pdHM6Ok5VTV9FVkVOVF9UT1BJQ1NgXS4ABJxBIGN1c3RvbSBldmVudCBlbWl0dGVkIGJ5IHRoZSBjb250cmFjdC4wSW5zdGFudGlhdGVkCAEgZGVwbG95ZXJxBwEQSDE2MAABIGNvbnRyYWN0cQcBEEgxNjAAAQTcQ29udHJhY3QgZGVwbG95ZWQgYnkgZGVwbG95ZXIgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLkhFdGhFeHRyaW5zaWNSZXZlcnQEAThkaXNwYXRjaF9lcnJvcmUIATREaXNwYXRjaEVycm9yAAIYtEVtaXR0ZWQgd2hlbiBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbiByZXZlcnRzLgApAUV0aGVyZXVtIHRyYW5zYWN0aW9ucyBhbHdheXMgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IGF0IHRoZSBleHRyaW5zaWMgbGV2ZWws2GFzIGV2ZW4gcmV2ZXJ0ZWQgY2FsbHMgbXVzdCBzdG9yZSB0aGVpciBgUmVjZWlwdEluZm9gLiUBVG8gZGlzdGluZ3Vpc2ggcmV2ZXJ0ZWQgY2FsbHMgZnJvbSBzdWNjZXNzZnVsIG9uZXMsIHRoaXMgZXZlbnQgaXMgZW1pdHRlZIRmb3IgZmFpbGVkIEV0aGVyZXVtIHRyYW5zYWN0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCgxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEV2ZW50BARUAAEUME5hbWVSZXNlcnZlZBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZASYVGhlIGNhbmRpZGF0ZSB3aG9zZSBuYW1lIHdhcyByZXNlcnZlZC4BIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBKxUaGUgYXR0ZXN0ZXIgd2hvIHBlcmZvcm1lZCB0aGUgcmVzZXJ2YXRpb24uAShsaXRlX2xhYmVswQcBJEJhc2VMYWJlbAS4VGhlIGxpdGUtcGVyc29uIGxhYmVsIChgPGRucy1zdGVtPi48ZGlnaXRzPmApLgEgY2hhdF9rZXnFBwEcQ2hhdEtleQTkVGhlIEVDREggY2hhdCBrZXkgc3RvcmVkIGFsb25nc2lkZSB0aGUgbGl0ZS1wZXJzb24gbGFiZWwuAUxyZXNlcnZlZF9iYXNlX2xhYmVsyQcBRE9wdGlvbjxCYXNlTGFiZWw+BAUBVGhlIG9wdGlvbmFsIGJhc2UgbGFiZWwgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBmdWxsLXBlcnNvbiBjbGFpbWluZy4ABPBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlc2VydmVkIGZvciBhIGNhbmRpZGF0ZSBieSBhbiBhdHRlc3Rlci44TmFtZVJlZ2lzdGVyZWQQARRhbGlhcwgBFEFsaWFzBJhUaGUgYWxpYXMgZGVyaXZlZCBmcm9tIHRoZSByaW5nIHByb29mLgEcYWNjb3VudAQBMFQ6OkFjY291bnRJZASwVGhlIGFjY291bnQgdGhhdCBpbml0aWF0ZWQgdGhlIHJlZ2lzdHJhdGlvbi4BFGxhYmVswQcBJEJhc2VMYWJlbASEVGhlIHJlZ2lzdGVyZWQgZnVsbC1wZXJzb24gbGFiZWwuARBsaW5rzQcBEExpbmsE5EhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIGxpdGUtcGVyc29uIGxhYmVsLgEE0EEgdXNlcm5hbWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCBieSBhIHZlcmlmaWVkIHBlcnNvbi50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4BFGNvdW50OAEMdTMyBIRUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhZGRlZC4CBMxBdHRlc3RhdGlvbiBhbGxvd2FuY2Ugd2FzIGluY3JlYXNlZCBmb3IgYW4gYWNjb3VudC54QWxsQXR0ZXN0YXRpb25BbGxvd2FuY2VDbGVhcmVkBAEgYXR0ZXN0ZXIEATBUOjpBY2NvdW50SWQEVFRoZSBhdHRlc3RlciBhY2NvdW50LgME8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGF0dGVzdGVyLlBEaXNwYXRjaGVyQWRkcmVzc1NldAQBHGFkZHJlc3NxBwEQSDE2MARkVGhlIG5ldyBjb250cmFjdCBhZGRyZXNzLgQE1FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIHdhcyBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQoMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEEMFVzYWdlQ2xlYW5lZAQBGGVudGl0edUHAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5CgwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHSJCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZKkBAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHSJCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQoMVHBhbGxldF9wZ2FzX2FsbG93YW5jZRhwYWxsZXQURXZlbnQEBFQAAQQsUEdBU0ZlZVBhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlNQEBMEJhbGFuY2VPZjxUPgAACEUBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgIGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gUEdBUyBhbmQgYnVybmVkLiBNaXJyb3Jz6FtgcGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50OjpUcmFuc2FjdGlvbkZlZVBhaWRgXS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCggwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAEUKAAACzABJCggwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbmABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWVNCgFEQ293PCdzdGF0aWMsIHN0cj4AAE0KBAxDb3cEBFQBUQoABABRCgAAAFEKAAAFAgBVCggwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb251AQEQYm9vbAAAWQoMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2NrEQEBGFdlaWdodAABJG1heF9ibG9jaxEBARhXZWlnaHQAASRwZXJfY2xhc3NdCgGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AABdCgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAWEKAAwBGG5vcm1hbGEKAQRUAAEsb3BlcmF0aW9uYWxhCgEEVAABJG1hbmRhdG9yeWEKAQRUAABhCgwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljEQEBGFdlaWdodAABNG1heF9leHRyaW5zaWMNAQE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWwNAQE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZA0BAThPcHRpb248V2VpZ2h0PgAAZQoMMGZyYW1lX3N5c3RlbRhsaW1pdHMsQmxvY2tMZW5ndGgAAAgBDG1heGkKAVRQZXJEaXNwYXRjaENsYXNzPHUzMj4AATxtYXhfaGVhZGVyX3NpemXgASxPcHRpb248dTMyPgAAaQoMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAABtCggoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAAcQoIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZU0KAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZU0KAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc3UKARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAHUKBAxDb3cEBFQBeQoABAB5CgAAAHkKAAACfQoAfQoAAAQIdQI4AIEKDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldIUKEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGJCgAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzmQoBOFZlYzxFeHRyaW5zaWM+AACJChAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQG9BBRFeHRyYQGNCgAEABgAAACNCgh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBkQoABACRCgEEUwAAkQoAAAQwlQoFCAkIDQgRCBUIGQghCCUIKQgtCDUIAJUKAAAEFBDdB+kH7Qf5BwCZCgAAAokKAJ0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOABLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodBEBARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOABLE9wdGlvbjx1MzI+AAIAAKEKAAACpQoApQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50IEFuY2VzdG9yBARIATwADAE4dXNlZF9iYW5kd2lkdGipCgE0VXNlZEJhbmR3aWR0aAABOHBhcmFfaGVhZF9oYXNoNQUBJE9wdGlvbjxIPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbL0KAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAqQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50NFVzZWRCYW5kd2lkdGgAAAwBNHVtcF9tc2dfY291bnQ4AQx1MzIAATx1bXBfdG90YWxfYnl0ZXM4AQx1MzIAATRocm1wX291dGdvaW5nrQoBjEJUcmVlTWFwPFBhcmFJZCwgSHJtcENoYW5uZWxVcGRhdGU+AACtCgQgQlRyZWVNYXAIBEsBnARWAbEKAAQAtQoAAACxCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnRESHJtcENoYW5uZWxVcGRhdGUAAAgBJG1zZ19jb3VudDgBDHUzMgABLHRvdGFsX2J5dGVzOAEMdTMyAAC1CgAAArkKALkKAAAECJyxCgC9CgQYT3B0aW9uBARUAcEKAQgQTm9uZQAAABBTb21lBADBCgAAAQAAwQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAADFCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBPAAMATh1c2VkX2JhbmR3aWR0aKkKATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmvgAYBPcHRpb248cmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbL0KAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAyQoEGE9wdGlvbgQEVAHNCgEIEE5vbmUAAAAQU29tZQQAzQoAAAEAAM0KDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5SFVwZ3JhZGVSZXN0cmljdGlvbgABBBxQcmVzZW50AAAAANEKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90WE1lc3NhZ2luZ1N0YXRlU25hcHNob3QAABABMGRtcV9tcWNfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAGccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR51QoBjFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAFAaW5ncmVzc19jaGFubmVsc9kKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAE8ZWdyZXNzX2NoYW5uZWxz2QoBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AANUKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90jFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAAIATxyZW1haW5pbmdfY291bnQ4AQx1MzIAAThyZW1haW5pbmdfc2l6ZTgBDHUzMgAA2QoAAALdCgDdCgAABAic4QoA4QoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlMQWJyaWRnZWRIcm1wQ2hhbm5lbAAAGAEwbWF4X2NhcGFjaXR5OAEMdTMyAAE4bWF4X3RvdGFsX3NpemU4AQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplOAEMdTMyAAEkbXNnX2NvdW50OAEMdTMyAAEodG90YWxfc2l6ZTgBDHUzMgABIG1xY19oZWFkNQUBME9wdGlvbjxIYXNoPgAA5QoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlkQWJyaWRnZWRIb3N0Q29uZmlndXJhdGlvbgAAKAE0bWF4X2NvZGVfc2l6ZTgBDHUzMgABSG1heF9oZWFkX2RhdGFfc2l6ZTgBDHUzMgABWG1heF91cHdhcmRfcXVldWVfY291bnQ4AQx1MzIAAVRtYXhfdXB3YXJkX3F1ZXVlX3NpemU4AQx1MzIAAVxtYXhfdXB3YXJkX21lc3NhZ2Vfc2l6ZTgBDHUzMgABkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAWx2YWxpZGF0aW9uX3VwZ3JhZGVfY29vbGRvd244ASxCbG9ja051bWJlcgABYHZhbGlkYXRpb25fdXBncmFkZV9kZWxheTgBLEJsb2NrTnVtYmVyAAFQYXN5bmNfYmFja2luZ19wYXJhbXPpCgFIQXN5bmNCYWNraW5nUGFyYW1zAADpChBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OTRhc3luY19iYWNraW5nSEFzeW5jQmFja2luZ1BhcmFtcwAACAFMbWF4X2NhbmRpZGF0ZV9kZXB0aDgBDHUzMgABUGFsbG93ZWRfYW5jZXN0cnlfbGVuOAEMdTMyAADtCgiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudERNZXNzYWdlUXVldWVDaGFpbgAABAA8ASRSZWxheUhhc2gAAPEKBCBCVHJlZU1hcAgESwGcBFYB7QoABAD1CgAAAPUKAAAC+QoA+QoAAAQInO0KAP0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudEBJbmJvdW5kTWVzc2FnZUlkAAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAASxyZXZlcnNlX2lkeDgBDHUzMgAAAQsAAAIFCwAFCwhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzTE91dGJvdW5kSHJtcE1lc3NhZ2UECElkAZwACAEkcmVjaXBpZW50nAEISWQAARBkYXRhGAFMYWxsb2M6OnZlYzo6VmVjPHU4PgAACQsIfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0sUG9WTWVzc2FnZXMAABgBaHJlbGF5X3N0b3JhZ2Vfcm9vdF9vcl9oYXNoPAFEcmVsYXlfY2hhaW46Okhhc2gAATRjb3JlX3NlbGVjdG9yDAEIdTgAATBidW5kbGVfaW5kZXgMAQh1OAABNHVtcF9tc2dfY291bnQ4AQx1MzIAAUxocm1wX291dGJvdW5kX2NvdW50OAEMdTMyAAFgaHJtcF9vdXRib3VuZF9yZWNpcGllbnRzDQsBLFZlYzxQYXJhSWQ+AAANCwAAApwAEQsMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEYTE92ZXJsYXBwaW5nVXBncmFkZXMAAAQZAUF0dGVtcHQgdG8gdXBncmFkZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdoaWxlIGV4aXN0aW5nIHVwZ3JhZGUgcGVuZGluZy5QUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQRNAVBvbGthZG90IGN1cnJlbnRseSBwcm9oaWJpdHMgdGhpcyBwYXJhY2hhaW4gZnJvbSB1cGdyYWRpbmcgaXRzIHZhbGlkYXRpb24gZnVuY3Rpb24uGFRvb0JpZwACCEUBVGhlIHN1cHBsaWVkIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGNvbXBpbGVkIGludG8gYSBibG9iIGxhcmdlciB0aGFuIFBvbGthZG90IGlzPHdpbGxpbmcgdG8gcnVuLmhWYWxpZGF0aW9uRGF0YU5vdEF2YWlsYWJsZQADBB0BVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSB2YWxpZGF0aW9uIGRhdGEgZGlkIG5vdCBydW4gdGhpcyBibG9jay50SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUABAQpAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGRpZCBub3QgcnVuIHRoaXMgYmxvY2suME5vdFNjaGVkdWxlZAAFBNhObyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVwZ3JhZGUgaXMgY3VycmVudGx5IHNjaGVkdWxlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQsIPHBhbGxldF9wcmVpbWFnZUBPbGRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBBBxCYWxhbmNlATUBAQgsVW5yZXF1ZXN0ZWQIARxkZXBvc2l0AQYBUChBY2NvdW50SWQsIEJhbGFuY2UpAAEMbGVuOAEMdTMyAAAAJFJlcXVlc3RlZAwBHGRlcG9zaXQZCwFwT3B0aW9uPChBY2NvdW50SWQsIEJhbGFuY2UpPgABFGNvdW50OAEMdTMyAAEMbGVu4AEsT3B0aW9uPHUzMj4AAQAAGQsEGE9wdGlvbgQEVAEBBgEIEE5vbmUAAAAQU29tZQQAAQYAAAEAAB0LCDxwYWxsZXRfcHJlaW1hZ2U0UmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQYVGlja2V0ASELAQgsVW5yZXF1ZXN0ZWQIARh0aWNrZXQlCwFMKEFjY291bnRJZCwgVGlja2V0KQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMATBtYXliZV90aWNrZXQpCwFsT3B0aW9uPChBY2NvdW50SWQsIFRpY2tldCk+AAEUY291bnQ4AQx1MzIAASRtYXliZV9sZW7gASxPcHRpb248dTMyPgABAAAhCxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAA1AQEoRjo6QmFsYW5jZQAAJQsAAAQIBCELACkLBBhPcHRpb24EBFQBJQsBCBBOb25lAAAAEFNvbWUEACULAAABAAAtCwAABAg8OAAxCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AADULDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0FEVycm9yBARUAAEgGFRvb0JpZwAABKBQcmVpbWFnZSBpcyB0b28gbGFyZ2UgdG8gc3RvcmUgb24tY2hhaW4uMEFscmVhZHlOb3RlZAABBKRQcmVpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIG5vdGVkIG9uLWNoYWluLjROb3RBdXRob3JpemVkAAIEyFRoZSB1c2VyIGlzIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uIE5vdE5vdGVkAAME/FRoZSBwcmVpbWFnZSBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBpdCBoYXMgbm90IHlldCBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQABAQJAUEgcHJlaW1hZ2UgbWF5IG5vdCBiZSByZW1vdmVkIHdoZW4gdGhlcmUgYXJlIG91dHN0YW5kaW5nIHJlcXVlc3RzLjBOb3RSZXF1ZXN0ZWQABQQtAVRoZSBwcmVpbWFnZSByZXF1ZXN0IGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIG5vIG91dHN0YW5kaW5nIHJlcXVlc3RzIGV4aXN0LhxUb29NYW55AAYEVQFNb3JlIHRoYW4gYE1BWF9IQVNIX1VQR1JBREVfQlVMS19DT1VOVGAgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIGF0IG9uY2UuGFRvb0ZldwAHBORUb28gZmV3IGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCAoaS5lLiB6ZXJvKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE9CwRTAAAEAEULARhWZWM8VD4AAD0LBBhPcHRpb24EBFQBQQsBCBBOb25lAAAAEFNvbWUEAEELAAABAABBCwhAcGFsbGV0X3NjaGVkdWxlciRTY2hlZHVsZWQUEE5hbWUBCBBDYWxsASkFLEJsb2NrTnVtYmVyATg0UGFsbGV0c09yaWdpbgHxAyRBY2NvdW50SWQBBAAUASBtYXliZV9pZLEHATBPcHRpb248TmFtZT4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwpBQEQQ2FsbAABOG1heWJlX3BlcmlvZGljyAGUT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXI+PgABGG9yaWdpbvEDATRQYWxsZXRzT3JpZ2luAABFCwAAAj0LAEkLCEBwYWxsZXRfc2NoZWR1bGVyLFJldHJ5Q29uZmlnBBhQZXJpb2QBOAAMATR0b3RhbF9yZXRyaWVzDAEIdTgAASRyZW1haW5pbmcMAQh1OAABGHBlcmlvZDgBGFBlcmlvZAAATQsMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEVycm9yBARUAAEUQEZhaWxlZFRvU2NoZWR1bGUAAARkRmFpbGVkIHRvIHNjaGVkdWxlIGEgY2FsbCBOb3RGb3VuZAABBHxDYW5ub3QgZmluZCB0aGUgc2NoZWR1bGVkIGNhbGwuXFRhcmdldEJsb2NrTnVtYmVySW5QYXN0AAIEpEdpdmVuIHRhcmdldCBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuSFJlc2NoZWR1bGVOb0NoYW5nZQADBPBSZXNjaGVkdWxlIGZhaWxlZCBiZWNhdXNlIGl0IGRvZXMgbm90IGNoYW5nZSBzY2hlZHVsZWQgdGltZS4UTmFtZWQABATQQXR0ZW1wdCB0byB1c2UgYSBub24tbmFtZWQgZnVuY3Rpb24gb24gYSBuYW1lZCB0YXNrLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5RCwxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEVycm9yBARUAAEEHE9uZ29pbmcAAAToVGhlIG9wZXJhdGlvbiBjYW5ub3QgY29tcGxldGUgc2luY2Ugc29tZSBNQk1zIGFyZSBvbmdvaW5nLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5VCwhEcGFsbGV0X21pZ3JhdGlvbnMwTWJtSXNPbmdvaW5nAAEMDFllcwAAAAhObwABABRTdHVjawACAABZCwQYT3B0aW9uBARUAV0LAQgQTm9uZQAAABBTb21lBABdCwAAAQAAXQsIRHBhbGxldF9taWdyYXRpb25zLE1ibVByb2dyZXNzAAAQAURjdXJyZW50X21pZ3JhdGlvbjgBDHUzMgABQHRvdGFsX21pZ3JhdGlvbnM4AQx1MzIAAVxjdXJyZW50X21pZ3JhdGlvbl9zdGVwczgBDHUzMgABbGN1cnJlbnRfbWlncmF0aW9uX21heF9zdGVwc+ABLE9wdGlvbjx1MzI+AABhCwhEcGFsbGV0X21pZ3JhdGlvbnMkTWJtU3RhdHVzAAAMARxvbmdvaW5nVQsBME1ibUlzT25nb2luZwABIHByb2dyZXNzWQsBTE9wdGlvbjxNYm1Qcm9ncmVzcz4AASBwcmVmaXhlczQBMFZlYzxWZWM8dTg+PgAAZQsMbGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeBhwYWxsZXQURXJyb3IEBFQAAQQsRW1wdHlTdWZmaXgAAASEQSBuZXR3b3JrIHN1ZmZpeCBjYW5ub3QgYmUgZW1wdHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkLDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBbQsEUwAABAB1CwEYVmVjPFQ+AABtCww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlATUBAAwBCGlkdQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50NQEBHEJhbGFuY2UAARxyZWFzb25zcQsBHFJlYXNvbnMAAHELDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAAdQsAAAJtCwB5CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAX0LBFMAAAQAgQsBGFZlYzxUPgAAfQsMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBdQIcQmFsYW5jZQE1AQAIAQhpZHUCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudDUBARxCYWxhbmNlAACBCwAAAn0LAIULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBiQsEUwAABACNCwEYVmVjPFQ+AACJCxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAc0IHEJhbGFuY2UBNQEACAEIaWTNCAEISWQAARhhbW91bnQ1AQEcQmFsYW5jZQAAjQsAAAKJCwCRCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZULBFMAAAQApQsBGFZlYzxUPgAAlQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAGZCxxCYWxhbmNlATUBAAgBCGlkmQsBCElkAAEYYW1vdW50NQEBHEJhbGFuY2UAAJkLCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQg8Tm9taW5hdGlvblBvb2xzBACdCwGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgBQABhSZXZpdmUEAKELAWxwYWxsZXRfcmV2aXZlOjpGcmVlemVSZWFzb24AZAAAnQsMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UG9vbE1pbkJhbGFuY2UAAAAAoQsMNHBhbGxldF9yZXZpdmUYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQR2FzTWluQmFsYW5jZQAAAAClCwAAApULAKkLDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tCwhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAALELEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAG1CwAEALULAQRUAAC1Cxg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBNQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50NQEBBEIAALkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQEEUwAABAC9CwEYVmVjPFQ+AAC9CwAAAoUBAMELCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAADFCww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0LskLEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuzQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAA0QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVCwRTAAAEANkLARhWZWM8VD4AANULDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlATUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXQ1AQEcQmFsYW5jZQAA2QsAAALVCwDdCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAB1AgEcW3U4OyA4XQAA4QsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu5QsAAALpCwDpCwAABAgEtQEA7QsAAALxCwDxCwAABAg49QsA9QsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAWQUBHFBlcmJpbGwAAPkLAAAECP0LGAD9Cwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAAEMDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuBQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5AQRTAAAEAAkMARhWZWM8VD4AAAkMAAACuQEADQwISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAEQwAAAQIDQw4ABUMDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAGQwBLEJUcmVlU2V0PFQ+AAAZDAQgQlRyZWVTZXQEBFQBnAAEAA0LAAAAHQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEhDARTAAAEAC0MARhWZWM8VD4AACEMCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABwBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlJQwBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0dQEBEGJvb2wAASxmaXJzdF9pbmRleO0DAQx1MTYAAShsYXN0X2luZGV47QMBDHUxNgABFGZsYWdzKQwBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAEwcXVldWVkX2J5dGVzOAEMdTMyAAAlDAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAAApDAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAALQwAAAIhDAAxDAAABAic7QMANQwMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA5DAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAAA9DAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BDAwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyxQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllckUMAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5SQwBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luxQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZldQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZVEMAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAARQwEGE9wdGlvbgQEVAHFAQEIEE5vbmUAAAAQU29tZQQAxQEAAAEAAEkMBBhPcHRpb24EBFQBTQwBCBBOb25lAAAAEFNvbWUEAE0MAAABAABNDAAABAgMDABRDAgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBAB9AgEwdjM6OlJlc3BvbnNlAAMACFY0BADpAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAA1AwEwdjU6OlJlc3BvbnNlAAUAAFUMAAAECDjFAQBZDAAABAwoEQE4AF0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBYQwEUwAABABlDAEYVmVjPFQ+AABhDAAABAjFATgAZQwAAAJhDABpDAwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABhAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAG0MAAAEDDgEvQMAcQwMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudDUBARB1MTI4AAEUb3duZXLFAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLFAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnN1DAHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAdQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF5DARTAAAEAH0MARhWZWM8VD4AAHkMAAAECBA1AQB9DAAAAnkMAIEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQwEUwAABACJDAEYVmVjPFQ+AACFDAAABAg1AcUBAIkMAAAChQwAjQwIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AZEMDE1BWAGVDAAIASBhbGlhc2Vyc5kMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXSRDAEYVGlja2V0AACRDBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAA1AQEoRjo6QmFsYW5jZQAAlQwMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAJkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQwEUwAABAChDAEYVmVjPFQ+AACdDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb27FAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAAoQwAAAKdDAClDAwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yqQwBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkMDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAK0MCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3JJBQEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkdQEBEGJvb2wAALEMCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BzQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnO1DAGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAALUMBBhPcHRpb24EBFQBuQwBCBBOb25lAAAAEFNvbWUEALkMAAABAAC5DAhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgHNAwAIARBwcmV2zQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0zQMBNE1lc3NhZ2VPcmlnaW4AAL0MAAAECM0DOADBDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwxQwBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAxQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADJDAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0MDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEVycm9yBARUAAE0aFVuc3VwcG9ydGVkTG9jYXRpb25WZXJzaW9uAAAEiENvbnZlcnQgdmVyc2lvbmVkIGxvY2F0aW9uIGZhaWx1cmVESW52YWxpZEFzc2V0T3duZXIAAQQZAUNoZWNrIGxvY2F0aW9uIGZhaWx1cmUsIHNob3VsZCBzdGFydCBmcm9tIHRoZSBkaXNwYXRjaCBvcmlnaW4gYXMgb3duZXIsU2VuZEZhaWx1cmUAAgRgU2VuZCB4Y20gbWVzc2FnZSBmYWlsdXJlKEZlZXNOb3RNZXQAAwRoV2l0aGRyYXcgZmVlIGFzc2V0IGZhaWx1cmVgTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAQEmENvbnZlcnQgdG8gcmVhbmNob3JlZCBsb2NhdGlvbiBmYWlsdXJlGEhhbHRlZAAFBGBNZXNzYWdlIGV4cG9ydCBpcyBoYWx0ZWQsVW5yZWFjaGFibGUABghdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC5AVW5zdXBwb3J0ZWRBc3NldAAHBLhUaGUgYXNzZXQgcHJvdmlkZWQgZm9yIHRoZSB0aXAgaXMgdW5zdXBwb3J0ZWQuNFdpdGhkcmF3RXJyb3IACARkVW5hYmxlIHRvIHdpdGhkcmF3IGFzc2V0LjhJbnZhbGlkQWNjb3VudAAJBLRBY2NvdW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhdGlvbi4kU3dhcEVycm9yAAoEyFByb3ZpZGVkIHRpcCBhc3NldCBjb3VsZCBub3QgYmUgc3dhcHBlZCBmb3IgZXRoZXIuJEJ1cm5FcnJvcgALBGhFdGhlciBjb3VsZCBub3QgYmUgYnVybmVkLjRUaXBBbW91bnRaZXJvAAwEZFRoZSB0aXAgcHJvdmlkZWQgaXMgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0QwMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QwAAAQIBAgA2QwIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlATUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbjUEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdDUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxz3QwBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AADdDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAB5AQEYVmVjPFQ+AADhDAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuUMAAAECOkMNQEA6QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtDARTAAAEAPEMARhWZWM8VD4AAO0MCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBQQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGVBBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAA8QwAAALtDAD1DAAABAj5DDUBAPkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB/QwEUwAABAABDQEYVmVjPFQ+AAD9DAgwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAE8LEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaDwBEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAAAQ0AAAL9DAAFDQwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuCQ0AAAQMBDUBdQEADQ0MOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFcnJvcgQEVAABFCxOb3RBc3NpZ25lZAAABIxUaGUgaW5kZXggd2FzIG5vdCBhbHJlYWR5IGFzc2lnbmVkLiBOb3RPd25lcgABBKRUaGUgaW5kZXggaXMgYXNzaWduZWQgdG8gYW5vdGhlciBhY2NvdW50LhRJblVzZQACBHBUaGUgaW5kZXggd2FzIG5vdCBhdmFpbGFibGUuLE5vdFRyYW5zZmVyAAMEyFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFjY291bnRzIGFyZSBpZGVudGljYWwuJFBlcm1hbmVudAAEBNBUaGUgaW5kZXggaXMgcGVybWFuZW50IGFuZCBtYXkgbm90IGJlIGZyZWVkL2NoYW5nZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhENDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQE1ASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQE1AQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseTUBARxCYWxhbmNlAAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlNQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVzFQ0BLEFzc2V0U3RhdHVzAAAVDQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAABkNAAAECDgEAB0NDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQE1AThEZXBvc2l0QmFsYW5jZQE1ARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2U1AQEcQmFsYW5jZQABGHN0YXR1cyENATRBY2NvdW50U3RhdHVzAAEYcmVhc29uJQ0BqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAACENDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAACUNDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQE1ASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEADUBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAAA1AQEcQmFsYW5jZQAEAAApDQAABAw4BAQALQ0MNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBNQE4RGVwb3NpdEJhbGFuY2UBNQEACAEYYW1vdW50NQEBHEJhbGFuY2UAARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAAxDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQE1ATRCb3VuZGVkU3RyaW5nATUNABQBHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lNQ0BNEJvdW5kZWRTdHJpbmcAARhzeW1ib2w1DQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAANQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA5DQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBBUBVGhlIGFzc2V0IElEIGlzIG5vdCB0aGUgb25lIHJlcXVpcmVkIGJ5IFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0uXEFzc2V0SWRBbGxvY2F0aW9uRmFpbGVkABUIOQFUaGUgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBjYW5ub3QgYWxsb2NhdGUgdGhlIGFzc2V0IElEOiB0aGUgaWQgc3BhY2UgaXMoZXhoYXVzdGVkLjxDb250YWluc0ZyZWV6ZXMAFgRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFwRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAGASAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQ0EGE9wdGlvbgQEVAERDQEIEE5vbmUAAAAQU29tZQQAEQ0AAAEAAEENBBhPcHRpb24EBFQBMQ0BCBBOb25lAAAAEFNvbWUEADENAAABAABFDQw4cGFsbGV0X3VuaXF1ZXMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlATUBACgBFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAE0dG90YWxfZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZ3UBARBib29sAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAASRpc19mcm96ZW51AQEQYm9vbAAASQ0AAAQMBDg4AE0NDDhwYWxsZXRfdW5pcXVlcxR0eXBlcyxJdGVtRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBNQEAEAEUb3duZXIEASRBY2NvdW50SWQAASBhcHByb3ZlZKkBAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plbnUBARBib29sAAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQAAUQ0MOHBhbGxldF91bmlxdWVzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhZQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbnUBARBib29sAABVDQw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMwSXRlbU1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQE1ASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFlBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVudQEBEGJvb2wAAFkNAAAEDDjg3QMAXQ0AAAQIeDUBAGENAAAECDUBqQEAZQ0MOHBhbGxldF91bmlxdWVzGHBhbGxldBRFcnJvcggEVAAESQABWDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS4oV3JvbmdPd25lcgADBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABARsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uFEluVXNlAAUEdFRoZSBpdGVtIElEIGlzIGFscmVhZHkgdGFrZW4uGEZyb3plbgAGBIRUaGUgaXRlbSBvciBjb2xsZWN0aW9uIGlzIGZyb3plbi40V3JvbmdEZWxlZ2F0ZQAHBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKE5vRGVsZWdhdGUACAR4VGhlcmUgaXMgbm8gZGVsZWdhdGUgYXBwcm92ZWQuKFVuYXBwcm92ZWQACQTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAoEJQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIG9mIHRoZSBjb2xsZWN0aW9uIGlzIGFjY2VwdGFibGUuGExvY2tlZAALBExUaGUgaXRlbSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQADARsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuTE1heFN1cHBseUFscmVhZHlTZXQADQSQVGhlIG1heCBzdXBwbHkgaGFzIGFscmVhZHkgYmVlbiBzZXQuRE1heFN1cHBseVRvb1NtYWxsAA4EQQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRvIHRoZSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAPBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLihOb3RGb3JTYWxlABAEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAEQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LihOb01ldGFkYXRhABIEVE5vIG1ldGFkYXRhIGlzIGZvdW5kLjRXcm9uZ01ldGFkYXRhABMEoFdyb25nIG1ldGFkYXRhIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC5EQXR0cmlidXRlTm90Rm91bmQAFARoQW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZC44V3JvbmdBdHRyaWJ1dGUAFQSkV3JvbmcgYXR0cmlidXRlIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuaQ0MLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQE1AQAYARRvd25lcgQBJEFjY291bnRJZAABNG93bmVyX2RlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEwaXRlbV9jb25maWdzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgAAbQ0MLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAXENAAQADAE4Q29sbGVjdGlvblJvbGUAAHENDCxwYWxsZXRfbmZ0cxR0eXBlczhDb2xsZWN0aW9uUm9sZQABDBhJc3N1ZXIAAQAcRnJlZXplcgACABRBZG1pbgAEAAB1DQwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURldGFpbHMMJEFjY291bnRJZAEEHERlcG9zaXQBeQ0kQXBwcm92YWxzAX0NAAwBFG93bmVyBAEkQWNjb3VudElkAAEkYXBwcm92YWxzfQ0BJEFwcHJvdmFscwABHGRlcG9zaXR5DQEcRGVwb3NpdAAAeQ0MLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQE1ASRBY2NvdW50SWQBBAAIARxhY2NvdW50BAEkQWNjb3VudElkAAEYYW1vdW50NQEBOERlcG9zaXRCYWxhbmNlAAB9DQxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWAeAEUwAABACBDQE4QlRyZWVNYXA8SywgVj4AAIENBCBCVHJlZU1hcAgESwEEBFYB4AAEAIUNAAAAhQ0AAAKJDQCJDQAABAgE4ACNDQwscGFsbGV0X25mdHMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCBxEZXBvc2l0ATUBLFN0cmluZ0xpbWl0AAAIARxkZXBvc2l0NQEBHERlcG9zaXQAARBkYXRhWQEBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAAkQ0MLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAGVDSxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdJUNARxEZXBvc2l0AAEQZGF0YVkBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAJUNDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQE1ASRBY2NvdW50SWQBBAAIARxhY2NvdW50qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50NQEBOERlcG9zaXRCYWxhbmNlAACZDQAABBA44JkEeACdDQAABAhZAaENAKENDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQE1ASRBY2NvdW50SWQBBAAIARxhY2NvdW50qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50NQEBOERlcG9zaXRCYWxhbmNlAAClDQxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAKkNASxCVHJlZVNldDxUPgAAqQ0EIEJUcmVlU2V0BARUAQQABAB5AQAAAK0NDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkAThYSXRlbVByaWNlV2l0aERpcmVjdGlvbgGxBCBEZWFkbGluZQE4ABABSGRlc2lyZWRfY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEUcHJpY2WtBAF4T3B0aW9uPEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAAsQ0MLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAbUNAAQAKAE0UGFsbGV0RmVhdHVyZQAAtQ0MLHBhbGxldF9uZnRzFHR5cGVzNFBhbGxldEZlYXR1cmUAARAcVHJhZGluZwABAChBdHRyaWJ1dGVzAAIAJEFwcHJvdmFscwAEABRTd2FwcwAIAAC5DQwscGFsbGV0X25mdHMYcGFsbGV0FEVycm9yCARUAARJAAG0ME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLjxBcHByb3ZhbEV4cGlyZWQAAwQ5AVRoZSBhcHByb3ZhbCBoYWQgYSBkZWFkbGluZSB0aGF0IGV4cGlyZWQsIHNvIHRoZSBhcHByb3ZhbCBpc24ndCB2YWxpZCBhbnltb3JlLihXcm9uZ093bmVyAAQE6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAFBBUBVGhlIHdpdG5lc3MgZGF0YSBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhaW4uRENvbGxlY3Rpb25JZEluVXNlAAYEfENvbGxlY3Rpb24gSUQgaXMgYWxyZWFkeSB0YWtlbi5QSXRlbXNOb25UcmFuc2ZlcmFibGUABwTISXRlbXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcmUgbm9uLXRyYW5zZmVyYWJsZS4sTm90RGVsZWdhdGUACAScVGhlIHByb3ZpZGVkIGFjY291bnQgaXMgbm90IGEgZGVsZWdhdGUuNFdyb25nRGVsZWdhdGUACQT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAALBBkBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBhY2NlcHRhbmNlIG9mIHRoZSBjb2xsZWN0aW9uLihJdGVtTG9ja2VkAAwEmFRoZSBpdGVtIGlzIGxvY2tlZCAobm9uLXRyYW5zZmVyYWJsZSkuUExvY2tlZEl0ZW1BdHRyaWJ1dGVzAA0EdEl0ZW0ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuaExvY2tlZENvbGxlY3Rpb25BdHRyaWJ1dGVzAA4EjENvbGxlY3Rpb24ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuSExvY2tlZEl0ZW1NZXRhZGF0YQAPBGhJdGVtJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLmBMb2NrZWRDb2xsZWN0aW9uTWV0YWRhdGEAEASAQ29sbGVjdGlvbidzIG1ldGFkYXRhIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAARBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC48TWF4U3VwcGx5TG9ja2VkABIEuFRoZSBtYXggc3VwcGx5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5ETWF4U3VwcGx5VG9vU21hbGwAEwRJAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0AFAR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4sVW5rbm93blN3YXAAFQRMU3dhcCBkb2Vzbid0IGV4aXN0LkBNZXRhZGF0YU5vdEZvdW5kABYEjFRoZSBnaXZlbiBpdGVtIGhhcyBubyBtZXRhZGF0YSBzZXQuREF0dHJpYnV0ZU5vdEZvdW5kABcEmFRoZSBwcm92aWRlZCBhdHRyaWJ1dGUgY2FuJ3QgYmUgZm91bmQuKE5vdEZvclNhbGUAGARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwAZBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuUFJlYWNoZWRBcHByb3ZhbExpbWl0ABoEoFRoZSBpdGVtIGhhcyByZWFjaGVkIGl0cyBhcHByb3ZhbCBsaW1pdC48RGVhZGxpbmVFeHBpcmVkABsEhFRoZSBkZWFkbGluZSBoYXMgYWxyZWFkeSBleHBpcmVkLjRXcm9uZ0R1cmF0aW9uABwEMQFUaGUgZHVyYXRpb24gcHJvdmlkZWQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTWF4RGVhZGxpbmVEdXJhdGlvbmAuOE1ldGhvZERpc2FibGVkAB0EqFRoZSBtZXRob2QgaXMgZGlzYWJsZWQgYnkgc3lzdGVtIHNldHRpbmdzLjBXcm9uZ1NldHRpbmcAHgSIVGhlIHByb3ZpZGVkIHNldHRpbmcgY2FuJ3QgYmUgc2V0LlhJbmNvbnNpc3RlbnRJdGVtQ29uZmlnAB8EFQFJdGVtJ3MgY29uZmlnIGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS4gTm9Db25maWcAIATIQ29uZmlnIGZvciBhIGNvbGxlY3Rpb24gb3IgYW4gaXRlbSBjYW4ndCBiZSBmb3VuZC48Um9sZXNOb3RDbGVhcmVkACEEcFNvbWUgcm9sZXMgd2VyZSBub3QgY2xlYXJlZC44TWludE5vdFN0YXJ0ZWQAIgRkTWludCBoYXMgbm90IHN0YXJ0ZWQgeWV0LiRNaW50RW5kZWQAIwRcTWludCBoYXMgYWxyZWFkeSBlbmRlZC44QWxyZWFkeUNsYWltZWQAJATAVGhlIHByb3ZpZGVkIEl0ZW0gd2FzIGFscmVhZHkgdXNlZCBmb3IgY2xhaW1pbmcuNEluY29ycmVjdERhdGEAJQR8VGhlIHByb3ZpZGVkIGRhdGEgaXMgaW5jb3JyZWN0LixXcm9uZ09yaWdpbgAmBKxUaGUgZXh0cmluc2ljIHdhcyBzZW50IGJ5IHRoZSB3cm9uZyBvcmlnaW4uOFdyb25nU2lnbmF0dXJlACcEkFRoZSBwcm92aWRlZCBzaWduYXR1cmUgaXMgaW5jb3JyZWN0LkRJbmNvcnJlY3RNZXRhZGF0YQAoBKBUaGUgcHJvdmlkZWQgbWV0YWRhdGEgbWlnaHQgYmUgdG9vIGxvbmcuZE1heEF0dHJpYnV0ZXNMaW1pdFJlYWNoZWQAKQScQ2FuJ3Qgc2V0IG1vcmUgYXR0cmlidXRlcyBwZXIgb25lIGNhbGwuOFdyb25nTmFtZXNwYWNlACoE0FRoZSBwcm92aWRlZCBuYW1lc3BhY2UgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoaXMgY2FsbC5IQ29sbGVjdGlvbk5vdEVtcHR5ACsEjENhbid0IGRlbGV0ZSBub24tZW1wdHkgY29sbGVjdGlvbnMuPFdpdG5lc3NSZXF1aXJlZAAsBJBUaGUgd2l0bmVzcyBkYXRhIHNob3VsZCBiZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuvQ0AAAQIGQIEAMENAAAEDBkCBAQAxQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQE0Qm91bmRlZFN0cmluZwHJDQAUARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZckNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9syQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAAMkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAzQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFkKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFAQVAVRoZSBhc3NldCBJRCBpcyBub3QgdGhlIG9uZSByZXF1aXJlZCBieSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdLlxBc3NldElkQWxsb2NhdGlvbkZhaWxlZAAVCDkBVGhlIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gY2Fubm90IGFsbG9jYXRlIHRoZSBhc3NldCBJRDogdGhlIGlkIHNwYWNlIGlzKGV4aGF1c3RlZC48Q29udGFpbnNGcmVlemVzABYETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABcERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABgEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtENBBhPcHRpb24EBFQBxQ0BCBBOb25lAAAAEFNvbWUEAMUNAAABAADVDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQE1ATRCb3VuZGVkU3RyaW5nAdkNABQBHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARBuYW1l2Q0BNEJvdW5kZWRTdHJpbmcAARhzeW1ib2zZDQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAA2Q0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADdDQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBBUBVGhlIGFzc2V0IElEIGlzIG5vdCB0aGUgb25lIHJlcXVpcmVkIGJ5IFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0uXEFzc2V0SWRBbGxvY2F0aW9uRmFpbGVkABUIOQFUaGUgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBjYW5ub3QgYWxsb2NhdGUgdGhlIGFzc2V0IElEOiB0aGUgaWQgc3BhY2UgaXMoZXhoYXVzdGVkLjxDb250YWluc0ZyZWV6ZXMAFgRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFwRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAGASAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4Q0EGE9wdGlvbgQEVAHVDQEIEE5vbmUAAAAQU29tZQQA1Q0AAAEAAOUNDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAADpDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lu0NBBhSZXN1bHQIBFQB8Q0ERQHpDQEICE9rBADxDQAAAAAMRXJyBADpDQAAAQAA8Q0AAAQINQE1AQD1DQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFcnJvcggEVAAESQABBDhUb29NYW55RnJlZXplcwAABOhOdW1iZXIgb2YgZnJlZXplcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCBgTWF4RnJlZXplc2AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkNDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lv0NDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0OENvbGxlY3Rpb25JbmZvDCRBY2NvdW50SWQBBBxCYWxhbmNlATUBUFN0b3JhZ2VDb25zaWRlcmF0aW9uAAAgARRvd25lcgQBJEFjY291bnRJZAABNHBlbmRpbmdfb3duZXKpAQFET3B0aW9uPEFjY291bnRJZD4AATxuZXh0X2l0ZW1faW5kZXg4ASRJdGVtSW5kZXgAAShpdGVtX2NvdW50OAEMdTMyAAE4bWV0YWRhdGFfY291bnQ4AQx1MzIAAUhjb2xsZWN0aW9uX2RlcG9zaXQ1AQEcQmFsYW5jZQABNG93bmVyX2RlcG9zaXQ1AQEcQmFsYW5jZQABNGNvbnNpZGVyYXRpb24BDgFQU3RvcmFnZUNvbnNpZGVyYXRpb24AAAEOFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEADUBAShGOjpCYWxhbmNlAAAFDgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldDhJdGVtRGVmaW5pdGlvbgQcQmFsYW5jZQE1AQAUARhzdXBwbHk4AQx1MzIAASxsaXZlX3N1cHBseTgBDHUzMgABOG1ldGFkYXRhX2NvdW50OAEMdTMyAAEcZGVwb3NpdDUBARxCYWxhbmNlAAE8dHJhbnNmZXJhYmlsaXR56QQBPFRyYW5zZmVyYWJpbGl0eQAACQ4AAAQION0DAA0ODFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0NE1ldGFkYXRhRW50cnkIFFZhbHVlAVkBHEJhbGFuY2UBNQEACAEUdmFsdWVZAQEUVmFsdWUAARxkZXBvc2l0NQEBHEJhbGFuY2UAABEOAAAEDDg43QMAFQ4AAAQIKN0DABkODFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0IExvY2tJbmZvAAAIARxyZXRyaWVzDAEIdTgAARR1bnRpbCgBDHU2NAAAHQ4MVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQURXJyb3IEBFQAAVBIVG9vTWFueUNvbGxlY3Rpb25zAAAEtFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIgc3BhY2UgaXMgZXhoYXVzdGVkLkRVbmtub3duQ29sbGVjdGlvbgABBHhUaGUgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE9E9ubHkgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBvd25lciBtYXkgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi5YQWxyZWFkeUNvbGxlY3Rpb25Pd25lcgADBBEBVGhlIGN1cnJlbnQgY29sbGVjdGlvbiBvd25lciBjYW5ub3QgYmUgbm9taW5hdGVkIGFzIGl0cyByZXBsYWNlbWVudC5kTm90UGVuZGluZ0NvbGxlY3Rpb25Pd25lcgAEBC0BVGhlIHNpZ25lciBpcyBub3QgdGhlIGFjY291bnQgY3VycmVudGx5IG5vbWluYXRlZCB0byBjbGFpbSB0aGlzIGNvbGxlY3Rpb24uMFRvb01hbnlJdGVtcwAFBMRUaGUgcGVyLWNvbGxlY3Rpb24gaXRlbSBpbmRleCBzcGFjZSBpcyBleGhhdXN0ZWQuLFVua25vd25JdGVtAAYEtFRoZSByZXF1ZXN0ZWQgaXRlbSBkZWZpbml0aW9uIGRvZXMgbm90IGV4aXN0LiRJdGVtSW5Vc2UABwS4QW4gaXRlbSB3aXRoIGxpdmUgaW5zdGFuY2VzIGNhbm5vdCBiZSBkZWxldGVkLlBJdGVtTWV0YWRhdGFOb3RFbXB0eQAIBNxJdGVtIG1ldGFkYXRhIG11c3QgYmUgcmVtb3ZlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIGl0ZW0uXENvbGxlY3Rpb25JdGVtc05vdEVtcHR5AAkEAQFJdGVtIGRlZmluaXRpb25zIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbGxlY3Rpb24uaENvbGxlY3Rpb25NZXRhZGF0YU5vdEVtcHR5AAoEDQFDb2xsZWN0aW9uIG1ldGFkYXRhIG11c3QgYmUgcmVtb3ZlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbGxlY3Rpb24uRERlbGV0aW9uSW52YXJpYW50AAsE+FN0b3JlZCBkZXBlbmRlbmN5IGNvdW50ZXJzIG9yIGRlcG9zaXRzIGRvIG5vdCBwZXJtaXQgZGVsZXRpb24uPEFkZHJlc3NPY2N1cGllZAAMBLxUaGUgZGVzdGluYXRpb24gcHVyc2Uga2V5IGFscmVhZHkgaG9sZHMgYW4gTkZULkBUb29NYW55SW5zdGFuY2VzAA0E1FRoZSBwZXJtYW5lbnQgaW5zdGFuY2UgaWRlbnRpZmllciBzcGFjZSBpcyBleGhhdXN0ZWQuOFN1cHBseU92ZXJmbG93AA4EwEFuIGl0ZW0gZGVmaW5pdGlvbidzIG1pbnRlZCBzdXBwbHkgaXMgZXhoYXVzdGVkLjxVbmtub3duSW5zdGFuY2UADwSsVGhlIHJlcXVlc3RlZCBsaXZlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LlxUb29NYW55SW5zdGFuY2VNZXRhZGF0YQAQBPRUaGUgY29uZmlndXJlZCBwZXItaW5zdGFuY2UgbWV0YWRhdGEgZW50cnkgbGltaXQgd2FzIHJlYWNoZWQuMFNlbGZUcmFuc2ZlcgARBNhBbiBORlQgY2Fubm90IGJlIHRyYW5zZmVycmVkIHRvIGl0cyBjdXJyZW50IHB1cnNlIGtleS5IU3RhdGVOb25jZU92ZXJmbG93ABIEvEFuIE5GVCBoYXMgZXhoYXVzdGVkIGl0cyBvd25lcnNoaXAtc3RhdGUgbm9uY2UuJFNvdWxib3VuZAATBD0BVGhlIGl0ZW0gZGVmaW5pdGlvbiBiaW5kcyBpdHMgaW5zdGFuY2VzIHRvIHRoZSBwdXJzZSBrZXkgdGhleSB3ZXJlIG1pbnRlZCBpbnRvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4hDgwocGFsbGV0X3BzbRhwYWxsZXQcUHNtSW5mbwQEVAAAFAE8ZmVlX2Rlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEgbWF4X2RlYnQ1AQEwQmFsYW5jZU9mPFQ+AAE8bWluX3N3YXBfYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABRGludGVybmFsX2RlY2ltYWxzDAEIdTgAAThleHRlcm5hbF9jb3VudDgBDHUzMgAAJQ4MKHBhbGxldF9wc20YcGFsbGV0MFBzbUFkbWluSW5mbwQEVAAADAEoZnVsbF9hZG1pbvEDAUBUOjpQYWxsZXRzT3JpZ2luAAE8ZW1lcmdlbmN5X2FkbWlu8QMBQFQ6OlBhbGxldHNPcmlnaW4AARxkZXBvc2l0KQ4BoE9wdGlvbjwoVDo6QWNjb3VudElkLCBUOjpDb25zaWRlcmF0aW9uKT4AACkOBBhPcHRpb24EBFQBLQ4BCBBOb25lAAAAEFNvbWUEAC0OAAABAAAtDgAABAgEMQ4AMQ4UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAADUODChwYWxsZXRfcHNtGHBhbGxldERFeHRlcm5hbEFzc2V0SW5mbwAACAEYc3RhdHVzAQUBTENpcmN1aXRCcmVha2VyTGV2ZWwAASBkZWNpbWFscwwBCHU4AAA5DgwocGFsbGV0X3BzbRhwYWxsZXQURXJyb3IEBFQAAVxMSW5zdWZmaWNpZW50UmVzZXJ2ZQAABNhQU00gZG9lc24ndCBoYXZlIGVub3VnaCBleHRlcm5hbCBhc3NldCBmb3IgcmVkZW1wdGlvbi5ERXhjZWVkc01heFBzbURlYnQAAQSMU3dhcCB3b3VsZCBleGNlZWQgUFNNIGRlYnQgY2VpbGluZy5AQmVsb3dNaW5pbXVtU3dhcAACBMxTd2FwIGFtb3VudCBiZWxvdyB0aGUgaW5zdGFuY2UncyBtaW5pbXVtIHRocmVzaG9sZC4oRmVlVG9vSGlnaAADBMBDdXJyZW50IGZlZSBleGNlZWRzIHRoZSBjYWxsZXItcHJvdmlkZWQgbWF4aW11bS5EWmVyb01pblN3YXBBbW91bnQABATYYGNyZWF0ZV9wc21gIHdhcyBjYWxsZWQgd2l0aCBhIHplcm8gYG1pbl9zd2FwX2Ftb3VudGAuOE1pbnRpbmdTdG9wcGVkAAUE9E1pbnRpbmcgb3BlcmF0aW9ucyBhcmUgZGlzYWJsZWQgKGNpcmN1aXQgYnJlYWtlciBsZXZlbCA+PSAxKS48QWxsU3dhcHNTdG9wcGVkAAYE9EFsbCBzd2FwIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkIChjaXJjdWl0IGJyZWFrZXIgbGV2ZWwgPSAyKS5AVW5zdXBwb3J0ZWRBc3NldAAHBKBBc3NldCBpcyBub3QgYW4gYXBwcm92ZWQgZXh0ZXJuYWwgYXNzZXQuLFBzbU5vdEZvdW5kAAgE7E5vIFBTTSBpbnN0YW5jZSBpcyByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gaW50ZXJuYWwgYXNzZXQuUEFzc2V0QWxyZWFkeUFwcHJvdmVkAAkEmEFzc2V0IGlzIGFscmVhZHkgaW4gdGhlIGFwcHJvdmVkIGxpc3QuREFzc2V0RG9lc05vdEV4aXN0AAoEVEFzc2V0IGRvZXMgbm90IGV4aXN0LkBBc3NldE5vdEFwcHJvdmVkAAsEqENhbm5vdCByZW1vdmUgYXNzZXQ6IG5vdCBpbiBhcHByb3ZlZCBsaXN0LjBBc3NldEhhc0RlYnQADASsQ2Fubm90IHJlbW92ZSBhc3NldDogaGFzIG5vbi16ZXJvIFBTTSBkZWJ0LlRJbnN1ZmZpY2llbnRQcml2aWxlZ2UADQgxAU9wZXJhdGlvbiByZXF1aXJlcyB0aGUgaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgKEZ1bGwgbGV2ZWwpOyB0aGUgY2FsbGVyIG9ubHnAbWF0Y2hlZCB0aGUgYGVtZXJnZW5jeV9hZG1pbmAgKEVtZXJnZW5jeSBsZXZlbCkuNFRvb01hbnlBc3NldHMADgTMTWF4aW11bSBudW1iZXIgb2YgYXBwcm92ZWQgZXh0ZXJuYWwgYXNzZXRzIHJlYWNoZWQuQERlY2ltYWxzTWlzbWF0Y2gADwQJAVJlc2VydmVkIGxlZ2FjeSBlcnJvcjsgcmV0YWluZWQgdG8gcHJlc2VydmUgZXJyb3IgdmFyaWFudCBpbmRpY2VzLlREZWNpbWFsc1JhbmdlRXhjZWVkZWQAEAT0VGhlIGFzc2V0J3MgZGVjaW1hbCBwcmVjaXNpb24gaXMgb3V0c2lkZSB0aGUgc3VwcG9ydGVkIHJhbmdlLkhDb252ZXJzaW9uT3ZlcmZsb3cAEQTARGVjaW1hbCBzY2FsaW5nIHByb2R1Y2VkIGFuIGFyaXRobWV0aWMgb3ZlcmZsb3cudEFtb3VudFRvb1NtYWxsQWZ0ZXJDb252ZXJzaW9uABIEMQFDb252ZXJzaW9uIHRvIHRoZSBjb3VudGVyLWFzc2V0IHJvdW5kcyB0byB6ZXJvOyBzd2FwIHdvdWxkIHRyYW5zZmVyIG5vdGhpbmcuQFBzbUFscmVhZHlFeGlzdHMAEwTQQSBQU00gaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB0aGlzIGludGVybmFsIGFzc2V0LihQc21IYXNEZWJ0ABQEIQFUaGUgUFNNIGhhcyBub24temVybyBvdXRzdGFuZGluZyBkZWJ0IG9uIGF0IGxlYXN0IG9uZSBhcHByb3ZlZCBleHRlcm5hbC5cUHNtSGFzQXBwcm92ZWRFeHRlcm5hbHMAFQQpAVRoZSBQU00gc3RpbGwgaGFzIGFwcHJvdmVkIGV4dGVybmFsczsgcmVtb3ZlIHRoZW0gYmVmb3JlIHJlbW92aW5nIHRoZSBQU00uKFVuZXhwZWN0ZWQAFgQRAUFuIHVuZXhwZWN0ZWQgaW52YXJpYW50IHZpb2xhdGlvbiBvY2N1cnJlZC4gVGhpcyBzaG91bGQgYmUgcmVwb3J0ZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0OCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBNQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZTUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25kNQEBHEJhbGFuY2UAAEEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAEUOCDxwYWxsZXRfdHJlYXN1cnksU3BlbmRTdGF0dXMUJEFzc2V0S2luZAEJBTBBc3NldEJhbGFuY2UBNQEsQmVuZWZpY2lhcnkBDQUsQmxvY2tOdW1iZXIBOCRQYXltZW50SWQBKAAYAShhc3NldF9raW5kCQUBJEFzc2V0S2luZAABGGFtb3VudDUBATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyeQ0FASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVzSQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AABJDgg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAATQ4MPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXJyb3IIBFQABEkAASwwSW52YWxpZEluZGV4AAAErE5vIHByb3Bvc2FsLCBib3VudHkgb3Igc3BlbmQgYXQgdGhhdCBpbmRleC5AVG9vTWFueUFwcHJvdmFscwABBIBUb28gbWFueSBhcHByb3ZhbHMgaW4gdGhlIHF1ZXVlLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAIIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVMYW1vdW50IHRvIGJlIHNwZW50LkxQcm9wb3NhbE5vdEFwcHJvdmVkAAMEfFByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQAEBFEBVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQuMFNwZW5kRXhwaXJlZAAFBLBUaGUgc3BlbmQgaGFzIGV4cGlyZWQgYW5kIGNhbm5vdCBiZSBjbGFpbWVkLixFYXJseVBheW91dAAGBKRUaGUgc3BlbmQgaXMgbm90IHlldCBlbGlnaWJsZSBmb3IgcGF5b3V0LkBBbHJlYWR5QXR0ZW1wdGVkAAcEnFRoZSBwYXltZW50IGhhcyBhbHJlYWR5IGJlZW4gYXR0ZW1wdGVkLixQYXlvdXRFcnJvcgAIBMxUaGVyZSB3YXMgc29tZSBpc3N1ZSB3aXRoIHRoZSBtZWNoYW5pc20gb2YgcGF5bWVudC4wTm90QXR0ZW1wdGVkAAkEpFRoZSBwYXlvdXQgd2FzIG5vdCB5ZXQgYXR0ZW1wdGVkL2NsYWltZWQuMEluY29uY2x1c2l2ZQAKBMRUaGUgcGF5bWVudCBoYXMgbmVpdGhlciBmYWlsZWQgbm9yIHN1Y2NlZWRlZCB5ZXQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC5RDgAABAgE7QMAVQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQE1ASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAFkOAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBABxDgGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAABZDgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQE1ASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3Rlc10OAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnNpDgFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcm0OAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AABdDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEOBFMAAAQAZQ4BGFZlYzxUPgAAYQ4AAAQIOBUFAGUOAAACYQ4AaQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQE1AQAIARR2b3RlczUBARxCYWxhbmNlAAEcY2FwaXRhbDUBARxCYWxhbmNlAABtDgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBNQEACAA4ASxCbG9ja051bWJlcgAANQEBHEJhbGFuY2UAAHEODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlATUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZTUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbh0FAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnNpDgFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcm0OAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAB1DgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXkOBFMAAAQAfQ4BGFZlYzxUPgAAeQ4AAAQI7QM1AQB9DgAAAnkOAIEODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEVycm9yCARUAARJAAEwKE5vdE9uZ29pbmcAAARQUG9sbCBpcyBub3Qgb25nb2luZy4gTm90Vm90ZXIAAQSsVGhlIGdpdmVuIGFjY291bnQgZGlkIG5vdCB2b3RlIG9uIHRoZSBwb2xsLjBOb1Blcm1pc3Npb24AAgTIVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbi48Tm9QZXJtaXNzaW9uWWV0AAMEWQFUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uIHJpZ2h0IG5vdyBidXQgd2lsbCBkbyBpbiB0aGUgZnV0dXJlLkRBbHJlYWR5RGVsZWdhdGluZwAEBIhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcuNEFscmVhZHlWb3RpbmcABQhVAVRoZSBhY2NvdW50IGN1cnJlbnRseSBoYXMgdm90ZXMgYXR0YWNoZWQgdG8gaXQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgdW50aWygdGhlc2UgYXJlIHJlbW92ZWQgdGhyb3VnaCBgcmVtb3ZlX3ZvdGVgLkRJbnN1ZmZpY2llbnRGdW5kcwAGBPxUb28gaGlnaCBhIGJhbGFuY2Ugd2FzIHByb3ZpZGVkIHRoYXQgdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZC40Tm90RGVsZWdhdGluZwAHBKBUaGUgYWNjb3VudCBpcyBub3QgY3VycmVudGx5IGRlbGVnYXRpbmcuIE5vbnNlbnNlAAgElERlbGVnYXRpb24gdG8gb25lc2VsZiBtYWtlcyBubyBzZW5zZS48TWF4Vm90ZXNSZWFjaGVkAAkEgE1heGltdW0gbnVtYmVyIG9mIHZvdGVzIHJlYWNoZWQuLENsYXNzTmVlZGVkAAoEOQFUaGUgY2xhc3MgbXVzdCBiZSBzdXBwbGllZCBzaW5jZSBpdCBpcyBub3QgZWFzaWx5IGRldGVybWluYWJsZSBmcm9tIHRoZSBzdGF0ZS4gQmFkQ2xhc3MACwSEVGhlIGNsYXNzIElEIHN1cHBsaWVkIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOFJlZmVyZW5kdW1JbmZvIBxUcmFja0lkAe0DNFJ1bnRpbWVPcmlnaW4B8QMYTW9tZW50ATgQQ2FsbAEpBRxCYWxhbmNlATUBFFRhbGx5AZ0JJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHMARgcT25nb2luZwQAiQ4BjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMADgBGE1vbWVudAAAkQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACRDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMADgBGE1vbWVudAAAkQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACRDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAA4ARhNb21lbnQAAJEOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAkQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAA4ARhNb21lbnQAAJEOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAkQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAOAEYTW9tZW50AAUAAIkODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB7QM0UnVudGltZU9yaWdpbgHxAxhNb21lbnQBOBBDYWxsASkFHEJhbGFuY2UBNQEUVGFsbHkBnQkkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAcwALAEUdHJhY2vtAwEcVHJhY2tJZAABGG9yaWdpbvEDATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWwpBQEQQ2FsbAABJGVuYWN0bWVudDEFAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdI0OAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0kQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmeVDgF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHmdCQEUVGFsbHkAASBpbl9xdWV1ZXUBARBib29sAAEUYWxhcm2dDgGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AACNDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlATUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudDUBARxCYWxhbmNlAACRDgQYT3B0aW9uBARUAY0OAQgQTm9uZQAAABBTb21lBACNDgAAAQAAlQ4EGE9wdGlvbgQEVAGZDgEIEE5vbmUAAAAQU29tZQQAmQ4AAAEAAJkODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAnQ4EGE9wdGlvbgQEVAGhDgEIEE5vbmUAAAAQU29tZQQAoQ4AAAEAAKEOAAAECDjMAKUODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBqQ4EUwAABACtDgEYVmVjPFQ+AACpDgAABAg4NQEArQ4AAAKpDgCxDgAAArUOALUOAAAECO0DuQ4AuQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlATUBGE1vbWVudAE4EE5hbWUBUQoAJAEQbmFtZVEKARBOYW1lAAEwbWF4X2RlY2lkaW5nOAEMdTMyAAFAZGVjaXNpb25fZGVwb3NpdDUBARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2Q4ARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2Q4ARhNb21lbnQAAThjb25maXJtX3BlcmlvZDgBGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kOAEYTW9tZW50AAEwbWluX2FwcHJvdmFsvQ4BFEN1cnZlAAEsbWluX3N1cHBvcnS9DgEUQ3VydmUAAL0ODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGhZBQEcUGVyYmlsbAABFGZsb29yWQUBHFBlcmJpbGwAARBjZWlsWQUBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpblkFARxQZXJiaWxsAAEMZW5kWQUBHFBlcmJpbGwAARBzdGVwWQUBHFBlcmJpbGwAARhwZXJpb2RZBQEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9ywQ4BIEZpeGVkSTY0AAEgeF9vZmZzZXTBDgEgRml4ZWRJNjQAASB5X29mZnNldMEOASBGaXhlZEk2NAACAADBDgw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABADFDgEMaTY0AADFDgAABQwAyQ4MQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0ODEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RDgg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQE1ASxCbG9ja051bWJlcgE4ABgBIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWU1AQEcQmFsYW5jZQABDGZlZTUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0NQEBHEJhbGFuY2UAARBib25kNQEBHEJhbGFuY2UAARhzdGF0dXPVDgGQQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AADVDgg8cGFsbGV0X2JvdW50aWVzMEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEcIFByb3Bvc2VkAAAAIEFwcHJvdmVkAAEAGEZ1bmRlZAACADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAGEFjdGl2ZQgBHGN1cmF0b3IEASRBY2NvdW50SWQAASh1cGRhdGVfZHVlOAEsQmxvY2tOdW1iZXIABAA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAUATEFwcHJvdmVkV2l0aEN1cmF0b3IEARxjdXJhdG9yBAEkQWNjb3VudElkAAYAANkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA3Q4MPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuEOCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBNQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZTUBARxCYWxhbmNlAAEMZmVlNQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXQ1AQEcQmFsYW5jZQABGHN0YXR1c+UOAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAA5Q4IVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAA6Q4MVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lu0ODERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQE1ASRBc3NldEtpbmQBCQUQSGFzaAE8JFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AQ0FABABKGFzc2V0X2tpbmQJBQEkQXNzZXRLaW5kAAEUdmFsdWU1AQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1c/UOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAA9Q4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AQ0FARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1c/kOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvcqkBAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVz+Q4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQ0FASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVz+Q4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAAPkOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAA/Q4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQE1ARBIYXNoATwkUGF5bWVudElkASgsQmVuZWZpY2lhcnkBDQUAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWU1AQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1c/UOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAAQ8AAAQIOOAABQ8UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAAAkPDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0PDChwYWxsZXRfZGFwGHBhbGxldBRFcnJvcgQEVAABCEBVbmtub3duQnVkZ2V0S2V5AAAEHQFBIGtleSBpbiB0aGUgYnVkZ2V0IGFsbG9jYXRpb24gZG9lcyBub3QgbWF0Y2ggYW55IHJlZ2lzdGVyZWQgcmVjaXBpZW50LjhCdWRnZXROb3RFeGFjdAABBORCdWRnZXQgYWxsb2NhdGlvbiBwZXJjZW50YWdlcyBkbyBub3Qgc3VtIHRvIGV4YWN0bHkgMTAwJS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuEQ8AAAIVDwAVDwAABAzdAwRZBQAZDwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50czUBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVySQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhcx0PAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAHQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE1AQRTAAAEACEPAThCVHJlZU1hcDxLLCBWPgAAIQ8EIEJUcmVlTWFwCARLATgEVgE1AQAEAK0OAAAAJQ8IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvbikPATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXMxDwFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZYkFASRQb29sU3RhdGUAACkPCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50oQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXjZCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGUtDwG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t4AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb26tBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAC0PBBhPcHRpb24EBFQBqQUBCBBOb25lAAAAEFNvbWUEAKkFAAABAAAxDwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9yqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlcqkBAURPcHRpb248QWNjb3VudElkPgAANQ8IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXJJBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0czUBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWQ1AQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nNQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZDUBATBCYWxhbmNlT2Y8VD4AADkPCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhPQ8BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYUEPAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAPQ8IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50czUBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgAAQQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE9DwRTAAAEAEUPAThCVHJlZU1hcDxLLCBWPgAARQ8EIEJUcmVlTWFwCARLATgEVgE9DwAEAEkPAAAASQ8AAAJNDwBNDwAABAg4PQ8AUQ8MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBABVDwE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVQ8MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAFkPDEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2qQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dKkBAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAXQ8MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AABhDwAAAigAZQ8MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAGkPASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuaQ8MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAbQ8AAAQI/PwAcQ8MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAHUPDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMsQWdlbnRMZWRnZXIEBFQAABABFHBheWVlBAEwVDo6QWNjb3VudElkAAE8dG90YWxfZGVsZWdhdGVkcQEBMEJhbGFuY2VPZjxUPgABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc3EBATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNocQEBMEJhbGFuY2VPZjxUPgAAeQ8MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXJyb3IEBFQAATAoTm90QWxsb3dlZAAABKhUaGUgYWNjb3VudCBjYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi44QWxyZWFkeVN0YWtpbmcAAQS4QW4gZXhpc3Rpbmcgc3Rha2VyIGNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uLmBJbnZhbGlkUmV3YXJkRGVzdGluYXRpb24AAgTUUmV3YXJkIERlc3RpbmF0aW9uIGNhbm5vdCBiZSBzYW1lIGFzIGBBZ2VudGAgYWNjb3VudC5ESW52YWxpZERlbGVnYXRpb24AAxSIRGVsZWdhdGlvbiBjb25kaXRpb25zIGFyZSBub3QgbWV0LgBMUG9zc2libGUgaXNzdWVzIGFyZWwxKSBDYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiykMikgQ2Fubm90IGRlbGVnYXRlIHRvIG11bHRpcGxlIGRlbGVnYXRlcy44Tm90RW5vdWdoRnVuZHMABAQBAVRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gTm90QWdlbnQABQSATm90IGFuIGV4aXN0aW5nIGBBZ2VudGAgYWNjb3VudC4wTm90RGVsZWdhdG9yAAYEYE5vdCBhIERlbGVnYXRvciBhY2NvdW50LiBCYWRTdGF0ZQAHBIhTb21lIGNvcnJ1cHRpb24gaW4gaW50ZXJuYWwgc3RhdGUuOFVuYXBwbGllZFNsYXNoAAgE3FVuYXBwbGllZCBwZW5kaW5nIHNsYXNoIHJlc3RyaWN0cyBvcGVyYXRpb24gb24gYEFnZW50YC44Tm90aGluZ1RvU2xhc2gACQSsYEFnZW50YCBoYXMgbm8gcGVuZGluZyBzbGFzaCB0byBiZSBhcHBsaWVkLjhXaXRoZHJhd0ZhaWxlZAAKBLBGYWlsZWQgdG8gd2l0aGRyYXcgYW1vdW50IGZyb20gQ29yZSBTdGFraW5nLjBOb3RTdXBwb3J0ZWQACwScT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0PAAAECIEPOACBDwh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXR5AQE4VmVjPEFjY291bnRJZD4AAQhpZDgBDHUzMgABLHBydW5lX3VwX3Rv4AFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlcnUBARBib29sAACFDwx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABFDRYY21TZW5kRmFpbGVkAAAEuEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIHRoZSBSZWxheSBDaGFpbi4wTm90VmFsaWRhdG9yAAEUxFRoZSBvcmlnaW4gYWNjb3VudCBpcyBub3QgYSByZWdpc3RlcmVkIHZhbGlkYXRvci4AWQFPbmx5IGFjY291bnRzIHRoYXQgaGF2ZSBjYWxsZWQgYHZhbGlkYXRlKClgIGNhbiBzZXQgb3IgcHVyZ2Ugc2Vzc2lvbiBrZXlzLiBXaGVuIGNhbGxlZEkBdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIG9yaWdpbiBpcyB0aGUgZGVsZWdhdGluZyBhY2NvdW50IChzdGFzaCksIHdoaWNoIG11c3QgYmUgYVRyZWdpc3RlcmVkIHZhbGlkYXRvci4sSW52YWxpZEtleXMAAgRFAVRoZSBzZXNzaW9uIGtleXMgY291bGQgbm90IGJlIGRlY29kZWQgYXMgdGhlIGV4cGVjdGVkIFJlbGF5Q2hhaW5TZXNzaW9uS2V5cyB0eXBlLjBJbnZhbGlkUHJvb2YAAwS0SW52YWxpZCBvd25lcnNoaXAgcHJvb2YgZm9yIHRoZSBzZXNzaW9uIGtleXMuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuiQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNDwRTAAAEAJUPARhWZWM8VD4AAI0PAAAEDAQokQ8AkQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAAlQ8AAAKNDwCZDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAB5AQEYVmVjPFQ+AACdDwyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy6hDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAAKUPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBqQ8EUwAABACxDwEYVmVjPFQ+AACpDwAABAgErQ8ArQ8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFsNQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAALEPAAACqQ8AtQ8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAAuQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9DwRTAAAEAMEPARhWZWM8VD4AAL0PAAAECAQNBgDBDwAAAr0PAMUPAAAEDDgEOADJDwyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEMZmVlNQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZDUBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3JlDQYBNEVsZWN0aW9uU2NvcmUAARRwYWdlc80PAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAAzQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1AQRTAAAEANEPARhWZWM8VD4AANEPAAACdQEA1Q8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7ZDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWxxAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlcQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZzEHAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAN0PCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0c5EPAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWR1AQEQYm9vbAAA4Q8IUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydPwBLE9wdGlvbjx1NjQ+AADlDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcwEUwAABABFCgEYVmVjPFQ+AADpDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBNQEAEAEUdG90YWxxAQEcQmFsYW5jZQABDG93bnEBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAAO0PEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQA8Q8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AAPEPCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAIAShwYWdlX3RvdGFscQEBHEJhbGFuY2UAARhvdGhlcnP1DwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAA9Q8AAAL5DwD5Dwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBNQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVxAQEcQmFsYW5jZQAA/Q8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAYQQBGFZlYzxUPgAAARAIUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWwFEAH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AAAUQDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEAAkQAThCVHJlZU1hcDxLLCBWPgAACRAEIEJUcmVlTWFwCARLAQQEVgE4AAQAwQUAAAANEAxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKpAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvblkFARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb25ZBQEcUGVyYmlsbAAAERAMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAYQQBGFZlYzxUPgAAFRAAAAQMOAQNEAAZEAAABAg4PQcAHRAIUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd241AQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzIRABEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgAAIRAMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEBBgRTAAAEAAUGARhWZWM8VD4AACUQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEQcEUwAABAANBwEYVmVjPFQ+AAApEAAABAhZBTUBAC0QCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAAAxEAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAKkNASxCVHJlZVNldDxUPgAANRAQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAORAQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0QCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQAQRABKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAAQRABKFJld2FyZEtpbmQAAQAAQRAIUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAARRAMUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlATUBAAgBOHN0YWtlcl9yZXdhcmRzNQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlNQEBHEJhbGFuY2UAAEkQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAATRAMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zFHR5cGVzQENvbGxlY3Rpb25NaW50ZXIEJEFjY291bnRJZAEEAAgBFG93bmVyBAEkQWNjb3VudElkAAEkc2VsZWN0aW9ubQcBNEl0ZW1TZWxlY3Rpb24AAFEQAAAECBUEOABVEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABhBAEYVmVjPFQ+AABZEAxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMYcGFsbGV0FEVycm9yBARUAAEkRFVua25vd25DcmVkaXRUcmVlAAAMQQFObyB0cmVlIGlzIGhlbGQgZm9yIHRoZSBibG9jaywgc28gbm90aGluZyBjYW4gYmUgcHJvdmVuIGFnYWluc3QgaXQuIFRoZSB0cmVlIG1heVEBc3RpbGwgYmUgb24gaXRzIHdheSwgb3IgaGF2ZSBiZWVuIGxvc3QsIGluIHdoaWNoIGNhc2UgYSBgcmVwbGF5X2NyZWRpdF90cmVlc2Agb24gdGhlYGdhbWUgcGFsbGV0IGRlbGl2ZXJzIGl0LlBMZWFmSW5kZXhPdXRPZkJvdW5kcwABBLxUaGUgbGVhZiBpbmRleCBpcyBub3Qgb25lIG9mIHRoZSB0cmVlJ3MgbGVhdmVzLjhBbHJlYWR5Q2xhaW1lZAACBOxUaGUgY3JlZGl0IGhhcyBhbHJlYWR5IGJlZW4gY2xhaW1lZCBhbmQgbWludHMgb25lIE5GVCBvbmx5LjBJbnZhbGlkUHJvb2YAAwhZAVRoZSBwcm9vZiBkb2VzIG5vdCByZWhhc2ggdGhlIGNyZWRpdCdzIGxlYWYgdG8gdGhlIHRyZWUncyByb290LCBzbyB0aGUgb3JpZ2luIGhvbGRzIG5vaHN1Y2ggY3JlZGl0IGluIHRoYXQgYmxvY2suRFVua25vd25Db2xsZWN0aW9uAAQEqFRoZSBjb2xsZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIFNjYXJjaXR5LkhOb3RDb2xsZWN0aW9uT3duZXIABQQBAU9ubHkgdGhlIGNvbGxlY3Rpb24ncyBvd25lciBtYXkgcmVnaXN0ZXIgb3Igd2l0aGRyYXcgaXRzIG1pbnRlci5cQ29sbGVjdGlvbk5vdFJlZ2lzdGVyZWQABghJAVRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIgaGFzIG5vdCByZWdpc3RlcmVkIGl0IGZvciBjbGFpbXMsIHNvIG5vIGNsYWltIGNhbiBtaW50IGludG8MaXQuWENvbGxlY3Rpb25Pd25lckNoYW5nZWQABwg9AVRoZSBjb2xsZWN0aW9uIGhhcyBjaGFuZ2VkIG93bmVycyBzaW5jZSByZWdpc3RyYXRpb24sIHNvIGl0cyBjdXJyZW50IG93bmVyIG11c3RIcmVnaXN0ZXIgaXQgYWdhaW4uHE5vSXRlbXMACARJAVRoZSBjb2xsZWN0aW9uIGhhcyBubyBpdGVtIGRlZmluaXRpb25zIGZvciBbYEl0ZW1TZWxlY3Rpb246OlJhbmRvbWBdIHRvIGRyYXcgZnJvbS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuXRAAAAQMOAg4AGEQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBZRAEUwAABABpEAEYVmVjPFQ+AABlEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdI0HATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAABpEAAAAmUQAG0QDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzRFJpbmdQdXJnZVByb2dyZXNzAAAIAShnZW5lcmF0aW9uOAEoR2VuZXJhdGlvbgABEHBhZ2U4AQx1MzIAAHEQDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABQBKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxuZXh0X3NjYW5faW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXN1EAGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc30QAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAdRAMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQAeRABOEJUcmVlTWFwPEssIFY+AAB5EAQgQlRyZWVNYXAIBEsBOARWATgABABFCgAAAH0QDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAgRABLEJUcmVlU2V0PFQ+AACBEAQgQlRyZWVTZXQEBFQBOAAEAGEEAAAAhRAMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAACJEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AACNEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbhkCASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AACREAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASw0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy48UmV2aXNpb25FeHBpcmVkAAkEOQFSZXF1ZXN0ZWQgcmV2aXNpb24gaGFzIGJlZW4gc3VwZXJzZWRlZCBmb3IgbG9uZ2VyIHRoYW4gdGhlIHJldGVudGlvbiBkdXJhdGlvbi5IVG9vTWFueUNvbGxlY3Rpb25zAAoEAQFUaGUgbm90aWZpZXIgaW5pdGlhbGl6ZWQgbW9yZSB0aGFuIGBNYXhDb2xsZWN0aW9uc2AgY29sbGVjdGlvbnMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpUQAAAECAiZEACZEBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAAnRAMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYZkQATxDb250ZXh0dWFsQWxpYXMAAKEQDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAEsREludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzRmVlVW5zZXQABQToVGhlIFBHQVMgZmVlIGZvciBhbGlhcyByZWdpc3RyYXRpb25zIGhhcyBub3QgYmVlbiBzZXQgeWV0LjxSZXByb3ZlTWlzbWF0Y2gABggdAVRoZSBwcm9vZiBwYXNzZWQgdG8gYHJlcHJvdmVfYWxpYXNfYWNjb3VudGAgcHJvZHVjZWQgYW4gYWxpYXMgLyBjb250ZXh02HRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLkBSaW5nUm9vdE5vdEZvdW5kAAcEBQFObyByaW5nIHJvb3Qgd2FzIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIGNvbGxlY3Rpb24gLyByaW5nIGluZGV4LjRTdGFsZVJldmlzaW9uAAgEAQFUaGUgcmVxdWVzdGVkIHJpbmcgcmV2aXNpb24gaXMgbm8gbG9uZ2VyIGFjY2VwdGVkIGZvciB0aGlzIHJpbmcuIEJhZFByb29mAAkEjFJpbmctVlJGIHByb29mIHZlcmlmaWNhdGlvbiBmYWlsZWQuTEludmFsaWRSaW5nQ2FwYWNpdHkACgTwVGhlIGNvbmZpZ3VyZWQgcmluZyBjYXBhY2l0eSBpcyBpbnZhbGlkIGZvciB0aGlzIGNvbGxlY3Rpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqUQAAAECBUECACpEAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEVycm9yBARUAAEQOEFscmVhZHlDbGFpbWVkAAAE+FRoaXMgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIFBHQVMgaW4gdGhpcyBwZXJpb2QuOFBnYXNNaW50RmFpbGVkAAEEwFRoZSBQR0FTIGFzc2V0IGRvZXMgbm90IGV4aXN0IG9yIG1pbnRpbmcgZmFpbGVkLjxOb1JlY29yZHNGb3JEYXkAAgQxAWBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHNgIHdhcyBjYWxsZWQgd2l0aCBhIGRheSB0aGF0IGhhcyBubyBzdG9yZWQgcmVjb3Jkcy5IRmlyc3RBbGlhc01pc21hdGNoAAMIVQFUaGUgYGZpcnN0X2FsaWFzYCBwYXNzZWQgdG8gYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2AgZG9lcyBub3QgbWF0Y2ggdGhlIGZpcnN0IGFsaWFziGN1cnJlbnRseSBzdG9yZWQgdW5kZXIgdGhlIHByZWZpeC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurRAMNHBhbGxldF9yZXZpdmUIdm0gQ29kZUluZm8EBFQAABgBFG93bmVyBAE4QWNjb3VudElkT2Y8VD4AARxkZXBvc2l0cQEBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50tAEMdTY0AAEgY29kZV9sZW44AQx1MzIAASRjb2RlX3R5cGWxEAEwQnl0ZWNvZGVUeXBlAAFEYmVoYXZpb3VyX3ZlcnNpb244AQx1MzIAALEQDDRwYWxsZXRfcmV2aXZlCHZtMEJ5dGVjb2RlVHlwZQABCAxQdm0AAAAMRXZtAAEAALUQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudEluZm8EBFQAAAgBMGFjY291bnRfdHlwZbkQAThBY2NvdW50VHlwZTxUPgABEGR1c3Q4AQx1MzIAALkQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudFR5cGUEBFQAAQggQ29udHJhY3QEAL0QATxDb250cmFjdEluZm88VD4AAAAMRU9BAAEAAL0QDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UwQ29udHJhY3RJbmZvBARUAAAgARx0cmllX2lkZQQBGFRyaWVJZAABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAATRzdG9yYWdlX2J5dGVzOAEMdTMyAAE0c3RvcmFnZV9pdGVtczgBDHUzMgABUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfaXRlbV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABSGltbXV0YWJsZV9kYXRhX2xlbjgBDHUzMgAAwRAAAAQIBAQAxRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADJEAw0cGFsbGV0X3Jldml2ZRxzdG9yYWdlRERlbGV0aW9uUXVldWVJdGVtBARUAAAIARx0cmllX2lkZQQBGFRyaWVJZAABKGFjY291bnRfaWQEAThBY2NvdW50SWRPZjxUPgAAzRAMNHBhbGxldF9yZXZpdmUcc3RvcmFnZVBEZWxldGlvblF1ZXVlTWFuYWdlcgQEVAAACAE4aW5zZXJ0X2NvdW50ZXI4AQx1MzIAAThkZWxldGVfY291bnRlcjgBDHUzMgAA0RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuFEJsb2NrAABsAUBiYXNlX2ZlZV9wZXJfZ2FztQcBEFUyNTYAATRibG9iX2dhc191c2VktQcBEFUyNTYAAShkaWZmaWN1bHR5tQcBEFUyNTYAATxleGNlc3NfYmxvYl9nYXO1BwEQVTI1NgABKGV4dHJhX2RhdGHVEAEUQnl0ZXMAASRnYXNfbGltaXS1BwEQVTI1NgABIGdhc191c2VktQcBEFUyNTYAARBoYXNoPAEQSDI1NgABKGxvZ3NfYmxvb23ZEAEgQnl0ZXMyNTYAARRtaW5lcnEHARxBZGRyZXNzAAEgbWl4X2hhc2g8ARBIMjU2AAEUbm9uY2XhEAEYQnl0ZXM4AAEYbnVtYmVytQcBEFUyNTYAAWBwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3Q1BQEwT3B0aW9uPEgyNTY+AAEscGFyZW50X2hhc2g8ARBIMjU2AAE0cmVjZWlwdHNfcm9vdDwBEEgyNTYAATRyZXF1ZXN0c19oYXNoNQUBME9wdGlvbjxIMjU2PgABMHNoYV8zX3VuY2xlczwBEEgyNTYAARBzaXpltQcBEFUyNTYAAShzdGF0ZV9yb290PAEQSDI1NgABJHRpbWVzdGFtcLUHARBVMjU2AAFAdG90YWxfZGlmZmljdWx0eeUQATBPcHRpb248VTI1Nj4AATB0cmFuc2FjdGlvbnPpEAFgSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAFEdHJhbnNhY3Rpb25zX3Jvb3Q8ARBIMjU2AAEYdW5jbGVzwAEkVmVjPEgyNTY+AAEsd2l0aGRyYXdhbHM1EQE8VmVjPFdpdGhkcmF3YWw+AAFAd2l0aGRyYXdhbHNfcm9vdDwBEEgyNTYAANUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRRCeXRlcwAABAAYARxWZWM8dTg+AADZEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUgQnl0ZXMyNTYAAAQA3RABJFt1ODsgMjU2XQAA3RAAAAMAAQAADADhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUYQnl0ZXM4AAAEAHUCARxbdTg7IDhdAADlEAQYT3B0aW9uBARUAbUHAQgQTm9uZQAAABBTb21lBAC1BwAAAQAA6RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuYEhhc2hlc09yVHJhbnNhY3Rpb25JbmZvcwABCBhIYXNoZXMEAMABJFZlYzxIMjU2PgAAAEBUcmFuc2FjdGlvbkluZm9zBADtEAFQVmVjPFRyYW5zYWN0aW9uSW5mbz4AAQAA7RAAAALxEADxEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48VHJhbnNhY3Rpb25JbmZvAAAYAShibG9ja19oYXNoPAEQSDI1NgABMGJsb2NrX251bWJlcrUHARBVMjU2AAEQZnJvbXEHARxBZGRyZXNzAAEQaGFzaDwBEEgyNTYAAUR0cmFuc2FjdGlvbl9pbmRleLUHARBVMjU2AAFIdHJhbnNhY3Rpb25fc2lnbmVk9RABRFRyYW5zYWN0aW9uU2lnbmVkAAD1EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5EVHJhbnNhY3Rpb25TaWduZWQAARRUVHJhbnNhY3Rpb243NzAyU2lnbmVkBAD5EAFUVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAAVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAQAEREBVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAABAFRUcmFuc2FjdGlvbjE1NTlTaWduZWQEABkRAVRUcmFuc2FjdGlvbjE1NTlTaWduZWQAAgBUVHJhbnNhY3Rpb24yOTMwU2lnbmVkBAAlEQFUVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAMAXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkBAAtEQFcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQABAAA+RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZP0QAVxUcmFuc2FjdGlvbjc3MDJVbnNpZ25lZAABBHK1BwEQVTI1NgABBHO1BwEQVTI1NgABBHblEAEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHm1BwEQVTI1NgAA/RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAAsASxhY2Nlc3NfbGlzdAERAShBY2Nlc3NMaXN0AAFIYXV0aG9yaXphdGlvbl9saXN0CREBbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABIGNoYWluX2lktQcBEFUyNTYAAQxnYXO1BwEQVTI1NgABFGlucHV01RABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0b3EHARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDc3MDIAARR2YWx1ZbUHARBVMjU2AAABEQAAAgURAAURFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxBY2Nlc3NMaXN0RW50cnkAAAgBHGFkZHJlc3NxBwEcQWRkcmVzcwABMHN0b3JhZ2Vfa2V5c8ABJFZlYzxIMjU2PgAACREAAAINEQANERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5YQXV0aG9yaXphdGlvbkxpc3RFbnRyeQAAGAEgY2hhaW5faWS1BwEQVTI1NgABHGFkZHJlc3NxBwEcQWRkcmVzcwABFG5vbmNltQcBEFUyNTYAASB5X3Bhcml0ebUHARBVMjU2AAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAARERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAAQAWR0cmFuc2FjdGlvbl80ODQ0X3Vuc2lnbmVkFREBXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEgeV9wYXJpdHm1BwEQVTI1NgAAFREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAAwASxhY2Nlc3NfbGlzdAERAShBY2Nlc3NMaXN0AAFUYmxvYl92ZXJzaW9uZWRfaGFzaGVzwAEkVmVjPEgyNTY+AAEgY2hhaW5faWS1BwEQVTI1NgABDGdhc7UHARBVMjU2AAEUaW5wdXTVEAEUQnl0ZXMAAVBtYXhfZmVlX3Blcl9ibG9iX2dhc7UHARBVMjU2AAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0b3EHARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDQ4NDQAARR2YWx1ZbUHARBVMjU2AAAZERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24xNTU5U2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8xNTU5X3Vuc2lnbmVkHREBXFRyYW5zYWN0aW9uMTU1OVVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEEduUQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0ebUHARBVMjU2AAAdERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAACwBLGFjY2Vzc19saXN0AREBKEFjY2Vzc0xpc3QAASBjaGFpbl9pZLUHARBVMjU2AAEMZ2FztQcBEFUyNTYAASRnYXNfcHJpY2W1BwEQVTI1NgABFGlucHV01RABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0byERATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMASxUeXBlRWlwMTU1OQABFHZhbHVltQcBEFUyNTYAACERBBhPcHRpb24EBFQBcQcBCBBOb25lAAAAEFNvbWUEAHEHAAABAAAlERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkKREBXFRyYW5zYWN0aW9uMjkzMFVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEEduUQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0ebUHARBVMjU2AAApERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAACQBLGFjY2Vzc19saXN0AREBKEFjY2Vzc0xpc3QAASBjaGFpbl9pZLUHARBVMjU2AAEMZ2FztQcBEFUyNTYAASRnYXNfcHJpY2W1BwEQVTI1NgABFGlucHV01RABFEJ5dGVzAAEUbm9uY2W1BwEQVTI1NgABCHRvIREBPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAyOTMwAAEUdmFsdWW1BwEQVTI1NgAALREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkAAAQAWx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWQxEQFkVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAABBHK1BwEQVTI1NgABBHO1BwEQVTI1NgABBHa1BwEQVTI1NgAAMREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuZFRyYW5zYWN0aW9uTGVnYWN5VW5zaWduZWQAACABIGNoYWluX2lk5RABME9wdGlvbjxVMjU2PgABDGdhc7UHARBVMjU2AAEkZ2FzX3ByaWNltQcBEFUyNTYAARRpbnB1dNUQARRCeXRlcwABFG5vbmNltQcBEFUyNTYAAQh0byERATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMAShUeXBlTGVnYWN5AAEUdmFsdWW1BwEQVTI1NgAANREAAAI5EQA5ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4oV2l0aGRyYXdhbAAAEAEcYWRkcmVzc3EHARxBZGRyZXNzAAEYYW1vdW50tQcBEFUyNTYAARRpbmRleLUHARBVMjU2AAE8dmFsaWRhdG9yX2luZGV4tQcBEFUyNTYAAD0RAAACQREAQREQNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g4UmVjZWlwdEdhc0luZm8AAAgBIGdhc191c2VktQcBEFUyNTYAAUxlZmZlY3RpdmVfZ2FzX3ByaWNltQcBEFUyNTYAAEURFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoNGJsb2NrX2J1aWxkZXJYRXRoZXJldW1CbG9ja0J1aWxkZXJJUgQEVAAAIAFgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVySREBYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABVHJlY2VpcHRzX3Jvb3RfYnVpbGRlckkRAWBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAAUBiYXNlX2ZlZV9wZXJfZ2FztQcBEFUyNTYAATxibG9ja19nYXNfbGltaXS1BwEQVTI1NgABIGdhc191c2VktQcBEFUyNTYAAShsb2dzX2Jsb29t3RABWFt1ODsgQkxPT01fU0laRV9CWVRFU10AASR0eF9oYXNoZXPAASRWZWM8SDI1Nj4AASBnYXNfaW5mbz0RAUxWZWM8UmVjZWlwdEdhc0luZm8+AABJERQ0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDBoYXNoX2J1aWxkZXJgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAAoAQxrZXkYARxWZWM8dTg+AAEodmFsdWVfdHlwZQwBCHU4AAE0YnVpbGRlcl92YWx1ZRgBHFZlYzx1OD4AARRzdGFjazQBMFZlYzxWZWM8dTg+PgABLHN0YXRlX21hc2tzTREBIFZlYzx1MTY+AAEodHJlZV9tYXNrc00RASBWZWM8dTE2PgABKGhhc2hfbWFza3NNEQEgVmVjPHUxNj4AAUhzdG9yZWRfaW5fZGF0YWJhc2V1AQEQYm9vbAABHHJscF9idWYYARxWZWM8dTg+AAEUaW5kZXgoAQx1NjQAAE0RAAAC7QMAUREEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAABVEQw0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZXUBARBib29sAAE8YnlwYXNzX2VpcF8zNjA3dQEBEGJvb2wAASBwdm1fbG9nc3UBARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ3UBARBib29sAABZEQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNIUmVnaXN0cmF0aW9uUmVjb3JkBARUAAAIAShjb2xsZWN0aW9uYREBKENvbGxlY3Rpb24AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAABhEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMoQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoUGVvcGxlTGl0ZQABAABlEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNEQWNjb3VudE5hbWVSZWNvcmQAAAgBEGxpdGVpEQFET3B0aW9uPE5hbWVFbnRyeT4AARBmdWxsaREBRE9wdGlvbjxOYW1lRW50cnk+AABpEQQYT3B0aW9uBARUAW0RAQgQTm9uZQAAABBTb21lBABtEQAAAQAAbREMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzJE5hbWVFbnRyeQAACAEUbGFiZWzBBwEkQmFzZUxhYmVsAAEQY2hhdHERATxPcHRpb248Q2hhdEtleT4AAHERBBhPcHRpb24EBFQBxQcBCBBOb25lAAAAEFNvbWUEAMUHAAABAAB1EQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEVycm9yBARUAAEoREFscmVhZHlSZWdpc3RlcmVkAAAEoFRoZSBhbGlhcyBoYXMgYWxyZWFkeSByZWdpc3RlcmVkIGEgbmFtZS5IQ29udHJhY3RDYWxsRmFpbGVkAAEI/FRoZSBjb250cmFjdCBjYWxsIGZhaWxlZCAobm9uLXJldmVydDogb3V0LW9mLWdhcywgbG93LWxldmVsLCBvclB1bmRlY29kYWJsZSByZXZlcnQpLjhDb250cmFjdFJldmVydAQAeREBQERpc3BhdGNoZXJSZXZlcnQAAggRAUNvbnRyYWN0IHJldmVydGVkIHdpdGggYSB0eXBlZCBlcnJvciBmcm9tIGBSb290R2F0ZXdheURpc3BhdGNoZXJgIG9yoHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBpdCBmb3J3YXJkcyB0by4sSW52YWxpZE5hbWUAAwj0VGhlIG5hbWUgaXMgaW52YWxpZCAoZW1wdHkgb3IgdG9vIGxvbmcsIG9yIGRvZXMgbm90IG1hdGNoIHRoZYByZXF1aXJlZCBETlMvbGl0ZS1sYWJlbCBmb3JtYXQpLlhOb0F0dGVzdGF0aW9uQWxsb3dhbmNlAAQE0FRoZSBhdHRlc3RlciBoYXMgbm8gYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHJlbWFpbmluZy5sSW52YWxpZEF0dGVzdGF0aW9uU2lnbmF0dXJlAAUElFRoZSBjYW5kaWRhdGUncyBzaWduYXR1cmUgaXMgaW52YWxpZC5sUmVzZXJ2YXRpb25TaWduYXR1cmVFeHBpcmVkAAYEHQFUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGlzIG9sZGVyIHRoYW4gW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdLnhSZXNlcnZhdGlvblNpZ25hdHVyZUZyb21GdXR1cmUABwj8VGhlIHJlc2VydmF0aW9uIHNpZ25hdHVyZSBjbGFpbXMgdG8gaGF2ZSBiZWVuIGNyZWF0ZWQgbW9yZSB0aGFuzFtgQ29uZmlnOjpNYXhWYWxpZGl0eVNlY29uZHNgXSBhaGVhZCBvZiBjaGFpbiB0aW1lLkROb3RMaXRlTGFiZWxPd25lcgAICAkBVGhlIGBMaW5rOjpMaXRlVXNlcm5hbWVgIHRhcmdldCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlciAob3IgaGFzeG5vIG9uLWNoYWluIG93bmVyc2hpcCByZWNvcmQpLlxEaXNwYXRjaGVyQWRkcmVzc05vdFNldAAJBPhUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyBoYXMgbm90IGJlZW4gc2V0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC55EQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNARGlzcGF0Y2hlclJldmVydAABIBxOb3RSb290AAAAKE5vdEdhdGV3YXkAAQBASW52YWxpZExpdGVMYWJlbAACAEBJbnZhbGlkQmFzZUxhYmVsAAMATE5vQWN0aXZlUmVzZXJ2YXRpb24ABAAkUXVldWVGdWxsAAUAPEFscmVhZHlSZXNlcnZlZAAGACROb3RIb2xkZXIABwAAfREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgACAEQdXNlZDUBARxCYWxhbmNlAAEgYXRfYmxvY2s4ASxCbG9ja051bWJlcgAAgREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEVycm9yBARUAAEIHE5vVXNhZ2UAAASAVGhlIG9yaWdpbiBoYXMgbm8gdXNhZ2UgdHJhY2tlZC4cTm90WmVybwABBFhUaGUgdXNhZ2UgaXMgbm90IHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoURDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuiREISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AACNERAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAYkKAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3OREQFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAJERAAAClREAlREIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAJkRCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAJ0RCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAKERBBhPcHRpb24EBFQBnREBCBBOb25lAAAAEFNvbWUEAJ0RAAABAAClEQQYUmVzdWx0CARUAYkIBEUBqREBCAhPawQAiQgAAAAADEVycgQAqREAAAEAAKkRDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBACtEQFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EALERAUhVbmtub3duVHJhbnNhY3Rpb24AAQAArREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAAsREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAtREIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGG5EQGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAuREEIEJUcmVlTWFwCARLAXUCBFYBGAAEAL0RAAAAvREAAALBEQDBEQAABAh1AhgAxREIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theXUBARBib29sAAEsZmF0YWxfZXJyb3J1AQEQYm9vbAABGGVycm9yc7URATBJbmhlcmVudERhdGEAAMkRDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAzREEGFJlc3VsdAgEVAHREQRFAakRAQgIT2sEANERAAAAAAxFcnIEAKkRAAABAADREQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZXUBARBib29sAADVEQwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AANkRBBhPcHRpb24EBFQB3REBCBBOb25lAAAAEFNvbWUEAN0RAAABAADdEQAAAuERAOERAAAECBj9CwDlEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4eQIBIFt1ODsgMTZdAAEYc3VmZml4eQIBIFt1ODsgMTZdAADpEQQYUmVzdWx0CARUARgERQHtEQEICE9rBAAYAAAAAAxFcnIEAO0RAAABAADtEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBADlEQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAA8REMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBNQEYV2VpZ2h0AREBAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc10IATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWU1AQEcQmFsYW5jZQAA9REMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBNQEACAE0aW5jbHVzaW9uX2ZlZfkRAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcDUBARxCYWxhbmNlAAD5EQQYT3B0aW9uBARUAf0RAQgQTm9uZQAAABBTb21lBAD9EQAAAQAA/REMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQE1AQAMASBiYXNlX2ZlZTUBARxCYWxhbmNlAAEcbGVuX2ZlZTUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZTUBARxCYWxhbmNlAAABEgQYUmVzdWx0CARUAQUSBEUBCRIBCAhPawQABRIAAAAADEVycgQACRIAAAEAAAUSAAACvQMACRIMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAANEgQYUmVzdWx0CARUAREBBEUBCRIBCAhPawQAEQEAAAAADEVycgQACRIAAAEAABESBBhSZXN1bHQIBFQBNQEERQEJEgEICE9rBAA1AQAAAAAMRXJyBAAJEgAAAQAAFRIEGFJlc3VsdAgEVAGJAwRFAQkSAQgIT2sEAIkDAAAAAAxFcnIEAAkSAAABAAAZEgQYUmVzdWx0CARUAR0SBEUBNRIBCAhPawQAHRIAAAAADEVycgQANRIAAAEAAB0SDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AVEIABABQGV4ZWN1dGlvbl9yZXN1bHSlCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50cyESAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtJRIBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zKRIBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAAhEgAAAlEIACUSBBhPcHRpb24EBFQBTQIBCBBOb25lAAAAEFNvbWUEAE0CAAABAAApEgAAAi0SAC0SAAAECMUBMRIAMRIAAAJNAgA1EgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAA5EgQYUmVzdWx0CARUAT0SBEUBNRIBCAhPawQAPRIAAAAADEVycgQANRIAAAEAAD0SDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQBUQgADAFAZXhlY3V0aW9uX3Jlc3VsdCUJARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHMhEgEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zKRIBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABBEgQYUmVzdWx0CARUAQQERQFFEgEICE9rBAAEAAAAAAxFcnIEAEUSAAABAABFEgxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAEkSCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAGUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA2QIBJHY0OjpBc3NldAAEAAhWNQQAJQMBJHY1OjpBc3NldAAFAABNEgQYUmVzdWx0CARUAXUBBEUBURIBCAhPawQAdQEAAAAADEVycgQAURIAAAEAAFESDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAABVEgQYUmVzdWx0CARUAaEMBEUBWRIBCAhPawQAoQwAAAAADEVycgQAWRIAAAEAAFkSDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAF0SBBhSZXN1bHQIBFQBdQEERQFZEgEICE9rBAB1AQAAAAAMRXJyBABZEgAAAQAAYRIEGFJlc3VsdAgEVAGJAwRFAWUSAQgIT2sEAIkDAAAAAAxFcnIEAGUSAAABAABlEgw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAAGkSAAACbRIAbRIMVGluZGl2X3BhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaTRNZXRhZGF0YVF1ZXJ5AAEMIEluc3RhbmNlBAAoAShJbnN0YW5jZUlkAAAAEEl0ZW0IAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABAChDb2xsZWN0aW9uBAA4ATBDb2xsZWN0aW9uSWQAAgAAcRIEGFJlc3VsdAgEVAF1EgRFAYUSAQgIT2sEAHUSAAAAAAxFcnIEAIUSAAABAAB1EgAAAnkSAHkSDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkscnVudGltZV9hcGk4TWV0YWRhdGFMYXllcnMAABABIHJlc29sdmVkfRIBWE9wdGlvbjxNZXRhZGF0YVRhcmdldD4AAShjb2xsZWN0aW9uLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AARBpdGVtLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASBpbnN0YW5jZSwBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAB9EgQYT3B0aW9uBARUAYESAQgQTm9uZQAAABBTb21lBACBEgAAAQAAgRIMVGluZGl2X3BhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaThNZXRhZGF0YVRhcmdldAABDCBJbnN0YW5jZQwBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAAAEEl0ZW0IAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABAChDb2xsZWN0aW9uBAA4ATBDb2xsZWN0aW9uSWQAAgAAhRIMVGluZGl2X3BhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaShCYXRjaEVycm9yAAEEIFRvb0xhcmdlBAEMbWF4OAEMdTMyAAAAAIkSAAACjRIAjRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpMFByZXZpZXdRdWVyeQAACAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAACREgQYUmVzdWx0CARUAZUSBEUBpRIBCAhPawQAlRIAAAAADEVycgQApRIAAAEAAJUSAAACmRIAmRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdPdXRjb21lAAEIFE1pbnRzCAEQaXRlbTgBJEl0ZW1JbmRleAABDHZpYZ0SATRTZWxlY3Rpb25LaW5kAAAAFEZhaWxzBAEYcmVhc29uoRIBOFByZXZpZXdGYWlsdXJlAAEAAJ0SDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcyxydW50aW1lX2FwaTRTZWxlY3Rpb25LaW5kAAEIGFJhbmRvbQAAACBDb250cmFjdAQAcQcBEEgxNjAAAQAAoRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdGYWlsdXJlAAEYXENvbGxlY3Rpb25Ob3RSZWdpc3RlcmVkAAAARFVua25vd25Db2xsZWN0aW9uAAEAWENvbGxlY3Rpb25Pd25lckNoYW5nZWQAAgAcTm9JdGVtcwADACxVbmtub3duSXRlbQQBEGl0ZW04ASRJdGVtSW5kZXgABABcQ29udHJhY3RTZWxlY3Rpb25GYWlsZWQEARRlcnJvcmUIATREaXNwYXRjaEVycm9yAAUAAKUSDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcyxydW50aW1lX2FwaShCYXRjaEVycm9yAAEEIFRvb0xhcmdlBAEMbWF4OAEMdTMyAAAAAKkSCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VzAQsBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGWtEgGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAACtEgQYT3B0aW9uBARUAbESAQgQTm9uZQAAABBTb21lBACxEgAAAQAAsRIMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAtRIEGFJlc3VsdAgEVAEQBEUBUQoBCAhPawQAEAAAAAAMRXJyBABRCgAAAQAAuRIEGE9wdGlvbgQEVAFRCgEIEE5vbmUAAAAQU29tZQQAUQoAAAEAAL0SAAACUQoAwRIEGE9wdGlvbgQEVAHxDQEIEE5vbmUAAAAQU29tZQQA8Q0AAAEAAMUSDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZckSAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludPENAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAMkSDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AADNEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAdESHEJhbGFuY2UBNQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXTZEgFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l02RIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkNQEBHEJhbGFuY2UAARhyZXN1bHTdEgFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AADREgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3PVEgEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAA1RIMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAA2RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQE1AQEIGFJlZnVuZAQANQEBHEJhbGFuY2UAAAAYQ2hhcmdlBAA1AQEcQmFsYW5jZQABAADdEgQYUmVzdWx0CARUAdESBEUBZQgBCAhPawQA0RIAAAAADEVycgQAZQgAAAEAAOESDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEADwBNHNwX2NvcmU6OkgyNTYAAQAA5RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgHpEhxCYWxhbmNlATUBABgBPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l02RIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdNkSAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZDUBARxCYWxhbmNlAAEYcmVzdWx07RIBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAA6RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHTREgE8RXhlY1JldHVyblZhbHVlAAEQYWRkcnEHARBIMTYwAADtEgQYUmVzdWx0CARUAekSBEUBZQgBCAhPawQA6RIAAAAADEVycgQAZQgAAAEAAPESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN09RIBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdAkRAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AARRibG9ic/kSAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWTlEAEwT3B0aW9uPFUyNTY+AAEQZnJvbSERATxPcHRpb248QWRkcmVzcz4AAQxnYXPlEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNl5RABME9wdGlvbjxVMjU2PgABFGlucHV0/RIBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXPlEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2Fz5RABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc+UQATBPcHRpb248VTI1Nj4AARRub25jZeUQATBPcHRpb248VTI1Nj4AAQh0byERATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUFEwEwT3B0aW9uPEJ5dGU+AAEUdmFsdWXlEAEwT3B0aW9uPFUyNTY+AAD1EgQYT3B0aW9uBARUAQERAQgQTm9uZQAAABBTb21lBAABEQAAAQAA+RIAAALVEAD9EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV0ARMBNE9wdGlvbjxCeXRlcz4AARBkYXRhARMBNE9wdGlvbjxCeXRlcz4AAAETBBhPcHRpb24EBFQB1RABCBBOb25lAAAAEFNvbWUEANUQAAABAAAFEwQYT3B0aW9uBARUAQkTAQgQTm9uZQAAABBTb21lBAAJEwAAAQAACRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAA0TBBhSZXN1bHQIBFQBERMERQEVEwEICE9rBAAREwAAAAAMRXJyBAAVEwAAAQAAERMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBNQEAFAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAEcZXRoX2dhc7UHARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AABUTDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEAFEKARhTdHJpbmcAAQAAGRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGX8AThPcHRpb248TW9tZW50PgABWHBlcmZvcm1fYmFsYW5jZV9jaGVja3MdEwEwT3B0aW9uPGJvb2w+AAE8c3RhdGVfb3ZlcnJpZGVzIRMBYE9wdGlvbjxTdGF0ZU92ZXJyaWRlU2V0PgAAHRMEGE9wdGlvbgQEVAF1AQEIEE5vbmUAAAAQU29tZQQAdQEAAAEAACETBBhPcHRpb24EBFQBJRMBCBBOb25lAAAAEFNvbWUEACUTAAABAAAlExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5AU3RhdGVPdmVycmlkZVNldAAABAApEwGAQlRyZWVNYXA8QWRkcmVzcywgU3RhdGVPdmVycmlkZT4AACkTBCBCVHJlZU1hcAgESwFxBwRWAS0TAAQARRMAAAAtExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW40U3RhdGVPdmVycmlkZQAAFAEcYmFsYW5jZeUQATBPcHRpb248VTI1Nj4AARRub25jZeUQATBPcHRpb248VTI1Nj4AARBjb2RlARMBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlMRMBXE9wdGlvbjxTdG9yYWdlT3ZlcnJpZGU+AAFobW92ZV9wcmVjb21waWxlX3RvX2FkZHJlc3MhEQE8T3B0aW9uPEFkZHJlc3M+AAAxEwQYT3B0aW9uBARUATUTAQgQTm9uZQAAABBTb21lBAA1EwAAAQAANRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPFN0b3JhZ2VPdmVycmlkZQABCBRTdGF0ZQQAORMBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAAAJFN0YXRlRGlmZgQAORMBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAEAADkTBCBCVHJlZU1hcAgESwE8BFYBPAAEAD0TAAAAPRMAAAJBEwBBEwAABAg8PABFEwAAAkkTAEkTAAAECHEHLRMATRMEGFJlc3VsdAgEVAG1BwRFARUTAQgIT2sEALUHAAAAAAxFcnIEABUTAAABAABREwQYUmVzdWx0CARUAREBBEUBFRMBCAhPawQAEQEAAAAADEVycgQAFRMAAAEAAFUTBBhSZXN1bHQIBFQBWRMERQFlCAEICE9rBABZEwAAAAAMRXJyBABlCAAAAQAAWRMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBNQEACAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXQ1AQEcQmFsYW5jZQAAXRMEGFJlc3VsdAgEVAFhAQRFAWETAQgIT2sEAGEBAAAAAAxFcnIEAGETAAABAABhEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBABlCAE0RGlzcGF0Y2hFcnJvcgACAABlExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEAGkTAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAHETAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQAeRMBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAAGkTBBhPcHRpb24EBFQBbRMBCBBOb25lAAAAEFNvbWUEAG0TAAABAABtExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3N1AQEQYm9vbAABNG9ubHlfdG9wX2NhbGx1AQEQYm9vbAAAcRMEGE9wdGlvbgQEVAF1EwEIEE5vbmUAAAAQU29tZQQAdRMAAAEAAHUTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGV1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAEwZGlzYWJsZV9jb2RldQEBEGJvb2wAAHkTBBhPcHRpb24EBFQBfRMBCBBOb25lAAAAEFNvbWUEAH0TAAABAAB9ExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnl1AQEQYm9vbAABNGRpc2FibGVfc3RhY2t1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhdQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc3UBARBib29sAAEUbGltaXT8ASxPcHRpb248dTY0PgABRG1lbW9yeV93b3JkX2xpbWl0OAEMdTMyAACBEwAAAoUTAIUTAAAECDiJEwCJExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxRUcmFjZQABDBBDYWxsBACNEwEkQ2FsbFRyYWNlAAAAIFByZXN0YXRlBAChEwE0UHJlc3RhdGVUcmFjZQABACRFeGVjdXRpb24EAMETAThFeGVjdXRpb25UcmFjZQACAACNExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyRDYWxsVHJhY2UAADQBEGZyb21xBwEQSDE2MAABDGdhcygBDHU2NAABIGdhc191c2VkKAEMdTY0AAEIdG9xBwEQSDE2MAABFGlucHV01RABFEJ5dGVzAAEYb3V0cHV01RABFEJ5dGVzAAEUZXJyb3K5EgE4T3B0aW9uPFN0cmluZz4AATRyZXZlcnRfcmVhc29uuRIBOE9wdGlvbjxTdHJpbmc+AAEUY2FsbHOREwE4VmVjPENhbGxUcmFjZT4AARBsb2dzlRMBMFZlYzxDYWxsTG9nPgABFHZhbHVl5RABME9wdGlvbjxVMjU2PgABJGNhbGxfdHlwZZ0TASBDYWxsVHlwZQABQGNoaWxkX2NhbGxfY291bnQ4AQx1MzIAAJETAAACjRMAlRMAAAKZEwCZExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxxDYWxsTG9nAAAQARxhZGRyZXNzcQcBEEgxNjAAARh0b3BpY3PAASRWZWM8SDI1Nj4AARBkYXRh1RABFEJ5dGVzAAEgcG9zaXRpb244AQx1MzIAAJ0TFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzIENhbGxUeXBlAAEYEENhbGwAAAAoU3RhdGljQ2FsbAABADBEZWxlZ2F0ZUNhbGwAAgAYQ3JlYXRlAAMAHENyZWF0ZTIABAAwU2VsZmRlc3RydWN0AAUAAKETFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNFByZXN0YXRlVHJhY2UAAQggUHJlc3RhdGUEAKUTAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAAAgRGlmZk1vZGUIAQxwcmWlEwGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEQcG9zdKUTAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAQAApRMEIEJUcmVlTWFwCARLAXEHBFYBqRMABAC5EwAAAKkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzRFByZXN0YXRlVHJhY2VJbmZvAAAQARxiYWxhbmNl5RABME9wdGlvbjxVMjU2PgABFG5vbmNl4AEsT3B0aW9uPHUzMj4AARBjb2RlARMBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlrRMBeEJUcmVlTWFwPEJ5dGVzLCBPcHRpb248Qnl0ZXM+PgAArRMEIEJUcmVlTWFwCARLAdUQBFYBARMABACxEwAAALETAAACtRMAtRMAAAQI1RABEwC5EwAAAr0TAL0TAAAECHEHqRMAwRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM4RXhlY3V0aW9uVHJhY2UAABgBDGdhcygBDHU2NAABPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAAUBiYXNlX2NhbGxfd2VpZ2h0EQEBGFdlaWdodAABGGZhaWxlZHUBARBib29sAAEwcmV0dXJuX3ZhbHVl1RABFEJ5dGVzAAEsc3RydWN0X2xvZ3PFEwFIVmVjPEV4ZWN1dGlvblN0ZXA+AADFEwAAAskTAMkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNEV4ZWN1dGlvblN0ZXAAABwBDGdhc7QBDHU2NAABIGdhc19jb3N0tAEMdTY0AAEsd2VpZ2h0X2Nvc3QRAQEYV2VpZ2h0AAEUZGVwdGjtAwEMdTE2AAEscmV0dXJuX2RhdGHVEAEUQnl0ZXMAARRlcnJvcrkSAThPcHRpb248U3RyaW5nPgABEGtpbmTNEwFERXhlY3V0aW9uU3RlcEtpbmQAAM0TFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzREV4ZWN1dGlvblN0ZXBLaW5kAAEIJEVWTU9wY29kZRQBCHBjYAEMdTMyAAEIb3AMAQh1OAABFHN0YWNr+RIBKFZlYzxCeXRlcz4AARhtZW1vcnn5EgEoVmVjPEJ5dGVzPgABHHN0b3JhZ2XREwHIT3B0aW9uPGFsbG9jOjpjb2xsZWN0aW9uczo6QlRyZWVNYXA8Qnl0ZXMsIEJ5dGVzPj4AAAAoUFZNU3lzY2FsbAwBCG9wDAEIdTgAARBhcmdzYQ8BIFZlYzx1NjQ+AAEgcmV0dXJuZWT8ASxPcHRpb248dTY0PgABAADREwQYT3B0aW9uBARUAdUTAQgQTm9uZQAAABBTb21lBADVEwAAAQAA1RMEIEJUcmVlTWFwCARLAdUQBFYB1RAABADZEwAAANkTAAAC3RMA3RMAAAQI1RDVEADhEwQYT3B0aW9uBARUAYkTAQgQTm9uZQAAABBTb21lBACJEwAAAQAA5RMEGFJlc3VsdAgEVAGJEwRFARUTAQgIT2sEAIkTAAAAAAxFcnIEABUTAAABAADpExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXMhEwFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADtEwQYUmVzdWx0CARUAfETBEUB9RMBCAhPawQA8RMAAAAADEVycgQA9RMAAAEAAPETAAAECDUBOAD1Eww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAAD5EwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAdgYU3lzdGVtBACBCgFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EABELAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBQcmVpbWFnZQQANQsBfHBhbGxldF9wcmVpbWFnZTo6RXJyb3I8UnVudGltZT4ABQAkU2NoZWR1bGVyBABNCwGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4ABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAFELAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ACAA0TmV0d29ya1N1ZmZpeAQAZQsBrGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeDo6RXJyb3I8UnVudGltZT4AmgAgQmFsYW5jZXMEAKkLAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAoAHFZlc3RpbmcEAMULAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4ADgAYQ2xhaW1zBADJCwF0cGFsbGV0X2NsYWltczo6RXJyb3I8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAOELAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAABDAF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAPQwBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAClDAFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBADJDAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAzQwBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXJyb3I8UnVudGltZT4AJAAcVXRpbGl0eQQA0QwBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQA4QwBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAAUNAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAHEluZGljZXMEAA0NAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4AKwAYQXNzZXRzBAA5DQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBABlDQF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEALkNAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAzQ0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQA3Q0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADpDQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEAPUNAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBAD5DQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBTY2FyY2l0eQQAHQ4BlGluZGl2X3BhbGxldF9zY2FyY2l0eTo6RXJyb3I8UnVudGltZT4AOgAMUHNtBAA5DgFocGFsbGV0X3BzbTo6RXJyb3I8UnVudGltZT4AOwAgVHJlYXN1cnkEAE0OAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAIEOAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAyQ4BgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAzQ4BgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AEAAIEJvdW50aWVzBADdDgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBADpDgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBCACRBc3NldFJhdGUEAO0OAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAAJDwGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBEAAxEYXAEAA0PAWhwYWxsZXRfZGFwOjpFcnJvcjxSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EANEJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAUQ8BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEAGUPAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAHkPAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAhQ8BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBACdDwHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEANUPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQAORABkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZACROZnRDbGFpbXMEAFkQAZxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltczo6RXJyb3I8UnVudGltZT4AYABETWVtYmVyc1N1YnNjcmliZXIEAJEQAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFcnJvcjxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBAChEAGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFcnJvcjxSdW50aW1lPgBiABBQZ2FzBACpEAGEaW5kaXZfcGFsbGV0X3BnYXM6OkVycm9yPFJ1bnRpbWU+AGMAGFJldml2ZQQAWREBdHBhbGxldF9yZXZpdmU6OkVycm9yPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAdREBqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFcnJvcjxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAgREBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AJkAEFN1ZG8EAIURAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4A+wAAFQEYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBDkIQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAdQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQBFCBgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AJEJsb2NrU2l6ZQAAOAQADLAgVG90YWwgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjdXJyZW50IGJsb2NrLgDIIFRyYWNrcyB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGFuZCBhbGwgZXh0cmluc2ljcy4AJEJsb2NrSGFzaAEBBAU4PIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy4ANEV4dHJpbnNpY0RhdGEBAQQFOBgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4AGE51bWJlcgEAOBAAAAAABAkBIFRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBiZWluZyBwcm9jZXNzZWQuIFNldCBieSBgZXhlY3V0ZV9ibG9ja2AuAChQYXJlbnRIYXNoAQA8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suABhEaWdlc3QBAGQEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuABhFdmVudHMBAEkIBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLgAoRXZlbnRDb3VudAEAOBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuACxFdmVudFRvcGljcwEBBAI8RQoEACglASBNYXBwaW5nIGJldHdlZW4gYSB0b3BpYyAocmVwcmVzZW50ZWQgYnkgVDo6SGFzaCkgYW5kIGEgdmVjdG9yIG9mIGluZGV4ZXOUIG9mIGV2ZW50cyBpbiB0aGUgYDxFdmVudHM8VD4+YCBsaXN0LgBRASBBbGwgdG9waWMgdmVjdG9ycyBoYXZlIGRldGVybWluaXN0aWMgc3RvcmFnZSBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4gVGhpc0UBIGFsbG93cyBsaWdodC1jbGllbnRzIHRvIGxldmVyYWdlIHRoZSBjaGFuZ2VzIHRyaWUgc3RvcmFnZSB0cmFja2luZyBtZWNoYW5pc20gYW5k5CBpbiBjYXNlIG9mIGNoYW5nZXMgZmV0Y2ggdGhlIGxpc3Qgb2YgZXZlbnRzIG9mIGludGVyZXN0LgBZASBUaGUgdmFsdWUgaGFzIHRoZSB0eXBlIGAoQmxvY2tOdW1iZXJGb3I8VD4sIEV2ZW50SW5kZXgpYCBiZWNhdXNlIGlmIHdlIHVzZWQgb25seSBqdXN0TQEgdGhlIGBFdmVudEluZGV4YCB0aGVuIGluIGNhc2UgaWYgdGhlIHRvcGljIGhhcyB0aGUgc2FtZSBjb250ZW50cyBvbiB0aGUgbmV4dCBibG9jawEBIG5vIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB0aHVzIHRoZSBldmVudCBtaWdodCBiZSBsb3N0LgBITGFzdFJ1bnRpbWVVcGdyYWRlAABJCgQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLgBEQmxvY2tzVGlsbFVwZ3JhZGUAAAwEAATsIE51bWJlciBvZiBibG9ja3MgdGlsbCB0aGUgcGVuZGluZyBjb2RlIHVwZ3JhZGUgaXMgYXBwbGllZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAdQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAHUBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAQQoEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAFUKBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAEQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAFVCAAYMEJsb2NrV2VpZ2h0c1kKiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGhlCjQAAEQAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHRtCkBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9ucQqRBlBuZXh0LWFzc2V0LWh1Yi1wYXNlb1BuZXh0LWFzc2V0LWh1Yi1wYXNlbwEAAAB40i0AAAAAAHjdcY1cxTJi1AEAAAAE5wUhoNPS+AIAAAAWK/GRN6usvQEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAACCUn1h6OFA4wEAAAD+JvwaDdWuAAEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAAVAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml47QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAGBCgAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZy0FBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrhQoIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YT0ICGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAACdCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAAtBgQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQChCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AADFCgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAHUBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQDJCgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAL0KBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAANEKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAOUKBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEA7QqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAPEKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAA/QoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAP0KBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAAELBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEASQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABEBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAAAJCwQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABfQgABChTZWxmUGFyYUlknBDcBQAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAERCwAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAHUBBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAY8FQsEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBjwdCwQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBi0LMQsEAAAAAbwAAYEIAAABNQsAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFODkLBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALMSQsEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjMBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHEAAGFCAAINE1heGltdW1XZWlnaHQRASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAFNCwAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCkQipCAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHQAAGNCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAABFAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVZARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAT0BAAG9CAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAVELAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAVQsEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwBZCxAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwBhCwTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4ANE5ldHdvcmtTdWZmaXgBNE5ldHdvcmtTdWZmaXgENE5ldHdvcmtTdWZmaXgBAGkBGBRwYXNlbwQlASBOZXR3b3JrIHN1ZmZpeCBhcHBlbmRlZCB0byBwcm9kdWN0IG5hbWVzIHdoZW4gZGVyaXZpbmcgcHJvZHVjdCBjb250ZXh0cy4AAWUBAAHBCAAAAWULAAAAmgAAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEANQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBADUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBD0IAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIEaQsEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIEeQsEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgSFCwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBJELBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAW0BAAHFCAAQSEV4aXN0ZW50aWFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAakLABBEUnVudGltZUhvbGRSZWFzb27NCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZTUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJ1AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllcpkLBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBAEkFQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEArQsEAAAAPFR4UGF5bWVudENyZWRpdAAAsQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAEFCQAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABCQkAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgS5CwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQDBCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABgQEAAQ0JAAhETWluVmVzdGVkVHJhbnNmZXI1AUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABxQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAaVATUBBAAAABRUb3RhbAEANQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGlQGdAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAaVAaUBBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgSVAQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAGJAQABEQkABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAHJCwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDNCwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBANELBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABrQEAARUJABgUUG90SWTdCyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB4QsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQB5AQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQB1AQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDlCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDtCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBLUBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF+QsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGxAQABGQkABChLZXlEZXBvc2l0NQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAQEMAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlztQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAFDAQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQANDCAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWS5AQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQAFDAQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAEQwEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAFQwEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQAdDAQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBTEMNQwEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApw1DAQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAOQwwIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAdQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcSQVAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgABvQEAAR0JAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABPQwAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKEEMBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCVQw4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCVQwoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAlUMWQwEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAXQwEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAAaQwEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgJtDHEMBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgSBDAQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQB1AQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAdQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAARAwQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAsUBjQwEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABwQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAEhCQAQRFVuaXZlcnNhbExvY2F0aW9uHQIYAgkCAHEXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAaUMBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABwQMAATEJAAAAAAAgAABEVG9LdXNhbWFYY21Sb3V0ZXIBRFRvS3VzYW1hWGNtUm91dGVyBBhCcmlkZ2UBAK0MRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgABxQMAATUJAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXNA7EMdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAADNAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBb0MwQwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgAByQMAATkJABAgSGVhcFNpemU4EAgAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0DQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgAByQwABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQBYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZARMRXhwb3J0T3BlcmF0aW5nTW9kZQEA1QMEAATYIFRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgdG8gRXRoZXJldW0uAAHRAwABQQkAAAHNDAAAACQAABxVdGlsaXR5AAHlAwABRQkABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAdEMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbvEDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQLVDNkMBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAS0EAAFJCQAMLERlcG9zaXRCYXNlNQFAANu7dwAAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3I1AUAA1DAAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgAB4QwABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQTlDEQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQT1DEQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABOQQAAU0JABhAUHJveHlEZXBvc2l0QmFzZTUBQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcjUBQKBaMgAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZTUBQADSfncAAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcjUBQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAQUNAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlQQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZUEEdQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrQQQcYWdhaW5zdEEEdQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjgJDQQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAFFBAABVQkABBxEZXBvc2l0NQFAANJ+dwAAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgABDQ0ABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgArAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjgRDQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAhkNHQ0EAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgIpDS0NBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4MQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjhNBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAgbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIE9ubHkgcmVhZCBieSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdOiBjb25maWd1cmUgaXQgYXMgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBhbmRVASBwcm92aWRlIGFuIGluaXRpYWwgdmFsdWUgaGVyZSB0byBhcHBseSBhbiBhdXRvLWluY3JlbWVudCBtb2RlbCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABSQQAAVkJABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0NQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXQ1AUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXQ1AUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AATkNABQcQmFsYW5jZTUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJgHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QaCpZ1Rq55IqMjMQY/5cI0qcCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4PQ0EqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkODEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0i6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDhBDQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDhRBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AMgAAHFVuaXF1ZXMBHFVuaXF1ZXMoFENsYXNzAAEEAjhFDQQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAkkNEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuADBDbGFzc0FjY291bnQAAQgCAsUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAUQXNzZXQAAQgCAsxNDQQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuADxDbGFzc01ldGFkYXRhT2YAAQQCOFENBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uAEhJbnN0YW5jZU1ldGFkYXRhT2YAAQgCAsxVDQQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABDAICAlkNXQ0EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAsxhDQQABHAgUHJpY2Ugb2YgYW4gYXNzZXQgaW5zdGFuY2UuAExDb2xsZWN0aW9uTWF4U3VwcGx5AAEEAjg4BAAE8CBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBtaWdodCBoYXZlLgABVQQAAV0JACBEQ29sbGVjdGlvbkRlcG9zaXQ1AUAA6HZIFwAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXQ1AUAA4fUFAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlNQFAoGr6dwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZTUBQACUNXcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZTUBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBCAAAAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4ECAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EEAAAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgABZQ0ACDBDb2xsZWN0aW9uSWQ4BJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLgAzAAAQTmZ0cwEQTmZ0czwoQ29sbGVjdGlvbgABBAI4aQ0EAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgJJDRAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBEQ29sbGVjdGlvbkFjY291bnQAAQgCAsUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBAQ29sbGVjdGlvblJvbGVPZgABCAICGQ1tDQQACNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuoCBTdG9yZXMgY29sbGVjdGlvbiByb2xlcyBhcyBwZXIgYWNjb3VudC4AEEl0ZW0AAQgCAsx1DQQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuAFBDb2xsZWN0aW9uTWV0YWRhdGFPZgABBAI4jQ0EAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4AOEl0ZW1NZXRhZGF0YU9mAAEIAgLMkQ0EAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAARACAgICmQ2dDQQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAICzGENBAAEUCBBIHByaWNlIG9mIGFuIGl0ZW0uAGRJdGVtQXR0cmlidXRlc0FwcHJvdmFsc09mAQEIAgLMpQ0EAARoIEl0ZW0gYXR0cmlidXRlIGFwcHJvdmFscy4AQE5leHRDb2xsZWN0aW9uSWQAADgEAAgxASBTdG9yZXMgdGhlIGBDb2xsZWN0aW9uSWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgY29sbGVjdGlvbi7wIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQuADRQZW5kaW5nU3dhcE9mAAEIAgLMrQ0EAAR8IEhhbmRsZXMgYWxsIHRoZSBwZW5kaW5nIHN3YXBzLgBIQ29sbGVjdGlvbkNvbmZpZ09mAAEEAjhtBAQABGAgQ29uZmlnIG9mIGEgY29sbGVjdGlvbi4AMEl0ZW1Db25maWdPZgABCAICzJUEBAAETCBDb25maWcgb2YgYW4gaXRlbS4AAWkEAAFhCQA4RENvbGxlY3Rpb25EZXBvc2l0NQFAQPH7dwAAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0NQFAEDIBAwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQBBx/wsAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2U1AUAAwusLAAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQAAEAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBBAAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBAAAQAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AOEFwcHJvdmFsc0xpbWl0OBAUAAAABKggVGhlIG1heGltdW0gYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AcEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzTGltaXQ4EB4AAAAE1CBUaGUgbWF4aW11bSBhdHRyaWJ1dGVzIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuABxNYXhUaXBzOBAKAAAABKggVGhlIG1heCBudW1iZXIgb2YgdGlwcyBhIHVzZXIgY291bGQgc2VuZC4ATE1heERlYWRsaW5lRHVyYXRpb244EAAaTwAEqCBUaGUgbWF4IGR1cmF0aW9uIGluIGJsb2NrcyBmb3IgZGVhZGxpbmVzLgBQTWF4QXR0cmlidXRlc1BlckNhbGw4EAoAAAAE4CBUaGUgbWF4IG51bWJlciBvZiBhdHRyaWJ1dGVzIGEgdXNlciBjb3VsZCBzZXQgcGVyIGNhbGwuACBGZWF0dXJlc7ENIAAAAAAAAAAABJAgRGlzYWJsZXMgc29tZSBvZiBwYWxsZXQncyBmZWF0dXJlcy4AAbkNAAwwQ29sbGVjdGlvbklkOCScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uAEkBIFNBRkVUWTogVGhlIGZ1bmN0aW9ucyBpbiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0IGFyZSBmYWxsaWJsZS4gSWYgdGhlIGZ1bmN0aW9uc0EBIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBib3RoIHJldHVybiBgTm9uZWAsIHRoZSBhdXRvbWF0aWMgQ29sbGVjdGlvbklkIGdlbmVyYXRpb24pASBzaG91bGQgbm90IGJlIHVzZWQuIFNvIHRoZSBgY3JlYXRlYCBhbmQgYGZvcmNlX2NyZWF0ZWAgZXh0cmluc2ljcyBhbmQgdGhlTQEgYGNyZWF0ZV9jb2xsZWN0aW9uYCBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBgVW5rbm93bkNvbGxlY3Rpb25gIEVycm9yLiBJbnN0ZWFkIHVzZUEBIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb24uIEhvd2V2ZXIsIGlmIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXRJASBpbXBsZW1lbnRhdGlvbiBoYXMgYW4gaW5jcmVtZW50YWwgb3JkZXIsIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb278IHNob3VsZCBub3QgYmUgdXNlZCBhcyBpdCBjYW4gY2xhaW0gYSB2YWx1ZSBpbiB0aGUgSUQgc2VxdWVuY2UuGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi5ET2ZmY2hhaW5TaWduYXR1cmW9BAxoIE9mZi1DaGFpbiBzaWduYXR1cmUgdHlwZS4ACQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpPZmZjaGFpblB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4ANAAANEZvcmVpZ25Bc3NldHMBNEZvcmVpZ25Bc3NldHMYFEFzc2V0AAEEAhkCEQ0EAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgK9DR0NBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICwQ0tDQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCGQLFDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCGQLNBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAAZAgQAIG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBPbmx5IHJlYWQgYnkgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXTogY29uZmlndXJlIGl0IGFzIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gYW5kVQEgcHJvdmlkZSBhbiBpbml0aWFsIHZhbHVlIGhlcmUgdG8gYXBwbHkgYW4gYXV0by1pbmNyZW1lbnQgbW9kZWwgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAckEAAFpCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdDUBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0NQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2U1AUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlNQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0NQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAHNDQAUHEJhbGFuY2U1AQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQZAgSMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlchkCHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGHRBAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEDDmSlYCb0tePC0ZYoOpoX2nApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkGQI9DQSoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1TGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQZAjEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZBkC0Q0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9ZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQZAtUEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA1AAAoUG9vbEFzc2V0cwEoUG9vbEFzc2V0cxgUQXNzZXQAAQQCOBENBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICGQ0dDQQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAikNLQ0EAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjjVDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOE0EBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACBtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgT25seSByZWFkIGJ5IFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF06IGNvbmZpZ3VyZSBpdCBhcyBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGFuZFUBIHByb3ZpZGUgYW4gaW5pdGlhbCB2YWx1ZSBoZXJlIHRvIGFwcGx5IGFuIGF1dG8taW5jcmVtZW50IG1vZGVsIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHZBAABbQkAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXQ1AUAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdDUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlNQFAAAAAAAAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZTUBQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgAB3Q0AFBxCYWxhbmNlNQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjgcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBNsGuhym8Yse2wb/CC0kQJpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDg9DQSoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4MQEEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOOENBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOFEEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA2AAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAnUJ5Q0EAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgAB3QQAAXEJABwUTFBGZWX9BBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZTUBQEAtk+8AAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0GQIIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWX9BBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHk1AUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElk3QsgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAekNAAgkQXNzZXRLaW5kGQIIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZHUJBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDEZAhhhc3NldDIZAu0NCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxGQIYYXNzZXQyGQIYYW1vdW50NQEsaW5jbHVkZV9mZWV1ATEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4ANwAANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAhkNkQsEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4RnJvemVuQmFsYW5jZXMAAQgCAhkNNQEEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABgQkAAAH1DQAETFJ1bnRpbWVGcmVlemVSZWFzb26ZCwR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA4AAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgIZDYULBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAICGQ01AQQABGkBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGJhbGFuY2Ugb24gaG9sZCBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABhQkAAAH5DQAERFJ1bnRpbWVIb2xkUmVhc29uzQgEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOQAAIFNjYXJjaXR5ASBTY2FyY2l0eTBATmV4dENvbGxlY3Rpb25JZAEAOBAAAAAABLAgVGhlIG5leHQgY29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIGFsbG9jYXRlLgAsQ29sbGVjdGlvbnMAAQQFOP0NBAAE4CBJbW11dGFibGUgaXRlbSBjYXRhbG9ndWVzLCBncm91cGVkIGJ5IHRoZWlyIGNvbGxlY3Rpb24uACBJdGVtRGVmcwABCAUFzAUOBAAE9CBJbW11dGFibGUgaXRlbSBkZWZpbml0aW9ucywgaW5kZXhlZCB3aXRoaW4gdGhlaXIgY29sbGVjdGlvbi4ASENvbGxlY3Rpb25NZXRhZGF0YQABCAUCCQ4NDgQADAkBIENvbGxlY3Rpb24td2lkZSBkZWZhdWx0cyBpbmhlcml0ZWQgYnkgZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uAC0BIEVudHJpZXMgbXVzdCBiZSByZW1vdmVkIGluZGl2aWR1YWxseSBiZWZvcmUgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGRlbGV0ZWQuADBJdGVtTWV0YWRhdGEAAQwFBQIRDg0OBAAUHQEgUGVyLWl0ZW0gZGVmYXVsdHMgd2hpY2ggb3ZlcnJpZGUgY29sbGVjdGlvbiBkZWZhdWx0cyBmb3IgdGhlIHNhbWUga2V5LgBFASBUaGVzZSBlbnRyaWVzIGFyZSBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGl0ZW0gZGVmaW5pdGlvbi4gSXRlbWUBIGRlZmluaXRpb25zIG91dGxpdmUgbWludGVkIGluc3RhbmNlcywgc28gYnVybmluZyBhbiBpbnN0YW5jZSBuZXZlciByZW1vdmVzIHRoZW0uIEVudHJpZXMhASBtdXN0IGJlIHJlbW92ZWQgaW5kaXZpZHVhbGx5IGJlZm9yZSB0aGUgaXRlbSBkZWZpbml0aW9uIGNhbiBiZSBkZWxldGVkLgA4TmV4dEluc3RhbmNlSWQBACggAAAAAAAAAAAE0CBUaGUgbmV4dCBwZXJtYW5lbnQgaW5zdGFuY2UgaWRlbnRpZmllciB0byBhbGxvY2F0ZS4ALE5mdHNCeU93bmVyAAEEAgQJBAQABLQgT25lIE5GVCBwZXIgb3duZXIga2V5IOKAlCB0aGUgY29pbmFnZSBtb2RlbC4AJEluc3RhbmNlcwABBAUoBAQABCEBIFN0YWJsZSByZXZlcnNlIGluZGV4IGZyb20gaW5zdGFuY2UgaWRlbnRpZmllciB0byBpdHMgY3VycmVudCBvd25lciBrZXkuAEBJbnN0YW5jZURlcG9zaXRzAAEEBSg1AQQABDEBIEV4YWN0IHBlci1pbnN0YW5jZSBzdG9yYWdlIGRlcG9zaXRzLCBwcmVzZW50IG9ubHkgZm9yIGRlcG9zaXQtcGF5aW5nIG1pbnRzLgBUSW5zdGFuY2VNZXRhZGF0YUNvdW50AQEEBSg4EAAAAAAQ8CBOdW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBmb3IgZWFjaCBsaXZlIGluc3RhbmNlLgBJASBUaGlzIGVudHJ5IGV4aXN0cyBldmVuIHdoZW4gdGhlIGNvdW50IGlzIHplcm8gc28gYnVybiBjbGVhbnVwIHJlbWFpbnMgYm91bmRlZCBhbmRJASBgdHJ5X3N0YXRlYCBjYW4gdmVyaWZ5IHRoYXQgZXZlcnkgbGl2ZSBpbnN0YW5jZSBoYXMgZXhwbGljaXQgbWV0YWRhdGEgYWNjb3VudGluZy4AQEluc3RhbmNlTWV0YWRhdGEAAQgFAhUODQ4EAARNASBQZXItaW5zdGFuY2UgZW50cmllcyB3aGljaCBvdmVycmlkZSBpdGVtIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGZvciB0aGUgc2FtZSBrZXkuABhMb2NrZWQAAQQCBBkOBAAQvCBQb3N0LWZhaWx1cmUgYmFja29mZiBsb2NrcyBmb3IgTkZUIHB1cnNlIGtleXMuAFkBIEEgc2VwYXJhdGUgbG9jayBleHBsaWNpdGx5IHJlamVjdHMgdHJhbnNhY3Rpb25zIGR1cmluZyBiYWNrb2ZmLiBVcGRhdGluZyBgbGFzdF9tb3ZlZGAVASB3b3VsZCBvbmx5IGxvd2VyIHRyYW5zYWN0aW9uIHByaW9yaXR5IGFuZCB3b3VsZCBub3QgZW5mb3JjZSBhIGRlbGF5LgAB5QQAAYkJABQkTWF4S2V5TGVuOBAgAAAABKQgTWF4aW11bSBieXRlIGxlbmd0aCBvZiBvbmUgbWV0YWRhdGEga2V5LgAsTWF4VmFsdWVMZW44EAABAAAErCBNYXhpbXVtIGJ5dGUgbGVuZ3RoIG9mIG9uZSBtZXRhZGF0YSB2YWx1ZS4ATE1heEluc3RhbmNlTWV0YWRhdGE4EGQAAAAMCQEgTWF4aW11bSBudW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBvbiBvbmUgbGl2ZSBpbnN0YW5jZS4ARQEgVGhpcyBib3VuZHMgYnVybiBjbGVhbnVwIGluZGVwZW5kZW50bHkgb2YgaG93IG1hbnkgbXV0YXRpb24gY2FsbHMgYXJlIHN1Ym1pdHRlZC4AKExvY2tQZXJpb2QoIDwAAAAAAAAABAEBIEJhc2UgbG9jayBwZXJpb2QgYWZ0ZXIgYSBmYWlsZWQgcHVyc2Uta2V5IGRpc3BhdGNoLCBpbiBzZWNvbmRzLgBMTWF4VHJhbnNmZXJQcmlvcml0eSggQEIPAAAAAAAErCBQcmlvcml0eSBjZWlsaW5nIGZvciByZXN0ZWQgTkZUIHRyYW5zZmVycy4AAR0OAAAAOgAADFBzbQEMUHNtHAxQc20AAQQCGQIhDgQABOggUmVnaXN0ZXJlZCBQU00gaW5zdGFuY2VzLCBrZXllZCBieSB0aGUgaW50ZXJuYWwgYXNzZXQgaWQuACBQc21BZG1pbgABBAIZAiUOBAAMOQEgQWRtaW4gb3JpZ2lucyBhbmQgY3JlYXRpb24tZGVwb3NpdCBib29ra2VlcGluZyBwZXIgUFNNLCBrZXllZCBieSB0aGUgaW50ZXJuYWxBASBhc3NldCBpZC4gSGVsZCBzZXBhcmF0ZWx5IGZyb20gW2BQc21gXSBzbyBzd2FwcyBuZXZlciBkZWNvZGUgdGhlIGFkbWluIG9yaWdpbnMuKQEgQWx3YXlzIHdyaXR0ZW4gYW5kIHJlbW92ZWQgdG9nZXRoZXIgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBbYFBzbWBdIGVudHJ5LgAcUHNtRGVidAEBCAICdQk1AUAAAAAAAAAAAAAAAAAAAAAABCUBIEludGVybmFsLWFzc2V0IGRlYnQgbWludGVkIHRocm91Z2ggUFNNLCBwZXIgYChpbnRlcm5hbCwgZXh0ZXJuYWwpYCBwYWlyLgAoTWludGluZ0ZlZQEBCAICdQn9BBCIEwAACEEBIEZlZSBmb3IgZXh0ZXJuYWwg4oaSIGludGVybmFsIHN3YXBzIChtaW50aW5nKSwgcGVyIGAoaW50ZXJuYWwsIGV4dGVybmFsKWAgcGFpci5IIERlZmF1bHRzIHRvIDAuNSUuADRSZWRlbXB0aW9uRmVlAQEIAgJ1Cf0EEIgTAAAITQEgRmVlIGZvciBpbnRlcm5hbCDihpIgZXh0ZXJuYWwgc3dhcHMgKHJlZGVtcHRpb24pLCBwZXIgYChpbnRlcm5hbCwgZXh0ZXJuYWwpYCBwYWlyLkggRGVmYXVsdHMgdG8gMC41JS4ASEFzc2V0Q2VpbGluZ1dlaWdodAEBCAICdQn9BBAAAAAACEEBIFBlci1leHRlcm5hbCBjZWlsaW5nIHdlaWdodCB3aXRoaW4gYSBQU00sIG5vcm1hbGlzZWQgYWdhaW5zdCB0aGUgc3VtIG9mIHdlaWdodHMBASBmb3IgdGhlIHNhbWUgaW5zdGFuY2UuIFplcm8gZGlzYWJsZXMgbWludGluZyBmb3IgdGhhdCBleHRlcm5hbC4AOEV4dGVybmFsQXNzZXRzAAEIAgJ1CTUOBAAEiCBBcHByb3ZlZCBleHRlcm5hbCBhc3NldHMgcGVyIFBTTS4AAfkEAAGNCQAIIFBhbGxldElk3QsgcHkvcGVnc20E/CBQYWxsZXRJZCBmb3IgZGVyaXZpbmcgZWFjaCBQU00gaW5zdGFuY2UncyByZXNlcnZlIHN1Yi1hY2NvdW50LgAwTWF4RXh0ZXJuYWxzOBAFAAAABPQgTWF4aW11bSBudW1iZXIgb2YgYXBwcm92ZWQgZXh0ZXJuYWwgYXNzZXRzIHBlciBQU00gaW5zdGFuY2UuAAE5DgAINFBhbGxldHNPcmlnaW7xAwg9ASBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cycgb3JpZ2lucy4gU3RvcmVkIGFzIGEgUFNNJ3MdASBgZnVsbF9hZG1pbmAgLyBgZW1lcmdlbmN5X2FkbWluYCBhbmQgbWF0Y2hlZCBhZ2FpbnN0IGluY29taW5nIG9yaWdpbnMuHEFzc2V0SWQZAgRcIEFzc2V0IGlkZW50aWZpZXIgdHlwZS4AOwAAIFRyZWFzdXJ5ASBUcmVhc3VyeRw0UHJvcG9zYWxDb3VudAEAOBAAAAAAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgCkIE51bWJlciBvZiBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AJFByb3Bvc2FscwABBAU4PQ4EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ALERlYWN0aXZhdGVkAQA1AUAAAAAAAAAAAAAAAAAAAAAABPAgVGhlIGFtb3VudCB3aGljaCBoYXMgYmVlbiByZXBvcnRlZCBhcyBpbmFjdGl2ZSB0byBDdXJyZW5jeS4AJEFwcHJvdmFscwEAQQ4EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4A+CBQcm9wb3NhbCBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGF3YXJkZWQuAChTcGVuZENvdW50AQA4EAAAAAAEpCBUaGUgY291bnQgb2Ygc3BlbmRzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuABhTcGVuZHMAAQQFOEUOBAAE0CBTcGVuZHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYW5kIGJlaW5nIHByb2Nlc3NlZC4APExhc3RTcGVuZFBlcmlvZAAAOAQABNQgVGhlIGJsb2NrbnVtYmVyIGZvciB0aGUgbGFzdCB0cmlnZ2VyZWQgc3BlbmQgcGVyaW9kLgABBQUIAwKVAVRoZSBgc3BlbmRfbG9jYWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBNaWdyYXRlIHRvIHRoZSBuZXcgZmxvdyBhbmQgdXNlIHRoZSBgc3BlbmRgIGNhbGwuAAQCtQFUaGUgYHJlbW92ZV9hcHByb3ZhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIEl0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVwcmVjYXRlZCBgc3BlbmRfbG9jYWxgIGNhbGwuAAGRCQAYLFNwZW5kUGVyaW9kOBDAqAAABIggUGVyaW9kIGJldHdlZW4gc3VjY2Vzc2l2ZSBzcGVuZHMuABBCdXJu/QQQAAAAAAQRASBQZXJjZW50YWdlIG9mIHNwYXJlIGZ1bmRzIChpZiBhbnkpIHRoYXQgYXJlIGJ1cm50IHBlciBzcGVuZCBwZXJpb2QuACBQYWxsZXRJZN0LIHB5L3Ryc3J5BBkBIFRoZSB0cmVhc3VyeSdzIHBhbGxldCBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgAwTWF4QXBwcm92YWxzOBBkAAAAGEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgAVASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgY2FuIHdhaXQgaW4gdGhlIHNwZW5kaW5nIHF1ZXVlLgBNASBOT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHNvIHVzZWQgd2l0aGluIHRoZSBCb3VudGllcyBQYWxsZXQgZXh0ZW5zaW9uIGlmIGVuYWJsZWQuADBQYXlvdXRQZXJpb2Q4EADhAAAEGQEgVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggYW4gYXBwcm92ZWQgdHJlYXN1cnkgc3BlbmQgaGFzIHRvIGJlIGNsYWltZWQuACxwb3RfYWNjb3VudASAbW9kbHB5L3Ryc3J5AAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAU0OAAgkQXNzZXRLaW5kCQUELQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB0byBiZSBzcGVudCBmcm9tIHRoZSB0cmVhc3VyeS4sQmVuZWZpY2lhcnkNBQRdASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgdHJlYXN1cnkgc3BlbmRzLgA8AABAQ29udmljdGlvblZvdGluZwFAQ29udmljdGlvblZvdGluZwgkVm90aW5nRm9yAQEIBQVRDlUO2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1ASBBbGwgdm90aW5nIGZvciBhIHBhcnRpY3VsYXIgdm90ZXIgaW4gYSBwYXJ0aWN1bGFyIHZvdGluZyBjbGFzcy4gV2Ugc3RvcmUgdGhlIGJhbGFuY2UgZm9yIHRoZZwgbnVtYmVyIG9mIHZvdGVzIHRoYXQgd2UgaGF2ZSByZWNvcmRlZC4ANENsYXNzTG9ja3NGb3IBAQQFBHUOBAAMaQEgVGhlIHZvdGluZyBjbGFzc2VzIHdoaWNoIGhhdmUgYSBub24temVybyBsb2NrIHJlcXVpcmVtZW50IGFuZCB0aGUgbG9jayBhbW91bnRzIHdoaWNoIHRoZXltASByZXF1aXJlLiBUaGUgYWN0dWFsIGFtb3VudCBsb2NrZWQgb24gYmVoYWxmIG9mIHRoaXMgcGFsbGV0IHNob3VsZCBhbHdheXMgYmUgdGhlIG1heGltdW0gb2YsIHRoaXMgbGlzdC4AAREFAAGVCQAIIE1heFZvdGVzOBAAAgAAEPAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdm90ZXMgYW4gYWNjb3VudCBtYXkgaGF2ZS4AVQEgQWxzbyB1c2VkIHRvIGNvbXB1dGUgd2VpZ2h0LCBhbiBvdmVybHkgbGFyZ2UgdmFsdWUgY2FuIGxlYWQgdG8gZXh0cmluc2ljcyB3aXRoIGxhcmdlwCB3ZWlnaHQgZXN0aW1hdGlvbjogc2VlIGBkZWxlZ2F0ZWAgZm9yIGluc3RhbmNlLgBEVm90ZUxvY2tpbmdQZXJpb2Q4EMCJAQAQkCBUaGUgbWluaW11bSBwZXJpb2Qgb2Ygdm90ZSBsb2NraW5nLgBlASBJdCBzaG91bGQgYmUgbm8gc2hvcnRlciB0aGFuIGVuYWN0bWVudCBwZXJpb2QgdG8gZW5zdXJlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYW4gYXBwcm92YWwsSQEgdGhvc2Ugc3VjY2Vzc2Z1bCB2b3RlcnMgYXJlIGxvY2tlZCBpbnRvIHRoZSBjb25zZXF1ZW5jZXMgdGhhdCB0aGVpciB2b3RlcyBlbnRhaWwuAAGBDgAAAD0AACRSZWZlcmVuZGEBJFJlZmVyZW5kYRQ8UmVmZXJlbmR1bUNvdW50AQA4EAAAAAAEMQEgVGhlIG5leHQgZnJlZSByZWZlcmVuZHVtIGluZGV4LCBha2EgdGhlIG51bWJlciBvZiByZWZlcmVuZGEgc3RhcnRlZCBzbyBmYXIuAERSZWZlcmVuZHVtSW5mb0ZvcgABBAI4hQ4EAAS0IEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgYW55IGdpdmVuIHJlZmVyZW5kdW0uAChUcmFja1F1ZXVlAQEEBe0DpQ4EABBdASBUaGUgc29ydGVkIGxpc3Qgb2YgcmVmZXJlbmRhIHJlYWR5IHRvIGJlIGRlY2lkZWQgYnV0IG5vdCB5ZXQgYmVpbmcgZGVjaWRlZCwgb3JkZXJlZCBieXwgY29udmljdGlvbi13ZWlnaHRlZCBhcHByb3ZhbHMuAEEBIFRoaXMgc2hvdWxkIGJlIGVtcHR5IGlmIGBEZWNpZGluZ0NvdW50YCBpcyBsZXNzIHRoYW4gYFRyYWNrSW5mbzo6bWF4X2RlY2lkaW5nYC4ANERlY2lkaW5nQ291bnQBAQQF7QM4EAAAAAAExCBUaGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBiZWluZyBkZWNpZGVkIGN1cnJlbnRseS4AKE1ldGFkYXRhT2YAAQQCODwEABgFASBUaGUgbWV0YWRhdGEgaXMgYSBnZW5lcmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIHJlZmVyZW5kdW0uSQEgVGhlIGBIYXNoYCByZWZlcnMgdG8gdGhlIHByZWltYWdlIG9mIHRoZSBgUHJlaW1hZ2VzYCBwcm92aWRlciB3aGljaCBjYW4gYmUgYSBKU09OiCBkdW1wIG9yIElQRlMgaGFzaCBvZiBhIEpTT04gZmlsZS4AdQEgQ29uc2lkZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIGEgbWV0YWRhdGEgb2YgZmluaXNoZWQgcmVmZXJlbmR1bXMgdG8gYHVucmVxdWVzdGAgKHJlbW92ZSlEIGxhcmdlIHByZWltYWdlcy4AASUFAAGZCQAURFN1Ym1pc3Npb25EZXBvc2l0NQFAAOh2SBcAAAAAAAAAAAAAAAQ1ASBUaGUgbWluaW11bSBhbW91bnQgdG8gYmUgdXNlZCBhcyBhIGRlcG9zaXQgZm9yIGEgcHVibGljIHJlZmVyZW5kdW0gcHJvcG9zYWwuACRNYXhRdWV1ZWQ4EGQAAAAE5CBNYXhpbXVtIHNpemUgb2YgdGhlIHJlZmVyZW5kdW0gcXVldWUgZm9yIGEgc2luZ2xlIHRyYWNrLgBEVW5kZWNpZGluZ1RpbWVvdXQ4EMCoAAAIVQEgVGhlIG51bWJlciBvZiBibG9ja3MgYWZ0ZXIgc3VibWlzc2lvbiB0aGF0IGEgcmVmZXJlbmR1bSBtdXN0IGJlZ2luIGJlaW5nIGRlY2lkZWQgYnku5CBPbmNlIHRoaXMgcGFzc2VzLCB0aGVuIGFueW9uZSBtYXkgY2FuY2VsIHRoZSByZWZlcmVuZHVtLgA0QWxhcm1JbnRlcnZhbDgQAQAAAAxdASBRdWFudGl6YXRpb24gbGV2ZWwgZm9yIHRoZSByZWZlcmVuZHVtIHdha2V1cCBzY2hlZHVsZXIuIEEgaGlnaGVyIG51bWJlciB3aWxsIHJlc3VsdCBpbl0BIGZld2VyIHN0b3JhZ2UgcmVhZHMvd3JpdGVzIG5lZWRlZCBmb3Igc21hbGxlciB2b3RlcnMsIGJ1dCBhbHNvIHJlc3VsdCBpbiBkZWxheXMgdG8gdGhlVQEgYXV0b21hdGljIHJlZmVyZW5kdW0gc3RhdHVzIGNoYW5nZXMuIEV4cGxpY2l0IHNlcnZpY2luZyBpbnN0cnVjdGlvbnMgYXJlIHVuYWZmZWN0ZWQuABhUcmFja3OxDhUaQAAAZHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAIDGpH6NAwAAAAAAAAAAALAEAAAAJwYAQDgAAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQEAZHdoaXRlbGlzdGVkX2NhbGxlcgAAAAAAAABkAAAAAEB6EPNaAAAAAAAAAAAAACwBAAAAJwYAZAAAAGQAAAAC7JclEAAAAAB7VzwXAAAAAEI5LxIAAAAAAg4AhAAAAAAA1uYfAQAAAAA5YnkCAAAAAAIAZHdpc2hfZm9yX2NoYW5nZQAAAAAAAAAAAAAKAAAAAID0IOa1AAAAAAAAAAAAALAEAAAAJwYAQDgAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQoAZHN0YWtpbmdfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////wsAZHRyZWFzdXJlcgAAAAAAAAAAAAAAAAAAAAACAAAAAKAxqV/jAAAAAAAAAAAAALAEAAAAJwYAwIkBAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjuAlpgAAGXNHQwAZGxlYXNlX2FkbWluAAAAAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w0AZGZlbGxvd3NoaXBfYWRtaW4AAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w4AZGdlbmVyYWxfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////w8AZGF1Y3Rpb25fYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////xQAZHJlZmVyZW5kdW1fY2FuY2VsbGVyAAAAAAD0AQAAACA9iHktAAAAAAAAAAAAALAEAADAiQEACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////xUAZHJlZmVyZW5kdW1fa2lsbGVyAAAAAAAAAADoAwAAAEBjUr/GAQAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////x4AZHNtYWxsX3RpcHBlcgAAAAAAAAAAAAAAAADIAAAAAOQLVAIAAAAAAAAAAAAAAAoAAADAiQEAZAAAAAoAAAAASZFJFQBlzR0Aypo7Avm6GAAAAAAAKk0xAAAAAABrWef//////x8AZGJpZ190aXBwZXIAAAAAAAAAAAAAAAAAAABkAAAAAOh2SBcAAAAAAAAAAAAAAGQAAADAiQEAWAIAAGQAAAAASZFJFQBlzR0Aypo7AmlPPwAAAAAANZZ9AAAAAADlNMH//////yAAZHNtYWxsX3NwZW5kZXIAAAAAAAAAAAAAAAAFAAAAAKByThgJAAAAAAAAAAAAAGAJAAAAJwYAgHAAAEA4AAAAyUMwJABlzR0Aypo7AgqzOgAAAAAAU611AAAAAAA3CxIAAAAAACEAZG1lZGl1bV9zcGVuZGVyAAAAAAAAAAAAAAAyAAAAACBKqdEBAAAAAAAAAAAAAGAJAAAAJwYAAOEAAEA4AAAAWwH2MABlzR0Aypo7AiCeaQAAAAAAT3fSAAAAAAD+HOT//////yIAZGJpZ19zcGVuZGVyAAAAAAAAAAAAAAAAAAADAAAAACA9iHktAAAAAAAAAAAAAGAJAAAAJwYAwIkBAEA4AAAAAMqaOwBlzR0Aypo7As1YYgAAAAAAWyTFAAAAAAA1WREAAAAAAAxIIEEgbGlzdCBvZiB0cmFja3MuAF0BIE5vdGU6IGlmIHRoZSB0cmFja3MgYXJlIGR5bmFtaWMsIHRoZSB2YWx1ZSBpbiB0aGUgc3RhdGljIG1ldGFkYXRhIG1pZ2h0IGJlIGluYWNjdXJhdGUuAAHJDgAMLFJ1bnRpbWVDYWxsIAAUVm90ZXM1AQTMIFRoZSBjb3VudGluZyB0eXBlIGZvciB2b3Rlcy4gVXN1YWxseSBqdXN0IGJhbGFuY2UuFFRhbGx5nQkETCBUaGUgdGFsbHlpbmcgdHlwZS4APgAAHE9yaWdpbnMAAAAAAAAAPwAAJFdoaXRlbGlzdAEkV2hpdGVsaXN0BDxXaGl0ZWxpc3RlZENhbGwAAQQFPBAEAAAAATkFAAGhCQAAAc0OAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AQAAAIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU40Q4EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuAEhCb3VudHlEZXNjcmlwdGlvbnMAAQQFONkOBAAEgCBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBib3VudHkuADxCb3VudHlBcHByb3ZhbHMBAEEOBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAAE9BQABsQkAJERCb3VudHlEZXBvc2l0QmFzZTUBQACODAEAAAAAAAAAAAAAAAAE6CBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgcGxhY2luZyBhIGJvdW50eSBwcm9wb3NhbC4AYEJvdW50eURlcG9zaXRQYXlvdXREZWxheTgQAAAAAARZASBUaGUgZGVsYXkgcGVyaW9kIGZvciB3aGljaCBhIGJvdW50eSBiZW5lZmljaWFyeSBuZWVkIHRvIHdhaXQgYmVmb3JlIGNsYWltIHRoZSBwYXlvdXQuAEhCb3VudHlVcGRhdGVQZXJpb2Q4EAAEFwMY9CBUaGUgdGltZSBsaW1pdCBmb3IgYSBjdXJhdG9yIHRvIGFjdCBiZWZvcmUgYSBib3VudHkgZXhwaXJlcy4AVQEgVGhlIHBlcmlvZCB0aGF0IHN0YXJ0cyB3aGVuIGEgY3VyYXRvciBpcyBhcHByb3ZlZCwgZHVyaW5nIHdoaWNoIHRoZXkgbXVzdCBleGVjdXRlIG9yVQEgdXBkYXRlIHRoZSBib3VudHkgdmlhIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuIElmIG1pc3NlZCwgdGhlIGJvdW50eSBleHBpcmVzLCBhbmQgdGhlVQEgY3VyYXRvciBtYXkgYmUgc2xhc2hlZC4gSWYgYEJsb2NrTnVtYmVyRm9yOjpNQVhgLCBib3VudGllcyBzdGF5IGFjdGl2ZSBpbmRlZmluaXRlbHksuCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4AYEN1cmF0b3JEZXBvc2l0TXVsdGlwbGllcv0EECChBwAQGQEgVGhlIGN1cmF0b3IgZGVwb3NpdCBpcyBjYWxjdWxhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY3VyYXRvciBmZWUuADkBIFRoaXMgZGVwb3NpdCBoYXMgb3B0aW9uYWwgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyB3aXRoIGBDdXJhdG9yRGVwb3NpdE1heGAgYW5kVCBgQ3VyYXRvckRlcG9zaXRNaW5gLgBEQ3VyYXRvckRlcG9zaXRNYXgxAUQBACBKqdEBAAAAAAAAAAAAAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4AREN1cmF0b3JEZXBvc2l0TWluMQFEAQDodkgXAAAAAAAAAAAAAAAESQEgTWluaW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAEhCb3VudHlWYWx1ZU1pbmltdW01AUAA6HZIFwAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAEhEYXRhRGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAABGEBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IHBlciBieXRlIHdpdGhpbiB0aGUgdGlwIHJlcG9ydCByZWFzb24gb3IgYm91bnR5IGRlc2NyaXB0aW9uLgBMTWF4aW11bVJlYXNvbkxlbmd0aDgQAEAAAAyIIE1heGltdW0gYWNjZXB0YWJsZSByZWFzb24gbGVuZ3RoLgBlASBCZW5jaG1hcmtzIGRlcGVuZCBvbiB0aGlzIHZhbHVlLCBiZSBzdXJlIHRvIHVwZGF0ZSB3ZWlnaHRzIGZpbGUgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlAAHdDgAAAEEAADRDaGlsZEJvdW50aWVzATRDaGlsZEJvdW50aWVzHEBDaGlsZEJvdW50eUNvdW50AQA4EAAAAAAIbQEgREVQUkVDQVRFRDogUmVwbGFjZWQgd2l0aCBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYCBzdG9yYWdlIGl0ZW0ga2VlcGluZyBkZWRpY2F0ZWQgY291bnRzVQEgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzLiBXaWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuAExQYXJlbnRDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAIzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LuAgTWFwIG9mIHBhcmVudCBib3VudHkgaW5kZXggdG8gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzLgBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAEQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgA0Q2hpbGRCb3VudGllcwABCAUFzOEOBAAElCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AZENoaWxkQm91bnR5RGVzY3JpcHRpb25zVjEAAQgFBczZDgQADCkBIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGNoaWxkLWJvdW50eS4gSW5kZXhlZCBieSBgKHBhcmVudF9pZCwgY2hpbGRfaWQpYC4AbQEgVGhpcyBpdGVtIHJlcGxhY2VzIHRoZSBgQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNgIHN0b3JhZ2UgaXRlbSBmcm9tIHRoZSBWMCBzdG9yYWdlIHZlcnNpb24uAFBWMFRvVjFDaGlsZEJvdW50eUlkcwABBAU4zAQAFF0BIFRoZSBtYXBwaW5nIG9mIHRoZSBjaGlsZCBib3VudHkgaWRzIGZyb20gc3RvcmFnZSB2ZXJzaW9uIGBWMGAgdG8gdGhlIG5ldyBgVjFgIHZlcnNpb24uAG0BIFRoZSBgVjBgIGlkcyBiYXNlZCBvbiB0b3RhbCBjaGlsZCBib3VudHkgY291bnQgW2BDaGlsZEJvdW50eUNvdW50YF1gLiBUaGUgYFYxYCB2ZXJzaW9uIGlkc0EBIGJhc2VkIG9uIHRoZSBjaGlsZCBib3VudHkgY291bnQgcGVyIHBhcmVudCBib3VudHkgW2BQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgXS5lASBUaGUgaXRlbSBpbnRlbmRlZCBzb2xlbHkgZm9yIGNsaWVudCBjb252ZW5pZW5jZSBhbmQgbm90IHVzZWQgaW4gdGhlIHBhbGxldCdzIGNvcmUgbG9naWMuAExDaGlsZHJlbkN1cmF0b3JGZWVzAQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAABAEBIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZlZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LgABQQUAAbUJAAhkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bTUBQADkC1QCAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AAekOAAAAQgAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAgkFSQUEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAAUUFAAG5CQAAAe0OAAQkQXNzZXRLaW5kCQUERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AQwAASE11bHRpQXNzZXRCb3VudGllcwFITXVsdGlBc3NldEJvdW50aWVzHCxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTjxDgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ANENoaWxkQm91bnRpZXMAAQgFBcz9DgQADJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgBYQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbFRvdGFsQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbENoaWxkQm91bnRpZXNWYWx1ZVBlclBhcmVudAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAABBtASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgdmFsdWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gVG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSBwYXJlbnSQIGJvdW50eSBwYXlvdXQgd2hlbiBhd2FyZGluZyBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuADhDdXJhdG9yRGVwb3NpdAABCAUFAQ8FDwQALGUBIFRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaW5jdXJyZWQgYnkgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciBmb3IgY29tbWl0dGluZyB0byB0aGUgcm9sZS4AcQEgRGV0ZXJtaW5lZCBieSBbYHBhbGxldDo6Q29uZmlnOjpDb25zaWRlcmF0aW9uYF0uIEl0IGlzIGNyZWF0ZWQgd2hlbiB0aGUgY3VyYXRvciBhY2NlcHRzIHRoZUUBIHJvbGUsIGFuZCBpcyBlaXRoZXIgYnVybmVkIGlmIHRoZSBjdXJhdG9yIG1pc2JlaGF2ZXMgb3IgY29uc3VtZWQgdXBvbiBzdWNjZXNzZnVshCBjb21wbGV0aW9uIG9mIHRoZSBjaGlsZC0vYm91bnR5LgARASBOb3RlOiBJZiB0aGUgcGFyZW50IGN1cmF0b3IgaXMgYWxzbyBhc3NpZ25lZCB0byB0aGUgY2hpbGQtYm91bnR5LCAgDQEgdGhlIGNvbnNpZGVyYXRpb24gY29zdCBpcyBjaGFyZ2VkIG9ubHkgb25jZSDigJQgd2hlbiB0aGUgY3VyYXRvciAgoCBhY2NlcHRzIHRoZSByb2xlIGZvciB0aGUgcGFyZW50IGJvdW50eS4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAAFNBQABvQkADEhCb3VudHlWYWx1ZU1pbmltdW01AUAAyBeoBAAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bTUBQACUNXcAAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgABCQ8ACCRBc3NldEtpbmQJBQhBASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHVzZWQgdG8gZnVuZCwgcmVmdW5kIGFuZCBzcGVuZCBmcm9tKCBib3VudGllcy4sQmVuZWZpY2lhcnkNBQRBASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgcGF5bWVudHMuAEQAAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAVQUEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAFRBQABwQkADCBQYWxsZXRJZN0LIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgABDQ8AAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwARDxAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgBFAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBAHUFOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEAbQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAAHEFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AAWkFAAHJCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAHRCQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEANQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEANQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAFkFBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQQZDwQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOCUPBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFODUPBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBTg5DwQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOFkBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBJ0FBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAGBBQAB1QkADCBQYWxsZXRJZN0LIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAVEPAAQ0UmV3YXJkQ291bnRlckkFMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQRZDwQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBShdDwQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAG1BQAB3QkACDRCYWdUaHJlc2hvbGRzYQ8JGSEDAOQLVAIAAADznoCXAgAAAKixl+ICAAAAlEkuNgMAAAAnnDqTAwAAAAO8zvoDAAAAQsAbbgQAAAAbR3XuBAAAADheVX0FAAAARtxgHAYAAACJOGzNBgAAALbugJIHAAAA/n7jbQgAAADoGxpiCQAAALAZ9HEKAAAAEDWSoAsAAADPyW/xDAAAAEEUbWgOAAAA55vaCRAAAADO6IXaEQAAACipx98TAAAAu3CTHxYAAACOQImgGAAAAIEKCWobAAAANmpIhB4AAABb02r4IQAAAIB8nNAlAAAAyVUwGCoAAAC9Y8HbLgAAAHHgVyk0AAAAaJCSEDoAAADtxNSiQAAAAGmTefNHAAAAj9gMGFAAAABLr4ooWQAAAGoWpj9jAAAACZUXe24AAAB4xfT7egAAAGLIEeeIAAAAUb9tZZgAAAAEjqukqQAAAFRGmNe8AAAAkcrANtIAAAAXXxgB6gAAAL0VsnwEAQAAQzWP9yEBAAC4/ITIQgEAAJlnPFBnAQAAB+RO+o8BAACzQYM+vQEAAAJ/LqLvAQAAmIO8uScCAAAWTWUqZgIAALSVE6yrAgAALY6CC/kCAACh5pgsTwMAAKYWCA2vAwAAzJ03xxkEAACg1YSVkAQAAELn4NUUBQAAAozXDagFAAAPdQrvSwYAAOqNLlwCBwAAw8uZbs0HAACx5XF8rwgAAKorjh+rCQAAtcEgPcMKAAAm0D0O+wsAAHDHWSlWDQAA663ajNgOAAD3l9uqhhAAAM/wRHZlEgAAHyZgcXoUAAAJphG+yxYAAB376C9gGQAAlDo8YD8cAACK/onEcR8AAM7ZY8cAIwAAA6kq5PYmAAD+cu7FXysAADbJzGlIMAAA2uMyRb81AAAGKnRw1DsAAHyXMtaZQgAAhKMkaCNKAABXGtRZh1IAAOfxAmLeWwAADbh2A0RmAACuBAHe1nEAAH2eswi5fgAAHgRKdhCNAAA6HfBkB50AAOBPr9rMrgAAVnnwL5XCAACVw6qpmtgAAJZ8BSUe8QAAF3pm1mcMAQAoyx8eyCoBAPooL3WYTAEA1X3IdDxyAQB9xLP7IpwBADZc3nTHygEAnrjhQrP+AQAMMa5UfzgCAF/hAejVeAIAY3PafnTAAgBR0aYNLhADAMfppGjtaAMAYcCR97fLAwC/J6G3sDkEAHsUmZQbtAQAhSPtImE8BQBppdTFEtQFAOyMk03vfAYA9aqQG+g4BwCMvl3bJgoIAAKXjOET8wgA+uMUQ132CQDd8S26/hYLAC663G9KWAwADFUYxPK9DQDwu1QxFUwPAEmOhmtGBxEAssFT3p/0EgAnii+yzhkVALI5n4QkfRcA4ZnnBKolGgC6E/WrMxsdACZHhcx4ZiAAiL+APy0RJAAcmCP4HSYoAMzEItRQsSwA8IiCBSjAMQA2fG1+iWE3AG6TKdMKpj0AjLxsEyKgRAAAcPMqXGRMALQ7hGmZCVUAgLSr5FCpXgCgzal5219pAEzCf0zHTHUA0KwOujSTggBIPgzPPVqRAGjGjnRpzaEAKB5vpSsdtACYqSMmdH/IAPCadGNNMN8AgM38S41y+ACQFGAtmpAUAfC0E9lF3TMBIJc1lsG0VgFQ3PuurX19AeARmLlHqqgBMMfuFru52AEgbkiGlzkOAqD6Sx1yx0kCwBFxcLUSjAKAihZDpt7VAsD4I7GiBCgDgK9ZcKJ2gwPAby2H/0HpA0CTf6yPkloEAJEJcRe22ARAD99bISBlBQBJwUlEbgEGAI68puVsrwYAWVaGhRxxB4BoqjSkt0gIgKHinlK5OAkAvavogORDCgAqcrQgTG0LgPHAEzNcuAwAoDzL3OMoDoC4YpqeIMMPAN5Wk9LKixEAXX9MkyOIEwAah981BL4VAKfOS4TvMxgAARD76iTxGgCAKuXRtf0dACKhNGCdYiEARCFr8NopJQACYfGCj14pAGYgz4UeDS4AhBAZUlJDMwCgwY/KhBA5ACatFJPMhT8A0M0kZi+2RgCc4Zoc2rZOAFjMwgxfn1cAIAp1ePuJYQAwu7vW5JNsAGDLp9ye3XgAuDvAQluLhgC4hiNhZMWVAPjxX9yTuKYAIGqRwNaWuQDY7+KPwJfOAGgpm/Uu+eX//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABZQ8ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EbQ8YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEcQ8EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBHUPBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAeEJAAggUGFsbGV0SWTdCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uWQUQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABeQ8AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AAC9BQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAH0PBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAG5BQAB5QkABChLZXlEZXBvc2l0NQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgABhQ8AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAOUFBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBcyJDwQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUFzDwEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUFzJkPBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUFzDwEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAd0FAAHtCQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAZ0PAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXM7QUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBcztBQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTihDwQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBcylDwQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTgNBgQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAADQYEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBALUPBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAERBgAB8QkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAARUGAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQCRDwQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4uQ8EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFxQ8hBgQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFGQ3JDwQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAHtBgABAQoAAAHVDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzODUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfYOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBADUBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAWQUQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAFkFEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQA1AUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEANQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAFkFEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFGQ01AQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFRFcmFzU3VtV2VpZ2h0ZWRQb2ludHMBAQQFODUBQAAAAAAAAAAAAAAAAAAAAAAYQQEgUnVubmluZyBzdW0gb2YgYHZhbGlkYXRvcl9pbmNlbnRpdmVfd2VpZ2h0IMOXIGVyYV9wb2ludHNgIGFjcm9zcyBhbGwgdmFsaWRhdG9yc5ggd2l0aCBub24temVybyBlcmEgcG9pbnRzIGZvciB0aGUgZXJhLgBRASBNYWludGFpbmVkIGluY3JlbWVudGFsbHkgaW5zaWRlIFtgc2Vzc2lvbl9yb3RhdGlvbjo6RXJhczo6cmV3YXJkX2FjdGl2ZV9lcmFgXSBldmVyeU0BIHRpbWUgdmFsaWRhdG9yIHBvaW50cyBhcmUgY3JlZGl0ZWQuIFVzZWQgYXMgdGhlIGRlbm9taW5hdG9yIG9mIHRoZSB3ZWlnaHRlZC1wb2ludHNJASBzaGFyZSB0aGF0IGRldGVybWluZXMgZWFjaCB2YWxpZGF0b3IncyBzbGljZSBvZiBbYEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVCdWRnZXRgXS4AdFdlaWdodGVkUG9pbnRzRm9ybXVsYVN0YXJ0RXJhAAA4BABIJQEgQ3V0b2ZmIGVyYSBmcm9tIHdoaWNoIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgc3dpdGNoZXMgdG8gdGhlZCB3ZWlnaHRlZC1wb2ludHMgZm9ybXVsYS4AZQEgYE5vbmVgIGlzIHRoZSBwcmUtbWlncmF0aW9uIHN0YXRlIGZvciBjaGFpbnMgd2hvc2Ugc3RvcmFnZSBwcmVkYXRlcyB0aGlzIGl0ZW0uIFVudGlsIHRoZWEBIG1pZ3JhdGlvbiByZWNvcmRzIGEgY3V0b2ZmLCBbYHNlc3Npb25fcm90YXRpb246OkVyYXM6OnVzZXNfd2VpZ2h0ZWRfcG9pbnRzYF0gdHJlYXRzIGFsbGkBIGVyYXMgYXMgd2VpZ2h0ZWQtcG9pbnRzIGVyYXMuIENoYWlucyBpbml0aWFsaXplZCB3aXRoIHRoaXMgc3RvcmFnZSBpdGVtIHNldCB0aGUgY3V0b2ZmIHRvXQEgYDBgIGluIGBnZW5lc2lzX2J1aWxkYCwgYW5kIHRoZSB1cGdyYWRlIG1pZ3JhdGlvbiBsZWF2ZXMgYW55IGV4aXN0aW5nIHZhbHVlIHVudG91Y2hlZC4ARQEgU2VlIFtgc2Vzc2lvbl9yb3RhdGlvbjo6RXJhczo6dXNlc193ZWlnaHRlZF9wb2ludHNgXSBmb3IgdGhlIGV4YWN0IHNlbWFudGljcyBhbmR4IHRoZSByYXRpb25hbGUgZm9yIHRoZSBjdXRvZmYuAD0BIFRPRE8oc3Rha2luZy1hc3luYyk6IHJlbW92ZSB0aGlzIHN0b3JhZ2UgaXRlbSwgdGhlIGxlZ2FjeSBzdGFrZS1vbmx5IGJyYW5jaCBpbvwgW2BjcmF0ZTo6UGFsbGV0OjpjYWxjdWxhdGVfdmFsaWRhdG9yX2luY2VudGl2ZV9mb3JfcGFnZWBdLCB0aGUhASBbYHNlc3Npb25fcm90YXRpb246OkVyYXM6OnVzZXNfd2VpZ2h0ZWRfcG9pbnRzYF0gY3V0b2ZmIGhlbHBlciwgYW5kIHRoZR0BIFtgY3JhdGU6Om1pZ3JhdGlvbnM6OlNldFdlaWdodGVkUG9pbnRzRm9ybXVsYVN0YXJ0RXJhYF0gbWlncmF0aW9uIG9uY2VZASBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIHVwZ3JhZGUg4oCUIGkuZS4gb25jZSB0aGUgY3V0b2ZmSQEgc2F0aXNmaWVzIGBjdXRvZmYgPD0gYWN0aXZlX2VyYSAtIEhpc3RvcnlEZXB0aGAsIGF0IHdoaWNoIHBvaW50IG5vIHByZS1jdXRvZmYgZXJhHQEgcmVtYWlucyBjbGFpbWFibGUgYW5kIGV2ZXJ5IGxpdmUgZXJhIHVzZXMgdGhlIHdlaWdodGVkLXBvaW50cyBmb3JtdWxhLgBYQXJlTm9taW5hdG9yc1NsYXNoYWJsZQEAdQEEARykIFdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlIG9yIG5vdC4AbQEgLSBXaGVuIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpLCBub21pbmF0b3JzIGFyZSBzbGFzaGVkIGFsb25nIHdpdGggdmFsaWRhdG9ycyBhbmQgbXVzdCB3YWl0KQEgICB0aGUgZnVsbCBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gYmVmb3JlIHdpdGhkcmF3aW5nIHVuYm9uZGVkIGZ1bmRzLhUBIC0gV2hlbiBzZXQgdG8gYGZhbHNlYCwgbm9taW5hdG9ycyBhcmUgbm90IHNsYXNoZWQsIGFuZCBjYW4gdW5ib25kIGluDQEgICBbYENvbmZpZzo6Tm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uYF0gZXJhcyBpbnN0ZWFkIG9mIHRoZSBmdWxsWQEgICBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gKHNlZSBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBcRXJhc05vbWluYXRvcnNTbGFzaGFibGUAAQQFOHUBBAAc2CBQZXItZXJhIHNuYXBzaG90IG9mIHdoZXRoZXIgbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlLgBlASBUaGlzIGlzIGNvcGllZCBmcm9tIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGF0IHRoZSBzdGFydCBvZiBlYWNoIGVyYS4gV2hlbiBwcm9jZXNzaW5nUQEgb2ZmZW5jZXMsIHdlIHVzZSB0aGUgdmFsdWUgZnJvbSB0aGlzIHN0b3JhZ2UgZm9yIHRoZSBvZmZlbmNlIGVyYSB0byBlbnN1cmUgdGhhdCB0aGU5ASBzbGFzaGluZyBydWxlcyBhdCB0aGUgdGltZSBvZiB0aGUgb2ZmZW5jZSBhcmUgYXBwbGllZCwgbm90IHRoZSBjdXJyZW50IHJ1bGVzLgBlASBJZiBhbiBlbnRyeSBkb2VzIG5vdCBleGlzdCBmb3IgYW4gZXJhLCBub21pbmF0b3JzIGFyZSBhc3N1bWVkIHRvIGJlIHNsYXNoYWJsZSAoZGVmYXVsdCkuABhMZWRnZXIAAQQCBNkPBAAQRQEgTWFwIGZyb20gYWxsICh1bmxvY2tlZCkgImNvbnRyb2xsZXIiIGFjY291bnRzIHRvIHRoZSBpbmZvIHJlZ2FyZGluZyB0aGUgc3Rha2luZy4AdQEgTm90ZTogQWxsIHRoZSByZWFkcyBhbmQgbXV0YXRpb25zIHRvIHRoaXMgc3RvcmFnZSAqTVVTVCogYmUgZG9uZSB0aHJvdWdoIHRoZSBtZXRob2RzIGV4cG9zZWToIGJ5IFtgU3Rha2luZ0xlZGdlcmBdIHRvIGVuc3VyZSBkYXRhIGFuZCBsb2NrIGNvbnNpc3RlbmN5LgAUUGF5ZWUAAQQFBPkGBAAM5CBXaGVyZSB0aGUgcmV3YXJkIHBheW1lbnQgc2hvdWxkIGJlIG1hZGUuIEtleWVkIGJ5IHN0YXNoLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVmFsaWRhdG9ycwEBBAUE/QYIAAAMRQEgVGhlIG1hcCBmcm9tICh3YW5uYWJlKSB2YWxpZGF0b3Igc3Rhc2gga2V5IHRvIHRoZSBwcmVmZXJlbmNlcyBvZiB0aGF0IHZhbGlkYXRvci4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JWYWxpZGF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heFZhbGlkYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIHZhbGlkYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgBATGFzdFZhbGlkYXRvckVyYQABBAUEOAQAMGUBIFRyYWNrcyB0aGUgbGFzdCBlcmEgaW4gd2hpY2ggYW4gYWNjb3VudCB3YXMgYWN0aXZlIGFzIGEgdmFsaWRhdG9yIChpbmNsdWRlZCBpbiB0aGUgZXJhJ3NQIGV4cG9zdXJlL3NuYXBzaG90KS4AWQEgVGhpcyBpcyB1c2VkIHRvIGVuZm9yY2UgdGhhdCBhY2NvdW50cyB3aG8gd2VyZSByZWNlbnRseSB2YWxpZGF0b3JzIG11c3Qgd2FpdCB0aGUgZnVsbGEBIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgdGhlaXIgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biwgZXZlbiBpZiB0aGV5IHN3aXRjaCB0b7wgbm9taW5hdG9yIHJvbGUuIFRoaXMgcHJldmVudHMgdmFsaWRhdG9ycyBmcm9tOqwgMS4gQ29tbWl0dGluZyBhIHNsYXNoYWJsZSBvZmZlbmNlIGluIGVyYSBOfCAyLiBTd2l0Y2hpbmcgdG8gbm9taW5hdG9yIHJvbGVlASAzLiBVc2luZyB0aGUgc2hvcnRlciBub21pbmF0b3IgdW5ib25kaW5nIGR1cmF0aW9uIHRvIHdpdGhkcmF3IGZ1bmRzIGJlZm9yZSBiZWluZyBzbGFzaGVkAFkBIFVwZGF0ZWQgd2hlbiBlcmEgc25hcHNob3RzIGFyZSBjcmVhdGVkIChpbiBgRXJhc1N0YWtlcnNQYWdlZGAvYEVyYXNTdGFrZXJzT3ZlcnZpZXdgKS74IENsZWFuZWQgdXAgd2hlbiB0aGUgc3Rhc2ggaXMga2lsbGVkIChmdWxseSB3aXRoZHJhd24vcmVhcGVkKS4AKE5vbWluYXRvcnMAAQQFBN0PBABMdQEgVGhlIG1hcCBmcm9tIG5vbWluYXRvciBzdGFzaCBrZXkgdG8gdGhlaXIgbm9taW5hdGlvbiBwcmVmZXJlbmNlcywgbmFtZWx5IHRoZSB2YWxpZGF0b3JzIHRoYXRYIHRoZXkgd2lzaCB0byBzdXBwb3J0LgA5ASBOb3RlIHRoYXQgdGhlIGtleXMgb2YgdGhpcyBzdG9yYWdlIG1hcCBtaWdodCBiZWNvbWUgbm9uLWRlY29kYWJsZSBpbiBjYXNlIHRoZS0BIGFjY291bnQncyBbYE5vbWluYXRpb25zUXVvdGE6Ok1heE5vbWluYXRpb25zYF0gY29uZmlndXJhdGlvbiBpcyBkZWNyZWFzZWQukCBJbiB0aGlzIHJhcmUgY2FzZSwgdGhlc2Ugbm9taW5hdG9yc2UBIGFyZSBzdGlsbCBleGlzdGVudCBpbiBzdG9yYWdlLCB0aGVpciBrZXkgaXMgY29ycmVjdCBhbmQgcmV0cmlldmFibGUgKGkuZS4gYGNvbnRhaW5zX2tleWBxASBpbmRpY2F0ZXMgdGhhdCB0aGV5IGV4aXN0KSwgYnV0IHRoZWlyIHZhbHVlIGNhbm5vdCBiZSBkZWNvZGVkLiBUaGVyZWZvcmUsIHRoZSBub24tZGVjb2RhYmxlbQEgbm9taW5hdG9ycyB3aWxsIGVmZmVjdGl2ZWx5IG5vdC1leGlzdCwgdW50aWwgdGhleSByZS1zdWJtaXQgdGhlaXIgcHJlZmVyZW5jZXMgc3VjaCB0aGF0IGl0AQEgaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIG5ld2x5IHNldCBgQ29uZmlnOjpNYXhOb21pbmF0aW9uc2AuAGEBIFRoaXMgaW1wbGllcyB0aGF0IGA6Oml0ZXJfa2V5cygpLmNvdW50KClgIGFuZCBgOjppdGVyKCkuY291bnQoKWAgbWlnaHQgcmV0dXJuIGRpZmZlcmVudG0BIHZhbHVlcyBmb3IgdGhpcyBtYXAuIE1vcmVvdmVyLCB0aGUgbWFpbiBgOjpjb3VudCgpYCBpcyBhbGlnbmVkIHdpdGggdGhlIGZvcm1lciwgbmFtZWx5IHRoZWwgbnVtYmVyIG9mIGtleXMgdGhhdCBleGlzdC4AbQEgTGFzdGx5LCBpZiBhbnkgb2YgdGhlIG5vbWluYXRvcnMgYmVjb21lIG5vbi1kZWNvZGFibGUsIHRoZXkgY2FuIGJlIGNoaWxsZWQgaW1tZWRpYXRlbHkgdmlhuCBbYENhbGw6OmNoaWxsX290aGVyYF0gZGlzcGF0Y2hhYmxlIGJ5IGFueW9uZS4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AUENvdW50ZXJGb3JOb21pbmF0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAOFZpcnR1YWxTdGFrZXJzAAEEBQQQBAAYyCBTdGFrZXJzIHdob3NlIGZ1bmRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMuAHUBIFRoaXMgcGFsbGV0IGRvZXMgbm90IGFwcGx5IGFueSBsb2NrcyBvbiB0aGVtLCB0aGVyZWZvcmUgdGhleSBhcmUgb25seSB2aXJ0dWFsbHkgYm9uZGVkLiBUaGV5bQEgYXJlIGV4cGVjdGVkIHRvIGJlIGtleWxlc3MgYWNjb3VudHMgYW5kIGhlbmNlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBtdXRhdGUgdGhlaXIgbGVkZ2VycQEgZGlyZWN0bHkgdmlhIHRoaXMgcGFsbGV0LiBJbnN0ZWFkLCB0aGVzZSBhY2NvdW50cyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzIGFuZCBhY2Nlc3NlZCkBIHZpYSBsb3cgbGV2ZWwgYXBpcy4gV2Uga2VlcCB0cmFjayBvZiB0aGVtIHRvIGRvIG1pbmltYWwgaW50ZWdyaXR5IGNoZWNrcy4AYENvdW50ZXJGb3JWaXJ0dWFsU3Rha2VycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhNYXhOb21pbmF0b3JzQ291bnQAADgEAAwxASBUaGUgbWF4aW11bSBub21pbmF0b3IgY291bnQgYmVmb3JlIHdlIHN0b3AgYWxsb3dpbmcgbmV3IHZhbGlkYXRvcnMgdG8gam9pbi4A0CBXaGVuIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgbm8gbGltaXRzIGFyZSBlbmZvcmNlZC4AKEN1cnJlbnRFcmEAADgEABB8IFRoZSBjdXJyZW50IHBsYW5uZWQgZXJhIGluZGV4LgBlASBUaGlzIGlzIHRoZSBsYXRlc3QgcGxhbm5lZCBlcmEsIGRlcGVuZGluZyBvbiBob3cgdGhlIFNlc3Npb24gcGFsbGV0IHF1ZXVlcyB0aGUgdmFsaWRhdG9ygCBzZXQsIGl0IG1pZ2h0IGJlIGFjdGl2ZSBvciBub3QuACRBY3RpdmVFcmEAAOEPBAAQ2CBUaGUgYWN0aXZlIGVyYSBpbmZvcm1hdGlvbiwgaXQgaG9sZHMgaW5kZXggYW5kIHN0YXJ0LgBZASBUaGUgYWN0aXZlIGVyYSBpcyB0aGUgZXJhIGJlaW5nIGN1cnJlbnRseSByZXdhcmRlZC4gVmFsaWRhdG9yIHNldCBvZiB0aGlzIGVyYSBtdXN0IGJlmCBlcXVhbCB0byB3aGF0IGlzIFJDJ3Mgc2Vzc2lvbiBwYWxsZXQuAChCb25kZWRFcmFzAQDlDwQAECUBIEEgbWFwcGluZyBmcm9tIHN0aWxsLWJvbmRlZCBlcmFzIHRvIHRoZSBmaXJzdCBzZXNzaW9uIGluZGV4IG9mIHRoYXQgZXJhLgDIIE11c3QgY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIGVyYXMgZm9yIHRoZSByYW5nZTq8IGBbYWN0aXZlX2VyYSAtIGJvdW5kaW5nX2R1cmF0aW9uOyBhY3RpdmVfZXJhXWAATEVyYXNTdGFrZXJzT3ZlcnZpZXcAAQgFBRkN6Q8EADC4IFN1bW1hcnkgb2YgdmFsaWRhdG9yIGV4cG9zdXJlIGF0IGEgZ2l2ZW4gZXJhLgBxASBUaGlzIGNvbnRhaW5zIHRoZSB0b3RhbCBzdGFrZSBpbiBzdXBwb3J0IG9mIHRoZSB2YWxpZGF0b3IgYW5kIHRoZWlyIG93biBzdGFrZS4gSW4gYWRkaXRpb24sdQEgaXQgY2FuIGFsc28gYmUgdXNlZCB0byBnZXQgdGhlIG51bWJlciBvZiBub21pbmF0b3JzIGJhY2tpbmcgdGhpcyB2YWxpZGF0b3IgYW5kIHRoZSBudW1iZXIgb2ZpASBleHBvc3VyZSBwYWdlcyB0aGV5IGFyZSBkaXZpZGVkIGludG8uIFRoZSBwYWdlIGNvdW50IGlzIHVzZWZ1bCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZqwgcGFnZXMgb2YgcmV3YXJkcyB0aGF0IG5lZWRzIHRvIGJlIGNsYWltZWQuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LqAgU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy5BASBJZiBzdGFrZXJzIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gZW1wdHkgb3ZlcnZpZXcgaXMgcmV0dXJuZWQuAEBFcmFzU3Rha2Vyc1BhZ2VkAAEMBQUFxQ/tDwQAGMAgUGFnaW5hdGVkIGV4cG9zdXJlIG9mIGEgdmFsaWRhdG9yIGF0IGdpdmVuIGVyYS4AcQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24sIHRoZW4gc3Rhc2ggYWNjb3VudCBhbmQgZmluYWxsecggdGhlIHBhZ2UuIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYXNgLgDUIFRoaXMgaXMgY2xlYXJlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AOENsYWltZWRSZXdhcmRzAQEIBQUZDf0PBAAY3CBIaXN0b3J5IG9mIGNsYWltZWQgcGFnZWQgcmV3YXJkcyBieSBlcmEgYW5kIHZhbGlkYXRvci4AaQEgVGhpcyBpcyBrZXllZCBieSBlcmEgYW5kIHZhbGlkYXRvciBzdGFzaCB3aGljaCBtYXBzIHRvIHRoZSBzZXQgb2YgcGFnZSBpbmRleGVzIHdoaWNoIGhhdmU4IGJlZW4gY2xhaW1lZC4AzCBJdCBpcyByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBIRXJhc1ZhbGlkYXRvclByZWZzAQEIBQUZDf0GCAAAFAUBIEV4cG9zdXJlIG9mIHZhbGlkYXRvciBhdCBlcmEgd2l0aCB0aGUgcHJlZmVyZW5jZXMgb2YgdmFsaWRhdG9ycy4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4ATEVyYXNWYWxpZGF0b3JSZXdhcmQAAQQFODUBBAAUNQEgVGhlIHRvdGFsIHN0YWtlciByZXdhcmQgYnVkZ2V0IGZvciBlYWNoIGVyYSB3aXRoaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdLgBkIFNldCBhdCBlcmEgZmluYWxpemF0aW9uOlkBIC0gaW4gbm9uLW1pbnRpbmcgbW9kZSB0aGlzIGlzIHRoZSBzbmFwc2hvdCBvZiB0aGUgZXJhIHBvdCBiYWxhbmNlIGJlZm9yZSBhbnkgcGF5b3V0cy4xASAtIGluIGxlZ2FjeSBtb2RlIGl0IGNvbWVzIGZyb20gYEVyYVBheW91dGAsIHdpdGggcmV3YXJkcyBtaW50ZWQgb24gdGhlIGZseS4AQEVyYXNSZXdhcmRQb2ludHMBAQQFOAEQFAAAAAAACNAgUmV3YXJkcyBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuJQEgSWYgcmV3YXJkIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gMCByZXdhcmQgaXMgcmV0dXJuZWQuADhFcmFzVG90YWxTdGFrZQEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAAAgRASBUaGUgdG90YWwgYW1vdW50IHN0YWtlZCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuHQEgSWYgdG90YWwgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHN0YWtlIGlzIHJldHVybmVkLgAgRm9yY2VFcmEBAAkKBAAEVCBNb2RlIG9mIGVyYSBmb3JjaW5nLgBATWF4U3Rha2VkUmV3YXJkcwAACQcEABAZASBNYXhpbXVtIHN0YWtlZCByZXdhcmRzLCBpLmUuIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBlcmEgaW5mbGF0aW9uIHRoYXRsIGlzIHVzZWQgZm9yIHN0YWtlIHJld2FyZHMuAPQgT25seSB1c2VkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUgKGBEaXNhYmxlTWludGluZyA9IGZhbHNlYCkuAExTbGFzaFJld2FyZEZyYWN0aW9uAQBZBRAAAAAADPggVGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHNsYXNoIHRoYXQgaXMgZGlzdHJpYnV0ZWQgdG8gcmVwb3J0ZXJzLgDkIFRoZSByZXN0IG9mIHRoZSBzbGFzaGVkIHZhbHVlIGlzIGhhbmRsZWQgYnkgdGhlIGBTbGFzaGAuAExDYW5jZWxlZFNsYXNoUGF5b3V0AQA1AUAAAAAAAAAAAAAAAAAAAAAACBUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgZ2l2ZW4gdG8gcmVwb3J0ZXJzIG9mIGEgc2xhc2ggZXZlbnQgd2hpY2ggd2Fz7CBjYW5jZWxlZCBieSBleHRyYW9yZGluYXJ5IGNpcmN1bXN0YW5jZXMgKGUuZy4gZ292ZXJuYW5jZSkuADBPZmZlbmNlUXVldWUAAQgFBRkNDRAEAChNASBTdG9yZXMgcmVwb3J0ZWQgb2ZmZW5jZXMgaW4gYSBxdWV1ZSB1bnRpbCB0aGV5IGFyZSBwcm9jZXNzZWQgaW4gc3Vic2VxdWVudCBibG9ja3MuAGUBIEVhY2ggb2ZmZW5jZSBpcyByZWNvcmRlZCB1bmRlciB0aGUgY29ycmVzcG9uZGluZyBlcmEgaW5kZXggYW5kIHRoZSBvZmZlbmRpbmcgdmFsaWRhdG9yJ3NxASBhY2NvdW50LiBJZiBhbiBvZmZlbmNlIHNwYW5zIG11bHRpcGxlIHBhZ2VzLCBvbmx5IG9uZSBwYWdlIGlzIHByb2Nlc3NlZCBhdCBhIHRpbWUuIE9mZmVuY2VzPQEgYXJlIGhhbmRsZWQgc2VxdWVudGlhbGx5LCB3aXRoIHRoZWlyIGFzc29jaWF0ZWQgc2xhc2hlcyBjb21wdXRlZCBhbmQgc3RvcmVkIGluUQEgYFVuYXBwbGllZFNsYXNoZXNgLiBUaGVzZSBzbGFzaGVzIGFyZSB0aGVuIGFwcGxpZWQgaW4gYSBmdXR1cmUgZXJhIGFzIGRldGVybWluZWQgYnlYIGBTbGFzaERlZmVyRHVyYXRpb25gLgBRASBBbnkgb2ZmZW5jZXMgdGllZCB0byBhbiBlcmEgb2xkZXIgdGhhbiBgQm9uZGluZ0R1cmF0aW9uYCBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkLtAgUHJvY2Vzc2luZyBhbHdheXMgcHJpb3JpdGl6ZXMgdGhlIG9sZGVzdCBlcmEgZmlyc3QuAEBPZmZlbmNlUXVldWVFcmFzAAAREAQAMHUBIFRyYWNrcyB0aGUgZXJhcyB0aGF0IGNvbnRhaW4gb2ZmZW5jZXMgaW4gYE9mZmVuY2VRdWV1ZWAsIHNvcnRlZCBmcm9tICoqZWFybGllc3QgdG8gbGF0ZXN0KiouAE0BIC0gVGhpcyBlbnN1cmVzIGVmZmljaWVudCByZXRyaWV2YWwgb2YgdGhlIG9sZGVzdCBvZmZlbmNlIHdpdGhvdXQgaXRlcmF0aW5nIHRocm91Z2hAIGBPZmZlbmNlUXVldWVgLmUBIC0gV2hlbiBhIG5ldyBvZmZlbmNlIGlzIGFkZGVkIHRvIGBPZmZlbmNlUXVldWVgLCBpdHMgZXJhIGlzICoqaW5zZXJ0ZWQgaW4gc29ydGVkIG9yZGVyKipgIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuQQEgLSBXaGVuIGFsbCBvZmZlbmNlcyBmb3IgYW4gZXJhIGFyZSBwcm9jZXNzZWQsIGl0IGlzICoqcmVtb3ZlZCoqIGZyb20gdGhpcyBsaXN0LhUBIC0gVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoaXMgdmVjdG9yIGlzIGJvdW5kZWQgYnkgYEJvbmRpbmdEdXJhdGlvbiArdCAgIE9GRkVOQ0VfUVVFVUVfRVJBU19CT1VORGAuAHEBIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgZXhwZW5zaXZlIGl0ZXJhdGlvbiBhbmQgc29ydGluZyB3aGVuIGZldGNoaW5nIHRoZSBuZXh0IG9mZmVuY2UwIHRvIHByb2Nlc3MuAERQcm9jZXNzaW5nT2ZmZW5jZQAAFRAEADAdASBUcmFja3MgdGhlIGN1cnJlbnRseSBwcm9jZXNzZWQgb2ZmZW5jZSByZWNvcmQgZnJvbSB0aGUgYE9mZmVuY2VRdWV1ZWAuAE0BIC0gV2hlbiBwcm9jZXNzaW5nIG9mZmVuY2VzLCBhbiBvZmZlbmNlIHJlY29yZCBpcyAqKnBvcHBlZCoqIGZyb20gdGhlIG9sZGVzdCBlcmEgaW6IICAgYE9mZmVuY2VRdWV1ZWAgYW5kIHN0b3JlZCBoZXJlLnUBIC0gVGhlIGZ1bmN0aW9uIGBwcm9jZXNzX29mZmVuY2VgIHJlYWRzIGZyb20gdGhpcyBzdG9yYWdlLCBwcm9jZXNzaW5nIG9uZSBwYWdlIG9mIGV4cG9zdXJlIGF0KCAgIGEgdGltZS5lASAtIEFmdGVyIHByb2Nlc3NpbmcgYSBwYWdlLCB0aGUgYGV4cG9zdXJlX3BhZ2VgIGNvdW50IGlzICoqZGVjcmVtZW50ZWQqKiB1bnRpbCBpdCByZWFjaGVzICAgIHplcm8uJQEgLSBPbmNlIGZ1bGx5IHByb2Nlc3NlZCwgdGhlIG9mZmVuY2UgcmVjb3JkIGlzIHJlbW92ZWQgZnJvbSB0aGlzIHN0b3JhZ2UuAGUBIFRoaXMgZW5zdXJlcyB0aGF0IG9mZmVuY2VzIGFyZSBwcm9jZXNzZWQgaW5jcmVtZW50YWxseSwgcHJldmVudGluZyBleGNlc3NpdmUgY29tcHV0YXRpb278IGluIGEgc2luZ2xlIGJsb2NrIHdoaWxlIG1haW50YWluaW5nIGNvcnJlY3Qgc2xhc2hpbmcgYmVoYXZpb3IuAEBVbmFwcGxpZWRTbGFzaGVzAAEIBQUZEB0QBAAExCBBbGwgdW5hcHBsaWVkIHNsYXNoZXMgdGhhdCBhcmUgcXVldWVkIGZvciBsYXRlci4AQENhbmNlbGxlZFNsYXNoZXMBAQQFOCUQBAAUUQEgQ2FuY2VsbGVkIHNsYXNoZXMgYnkgZXJhIGFuZCB2YWxpZGF0b3Igd2l0aCBtYXhpbXVtIHNsYXNoIGZyYWN0aW9uIHRvIGJlIGNhbmNlbGxlZC4ARQEgV2hlbiBzbGFzaGVzIGFyZSBjYW5jZWxsZWQgYnkgZ292ZXJuYW5jZSwgdGhpcyBzdG9yZXMgdGhlIGVyYSBhbmQgdGhlIHZhbGlkYXRvcnNVASB3aG9zZSBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQsIGFsb25nIHdpdGggdGhlIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdGhhdCBzaG91bGSEIGJlIGNhbmNlbGxlZCBmb3IgZWFjaCB2YWxpZGF0b3IuAExWYWxpZGF0b3JTbGFzaEluRXJhAAEIBQUZDSkQBAAIRQEgQWxsIHNsYXNoaW5nIGV2ZW50cyBvbiB2YWxpZGF0b3JzLCBtYXBwZWQgYnkgZXJhIHRvIHRoZSBoaWdoZXN0IHNsYXNoIHByb3BvcnRpb25wIGFuZCBzbGFzaCB2YWx1ZSBvZiB0aGUgZXJhLgA4Q2hpbGxUaHJlc2hvbGQAAAkHBAAMUQEgVGhlIHRocmVzaG9sZCBmb3Igd2hlbiB1c2VycyBjYW4gc3RhcnQgY2FsbGluZyBgY2hpbGxfb3RoZXJgIGZvciBvdGhlciB2YWxpZGF0b3JzIC9ZASBub21pbmF0b3JzLiBUaGUgdGhyZXNob2xkIGlzIGNvbXBhcmVkIHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgLyBub21pbmF0b3JzKQEgKGBDb3VudEZvcipgKSBpbiB0aGUgc3lzdGVtIGNvbXBhcmVkIHRvIHRoZSBjb25maWd1cmVkIG1heCAoYE1heCpDb3VudGApLgBMVm90ZXJTbmFwc2hvdFN0YXR1cwEALRAEAhCAIFZvdGVyIHNuYXBzaG90IHByb2dyZXNzIHN0YXR1cy4AaQEgSWYgdGhlIHN0YXR1cyBpcyBgT25nb2luZ2AsIGl0IGtlZXBzIGEgY3Vyc29yIG9mIHRoZSBsYXN0IHZvdGVyIHJldHJpZXZlZCB0byBwcm9jZWVkIHdoZW6EIGNyZWF0aW5nIHRoZSBuZXh0IHNuYXBzaG90IHBhZ2UuAEBOZXh0RWxlY3Rpb25QYWdlAAA4BAAYAQEgS2VlcHMgdHJhY2sgb2YgYW4gb25nb2luZyBtdWx0aS1wYWdlIGVsZWN0aW9uIHNvbHV0aW9uIHJlcXVlc3QuAGUBIElmIGBTb21lKF8pYGAsIGl0IGlzIHRoZSBuZXh0IHBhZ2UgdGhhdCB3ZSBpbnRlbmQgdG8gZWxlY3QuIElmIGBOb25lYCwgd2UgYXJlIG5vdCBpbiB0aGVIIGVsZWN0aW9uIHByb2Nlc3MuADkBIFRoaXMgaXMgb25seSBzZXQgaW4gbXVsdGktYmxvY2sgZWxlY3Rpb25zLiBTaG91bGQgYWx3YXlzIGJlIGBOb25lYCBvdGhlcndpc2UuAEBFbGVjdGFibGVTdGFzaGVzAQAxEAQABFEBIEEgYm91bmRlZCBsaXN0IG9mIHRoZSAiZWxlY3RhYmxlIiBzdGFzaGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBhIHN1Y2Nlc3NmdWwgZWxlY3Rpb24uADxFcmFQcnVuaW5nU3RhdGUAAQQFODUQBAAERQEgVHJhY2tzIHRoZSBjdXJyZW50IHN0ZXAgb2YgZXJhIHBydW5pbmcgcHJvY2VzcyBmb3IgZWFjaCBlcmEgYmVpbmcgbGF6aWx5IHBydW5lZC4AAfUGAAEFCgAwMEhpc3RvcnlEZXB0aDgQVAAAADSMIE51bWJlciBvZiBlcmFzIHRvIGtlZXAgaW4gaGlzdG9yeS4A6CBGb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMga2VwdCBmb3IgZXJhcyBpbiBgW2N1cnJlbnRfZXJhIC0pASBIaXN0b3J5RGVwdGgsIGN1cnJlbnRfZXJhXWA6IGBFcmFzVmFsaWRhdG9yUHJlZnNgLCBgRXJhc1ZhbGlkYXRvclJld2FyZGAs4CBgRXJhc1Jld2FyZFBvaW50c2AsIGBFcmFzVG90YWxTdGFrZWAsIGBDbGFpbWVkUmV3YXJkc2AsrCBgRXJhc1N0YWtlcnNQYWdlZGAsIGBFcmFzU3Rha2Vyc092ZXJ2aWV3YC4A5CBNdXN0IGJlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVyYXMgZGVsYXllZCBieSBzZXNzaW9uLvggSS5lLiBhY3RpdmUgZXJhIG11c3QgYWx3YXlzIGJlIGluIGhpc3RvcnkuIEkuZS4gYGFjdGl2ZV9lcmEgPsQgY3VycmVudF9lcmEgLSBoaXN0b3J5X2RlcHRoYCBtdXN0IGJlIGd1YXJhbnRlZWQuABEBIElmIG1pZ3JhdGluZyBhbiBleGlzdGluZyBwYWxsZXQgZnJvbSBzdG9yYWdlIHZhbHVlIHRvIGNvbmZpZyB2YWx1ZSzsIHRoaXMgc2hvdWxkIGJlIHNldCB0byBzYW1lIHZhbHVlIG9yIGdyZWF0ZXIgYXMgaW4gc3RvcmFnZS4AOFNlc3Npb25zUGVyRXJhOBAGAAAABC0BIE51bWJlciBvZiBzZXNzaW9ucyBwZXIgZXJhLCBhcyBwZXIgdGhlIHByZWZlcmVuY2VzIG9mIHRoZSAqKnJlbGF5IGNoYWluKiouAERQbGFubmluZ0VyYU9mZnNldDgQBgAAADhRASBOdW1iZXIgb2Ygc2Vzc2lvbnMgYmVmb3JlIHRoZSBlbmQgb2YgYW4gZXJhIHdoZW4gdGhlIGVsZWN0aW9uIGZvciB0aGUgbmV4dCBlcmEgd2lsbBwgc3RhcnQuAF0BIC0gVGhpcyBkZXRlcm1pbmVzIGhvdyBtYW55IHNlc3Npb25zICoqYmVmb3JlKiogdGhlIGxhc3Qgc2Vzc2lvbiBvZiB0aGUgZXJhIHRoZSBzdGFraW5nhCAgIGVsZWN0aW9uIHByb2Nlc3Mgc2hvdWxkIGJlZ2luLk0BIC0gVGhlIHZhbHVlIGlzIGJvdW5kZWQgYmV0d2VlbiAqKjEqKiAoZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxhc3RdASAgIHNlc3Npb24pIGFuZCBgU2Vzc2lvbnNQZXJFcmFgIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3Qgc2Vzc2lvbjwgICBvZiB0aGUgZXJhKS4ANCAjIyMgRXhhbXBsZTpJASAtIElmIGBTZXNzaW9uc1BlckVyYSA9IDZgIGFuZCBgUGxhbm5pbmdFcmFPZmZzZXQgPSAxYCwgdGhlIGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGWQICAgYmVnaW5uaW5nIG9mIHNlc3Npb24gYDYgLSAxID0gNWAuXQEgLSBJZiBgUGxhbm5pbmdFcmFPZmZzZXQgPSA2YCwgdGhlIGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHNlc3Npb24gYDYgLSA2ID3oICAgMGAsIG1lYW5pbmcgaXQgc3RhcnRzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZXJhLgA8Qm9uZGluZ0R1cmF0aW9uOBAcAAAAFOQgTnVtYmVyIG9mIGVyYXMgdGhhdCBzdGFrZWQgZnVuZHMgbXVzdCByZW1haW4gYm9uZGVkIGZvci4ATQEgVGhpcyBpcyB0aGUgYm9uZGluZyBkdXJhdGlvbiBmb3IgdmFsaWRhdG9ycy4gTm9taW5hdG9ycyBtYXkgaGF2ZSBhIHNob3J0ZXIgYm9uZGluZwEBIGR1cmF0aW9uIHdoZW4gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gaXMgc2V0IHRvIGBmYWxzZWAgKHNlZcwgW2BTdGFraW5nSW50ZXJmYWNlOjpub21pbmF0b3JfYm9uZGluZ19kdXJhdGlvbmBdKS4AbE5vbWluYXRvckZhc3RVbmJvbmREdXJhdGlvbjgQHAAAACAtASBOdW1iZXIgb2YgZXJhcyBub21pbmF0b3JzIG11c3Qgd2FpdCB0byB1bmJvbmQgd2hlbiB0aGV5IGFyZSBub3Qgc2xhc2hhYmxlLgBFASBUaGlzIGR1cmF0aW9uIGlzIHVzZWQgZm9yIG5vbWluYXRvcnMgd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBgZmFsc2VgLl0BIFdoZW4gbm9taW5hdG9ycyBhcmUgc2xhc2hhYmxlLCB0aGV5IHVzZSB0aGUgZnVsbCBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gdG8gZW5zdXJl0CBzbGFzaGVzIGNhbiBiZSBhcHBsaWVkIGR1cmluZyB0aGUgdW5ib25kaW5nIHBlcmlvZC4APQEgU2V0dGluZyB0aGlzIHRvIGEgbG93ZXIgdmFsdWUgKGUuZy4sIDEgZXJhKSBhbGxvd3MgZm9yIGZhc3RlciB3aXRoZHJhd2FscyB3aGVutCBub21pbmF0b3JzIGFyZSBub3Qgc3ViamVjdCB0byBzbGFzaGluZyByaXNrLgBIU2xhc2hEZWZlckR1cmF0aW9uOBAbAAAAEAEBIE51bWJlciBvZiBlcmFzIHRoYXQgc2xhc2hlcyBhcmUgZGVmZXJyZWQgYnksIGFmdGVyIGNvbXB1dGF0aW9uLgANASBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIGJvbmRpbmcgZHVyYXRpb24uIFNldCB0byAwIGlmIHNsYXNoZXMVASBzaG91bGQgYmUgYXBwbGllZCBpbW1lZGlhdGVseSwgd2l0aG91dCBvcHBvcnR1bml0eSBmb3IgaW50ZXJ2ZW50aW9uLgA4RGlzYWJsZU1pbnRpbmd1AQQBKCkBIFdoZW4gYHRydWVgLCBzdGFraW5nIGRvZXMgbm90IG1pbnQuIEl0IGV4cGVjdHMgYW4gZXh0ZXJuYWwgc291cmNlIHRvIGZ1bmQZASB0aGUgZ2VuZXJhbCByZXdhcmQgcG90LiBBdCBlcmEgYm91bmRhcnksIHJld2FyZHMgYXJlIHNuYXBzaG90dGVkIGZyb22QIHRoZSBwb3QuIGBFcmFQYXlvdXRgIGlzIG5vdCBjYWxsZWQuADEBIFdoZW4gYGZhbHNlYCwgc3Rha2luZyB1c2VzIHRoZSBsZWdhY3kgcGF0aDogYEVyYVBheW91dGAgY29tcHV0ZXMgaW5mbGF0aW9uLLAgdG9rZW5zIGFyZSBtaW50ZWQgb24tdGhlLWZseSBkdXJpbmcgcGF5b3V0LgAhASAqKklycmV2ZXJzaWJsZSoqOiBvbmNlIHNldCB0byBgdHJ1ZWAsIG11c3QgbmV2ZXIgYmUgc3dpdGNoZWQgYmFjay4gRXJhczEBIGNyZWF0ZWQgaW4gbm9uLW1pbnRpbmcgbW9kZSBoYXZlIGZ1bmRlZCByZXdhcmQgcG90cyDigJQgc3dpdGNoaW5nIHRvIGxlZ2Fjecggd291bGQgb3JwaGFuIHRob3NlIHBvdHMgYW5kIGNhdXNlIGRvdWJsZS1taW50aW5nLgBMTWF4RXhwb3N1cmVQYWdlU2l6ZTgQAAIAACywIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBgVDo6RXhwb3N1cmVQYWdlYC4AKQEgQW4gYEV4cG9zdXJlUGFnZWAgaXMgd2Vha2x5IGJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBNYXhFeHBvc3VyZVBhZ2VTaXplYDAgbm9taW5hdG9ycy4AIQEgRm9yIG9sZGVyIG5vbi1wYWdlZCBleHBvc3VyZSwgYSByZXdhcmQgcGF5b3V0IHdhcyByZXN0cmljdGVkIHRvIHRoZSB0b3AhASBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgbm9taW5hdG9ycy4gVGhpcyBpcyB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZUggbm9taW5hdG9yIHBheW91dC4APQEgTm90ZTogYE1heEV4cG9zdXJlUGFnZVNpemVgIGlzIHVzZWQgdG8gYm91bmQgYENsYWltZWRSZXdhcmRzYCBhbmQgaXMgdW5zYWZlIHRvrCByZWR1Y2Ugd2l0aG91dCBoYW5kbGluZyBpdCBpbiBhIG1pZ3JhdGlvbi4APE1heFZhbGlkYXRvclNldDgQ6AMAABAVASBUaGUgYWJzb2x1dGUgbWF4aW11bSBvZiB3aW5uZXIgdmFsaWRhdG9ycyB0aGlzIHBhbGxldCBzaG91bGQgcmV0dXJuLgBBASBBcyB0aGlzIHBhbGxldCBzdXBwb3J0cyBtdWx0aS1ibG9jayBlbGVjdGlvbiwgdGhlIHNldCBvZiB3aW5uZXIgdmFsaWRhdG9ycyAqcGVyjCBlbGVjdGlvbiogaXMgYm91bmRlZCBieSB0aGlzIHR5cGUuAEhNYXhVbmxvY2tpbmdDaHVua3M4ECAAAAAoBQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGB1bmxvY2tpbmdgIGNodW5rcyBhIFtgU3Rha2luZ0xlZGdlcmBdIGNhbgkBIGhhdmUuIEVmZmVjdGl2ZWx5IGRldGVybWluZXMgaG93IG1hbnkgdW5pcXVlIGVyYXMgYSBzdGFrZXIgbWF5IGJlOCB1bmJvbmRpbmcgaW4uAPggTm90ZTogYE1heFVubG9ja2luZ0NodW5rc2AgaXMgdXNlZCBhcyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZQEBIGBCb3VuZGVkVmVjYCBpdGVtIGBTdGFraW5nTGVkZ2VyLnVubG9ja2luZ2AuIFNldHRpbmcgdGhpcyB2YWx1ZQUBIGxvd2VyIHRoYW4gdGhlIGV4aXN0aW5nIHZhbHVlIGNhbiBsZWFkIHRvIGluY29uc2lzdGVuY2llcyBpbiB0aGUJASBgU3Rha2luZ0xlZGdlcmAgYW5kIHdpbGwgbmVlZCB0byBiZSBoYW5kbGVkIHByb3Blcmx5IGluIGEgcnVudGltZQUBIG1pZ3JhdGlvbi4gVGhlIHRlc3QgYHJlZHVjaW5nX21heF91bmxvY2tpbmdfY2h1bmtzX2FicnVwdGAgc2hvd3M0IHRoaXMgZWZmZWN0LgA4TWF4RXJhRHVyYXRpb24oIACKuQcAAAAAKLggTWF4aW11bSBhbGxvd2VkIGVyYSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuAFEBIFRoaXMgcHJvdmlkZXMgYSBkZWZlbnNpdmUgdXBwZXIgYm91bmQgdG8gY2FwIHRoZSBlZmZlY3RpdmUgZXJhIGR1cmF0aW9uLCBwcmV2ZW50aW5nYQEgZXhjZXNzaXZlbHkgbG9uZyBlcmFzIGZyb20gY2F1c2luZyBydW5hd2F5IGluZmxhdGlvbiAoZS5nLiwgZHVlIHRvIGJ1Z3MpLiBJZiB0aGUgYWN0dWFsFQEgZXJhIGR1cmF0aW9uIGV4Y2VlZHMgdGhpcyB2YWx1ZSwgaXQgd2lsbCBiZSBjbGFtcGVkIHRvIHRoaXMgbWF4aW11bS4AAQEgRXhhbXBsZTogRm9yIGFuIGlkZWFsIGVyYSBkdXJhdGlvbiBvZiAyNCBob3VycyAoODYsNDAwLDAwMCBtcykssCB0aGlzIGNhbiBiZSBzZXQgdG8gNjA0LDgwMCwwMDAgbXMgKDcgZGF5cykuAPQgT25seSB1c2VkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUgKGBEaXNhYmxlTWludGluZyA9IGZhbHNlYCkuADxNYXhQcnVuaW5nSXRlbXM4EGQAAAAUFQEgTWF4aW11bSBudW1iZXIgb2Ygc3RvcmFnZSBpdGVtcyB0aGF0IGNhbiBiZSBwcnVuZWQgaW4gYSBzaW5nbGUgY2FsbC4AWQEgVGhpcyBjb250cm9scyBob3cgbWFueSBzdG9yYWdlIGl0ZW1zIGNhbiBiZSBkZWxldGVkIGluIGVhY2ggY2FsbCB0byBgcHJ1bmVfZXJhX3N0ZXBgLk0BIFRoaXMgc2hvdWxkIGJlIHNldCB0byBhIGNvbnNlcnZhdGl2ZSB2YWx1ZSAoZS5nLiwgMTAwLTUwMCBpdGVtcykgdG8gZW5zdXJlIHBydW5pbmdVASBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggYmxvY2sgc3BhY2UuIFRoZSBhY3R1YWwgd2VpZ2h0IGlzIGRldGVybWluZWQgYnkgYmVuY2htYXJrcy4AATkQAAQ8Q3VycmVuY3lCYWxhbmNlNQEIUQEgSnVzdCB0aGUgYEN1cnJlbmN5OjpCYWxhbmNlYCB0eXBlOyB3ZSBoYXZlIHRoaXMgaXRlbSB0byBhbGxvdyB1cyB0byBjb25zdHJhaW4gaXQgdG80IGBGcm9tPHU2ND5gLgxfPkkH9xasibY0fRXs7O3KcjOGvE9UzKmJdl6ES58MaCxwb3RfYWNjb3VudAQMcG90PRAEBLwgUmVzb2x2ZSB0aGUgYWNjb3VudCBJRCBmb3IgYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KLxsjBEfJYPP4Q/jPsacGyixwb3RfYmFsYW5jZQQMcG90PRA1AQSwIEN1cnJlbnQgYmFsYW5jZSBoZWxkIGluIGEgZ2l2ZW4gcmV3YXJkIHBvdC4AXz5JB/cWrIm2NH0V7OztylbrmxSmvPZeV51dALMJO2xUZXJhX3Jld2FyZF9hbGxvY2F0aW9uBAxlcmE4RRAMJQEgUGVyLWVyYSByZXdhcmQgYWxsb2NhdGlvbiAoc3Rha2VyIHJld2FyZHMgKyB2YWxpZGF0b3IgaW5jZW50aXZlIGJ1ZGdldCkuAPggQm90aCBmaWVsZHMgYXJlIHplcm8gZm9yIGVyYXMgY3JlYXRlZCBpbiBsZWdhY3kgbWludGluZyBtb2RlLgBZAAAkTmZ0Q2xhaW1zASROZnRDbGFpbXMYLENyZWRpdFRyZWVzAAEEBThRBwQACGEBIFRoZSBNZXJrbGUgY29tbWl0bWVudCB0byB0aGUgTkZUIGNsYWltIGNyZWRpdHMgYXdhcmRlZCBpbiBvbmUgUGVvcGxlLWNoYWluIGJsb2NrLCBrZXllZDwgYnkgdGhhdCBibG9jay4AUE5leHRFeHBlY3RlZFNlcXVlbmNlAQAoIAAAAAAAAAAADEkBIFRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIG5leHQgdHJlZSBleHBlY3RlZCBmcm9tIHRoZSBnYW1lIHBhbGxldCdzIGxpdmUgc3RyZWFtLgAtASBBIGJhdGNoIHN0YXJ0aW5nIGFib3ZlIGl0IG1lYW5zIHRoZSB0cmVlcyBpbiBiZXR3ZWVuIHdlcmUgbG9zdCBvbiB0aGUgd2F5LgA0Q2xhaW1lZExlYXZlcwEBBAU4SRAEABhNASBXaGljaCBvZiBhIHRyZWUgYmxvY2sncyBsZWF2ZXMgaGF2ZSBiZWVuIGNsYWltZWQsIGJpdCBgbGVhZl9pbmRleGAgcGVyIGxlYWYsIGxlYXN0XCBzaWduaWZpY2FudCBiaXQgZmlyc3QuAGUBIEEgcHJvb2YgYmluZHMgYSBsZWFmIHRvIGl0cyBpbmRleCwgc28gdGhlIGluZGV4IG5hbWVzIHRoZSBjbGFpbSBhcyB0aGUgbGVhZiBpdHNlbGYgZG9lcy5xASBUaGUgYml0bWFwIG91dGxpdmVzIHRoZSB0cmVlLCBiZWNhdXNlIGEgcmVwbGF5IG9uIHRoZSBnYW1lIGNoYWluIGNhbiBkZWxpdmVyIHRoZSB0cmVlIGFnYWluOQEgdW50aWwgaXRzIGRlYWRsaW5lOyB0aGUgc3dlZXAgb2YgdGhlIGJsb2NrJ3MgZXhwaXJ5IGVudHJ5IGlzIHdoYXQgcmVtb3ZlcyBpdC4ARENvbGxlY3Rpb25NaW50ZXJzAAEEBThNEAQACGEBIFRoZSBjb2xsZWN0aW9ucyB3aG9zZSBvd25lcnMgYWNjZXB0IGNsYWltcywgZWFjaCBib3VuZCB0byB0aGUgcmVnaXN0ZXJpbmcgb3duZXIgYW5kIHRoZWEBIFtgSXRlbVNlbGVjdGlvbmBdIGRlY2lkaW5nIHRoZSBpdGVtLiBBIGNvbGxlY3Rpb24gd2l0aCBubyBlbnRyeSBjYW5ub3QgYmUgY2xhaW1lZCBpbnRvLgAwVHJlZUV4cGlyaWVzAAEIBgVREBAEABhxASBFdmVyeSB0cmVlIGJsb2NrIGEgc3dlZXAgc3RpbGwgaGFzIHRvIHJlYWNoLCBmaWxlZCB1bmRlciB0aGUgdGltZXN0YW1wIGl0cyB0cmVlIGNvbW1pdHMgdG8uAF0BIFRoZSBrZXkgaXMgaGFzaGVkIHdpdGggYElkZW50aXR5YCBhbmQgZW5jb2RlZCBiaWctZW5kaWFuLCBzbyB0aGUgbWFwIGl0ZXJhdGVzIGZyb20gdGhlcQEgb2xkZXN0IGRlYWRsaW5lIHRvIHRoZSBuZXdlc3QsIHdoaWNoIFtgQ3JlZGl0VHJlZXNgXSBkb2VzIG5vdC4gQSBzd2VlcCB0YWtlcyB0aGUgdHJlZXMgdGhhdG0BIGFyZSBkdWUgYW5kIHN0b3BzIGF0IHRoZSBmaXJzdCB0aGF0IGlzIG5vdC4gT25seSBhIHN3ZWVwIHJlbW92ZXMgYW4gZW50cnkuIEEgZnVsbHkgY2xhaW1lZDkBIHRyZWUgbGVhdmVzIGl0cyBlbnRyeSBiZWhpbmQsIGFuZCB0aGUgc3dlZXAgb2YgdGhhdCBlbnRyeSByZW1vdmVzIGl0cyBiaXRtYXAuAFBQZW5kaW5nVHJlZURlbGV0aW9ucwEAVRAEABhhASBUaGUgdHJlZSBibG9ja3Mgd2hvc2UgZGVsZXRpb24gdGhlIGdhbWUgY2hhaW4gaGFzIG5vdCBiZWVuIHRvbGQgYWJvdXQgeWV0LCBpbiB0aGUgb3JkZXJkIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtLgBxASBCb3RoIHJlbW92YWwgcGF0aHMgYWRkIHRvIGl0LCBhbmQgW2BQYWxsZXQ6OnNlbmRfdHJlZV9kZWxldGlvbnNgXSBkcmFpbnMgaXQgZnJvbSB0aGUgZnJvbnQuaQEgQSBibG9jayB0aGF0IGRvZXMgbm90IGZpdCBpcyBkcm9wcGVkLCBiZWNhdXNlIHRoZSBkZWxldGlvbiBvbmx5IHNhdmVzIHRoZSBnYW1lIGNoYWluIGZyb23wIHdhaXRpbmcgb3V0IGl0cyBvd24gVFRMOyB0aGF0IFRUTCBpcyB3aGF0IHJlbW92ZXMgaXRzIGNvcHkuAAFBBwABFQoAHBxUcmVlVHRsKCAAp3YAAAAAABQ9ASBIb3cgbG9uZywgaW4gc2Vjb25kcyBhZnRlciB0aGUgYHRpbWVzdGFtcGAgaXRzIHRyZWUgY29tbWl0cyB0bywgYSBjcmVkaXQgc3RheXMsIGNsYWltYWJsZS4AVQEgW2BQYWxsZXQ6OmNsYWltYF0gZG9lcyBub3QgY2hlY2sgdGhpcywgc28gYSBjbGFpbSBzdWNjZWVkcyB1bnRpbCBhIHN3ZWVwIHJlbW92ZXMgdGhlQQEgdHJlZSwgd2hpY2ggaGFwcGVucyBpbiB0aGUgZmlyc3QgYmxvY2sgcGFzdCB0aGUgZGVhZGxpbmUgdGhhdCBpbmNsdWRlcyBhIHN3ZWVwLgBYTWF4UXVldWVkVHJlZURlbGV0aW9uczgQgAAAACQpASBUaGUgbWF4aW11bSBudW1iZXIgb2YgdHJlZSBibG9ja3MgdGhhdCBjYW4gd2FpdCBmb3IgYSBkZWxldGlvbiBtZXNzYWdlIGluaCBbYFBlbmRpbmdUcmVlRGVsZXRpb25zYF0uAF0BIE9uZSBtZXNzYWdlIHRha2VzIFtgQ29uZmlnOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZWBdIGJsb2NrcyBvZmYgdGhlIGZyb250LCBhbmQgdGhlSQEgb2ZmY2hhaW4gd29ya2VyIGdldHMgb25lIG1lc3NhZ2UgaW50byB0aGUgcG9vbCBwZXIgYmxvY2ssIHNvIHRoZSBxdWV1ZSBob2xkcyB3aGF0QQEgY2xhaW1zIGFuZCBzd2VlcHMgYWRkIGFib3ZlIHRoYXQgcmF0ZS4gQSBkZWxldGlvbiB0aGF0IGRvZXMgbm90IGZpdCBpcyBkcm9wcGVkLGEBIGJlY2F1c2UgdGhlIGdhbWUgY2hhaW4ncyBUVEwsIG5vdCB0aGlzIHF1ZXVlLCByZW1vdmVzIGl0cyBjb3B5LiBTZXQgaXQgYXQgbGVhc3QgYXMgaGlnaFkBIGFzIFtgQ29uZmlnOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZWBdLCBvdGhlcndpc2Ugb25lIHN3ZWVwIGRyb3BzIGRlbGV0aW9ucyBvZiBpdHMUIG93bi4AaE1heFRyZWVEZWxldGlvbnNQZXJNZXNzYWdlOBBAAAAAIFUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmVlIGJsb2NrcyBjYXJyaWVkIGJ5IG9uZSBkZWxldGlvbiBtZXNzYWdlLCB3aGljaCBpcyBhbHNvIGhvd+AgbWFueSB0cmVlcyBvbmUgW2BQYWxsZXQ6OnN3ZWVwX2V4cGlyZWRfdHJlZXNgXSByZW1vdmVzLgBlASBPbmUgYm91bmQgc2VydmVzIGJvdGgsIHNvIGEgc3dlZXAgcXVldWVzIGV4YWN0bHkgb25lIG1lc3NhZ2UncyB3b3J0aCBhbmQgdGhvc2UgZGVsZXRpb25zXQEgZ28gb3V0IGluIHRoZSBibG9jayBhZnRlciBpdC4gSXQgYWxzbyBib3VuZHMgdGhlIHN3ZWVwJ3Mgd2VpZ2h0IGFnYWluc3QgdGhlIGJsb2NrLCBhbmQZASB0aGUgb2ZmY2hhaW4gd29ya2VyIHN1Ym1pdHMgb25lIHN3ZWVwIHBlciBibG9jayB1bnRpbCBub3RoaW5nIGlzIGR1ZS5VASBUaGUgZ2FtZSBwYWxsZXQncyBvd24gYm91bmQgbXVzdCBiZSBhdCBsZWFzdCB0aGlzIGxhcmdlLCBvdGhlcndpc2UgdGhlIG1lc3NhZ2UgZmFpbHPAIHRvIGRlY29kZSB0aGVyZSBhbmQgaXRzIGRlbGV0aW9ucyBuZXZlciBhcnJpdmUuAFBHYW1lQ2hhaW5QYWxsZXRJbmRleAwEOQhNASBQYWxsZXQgaW5kZXggb2YgaW5kaXYtcGFsbGV0LW5mdC1jcmVkaXRzIG9uIFtgQ29uZmlnOjpHYW1lQ2hhaW5Mb2NhdGlvbmBdLCB1c2VkIHRv2CBlbmNvZGUgdGhlIGBUcmFuc2FjdGAgdGhlIGRlbGV0aW9ucyBhcmUgZGVsaXZlcmVkIGluLgBITWF4VHJlZXNQZXJNZXNzYWdlOBAgAAAAENggTWF4aW11bSBudW1iZXIgb2YgY3JlZGl0IHRyZWVzIGFjY2VwdGVkIGluIG9uZSBiYXRjaC4AVQEgTXVzdCBiZSBhdCBsZWFzdCB0aGUgZ2FtZSBwYWxsZXQncyBgTWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlYCwgb3RoZXJ3aXNlIHRoZSBiYXRjaGVz4CBpdCBzZW5kcyBmYWlsIHRvIGRlY29kZSBhbmQgdGhlIHRyZWVzIGluIHRoZW0gYXJlIGxvc3QuADRNYXhQcm9vZk5vZGVzOBAQAAAAEPwgTWF4aW11bSBudW1iZXIgb2Ygc2libGluZyBoYXNoZXMgYW4gaW5jbHVzaW9uIHByb29mIG1heSBjYXJyeS4AWQEgQSB0cmVlIG9mIGBuYCBsZWF2ZXMgbmVlZHMgYGNlaWwobG9nMihuKSlgIG9mIHRoZW0sIHNvIHRoaXMgbXVzdCBjb3ZlciB0aGUgbGVhdmVzIHRoZWEBIGdhbWUgY2hhaW4gcHV0cyBpbiBvbmUgdHJlZTogYSBsb3dlciBib3VuZCBsZWF2ZXMgdGhlIHRhaWwgb2YgYSBsYXJnZSB0cmVlIHVuY2xhaW1hYmxlLgBETWF4Q3JlZGl0c1BlclRyZWU4EAAIAAAYTQEgVGhlIG1vc3QgY3JlZGl0cyBvbmUgdHJlZSBjb21taXRzIHRvLCB3aGljaCBpcyB0aGUgZ2FtZSBjaGFpbidzIGBBV0FSRFNfUEVSX1RSRUVgLgBdASBbYENsYWltZWRMZWF2ZXNgXSBob2xkcyBvbmUgYml0IHBlciBsZWFmLCBzbyB0aGlzIHNpemVzIHRoYXQgYml0bWFwLiBBIHRyZWUgY29tbWl0dGluZ0kBIHRvIG1vcmUgbGVhdmVzIGlzIG5vdCBzdG9yZWQsIGJlY2F1c2UgdGhlIGxlYXZlcyBwYXN0IHRoZSBiaXRtYXAgY291bGQgYmUgY2xhaW1lZE0BIHR3aWNlLiBTZXQgaXQgdG8gdGhlIGdhbWUgY2hhaW4ncyBvd24gYm91bmQsIHdoaWNoIGEgbG93ZXIgdmFsdWUgbWFrZXMgbGFyZ2UgdHJlZXM8IHVuZGVsaXZlcmFibGUuAAFZEAAAAGAAAERNZW1iZXJzU3Vic2NyaWJlcgFETWVtYmVyc1N1YnNjcmliZXIcJFJpbmdSb290cwABDAUCAl0QYRAEACS4IFJlY2VudCByaW5nIHJvb3RzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLlkBIE1hcHMgKGdlbmVyYXRpb24sIGlkZW50aWZpZXIsIHJpbmdfaW5kZXgpIHRvIGEgc2xpZGluZyB3aW5kb3cgb2YgcmluZyByb290czsgb25seSB0aGVNASBbYEN1cnJlbnRHZW5lcmF0aW9uYF0gcHJlZml4IGlzIGxpdmUsIHNvIGEgbG9naWNhbCBjbGVhciBsZWF2ZXMgdGhlIG9sZGVyIHByZWZpeGVzzCB1bnJlYWNoYWJsZSB1bnRpbCB0aGUgb2ZmY2hhaW4gcHVyZ2UgcmVtb3ZlcyB0aGVtLi0BIFByb29mcyBhcmUgYWNjZXB0ZWQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHRoYXQgaGFzIG5vdCBleHBpcmVkOiBhNQEgc3VwZXJzZWRlZCByb290IGV4cGlyZXMgb25jZSBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uYCBoYXMgcGFzc2VkIHNpbmNlIGl0czEBIHN1Y2Nlc3NvcidzIHNvdXJjZSB0aW1lLiBUaGUgb2xkZXN0IHJvb3QgaXMgZXZpY3RlZCB3aGVuIHRoZSB3aW5kb3cgcmVhY2hlcz0BIGBNYXhSZWNlbnRSb290c1BlclJpbmdgLCBzbyBleHBpcmVkIHJvb3RzIG1heSByZW1haW4gc3RvcmVkIHVudGlsIHRoZW4gYnV0IGFyZXggcmVqZWN0ZWQgZHVyaW5nIHZlcmlmaWNhdGlvbi4AREN1cnJlbnRHZW5lcmF0aW9uAQA4EAAAAAAMFQEgR2VuZXJhdGlvbiBwcmVmaXggaG9sZGluZyB0aGUgbGl2ZSBgUmluZ1Jvb3RzYCBlbnRyaWVzLiBJbmNyZWFzZWQgb25hASBgY2xlYXJfYWxsX3JpbmdfZGF0YWAgY2FsbC4gQSBzYXR1cmF0ZWQgY291bnRlciBzdG9wcyBkaXN0aW5ndWlzaGluZyBnZW5lcmF0aW9ucywgd2hpY2jcIGlzIHVucmVhY2hhYmxlIGZvciBub3RpZmllci1kcml2ZW4gcmUtaW5pdGlhbGl6YXRpb25zLgA8UXVldWVkUmluZ1B1cmdlAABtEAQACGEBIFBvc2l0aW9uIG9mIHRoZSBwdXJnZSB0aGF0IHJlbW92ZXMgdGhlIHN0YWxlIGBSaW5nUm9vdHNgIHByZWZpeGVzLiBBYnNlbnQgd2hlbiBubyBzdGFsZUwgcmluZyBkYXRhIHJlbWFpbnMuAFBSaW5nQ29sbGVjdGlvblN0YXRlcwEBBAIIcRA4AAAAAAAAAAAAAAAAAAAEQQEgU3RhdGUgb2YgZWFjaCByaW5nIGNvbGxlY3Rpb24gaW5jbHVkaW5nIHJpbmdzIGNvdW50IGFuZCBtaXNzaW5nIHJpbmdzIHRyYWNraW5nLgBcUmluZ0NvbGxlY3Rpb25FeHBvbmVudHMAAQQCCHkHBAAY5CBSaW5nIGV4cG9uZW50IHJlY29yZGVkIHBlciBjb2xsZWN0aW9uIGF0IGluaXRpYWxpemF0aW9uLgBFASBUaGUgc3Vic2NyaWJlciBuZWVkcyB0aGUgZXhwb25lbnQgdG8gZGVyaXZlIHRoZSBjcnlwdG8ncyBgQ29uZmlnYCB3aGVuIHZlcmlmeWluZ0kBIHByb29mcywgc2luY2UgcmluZyByb290cyBvbiB0aGVpciBvd24gZG8gbm90IGNhcnJ5IHRoYXQgaW5mb3JtYXRpb24uIFRoZSBlbnRyeSBpc0UBIHdyaXR0ZW4gYnkgYGluaXRpYWxpemVfcmluZ19yb290c2AgYW5kIGlzIHJlYWQgZHVyaW5nIHByb29mIHZlcmlmaWNhdGlvbiB2aWEgdGhlZCBgTWVtYmVyc2hpcFByb3ZlcmAgaW1wbC4AMFN1YnNjcmlwdGlvbgEAhRAEAAR0IEN1cnJlbnQgc3Vic2NyaXB0aW9uIHN0YXR1cy4APFByb2Nlc3NpbmdTdGF0ZQEAiRBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0BIFN0YXRlIGZvciB0cmFja2luZyB1cGRhdGVzIHByb2Nlc3NpbmcgdGltZXN0YW1wcyBhbmQgc2VxdWVuY2UgbnVtYmVycy4AAXUHAAEhCgA4RFJpbmdSb290c05vdGlmaWVyjRAYAQEAeRdFCKQgRW5kcG9pbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIG5vdGlmaWVyLrAgSW5jbHVkZXMgdGhlIFhDTSBsb2NhdGlvbiBhbmQgcGFsbGV0IGluZGV4LgAoU2VsZlBhcmFJZDgQ3AUAAAQhASBUaGlzIGNoYWluJ3MgcGFyYWNoYWluIElELCBpbmNsdWRlZCBpbiByZXBsYXkgcmVxdWVzdHMgdG8gdGhlIG5vdGlmaWVyLgBwTWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQ/wAAAATUIE1heGltdW0gbnVtYmVyIG9mIG1pc3NpbmcgcmluZyByb290cyBwZXIgY29sbGVjdGlvbi4AcE1heERlbGV0ZWRSaW5nc1BlckNvbGxlY3Rpb244EGQAAAAI/CBNYXhpbXVtIG51bWJlciBvZiBkZWxldGVkIHJpbmcgaW5kaWNlcyB0cmFja2VkIHBlciBjb2xsZWN0aW9uLswgUHJldmVudHMgZmFsc2VseSBtYXJraW5nIGRlbGV0ZWQgcmluZ3MgYXMgbWlzc2luZy4ASE1heEdhcFNjYW5QZXJCYXRjaDgQIAAAAAzgIE51bWJlciBvZiByaW5nIGluZGljZXMgdGhlIGdhcCBzY2FuIGV4YW1pbmVzIHBlciBiYXRjaC78IEl0IG11c3QgZXhjZWVkIGBNYXhVcGRhdGVzUGVyQmF0Y2hgLCBvdGhlcndpc2UgdGhlIHNjYW4gY3Vyc29yGQEgYWR2YW5jZXMgbm8gZmFzdGVyIHRoYW4gdGhlIHJpbmcgaW5kZXggZnJvbnRpZXIgYW5kIG5ldmVyIGNhdGNoZXMgdXAuADRQdXJnZVBhZ2VTaXplOBBkAAAADEUBIE1heGltdW0gbnVtYmVyIG9mIGBSaW5nUm9vdHNgIGVudHJpZXMgcmVtb3ZlZCBwZXIgYHB1cmdlX3N0YWxlX3Jpbmdfcm9vdHNgIGNhbGwuMQEgQm91bmRzIHRoZSB3ZWlnaHQgb2YgYSBzaW5nbGUgcHVyZ2UgcGFnZTsgdGhlIG9mZmNoYWluIHdvcmtlciBzdWJtaXRzIHBhZ2VzlCB1bnRpbCBhbGwgc3RhbGUgZW50cmllcyBhcmUgcmVtb3ZlZC4AOE1heENvbGxlY3Rpb25zOBAKAAAABOAgTWF4aW11bSBudW1iZXIgb2YgcmluZyBjb2xsZWN0aW9ucyB0aGF0IGNhbiBiZSB0cmFja2VkLgBUUmVwbGF5Q29vbGRvd25TZWNvbmRzKCA8AAAAAAAAAAhVASBDb29sZG93biBwZXJpb2QgKGluIHNlY29uZHMpIGFmdGVyIHJlY2VpdmluZyBhIGJhdGNoIGJlZm9yZSBzZW5kaW5nIHJlcGxheSByZXF1ZXN0cy7YIEFsbG93cyB0aW1lIGZvciBtdWx0aS1wYXJ0IGJhdGNoZXMgdG8gYXJyaXZlIHZpYSBYQ00uAEhNYXhVcGRhdGVzUGVyQmF0Y2g4EAoAAAAUNQEgTWF4aW11bSBudW1iZXIgb2YgcmluZyByb290IHVwZGF0ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGluIGEgc2luZ2xlIGJhdGNoLgApASAqKkltcG9ydGFudDoqKiBUaGlzIHZhbHVlIE1VU1QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBub3RpZmllcidz7CBgTWF4VXBkYXRlc1BlckJhdGNoYC4gSWYgdGhlIG5vdGlmaWVyIHNlbmRzIGJhdGNoZXMgbGFyZ2VyHQEgdGhhbiB0aGlzIGxpbWl0LCBkZWNvZGluZyB3aWxsIGZhaWwgc2lsZW50bHkgYW5kIHVwZGF0ZXMgd2lsbCBiZSBsb3N0LgBYUmVwbGF5V2FybmluZ1RocmVzaG9sZDgQBQAAAARlASBOdW1iZXIgb2YgcmVwbGF5IHJlcXVlc3QgYXR0ZW1wdHMgZm9yIGEgZ2l2ZW4gcmluZyBpbmRleCBiZWZvcmUgZW1pdHRpbmcgd2FybmluZyBldmVudHMuAFhSZXBsYXlBYmFuZG9uVGhyZXNob2xkOBAKAAAACAUBIFRocmVzaG9sZCBmb3IgYWJhbmRvbmluZyByZXBsYXkgYXR0ZW1wdHMgZm9yIGEgZ2l2ZW4gcmluZyBpbmRleC4ZASBBZnRlciB0aGlzIG1hbnkgYXR0ZW1wdHMsIHRoZSBtaXNzaW5nIGluZGV4IGlzIHJlbW92ZWQgZnJvbSB0cmFja2luZy4AVE1heFJlY2VudFJvb3RzUGVyUmluZzgQAwAAABAlASBNYXhpbXVtIG51bWJlciBvZiByZWNlbnQgcmluZyByb290cyBzdG9yZWQgcGVyIChjb2xsZWN0aW9uLCByaW5nX2luZGV4KS4tASBXaGVuIGEgcmluZyByb290IGlzIHVwZGF0ZWQsIHRoZSBuZXcgcm9vdCBpcyBwdXNoZWQgaW50byBhIHNsaWRpbmcgd2luZG93OyUBIHByb29mcyBidWlsdCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgc3RpbGwgdmVyaWZ5LiBPbGRlc3Qgcm9vdCBpc4QgZXZpY3RlZCB3aGVuIHRoZSB3aW5kb3cgaXMgZnVsbC4AYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbiggEA4AAAAAAAAQLQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IGEgc3VwZXJzZWRlZCByaW5nIHJvb3QgcmVtYWlucyBhY2NlcHRlZCBmb3IgcHJvb2ZNASB2ZXJpZmljYXRpb24sIG1lYXN1cmVkIGZyb20gaXRzIHN1Y2Nlc3NvcidzIHNvdXJjZSB0aW1lLiBUaGUgbmV3ZXN0IHJvb3Qgb2YgYSByaW5nNQEgbmV2ZXIgZXhwaXJlcy4gQm91bmRzIGhvdyBsb25nIGEgbWVtYmVyIHJlbW92ZWQgZnJvbSBhIHJpbmcgY2FuIGtlZXAgcHJvdmluZ5wgbWVtYmVyc2hpcCBhZ2FpbnN0IGEgcHJlLXJlbW92YWwgcm9vdC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAEzCBCbG9jayBpbnRlcnZhbCBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgABkRAAAABhAAA0QWxpYXNBY2NvdW50cwE0QWxpYXNBY2NvdW50cww4QWxpYXNUb0FjY291bnQAAQgCApUQBAQACMAgTWFwcyAoY29sbGVjdGlvbiwgY29udGV4dHVhbF9hbGlhcykgdG8gYWNjb3VudC5RASBVc2VzIGBEb3VibGVNYXBgIGJlY2F1c2UgdGhlIHNhbWUgYWxpYXMgdmFsdWUgY291bGQgZXhpc3QgaW4gZGlmZmVyZW50IGNvbGxlY3Rpb25zLgA4QWNjb3VudFRvQWxpYXMAAQQCBJ0QBAAEJQEgTWFwcyBhY2NvdW50IHRvIGZ1bGwgYWxpYXMgaW5mbyAoY29sbGVjdGlvbiArIHJldmlzZWQgY29udGV4dHVhbCBhbGlhcykuAChTdGFsZVNpbmNlAAEEAgQoBAAgXQEgV2hlbiBhIG1hcHBpbmcgd2FzIGZpcnN0IHJlcG9ydGVkIHN0YWxlLCB3aGljaCBpcyB3aGF0IFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0gaXM4IGNvdW50ZWQgZnJvbS4AVQEgVGhlIGZpcnN0IFtgUGFsbGV0OjpyZXBvcnRfc3RhbGVfYWxpYXNlc2BdIGZvciBhIHN0YWxlIG1hcHBpbmcgc3RhbXBzIGl0IGFuZCByZW1vdmVzcQEgbm90aGluZzsgYSBsYXRlciBjYWxsIGRvZXMgdGhlIHJlbW92YWwuIFRoZSBzdGFtcCBpcyB0aGUgcmluZydzIG5ld2VzdCByb290IHRpbWUgd2hlcmUgdGhhdE0BIGlzIHN0aWxsIGtub3duIGFuZCB0aGUgY2FsbCdzIG93biB0aW1lIG90aGVyd2lzZSwgc28gYSBkZWxldGVkIHJpbmcga2VlcHMgdGhlIGZ1bGxpASByZXRlbnRpb24uIEV2ZXJ5IHBhdGggdGhhdCB3cml0ZXMgW2BBY2NvdW50VG9BbGlhc2BdIGNsZWFycyBpdCwgYXMgZG9lcyBhIGNhbGwgdGhhdCBmaW5kcy0BIHRoZSByZXZpc2lvbiB2ZXJpZnlpbmcgYWdhaW4sIHNvIGEgbWFwcGluZyBrbm93biB0byBiZSB2YWxpZCBoYXMgbm8gc3RhbXAuAAGZBwABJQoAHExQcm9vZlZhbGlkaXR5V2luZG93KCAsAQAAAAAAAAzoIFRpbWUgdG9sZXJhbmNlIChpbiBzZWNvbmRzKSBmb3IgcHJvb2YtYmFzZWQgdHJhbnNhY3Rpb25zLkkBIFByb29mcyBhcmUgdmFsaWQgZnJvbSBgcHJvb2ZfdmFsaWRfYXRgIHRvIGBwcm9vZl92YWxpZF9hdCArIFByb29mVmFsaWRpdHlXaW5kb3dgLmwgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AQE1hcHBpbmdSZXRlbnRpb24oIACndgAAAAAAEEkBIEhvdyBsb25nIChpbiBzZWNvbmRzKSBhIG1hcHBpbmcgaXMga2VwdCwgY291bnRlZCBmcm9tIFtgU3RhbGVTaW5jZWBdLCBhZnRlciB3aGljaGEBIFtgUGFsbGV0OjpyZXRpcmVfc3RhbGVfYWxpYXNlc2BdIG1heSByZW1vdmUgaXQuIEEgcmVidWlsdCByaW5nIHN0YW1wcyB0aGUgbmV3ZXN0IHJvb3Qnc1kBIHNvdXJjZSB0aW1lLCB3aGljaCBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdIGFsc28gbWVhc3VyZXMgaXRzIG93biByZXRlbnRpb24gZnJvbSwgc29ZASB0aGUgbWFwcGluZyBvdXRsaXZlcyB0aGUgcmV2aXNpb24gb25seSBieSB0aGUgZGlmZmVyZW5jZS4gTXVzdCBleGNlZWQgdGhhdCByZXRlbnRpb24uAFhQZW9wbGVMaXRlUmluZ0V4cG9uZW50eQcECQR8IFJpbmcgZXhwb25lbnQgZm9yIFBlb3BsZSBMaXRlLgBIUGVvcGxlUmluZ0V4cG9uZW50eQcECQRoIFJpbmcgZXhwb25lbnQgZm9yIFBlb3BsZS4ASE1heFN0YWxlQWxpYXNCYXRjaDgQIAAAABQxASBUaGUgbW9zdCBtYXBwaW5ncyBvbmUgc3dlZXAgdHJhbnNhY3Rpb24gY2Fycmllcy4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AXQEgQSBzd2VlcCBzdWJtaXRzIG9uZSB0cmFuc2FjdGlvbiBwZXIgYWN0aW9uLCBzbyB0aGlzIGJvdW5kcyBlYWNoIG9mIHRoZW0uIEV2ZXJ5IG1hcHBpbmdBASBpbiBhIGJhdGNoIGlzIHZlcmlmaWVkIHR3aWNlLCBvbmNlIGluIGBhdXRob3JpemVgIGFuZCBvbmNlIGluIHRoZSBjYWxsLCBhbmQgdGhluCBgaW50ZWdyaXR5X3Rlc3RgIGhvbGRzIHRoZSBwYWlyIHRvIHRoZSBibG9jay4AaFBlb3BsZUNvbGxlY3Rpb25JZGVudGlmaWVyCIBwb3A6cG9sa2Fkb3QubmV0d29yay9wZW9wbGUgICAgIAAAeFBlb3BsZUxpdGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlLWxpdGUAAAGhEAAAAGIAABBQZ2FzARBQZ2FzBERDbGFpbWVkR2FzQWxpYXNlcwABCAYCpRAQBAAQCQEgQWxpYXNlcyB0aGF0IGhhdmUgYmVlbiB1c2VkIHRvIGNsYWltIFBHQVMsIGtleWVkIGJ5IChkYXksIGFsaWFzKS5BASBgRGF5YCB1c2VzIGJpZy1lbmRpYW4gZW5jb2Rpbmcgd2l0aCBgSWRlbnRpdHlgIGhhc2hpbmcgc28gaXRlcmF0aW9uIHlpZWxkcyBkYXlzOQEgaW4gYXNjZW5kaW5nIG9yZGVyLCBhbGxvd2luZyB0aGUgb2ZmY2hhaW4gd29ya2VyIHRvIGZpbmQgdGhlIG9sZGVzdCBzdGFsZSBkYXlIIHdpdGhvdXQgc2Nhbm5pbmcuAAGlBwABKQoAGCxQZ2FzQXNzZXRJZDgQAJQ1dwSAIFRoZSBhc3NldCBJRCBvZiB0aGUgUEdBUyB0b2tlbi4APFBnYXNDbGFpbUFtb3VudDUBQAB0O6QLAAAAAAAAAAAAAAAElCBUaGUgYW1vdW50IG9mIFBHQVMgbWludGVkIHBlciBjbGFpbS4AbE1heENsYWltc1BlclBlcmlvZFBlclBlcnNvbjgQZAAAAAQpASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGZ1bGwgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAHxNYXhDbGFpbXNQZXJQZXJpb2RQZXJMaXRlUGVyc29uOBAoAAAAECkBIE1heGltdW0gbnVtYmVyIG9mIFBHQVMgY2xhaW1zIGEgbGl0ZSBwZXJzb24gbWF5IHBlcmZvcm0gcGVyIHBlcmlvZCAoZGF5KS4AYQEgVHlwaWNhbGx5IGxvd2VyIHRoYW4gW2BNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb25gXShTZWxmOjpNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb24pLQEgc2luY2UgbGl0ZSBwZXJzb25ob29kIG9mZmVycyB3ZWFrZXIgc3liaWwgcmVzaXN0YW5jZSB0aGFuIGZ1bGwgcGVyc29uaG9vZC4AgE1heFBnYXNDbGFpbVJlY29yZENsZWFudXBQZXJDYWxsOBAUAAAABDkBIE1heGltdW0gbnVtYmVyIG9mIFBHQVMgY2xhaW0gcmVjb3JkcyB0aGF0IGNhbiBiZSBjbGVhbmVkIHVwIGluIGEgc2luZ2xlIGNhbGwuAFRNYXhQZ2FzQ2xhaW1zUGVyQmF0Y2g4EAUAAAAYNQEgTWF4aW11bSBudW1iZXIgb2YgY2xhaW0gc2xvdHMgYSBzaW5nbGUgW2BDYWxsOjpiYXRjaF9jbGFpbV9wZ2FzYF0gbWF5IGNhcnJ5LgBlASBUaGlzIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCBbYE1BWF9QR0FTX0JBVENIX0NMQUlNU2BdIG9yIHRoZSBsYXJnZXN0IHBlci1jb2xsZWN0aW9uIGNsYWltVQEgY291bnQuIFRoaXMgdmFsdWUgY2Fubm90IGJlIGNoYW5nZWQgZHluYW1pY2FsbHkgd2l0aG91dCBhIHJ1bnRpbWUgdXBncmFkZSBiZWNhdXNlIGl0QQEgZGV0ZXJtaW5lcyB0aGUgd2VpZ2h0IG9mIHRoZSBiYXRjaCBjbGFpbSBjYWxsLCBzbyBpbmNyZWFzaW5nIHRoaXMgdmFsdWUgd2l0aG91dC0BIHJlLWJlbmNobWFya2luZyB3aWxsIG1ha2UgdGhhdCBjYWxsIGNvbnN1bWUgbW9yZSBibG9ja3NwYWNlIHRoYW4gZXhwZWN0ZWQuAAGpEAAAAGMAABhSZXZpdmUBGFJldml2ZTgwUHJpc3RpbmVDb2RlAAEEBjwYBAAMzCBBIG1hcHBpbmcgZnJvbSBhIGNvbnRyYWN0J3MgY29kZSBoYXNoIHRvIGl0cyBjb2RlLiEBIFRoZSBjb2RlJ3Mgc2l6ZSBpcyBib3VuZGVkIGJ5IFtgY3JhdGU6OmxpbWl0czo6QkxPQl9CWVRFU2BdIGZvciBQVk0gYW5k+CBbYHJldm06OnByaW1pdGl2ZXM6OmVpcDE3MDo6TUFYX0NPREVfU0laRWBdIGZvciBFVk0gYnl0ZWNvZGUuAChDb2RlSW5mb09mAAEEBjytEAQABOAgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZSBpbmZvLgA0QWNjb3VudEluZm9PZgABBAZxB7UQBAAE/CBUaGUgZGF0YSBhc3NvY2lhdGVkIHRvIGEgY29udHJhY3Qgb3IgZXh0ZXJuYWxseSBvd25lZCBhY2NvdW50LgA8TmF0aXZlRGVwb3NpdE9mAQEIBgbBEDUBQAAAAAAAAAAAAAAAAAAAAAAoHQEgTmF0aXZlIGN1cnJlbmN5IHN0b3JhZ2UgZGVwb3NpdCBjb250cmlidXRlZCBieSBhIHVzZXIgaW50byBhIGNvbnRyYWN0LgAxASBCb3VuZHMgaG93IG11Y2ggbmF0aXZlIHZhbHVlIHRoZSB1c2VyIGNhbiByZWNlaXZlIGJhY2sgZnJvbSB0aGF0IGNvbnRyYWN0J3NEIHN0b3JhZ2UgZGVwb3NpdC4AoCBLZXlzOiBgKGhvbGRlciwgY29udHJpYnV0b3IpIC0+IGFtb3VudGBpASAtIGBob2xkZXJgOiBhY2NvdW50IG9uIHdoaWNoIHRoZSBkZXBvc2l0IGlzIGhlbGQgKGEgY29udHJhY3QsIG9yIHRoZSBwYWxsZXQncyBvd24gYWNjb3VudHQgICBmb3IgY29kZS11cGxvYWQgZGVwb3NpdHMpLnUBIC0gYGNvbnRyaWJ1dG9yYDogdXNlciB0aGF0IGZ1bmRlZCB0aGUgZGVwb3NpdC4gUmVjZWl2ZXMgdGhlIG5hdGl2ZSBwb3J0aW9uIG9uIHJlZnVuZCwgY2FwcGVkcCAgIGF0IHRoaXMgZW50cnkncyBgYW1vdW50YC4APEltbXV0YWJsZURhdGFPZgABBAZxB8UQBAAE0CBUaGUgaW1tdXRhYmxlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYWNjb3VudC4ANERlbGV0aW9uUXVldWUAAQQFOMkQBAAUuCBUZXJtaW5hdGVkIGNvbnRyYWN0cyB0aGF0IGF3YWl0IGxhenkgY2xlYW51cC4ARQEgRWFjaCBlbnRyeSBwYWlycyBhIGNoaWxkIHRyaWUgSUQgd2l0aCB0aGUgY29udHJhY3QgYWNjb3VudCBzbyB0aGF0IGBvbl9pZGxlYCBjYW5ZASBkcmFpbiBib3RoIHRoZSBjaGlsZCB0cmllIGFuZCBhbnkgW2BOYXRpdmVEZXBvc2l0T2ZgXSBlbnRyaWVzIHRoYXQgbmFtZWQgdGhlIGNvbnRyYWN0RQEgYXMgYGhvbGRlcmAuIEJvdGggY2FuIGJlIGFyYml0cmFyaWx5IGxhcmdlLCBzbyBjbGVhbnVwIHJ1bnMgbGF6aWx5IGluIGBvbl9pZGxlYC4AUERlbGV0aW9uUXVldWVDb3VudGVyAQDNECAAAAAAAAAAAAhNASBBIHBhaXIgb2YgbW9ub3RvbmljIGNvdW50ZXJzIHVzZWQgdG8gdHJhY2sgdGhlIGxhdGVzdCBjb250cmFjdCBtYXJrZWQgZm9yIGRlbGV0aW9uqCBhbmQgdGhlIGxhdGVzdCBkZWxldGVkIGNvbnRyYWN0IGluIHF1ZXVlLgA8T3JpZ2luYWxBY2NvdW50AAEEBnEHBAQAGNggTWFwIGEgRXRoZXJldW0gYWRkcmVzcyB0byBpdHMgb3JpZ2luYWwgYEFjY291bnRJZDMyYC4ARQEgV2hlbiBkZXJpdmluZyBhIGBIMTYwYCBmcm9tIGFuIGBBY2NvdW50SWQzMmAgd2UgdXNlIGEgaGFzaCBmdW5jdGlvbi4gSW4gb3JkZXIgdG8xASByZWNvbnN0cnVjdCB0aGUgb3JpZ2luYWwgYWNjb3VudCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSByZXZlcnNlIG1hcHBpbmcgaGVyZS4ZASBSZWdpc3RlciB5b3VyIGBBY2NvdW50SWQzMmAgdXNpbmcgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG9kIHVzZSBpdCB3aXRoIHRoaXMgcGFsbGV0LgA0RXRoZXJldW1CbG9jawEA0RARDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJB0BIFRoZSBjdXJyZW50IEV0aGVyZXVtIGJsb2NrIHRoYXQgaXMgc3RvcmVkIGluIHRoZSBgb25fZmluYWxpemVgIG1ldGhvZC4AHCAjIE5vdGUAKQEgVGhpcyBjb3VsZCBiZSBmdXJ0aGVyIG9wdGltaXplZCBpbnRvIHRoZSBmdXR1cmUgdG8gc3RvcmUgb25seSB0aGUgbWluaW11bR0BIGluZm9ybWF0aW9uIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgRXRoZXJldW0gYmxvY2sgYXQgdGhlIFJQQyBsZXZlbC4APQEgU2luY2UgdGhlIGJsb2NrIGlzIGNvbnZlbmllbnQgdG8gaGF2ZSBhcm91bmQsIGFuZCB0aGUgZXh0cmEgZGV0YWlscyBhcmUgY2FwcGVkPQEgYnkgYSBmZXcgaGFzaGVzIGFuZCB0aGUgdmVjdG9yIG9mIHRyYW5zYWN0aW9uIGhhc2hlcywgd2Ugc3RvcmUgdGhlIGJsb2NrIGhlcmUuACRCbG9ja0hhc2gBAQQGODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMlCBNYXBwaW5nIGZvciBibG9jayBudW1iZXIgYW5kIGhhc2hlcy4AcQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHN0b3JlZCBpcyBjYXBwZWQgYnkgdGhlIGJsb2NrIGhhc2ggY291bnQgYEJMT0NLX0hBU0hfQ09VTlRgLgA8UmVjZWlwdEluZm9EYXRhAQA9EQQAGPQgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm8gb2ZmY2hhaW4uACkBIFRoaXMgY29udGFpbnMgdmFsdWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdhcyB1c2VkIGJ5IHRoZSB0cmFuc2FjdGlvbi4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAERFdGhCbG9ja0J1aWxkZXJJUgEARRERBgAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAEKXU6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkCBJbmNyZW1lbnRhbCBldGhlcmV1bSBibG9jayBidWlsZGVyLgBoRXRoQmxvY2tCdWlsZGVyRmlyc3RWYWx1ZXMBAFERBAAQ5CBUaGUgZmlyc3QgdHJhbnNhY3Rpb24gYW5kIHJlY2VpcHQgb2YgdGhlIGV0aGVyZXVtIGJsb2NrLgA9ASBUaGVzZSB2YWx1ZXMgYXJlIG1vdmVkIG91dCBvZiB0aGUgYEV0aEJsb2NrQnVpbGRlcklSYCB0byBhdm9pZCBzZXJpYWxpemluZyBhbmQ9ASBkZXNlcmlhbGl6aW5nIHRoZW0gb24gZXZlcnkgdHJhbnNhY3Rpb24uIEluc3RlYWQsIHRoZXkgYXJlIGxvYWRlZCB3aGVuIG5lZWRlZC4APERlYnVnU2V0dGluZ3NPZgEAVREQAAAAAAQxASBEZWJ1Z2dpbmcgc2V0dGluZ3MgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aGVuIERlYnVnRW5hYmxlZCBjb25maWcgaXMgdHJ1ZS4AAa0HAAEtCgAsOERlcG9zaXRQZXJCeXRlNQFAoIYBAAAAAAAAAAAAAAAAABQRASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBieXRlIG9mIHN0b3JhZ2UuABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AOERlcG9zaXRQZXJJdGVtNQFAAJQ1dwAAAAAAAAAAAAAAABQFASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBzdG9yYWdlIGl0ZW0uABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AXERlcG9zaXRQZXJDaGlsZFRyaWVJdGVtNQFAAMLrCwAAAAAAAAAAAAAAACQxASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBjaGlsZCB0cmllIHN0b3JhZ2UgaXRlbS4AOQEgVGhvc2UgYXJlIHRoZSBpdGVtcyBjcmVhdGVkIGJ5IGEgY29udHJhY3QuIEluIFNvbGlkaXR5IGVhY2ggdmFsdWUgaXMgYSBzaW5nbGU5ASBzdG9yYWdlIGl0ZW0uIFRoaXMgaXMgd2h5IHdlIG5lZWQgdG8gc2V0IGEgbG93ZXIgdmFsdWUgaGVyZSB0aGFuIGZvciB0aGUgbWFpbtwgdHJpZSBpdGVtcy4gT3RoZXJ3aXNlIHRoZSBzdG9yYWdlIGRlcG9zaXQgaXMgdG9vIGhpZ2guABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AcENvZGVIYXNoTG9ja3VwRGVwb3NpdFBlcmNlbnRZBRAAo+ERDEUBIFRoZSBwZXJjZW50YWdlIG9mIHRoZSBzdG9yYWdlIGRlcG9zaXQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdXNpbmcgYSBjb2RlIGhhc2guUQEgSW5zdGFudGlhdGluZyBhIGNvbnRyYWN0LCBwcm90ZWN0cyB0aGUgY29kZSBmcm9tIGJlaW5nIHJlbW92ZWQuIEluIG9yZGVyIHRvIHByZXZlbnQlASBhYnVzZSB0aGVzZSBhY3Rpb25zIGFyZSBwcm90ZWN0ZWQgd2l0aCBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvZGUgZGVwb3NpdC4AQEFsbG93RVZNQnl0ZWNvZGV1AQQBBNAgQWxsb3cgRVZNIGJ5dGVjb2RlIHRvIGJlIHVwbG9hZGVkIGFuZCBpbnN0YW50aWF0ZWQuABxDaGFpbklkKCBBGw8ZAAAAABABASBUaGUgW0VJUC0xNTVdKGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMTU1KSBjaGFpbiBJRC4ABQEgVGhpcyBpcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGFzc2lnbmVkIHRvIGVhY2ggYmxvY2tjaGFpbiBuZXR3b3JrLGwgcHJldmVudGluZyByZXBsYXkgYXR0YWNrcy4AQE5hdGl2ZVRvRXRoUmF0aW84EADh9QUEUQEgVGhlIHJhdGlvIGJldHdlZW4gdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5hdGl2ZSB0b2tlbiBhbmQgdGhlIEVUSCB0b2tlbi4AVE1heEV0aEV4dHJpbnNpY1dlaWdodEkFQAAA2kk7cX0MAAAAAAAAAAAwTQEgVGhlIGZyYWN0aW9uIHRoZSBtYXhpbXVtIGV4dHJpbnNpYyB3ZWlnaHQgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljcyBhcmUgY2FwcGVkIHRvLgBRASBUaGlzIGlzIG5vdCBhIHNlY3VyaXR5IG1lYXN1cmUgYnV0IGEgcmVxdWlyZW1lbnQgZHVlIHRvIGhvdyB3ZSBtYXAgZ2FzIHRvIGAoV2VpZ2h0LF0BIFN0b3JhZ2VEZXBvc2l0KWAuIFRoZSBtYXBwaW5nIG1pZ2h0IGRlcml2ZSBhIGBXZWlnaHRgIHRoYXQgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbnRvIGFu/CBleHRyaW5zaWMuIEluIHRoaXMgY2FzZSB3ZSBjYXAgaXQgdG8gdGhlIGxpbWl0IHNwZWNpZmllZCBoZXJlLgBlASBgZXRoX3RyYW5zYWN0YCB0cmFuc2FjdGlvbnMgdGhhdCB1c2UgbW9yZSB3ZWlnaHQgdGhhbiBzcGVjaWZpZWQgd2lsbCBmYWlsIHdpdGggYW4gb3V0IG9mSQEgZ2FzIGVycm9yIGR1cmluZyBleGVjdXRpb24uIExhcmdlciBmcmFjdGlvbnMgd2lsbCBhbGxvdyBtb3JlIHRyYW5zYWN0aW9ucyB0byBydW4uTQEgU21hbGxlciB2YWx1ZXMgd2FzdGUgbGVzcyBibG9jayBzcGFjZTogQ2hvb3NlIGFzIHNtYWxsIGFzIHBvc3NpYmxlIGFuZCBhcyBsYXJnZSBhcywgbmVjZXNzYXJ5LgBEICBEZWZhdWx0OiBgMC41YC4AMERlYnVnRW5hYmxlZHUBBAAELQEgQWxsb3dzIGRlYnVnLW1vZGUgY29uZmlndXJhdGlvbiwgc3VjaCBhcyBlbmFibGluZyB1bmxpbWl0ZWQgY29udHJhY3Qgc2l6ZS4AHEF1dG9NYXB1AQQBGDEBIFdoZW4gZW5hYmxlZCwgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkIG9uIGNyZWF0aW9uIGFuZCB1bm1hcHBlZCBvbkUBIGtpbGwgdmlhIFtgQXV0b01hcHBlcmBdLiBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IGBtYXBfYWNjb3VudGAgY2FsbHMuADkBIFJlcXVpcmVzIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6T25OZXdBY2NvdW50YCBhbmQgYE9uS2lsbGVkQWNjb3VudGAgdG8gYmUgc2V0HQEgdG8gW2BBdXRvTWFwcGVyYF0uIFdoZW4gZW5hYmxlZCwgdGhlIGBtYXBfYWNjb3VudGAgYW5kIGB1bm1hcF9hY2NvdW50YHAgZGlzcGF0Y2hhYmxlcyBhcmUgZGlzYWJsZWQuACBHYXNTY2FsZTgQoIYBAEQdASBUaGlzIGRldGVybWluZXMgdGhlIHJlbGF0aXZlIHNjYWxlIG9mIG91ciBnYXMgcHJpY2UgYW5kIGdhcyBlc3RpbWF0ZXMuAFUBIEJ5IGRlZmF1bHQsIHRoZSBnYXMgcHJpY2UgKGluIHdlaSkgaXMgYEZlZUluZm86Om5leHRfZmVlX211bHRpcGxpZXIoKWAgbXVsdGlwbGllZCBieV0BIGBOYXRpdmVUb0V0aFJhdGlvYC4gYEdhc1NjYWxlYCBhbGxvd3MgdG8gc2NhbGUgdGhpcyB2YWx1ZTogdGhlIGFjdHVhbCBnYXMgcHJpY2UgaXMgdGhlsCBkZWZhdWx0IGdhcyBwcmljZSBtdWx0aXBsaWVkIGJ5IGBHYXNTY2FsZWAuAFkBIEFzIGEgY29uc2VxdWVuY2UsIGdhcyBjb3N0IChnYXMgZXN0aW1hdGVzIGFuZCBhY3R1YWwgZ2FzIHVzYWdlIGR1cmluZyB0cmFuc2FjdGlvbikgaXNRASBzY2FsZWQgZG93biBieSB0aGUgc2FtZSBmYWN0b3IuIFRodXMsIHRoZSB0b3RhbCB0cmFuc2FjdGlvbiBjb3N0IGlzIG5vdCBhZmZlY3RlZCBieW0BIGBHYXNTY2FsZWAg4oCTwqBhcGFydCBmcm9tIHJvdW5kaW5nIGRpZmZlcmVuY2VzOiB0aGUgdHJhbnNhY3Rpb24gY29zdCBpcyBhbHdheXMgYSBtdWx0aXBsZWEBIG9mIHRoZSBnYXMgcHJpY2UgYW5kIGlzIGRlcml2ZWQgYnkgcm91bmRlZCB1cCwgc28gdGhhdCB3aXRoIGhpZ2hlciBgR2FzU2NhbGVzYCB0aGlzIGNhbhEBIGxlYWQgdG8gaGlnaGVyIGdhcyBjb3N0IGFzIHRoZSByb3VuZGluZyBkaWZmZXJlbmNlIHdvdWxkIGJlIGxhcmdlci4AZQEgVGhlIG1haW4gcHVycG9zZSBvZiBjaGFuZ2luZyB0aGUgYEdhc1NjYWxlYCBpcyB0byB0dW5lIHRoZSBnYXMgY29zdCBzbyB0aGF0IGl0IGlzIGNsb3NlckkBIHRvIHN0YW5kYXJkIEVWTSBnYXMgY29zdCBhbmQgY29udHJhY3RzIHdpbGwgbm90IHJ1biBvdXQgb2YgZ2FzIHdoZW4gdG9vbHMgb3IgY29kZXggYXNzdW1lIGhhcmQgY29kZWQgZ2FzIGxpbWl0cy4AmCBSZXF1aXJlbWVudDogYEdhc1NjYWxlYCBtdXN0IG5vdCBiZSAwAAFZEQAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAGQAADBEb3Ruc0dhdGV3YXkBMERvdG5zR2F0ZXdheRhEQWxpYXNSZWdpc3RyYXRpb24AAQQCCF0RBAAE9CBUcmFja3Mgd2hpY2ggYWxpYXNlcyBoYXZlIHJlZ2lzdGVyZWQgbmFtZXMgdmlhIHRoaXMgZ2F0ZXdheS4AMEFjY291bnRBbGlhcwABBAIECAQADAEBIFJldmVyc2UgbG9va3VwIGZyb20gYSByZWdpc3RlcmluZyBhY2NvdW50IHRvIHRoZSBhbGlhcyBpdCB1c2VkLgAhASBQb3B1bGF0ZWQgYWxvbmdzaWRlIFtgQWxpYXNSZWdpc3RyYXRpb25gXSBpbiBbYFBhbGxldDo6cmVnaXN0ZXJfbmFtZWBdLgBQQXR0ZXN0YXRpb25BbGxvd2FuY2UBAQQCBDgQAAAAAAQFASBOdW1iZXIgb2YgdXNlcm5hbWUgcmVzZXJ2YXRpb25zIGFuIGF0dGVzdGVyIGlzIGFsbG93ZWQgdG8gZ3JhbnQuADhMaXRlTGFiZWxPd25lcgABBALBBwQEAAz8IFJlY29yZHMgd2hpY2ggYWNjb3VudCBvd25zIGVhY2ggcmVzZXJ2ZWQgbGl0ZS1wZXJzb24gbGFiZWwsIHNvIQEgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gdmVyaWZ5IHRoYXQgYSBgTGluazo6TGl0ZVVzZXJuYW1lYCB0YXJnZXRcIGJlbG9uZ3MgdG8gdGhlIGNhbGxlci4AMEFjY291bnROYW1lcwABBAIEZREEADj0IFRoZSBkb3ROUyBsYWJlbHMgZWFjaCBhY2NvdW50IGFjcXVpcmVkIHRocm91Z2ggdGhpcyBnYXRld2F5LgAlASBLZXllZCBieSBhY2NvdW50IHNvIGNsaWVudHMgY2FuIHdhdGNoIGEgc2V0IG9mIGFjY291bnRzIHdpdGggb25lIHN0b3JhZ2U4IHN1YnNjcmlwdGlvbi4AKQEgV2FybmluZzogdGhpcyBtYXAgaXMgbm90IHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IHRoZSBkb3ROUyBjb250cmFjdHMgYXJlLiBJdC0BIGlzIHdyaXR0ZW4gb24gW2BQYWxsZXQ6OnJlc2VydmVfbmFtZWBdIGFuZCBbYFBhbGxldDo6cmVnaXN0ZXJfbmFtZWBdIG9ubHksJQEgc28gYSBsYWJlbCB0aGF0IGNoYW5nZXMgcHVyZWx5IGNvbnRyYWN0LXNpZGUgKGZvciBleGFtcGxlIGEgdHJhbnNmZXIpIGlzKQEgbm90IHJlZmxlY3RlZCBoZXJlIGFuZCBjbGllbnRzIG11c3QgcmUtdmVyaWZ5IG9uIHJlYWQgdmlhIGNvbnRyYWN0IHZpZXdzLiUBIE5hbWVzIHJlZ2lzdGVyZWQgb3V0c2lkZSB0aGVzZSBwYXRocyBuZXZlciBhcHBlYXIgaGVyZSBhdCBhbGwsIGluY2x1ZGluZzEBIHByZS1sYXVuY2ggd2hpdGVsaXN0IGFsbG9jYXRpb25zLCB3aGljaCBjbGFpbWFudHMgcmVnaXN0ZXIgZGlyZWN0bHkgYWdhaW5zdIAgdGhlIGRvdE5TIHJlZ2lzdHJhciBjb250cm9sbGVyLikBIFRoZSBtYXAgaXMgdGVtcG9yYXJ5IGFuZCBnb2VzIGF3YXkgb25jZSBhcHBzIGNhbiBvYnNlcnZlIGNvbnRyYWN0IHN0b3JhZ2U1ASBkaXJlY3RseTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL2luZGl2aWR1YWxpdHktY29tbXVuaXR5L2lzc3Vlcy81Mj4uAEREaXNwYXRjaGVyQWRkcmVzcwAAcQcEAAw1ASBBZGRyZXNzIG9mIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdC4gTXVzdCBiZSBzZXQgKHZpYSBnZW5lc2lzIG9yHQEgW2BQYWxsZXQ6OnNldF9kaXNwYXRjaGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAb0HAAExCgAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBEBKAcA6HZIFwIAgAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcygggPQDAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAF1EQAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlvQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBALVB30RBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAHRBwABNQoAAAGBEQAEQFJlc3RyaWN0ZWRFbnRpdHnVByRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbawgb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGVkRW50aXR5YF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4AmQAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAdkHAAE5CgAAAYURAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4A+wAANFBnYXNBbGxvd2FuY2UAAAE9CgAAAAAA/AAACAQFACC9BAQARAAECAwQFBgcICQoLDA0ODxARGBVbml0VHJhbnNhY3Rpb25FeHRlbnNpb24QEChBc1NjYXJjaXR53QcQNEF1dGhvcml6ZUNhbGzpBxAYQXNQZ2Fz7QcQOEFzRG90bnNHYXRld2F5+QcQPFJlc3RyaWN0T3JpZ2lucwUIEEhDaGVja05vblplcm9TZW5kZXIJCBBAQ2hlY2tTcGVjVmVyc2lvbg0IODhDaGVja1R4VmVyc2lvbhEIODBDaGVja0dlbmVzaXMVCDw4Q2hlY2tNb3J0YWxpdHkZCDwoQ2hlY2tOb25jZSEIECxDaGVja1dlaWdodCUIEFBDaGFyZ2VBc3NldFR4UGF5bWVudCkIEERDaGVja01ldGFkYXRhSGFzaC0IsQcwRXRoU2V0T3JpZ2luNQgQUFN0b3JhZ2VXZWlnaHRSZWNsYWltEBB4HEF1cmFBcGkINHNsb3RfZHVyYXRpb24AiREMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAAkMBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkITHJlbGF5X3BhcmVudF9vZmZzZXQAOAwVASBGZXRjaCB0aGUgcmVsYXkgcGFyZW50IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgBdASBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXkgY2hhaW4gdGlwIHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlLgBYbWF4X2NsYWltX3F1ZXVlX29mZnNldAAMiOggTWF4aW11bSBjbGFpbSBxdWV1ZSBvZmZzZXQgZm9yIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkuADkBIEJvdW5kcyBob3cgZmFyICJpbnRvIHRoZSBmdXR1cmUiIGEgY2FuZGlkYXRlIG1heSBsb29rIGluIHRoZSBjbGFpbSBxdWV1ZSB3aGVuUQEgc2VsZWN0aW5nIGEgY29yZS4gVGhlIGVmZmVjdGl2ZSBjbGFpbSBxdWV1ZSBkZXB0aCBkZXBlbmRzIG9uIHRoZSBjYW5kaWRhdGUgdmVyc2lvbjoAYQEgLSAqKlYxL1YyIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3MgYHJlbGF5X3BhcmVudGAsSQEgICB3aGljaCBpcyBgcmVsYXlfcGFyZW50X29mZnNldGAgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXktY2hhaW4gdGlwLiBUaGUgZWZmZWN0aXZl7CAgIGRlcHRoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0ICsgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuABUBIC0gKipWMyBjYW5kaWRhdGVzKio6IHRoZSBjbGFpbSBxdWV1ZSBpcyBsb29rZWQgdXAgYXQgdGhlIGNhbmRpZGF0ZSdzXQEgICBgc2NoZWR1bGluZ19wYXJlbnRgIOKAlCB0aGUgcmVsYXktY2hhaW4gYmxvY2sgb2YgdGhlICpsYXN0IGZpbmlzaGVkKiBzbG90LCBkZWNvdXBsZWQlASAgIGZyb20gdGhlIGV4ZWN1dGlvbi1jb250ZXh0IGByZWxheV9wYXJlbnRgLiBUaGUgZWZmZWN0aXZlIGRlcHRoIGlzIGp1c3RwICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgLgAhASBDb2xsYXRvcnMgc2VsZWN0IGEgY29yZSB2aWEgYW4gb2Zmc2V0IGluIGBbMCwgbWF4X2NsYWltX3F1ZXVlX29mZnNldF1gLgBRASAtICoqVjIgY2FuZGlkYXRlcyoqOiBgbWF4X2NsYWltX3F1ZXVlX29mZnNldCA9IDFgIGlzIHN1ZmZpY2llbnQuIFRoZSBjbGFpbSBxdWV1ZSBpc1kBICAgbG9va2VkIHVwIGF0IGByZWxheV9wYXJlbnRgLCB3aGljaCBzaXRzIGJlaGluZCB0aGUgdGlwLiBPZmZzZXQgMCBjb3ZlcnMgc3luY2hyb25vdXNVASAgIGJhY2tpbmcgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2s7IG9mZnNldCAxIGNvdmVycyBhc3luY2hyb25vdXMgYmFja2luZyBpbiB0aGUgcmVsYXlQICAgYmxvY2sgYWZ0ZXIgdGhhdC4ALQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogb2Zmc2V0IDAgaXMgbm90IHJlYWNoYWJsZSDigJQgdGhlIGBzY2hlZHVsaW5nX3BhcmVudGBVASAgIGlzIHVzdWFsbHkgdGhlIGxlYWYgd2hlbiBwaWNrZWQsIGJ1dCBpdHMgY2hpbGQgaXMgYWxyZWFkeSBiZWluZyBidWlsdCwgc28gdGhlcmUgaXM5ASAgIG5vIG9wcG9ydHVuaXR5IHRvIGxhbmQgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2suIE9mZnNldCAxIGlzIHJlYWNoYWJsZSB1bmRlclUBICAgc3luY2hyb25vdXMtYmFja2luZyBzZW1hbnRpY3MuIEZvciBlbGFzdGljIHNjYWxpbmcgdGhlIGxhc3QgYmxvY2sgaW4gdGhlIGJ1bmRsZSBpczUBICAgYnVpbHQgbmVhciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNsb3QsIHdoaWNoIG1ha2VzIG9mZnNldCAxIHRvbyB0aWdodCDigJRVASAgIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMmAgaXMgdGhlIG1pbmltdW0gY2FwIHRoYXQga2VlcHMgZWxhc3RpYyBzY2FsaW5nIHZpYWJsZS4AVQEgTm90ZTogdGhpcyBtZXRob2Qgd2FzIGFkZGVkIGluIGBhcGlfdmVyc2lvbiA9IDJgLiBDb2xsYXRvcnMgY2FsbGluZyBvbiBydW50aW1lcyB0aGF0TQEgb25seSBpbXBsZW1lbnQgYGFwaV92ZXJzaW9uID0gMWAgb2YgW2BSZWxheVBhcmVudE9mZnNldEFwaWBdIHdpbGwgcmVjZWl2ZSBhbiBlcnJvckkBIGFuZCBzaG91bGQgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGUgZGVmYXVsdCAoY3VycmVudCBjb2xsYXRvciBkZWZhdWx0czogYDFgIG9uIHRoZYQgVjMgcGF0aCwgYDBgIG9uIHRoZSBWMS9WMiBwYXRoKS4A+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+ADxRASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4gYW5kIGhvdyBjbGFpbSBxdWV1ZWAgb2Zmc2V0cyBhcmUgZGV0ZXJtaW5lZC4AWQEgQSBsYXJnZXIgcmVsYXkgcGFyZW50IG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZlEBIHRoZSByZWxheSBjaGFpbiwgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlJCBydW50aW1lLgBZASBUaGUgbWF4IGNsYWltIHF1ZXVlIG9mZnNldCBkZXRlcm1pbmVzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgY29sbGF0b3JzIHRhcmdldCB3aGVuUQEgc2VsZWN0aW5nIGNvcmVzIGZyb20gdGhlIGNsYWltIHF1ZXVlLiBUaGlzIHByb3ZpZGVzIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkgd2hpbGWoIHByZXZlbnRpbmcgY29sbGF0b3JzIGZyb20gc2tpcHBpbmcgc2xvdHMu+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+AEQgVmVyc2lvbiBoaXN0b3J5OvQgLSBWZXJzaW9uIDE6IEluaXRpYWwgdmVyc2lvbiB3aXRoIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBvbmx5zCAtIFZlcnNpb24gMjogQWRkZWQgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgIG1ldGhvZAgAWFNjaGVkdWxpbmdWM0VuYWJsZWRBcGkEVHNjaGVkdWxpbmdfdjNfZW5hYmxlZAB1AQT0IFJldHVybnMgdHJ1ZSBpZiBWMyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQgZm9yIHRoaXMgcGFyYWNoYWluLgAk8CBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIHdoZXRoZXIgVjMgc2NoZWR1bGluZyBpcyBlbmFibGVkLgDkIFdoZW4gZW5hYmxlZCwgY29sbGF0b3JzIG11c3QgcHJvZHVjZSBWMyBjYW5kaWRhdGVzIHdpdGg65CAtIFBhcmFjaGFpbkJsb2NrRGF0YTo6VjIgY29udGFpbmluZyB0aGUgc2NoZWR1bGluZyBwcm9vZrwgLSBDYW5kaWRhdGVEZXNjcmlwdG9yVjMgd2l0aCBzY2hlZHVsaW5nX3BhcmVudAAdASBUaGlzIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHJlbGF5IHBhcmVudCBvZmZzZXQgKGJ1aWxkaW5nIG9uIG9sZGVyHQEgcmVsYXkgcGFyZW50cykuIEEgcGFyYWNoYWluIGVuYWJsZXMgVjMgd2hlbiBpdCB3YW50cyBsb3ctbGF0ZW5jeSBibG9ja5wgcHJvZHVjdGlvbiB3aXRoIHRoZSBkdWFsLXBhcmVudCBtb2RlbC4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90DQx1ASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AcQoEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2uNERAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclyZEQRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQCdEQSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244oREQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAYQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWOJCqUREGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAXARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50tRGZCgQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2uNERBkYXRhtRHFEQRVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNlyREIdHiJCihibG9ja19oYXNoPM0RJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJcEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRhAdURHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBjZEQyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWTlERRpbnB1dBjpEQR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSJCgxsZW448REAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0iQoMbGVuOPURAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0EQE1AQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDg1AQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOPERBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOPURBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBNQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4NQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjgBEhS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlTQINEhSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQRARRhc3NldL0DERIY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbsUBHG1lc3NhZ2VNAiBhc3NldF9pZL0DFRIoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu8QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjgZEgREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27FAQx4Y22NAzkSBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uxQFBEgSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXRJEiBsb2NhdGlvbsUBTRIU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0SRIgbG9jYXRpb27FAU0SFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldMUBVRIE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbsUBGHRhcmdldMUBXRIEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEYRIE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCAAsU2NhcmNpdHlBcGkEOG1ldGFkYXRhX2JhdGNoBBxxdWVyaWVzaRJxEghZASBSZXR1cm5zIG9uZSBwb3NpdGlvbmFsbHkgYWxpZ25lZCByZXN1bHQgcGVyIHF1ZXJ5IHdpdGhvdXQgZmFpbGluZyBvbiBtaXNzaW5nIHRhcmdldHMu+CBBbiBvdmVyc2l6ZWQgcmVxdWVzdCBmYWlscyBleHBsaWNpdGx5IGFuZCBpcyBuZXZlciB0cnVuY2F0ZWQuAAT8IFJlYWQtb25seSBiYXRjaGVkIGFjY2VzcyB0byBTY2FyY2l0eSdzIHN0b3JlZCBtZXRhZGF0YSBsYXllcnMuBAAwTmZ0Q2xhaW1zQXBpBDRwcmV2aWV3X21pbnRzBBxxdWVyaWVziRKREhBZASBFeGVjdXRlcyB0aGUgY2xhaW0gc2VsZWN0b3Igb25jZSBwZXIgcXVlcnkgYW5kIHJldHVybnMgcG9zaXRpb25hbGx5IGFsaWduZWQgb3V0Y29tZXMuYQEgQ29udHJhY3Qgc3RhdGUgY2hhbmdlcyBvY2N1ciBvbmx5IGluIHRoZSBydW50aW1lIEFQSSBvdmVybGF5IGFuZCBhcmUgZGlzY2FyZGVkIHdpdGggaXQuXQEgUXVlcmllcyBydW4gc2VxdWVudGlhbGx5IG9uIHRoYXQgb25lIG92ZXJsYXksIHNvIHR3byBxdWVyaWVzIGFnYWluc3QgdGhlIHNhbWUgc3RhdGVmdWzoIG1pbnRlciBjb21wb3VuZCwgZXhhY3RseSBhcyBjbGFpbWluZyBpbiB0aGF0IG9yZGVyIHdvdWxkLgAE+CBSZWFkLW9ubHkgcHJldmlld3Mgb2YgdGhlIGl0ZW0gZWFjaCBORlQgY2xhaW0gY3JlZGl0IHNlbGVjdHMuBABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclypEhCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGLUSKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWS5EmEBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMAvRIQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABIQXNzZXRDb252ZXJzaW9uQXBpDIxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQxGQIYYXNzZXQyGQIYYW1vdW50NQEsaW5jbHVkZV9mZWV1ATEBEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQCMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pADBnZXRfcmVzZXJ2ZXMIGGFzc2V0MRkCGGFzc2V0MhkCwRIEBQEgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2wgZm9yIHRoZSBnaXZlbiBhc3NldCBwYWlyLgAIIQEgVGhpcyBydW50aW1lIGFwaSBhbGxvd3MgcGVvcGxlIHRvIHF1ZXJ5IHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbHNwIGFuZCBxdW90ZSBwcmljZXMgZm9yIHN3YXBzLgQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBABITm9taW5hdGlvblBvb2xzQXBpKDxwZW5kaW5nX3Jld2FyZHMEDHdobwQ1AQQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuAERwb2ludHNfdG9fYmFsYW5jZQgccG9vbF9pZDgYcG9pbnRzNQE1AQT0IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgYmFsYW5jZSBvZiBgcG9pbnRzYCBmb3IgYSBnaXZlbiBwb29sLgBEYmFsYW5jZV90b19wb2ludHMIHHBvb2xfaWQ4JG5ld19mdW5kczUBNQEE/CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IHBvaW50cyBvZiBgbmV3X2Z1bmRzYCBmb3IgYSBnaXZlbiBwb29sLgBIcG9vbF9wZW5kaW5nX3NsYXNoBBxwb29sX2lkODUBBLAgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sLgBQbWVtYmVyX3BlbmRpbmdfc2xhc2gEGG1lbWJlcgQ1ARDMIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbCBtZW1iZXIuAE0BIElmIHBlbmRpbmcgc2xhc2ggb2YgdGhlIG1lbWJlciBleGNlZWRzIGBFeGlzdGVudGlhbERlcG9zaXRgLCBpdCBjYW4gYmUgcmVwb3J0ZWQgb24cIGNoYWluLgB0cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQ4dQEg5CBSZXR1cm5zIHRydWUgaWYgdGhlIHBvb2wgd2l0aCBgcG9vbF9pZGAgbmVlZHMgbWlncmF0aW9uLgBJASBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgYHBhbGxldC1ub21pbmF0aW9uLXBvb2xzYCBoYXMgc3dpdGNoZWQgdG8gdXNpbmcgc3RyYXRlZ3lBASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSkgYnV0IHRoZSBwb29s6CBzdGlsbCBoYXMgZnVuZHMgdGhhdCB3ZXJlIHN0YWtlZCB1c2luZyB0aGUgb2xkZXIgc3RyYXRlZ3kZASBbVHJhbnNmZXJTdGFrZV0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OlRyYW5zZmVyU3Rha2UpLiBVc2WJASBbYG1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UpVCB0byBtaWdyYXRlIHRoZSBwb29sLgB8bWVtYmVyX25lZWRzX2RlbGVnYXRlX21pZ3JhdGlvbgQYbWVtYmVyBHUBHCkBIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVsZWdhdGVkIGZ1bmRzIG9mIHRoZSBwb29sIGBtZW1iZXJgIG5lZWRzIG1pZ3JhdGlvbi4A2CBPbmNlIGEgcG9vbCBoYXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHRvIHRoZSBzdHJhdGVneVUBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSwgdGhlIGZ1bmRzIG9mIHRoZRkBIG1lbWJlciBjYW4gYmUgbWlncmF0ZWQgZnJvbSBwb29sIGFjY291bnQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuIFVzZSkBIFtgbWlncmF0ZV9kZWxlZ2F0aW9uYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfZGVsZWdhdGlvbimkIHRvIG1pZ3JhdGUgdGhlIGZ1bmRzIG9mIHRoZSBwb29sIG1lbWJlci4AUG1lbWJlcl90b3RhbF9iYWxhbmNlBAx3aG8ENQEEZQEgUmV0dXJucyB0aGUgdG90YWwgY29udHJpYnV0aW9uIG9mIGEgcG9vbCBtZW1iZXIgaW5jbHVkaW5nIGFueSBiYWxhbmNlIHRoYXQgaXMgdW5ib25kaW5nLgAwcG9vbF9iYWxhbmNlBBxwb29sX2lkODUBBJwgVG90YWwgYmFsYW5jZSBjb250cmlidXRlZCB0byB0aGUgcG9vbC4ANHBvb2xfYWNjb3VudHMEHHBvb2xfaWQ4wRAELQEgUmV0dXJucyB0aGUgYm9uZGVkIGFjY291bnQgYW5kIHJld2FyZCBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbF9pZC4ABPggUnVudGltZSBhcGkgZm9yIGFjY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCBub21pbmF0aW9uIHBvb2xzLgQAKFN0YWtpbmdBcGkMRG5vbWluYXRpb25zX3F1b3RhBBxiYWxhbmNlNQE4BBEBIFJldHVybnMgdGhlIG5vbWluYXRpb25zIHF1b3RhIGZvciBhIG5vbWluYXRvciB3aXRoIGEgZ2l2ZW4gYmFsYW5jZS4AXGVyYXNfc3Rha2Vyc19wYWdlX2NvdW50CAxlcmE4HGFjY291bnQEOAQ5ASBSZXR1cm5zIHRoZSBwYWdlIGNvdW50IG9mIGV4cG9zdXJlcyBmb3IgYSB2YWxpZGF0b3IgYGFjY291bnRgIGluIGEgZ2l2ZW4gZXJhLgA8cGVuZGluZ19yZXdhcmRzCAxlcmE4HGFjY291bnQEdQEERQEgUmV0dXJucyB0cnVlIGlmIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AAAQAJEluZmxhdGlvbgSUZXhwZXJpbWVudGFsX2lzc3VhbmNlX3ByZWRpY3Rpb25faW5mbwDFEhDUIFJldHVybiB0aGUgY3VycmVudCBlc3RpbWF0ZXMgb2YgdGhlIGlzc3VhbmNlIGFtb3VudC4AUQEgVGhpcyBpcyBtYXJrZWQgYXMgZXhwZXJpbWVudGFsIGluIGxpZ2h0IG9mIFJGQyM4OS4gTm9uZXRoZWxlc3MsIGl0cyB1c2FnZSBpcyBoaWdobHklASByZWNvbW1lbmRlZCBvdmVyIHRyeWluZyB0byByZWFkLXN0b3JhZ2UsIG9yIHJlLWNyZWF0ZSB0aGUgb25jaGFpbiBsb2dpYy4AAAQAJFJldml2ZUFwaWwkZXRoX2Jsb2NrANEQDHwgUmV0dXJucyB0aGUgY3VycmVudCBFVEggYmxvY2suALggVGhpcyBpcyBvbmUgYmxvY2sgYmVoaW5kIHRoZSBzdWJzdHJhdGUgYmxvY2suADhldGhfYmxvY2tfaGFzaAQYbnVtYmVytQc1BQTcIFJldHVybnMgdGhlIEVUSCBibG9jayBoYXNoIGZvciB0aGUgZ2l2ZW4gYmxvY2sgbnVtYmVyLgBAZXRoX3JlY2VpcHRfZGF0YQA9ERQRASBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mb3JtYXRpb24gb2ZmY2hhaW4uABwgIyBOb3RlAFUBIEVhY2ggZW50cnkgY29ycmVzcG9uZHMgdG8gdGhlIGFwcHJvcHJpYXRlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGluIHRoZSBjdXJyZW50IGJsb2NrLgA8YmxvY2tfZ2FzX2xpbWl0ALUHBHQgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0LgBsbWF4X2V4dHJpbnNpY193ZWlnaHRfaW5fZ2FzALUHBPAgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0IGFzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2VpZ2h0cy4AHGJhbGFuY2UEHGFkZHJlc3NxB7UHBDEBIFJldHVybnMgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcywgdXNpbmcgRVZNIGRlY2ltYWxzLgAkZ2FzX3ByaWNlALUHBFwgUmV0dXJucyB0aGUgZ2FzIHByaWNlLgAUbm9uY2UEHGFkZHJlc3NxBzgExCBSZXR1cm5zIHRoZSBub25jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcy4AEGNhbGwYGG9yaWdpbgQQZGVzdHEHFHZhbHVlNQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0MQEoaW5wdXRfZGF0YRjNEgz0IFBlcmZvcm0gYSBjYWxsIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudCB0byBhIGdpdmVuIGNvbnRyYWN0LgCIIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfY2FsbGBdLgAsaW5zdGFudGlhdGUcGG9yaWdpbgQUdmFsdWU1ASRnYXNfbGltaXQNAVRzdG9yYWdlX2RlcG9zaXRfbGltaXQxARBjb2Rl4RIQZGF0YRgQc2FsdLEH5RIMcCBJbnN0YW50aWF0ZSBhIG5ldyBjb250cmFjdC4ApCBTZWUgYFtjcmF0ZTo6UGFsbGV0OjpiYXJlX2luc3RhbnRpYXRlXWAuADBldGhfdHJhbnNhY3QECHR48RINExBoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AlCBEZXByZWNhdGVkIHVzZSBgdjJgIHZlcnNpb24gaW5zdGVhZC6wIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AYGV0aF90cmFuc2FjdF93aXRoX2NvbmZpZwgIdHjxEhhjb25maWcZEw0TDGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCwIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AQGV0aF9lc3RpbWF0ZV9nYXMICHR48RIYY29uZmlnGRNNExToIEVzdGltYXRlcyB0aGUgYW1vdW50IG9mIGdhcyB0aGF0IGEgdHJhbnNhY3Rpb25zIHJlcXVpcmVzLgBdASBUaGlzIGZ1bmN0aW9uIGVzdGltYXRlcyB0aGUgZ2FzIG9mIHRoZSB0cmFuc2FjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgYmluYXJ5IHNlYXJjaFkBIGFsZ29yaXRobSB0aGF0J3MgaW1wbGVtZW50ZWQgaW4gR2V0aC4gSXQgc3RvcHMgd2hlbiB3aXRoIGFuIGFjY2VwdGFibGUgZXJyb3IgcmF0aW8gb2a0IDEuNSUgc28gdGhhdCB0aGUgYWxnb3JpdGhtIHRlcm1pbmF0ZXMgZWFybHkuAFxldGhfcHJlX2Rpc3BhdGNoX3dlaWdodAQIdHgYURMETQEgUmV0dXJuIHRoZSBwcmUtZGlzcGF0Y2ggd2VpZ2h0IGJvb2tlZCBmb3IgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbiBwYXlsb2FkLgAsdXBsb2FkX2NvZGUMGG9yaWdpbgQQY29kZRhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0MQFVEwzoIFVwbG9hZCBuZXcgY29kZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgCkIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfdXBsb2FkX2NvZGVgXS4ALGdldF9zdG9yYWdlCBxhZGRyZXNzcQcMa2V5CF0TFLwgUXVlcnkgYSBnaXZlbiBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ATGdldF9zdG9yYWdlX3Zhcl9rZXkIHGFkZHJlc3NxBwxrZXkYXRMU+CBRdWVyeSBhIGdpdmVuIHZhcmlhYmxlLXNpemVkIHN0b3JhZ2Uga2V5IGluIGEgZ2l2ZW4gY29udHJhY3QuAE0BIFJldHVybnMgYE9rKFNvbWUoVmVjPHU4PikpYCBpZiB0aGUgc3RvcmFnZSB2YWx1ZSBleGlzdHMgdW5kZXIgdGhlIGdpdmVuIGtleSBpbiB0aGVhASBzcGVjaWZpZWQgYWNjb3VudCBhbmQgYE9rKE5vbmUpYCBpZiBpdCBkb2Vzbid0LiBJZiB0aGUgYWNjb3VudCBzcGVjaWZpZWQgYnkgdGhlIGFkZHJlc3MJASBkb2Vzbid0IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSBjb250cmFjdCB0aGVuIGBFcnJgIGlzIHJldHVybmVkLgAsdHJhY2VfYmxvY2sIFGJsb2NrhQoYY29uZmlnZROBExgFASBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhbiBlbnRpcmUgYmxvY2sgYW5kIHJldHVybnMgY2FsbCB0cmFjZXMuAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGU4IHBhcmVudCBibG9jay4AyCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VCbG9ja0J5TnVtYmVyYCBmb3IgdXNhZ2UuACB0cmFjZV90eAwUYmxvY2uFCiB0eF9pbmRleDgYY29uZmlnZRPhExj8IFRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIGEgc3BlY2lmaWMgdHJhbnNhY3Rpb24gd2l0aGluIGEgYmxvY2suAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGWMIHBhcmVudCBoYXNoIHVwIHRvIHRoZSB0cmFuc2FjdGlvbi4AwCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VUcmFuc2FjdGlvbmAgZm9yIHVzYWdlLgAodHJhY2VfY2FsbAgIdHjxEhhjb25maWdlE+UTDMAgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbC4ApCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VDYWxsYCBmb3IgdXNhZ2UuAFh0cmFjZV9jYWxsX3dpdGhfY29uZmlnDAh0ePESLHRyYWNlcl90eXBlZRMYY29uZmln6RPlExQ5ASBEcnkgcnVuIGFuZCByZXR1cm4gdGhlIHRyYWNlIG9mIHRoZSBnaXZlbiBjYWxsIHdpdGggYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLgBBASBMaWtlIFtgU2VsZjo6dHJhY2VfY2FsbGBdLCBidXQgYWNjZXB0cyBhIFtgVHJhY2luZ0NvbmZpZ2BdIHRoYXQgY2FuIGNhcnJ5IHN0YXRlRQEgb3ZlcnJpZGVzIGFuZCBmdXR1cmUgZXh0ZW5zaWJpbGl0eS4gVGhlIGNvbmZpZyBtdXN0IGJlIHRoZSAqKmxhc3QgYXJndW1lbnQqKiBmb3IFASBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSDigJQgc2VlIFtgVHJhY2luZ0NvbmZpZ2BdIGRvY3VtZW50YXRpb24uADBibG9ja19hdXRob3IAcQcE+CBUaGUgYWRkcmVzcyBvZiB0aGUgdmFsaWRhdG9yIHRoYXQgcHJvZHVjZWQgdGhlIGN1cnJlbnQgYmxvY2suABxhZGRyZXNzBChhY2NvdW50X2lkBHEHBMwgR2V0IHRoZSBIMTYwIGFkZHJlc3MgYXNzb2NpYXRlZCB0byB0aGlzIGFjY291bnQgaWQAKGFjY291bnRfaWQEHGFkZHJlc3NxBwQE0CBHZXQgdGhlIGFjY291bnQgaWQgYXNzb2NpYXRlZCB0byB0aGlzIEgxNjAgYWRkcmVzcy4AXHJ1bnRpbWVfcGFsbGV0c19hZGRyZXNzAHEHBPQgVGhlIGFkZHJlc3MgdXNlZCB0byBjYWxsIHRoZSBydW50aW1lJ3MgcGFsbGV0cyBkaXNwYXRjaGFibGVzABBjb2RlBBxhZGRyZXNzcQcYBBEBIFRoZSBjb2RlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyB0YWtpbmcgcHJlLWNvbXBpbGVzIGludG8gYWNjb3VudC4AVG5ld19iYWxhbmNlX3dpdGhfZHVzdAQcYmFsYW5jZbUH7RMEDQEgQ29uc3RydWN0IHRoZSBuZXcgYmFsYW5jZSBhbmQgZHVzdCBjb21wb25lbnRzIG9mIHRoaXMgRVZNIGJhbGFuY2UuAAS8IFRoZSBBUEkgdXNlZCB0byBkcnktcnVuIGNvbnRyYWN0IGludGVyYWN0aW9ucy4EACBRCPkTAA==";
2
+
3
+ export { binMeta as default };