github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/test/packages/25-evil-templates/configmap.yaml (about) 1 apiVersion: v1 2 kind: ConfigMap 3 metadata: 4 name: dont-template-me 5 data: 6 values.yaml: | 7 monitoring: 8 values: 9 additionalPrometheusRulesMap: 10 custom-rules: 11 groups: 12 - name: OOMKilled 13 rules: 14 - alert: OOMKilled {{ "{{ \"random.Values\" }}" }} 15 expr: sum_over_time(kube_pod_container_status_terminated_reason{reason="OOMKilled"}[5m])>0 16 for: 5m 17 annotations: 18 backtick1: "content with backticks `some random things`" 19 backtick2: "nested templating with backticks {{` random.Values `}}" 20 labels: 21 severity: critical 22 annotations: 23 description: Pod {{$labels.pod}} in {{$labels.namespace}} got OOMKilled 24 long-value.b64: | 25 TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIEFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzIHZlbmVuYXRpcyBsZWN0dXMgbWFnbmEgZnJpbmdpbGxhIHVybmEuIElwc3VtIHN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEgZGljdHVtIGZ1c2NlIHV0LiBNb3JiaSBsZW8gdXJuYSBtb2xlc3RpZSBhdCBlbGVtZW50dW0uIEVzdCBhbnRlIGluIG5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMuIEVzdCBwbGFjZXJhdCBpbiBlZ2VzdGFzIGVyYXQuIFNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpIGxlbyB1cm5hIG1vbGVzdGllIGF0IGVsZW1lbnR1bSBldS4gRmF1Y2lidXMgbmlzbCB0aW5jaWR1bnQgZWdldCBudWxsYW0gbm9uIG5pc2kuCgpWaXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMgY3Jhcy4gRmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUuIEVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMgYWxpcXVhbSBmYXVjaWJ1cyBwdXJ1cyBpbi4gSW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltIG51bmMgZmF1Y2lidXMuIEFsaXF1YW0gdmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcyBtaSB0ZW1wdXMuIEZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bSBuaWJoLiBOZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyLiBTYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dCBkaWFtIHF1YW0uIFNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlIGRpZ25pc3NpbSBzdXNwZW5kaXNzZSBpbiBlc3QgYW50ZS4gTWFnbmEgZXRpYW0gdGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtIG5pYmguIEVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkuCgpSaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUuIFNlZCBsaWJlcm8gZW5pbSBzZWQgZmF1Y2lidXMgdHVycGlzIGluLiBBbWV0IGx1Y3R1cyB2ZW5lbmF0aXMgbGVjdHVzIG1hZ25hIGZyaW5naWxsYSB1cm5hLiBDb252YWxsaXMgYSBjcmFzIHNlbXBlciBhdWN0b3IgbmVxdWUuIEVyYXQgaW1wZXJkaWV0IHNlZCBldWlzbW9kIG5pc2kgcG9ydGEgbG9yZW0uIFByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlLiBBY2N1bXNhbiB0b3J0b3IgcG9zdWVyZSBhYyB1dCBjb25zZXF1YXQgc2VtcGVyIHZpdmVycmEuIEF0IHRlbXBvciBjb21tb2RvIHVsbGFtY29ycGVyIGEgbGFjdXMuIEF1Z3VlIG1hdXJpcyBhdWd1ZSBuZXF1ZSBncmF2aWRhIGluIGZlcm1lbnR1bSBldCBzb2xsaWNpdHVkaW4gYWMuIFRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMuIExhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bSBzaXQgYW1ldCBqdXN0by4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUuIExhY3VzIHZlc3RpYnVsdW0gc2VkIGFyY3Ugbm9uIG9kaW8gZXVpc21vZC4gRmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltIGRpYW0gcXVpcy4gVG9ydG9yIHBvc3VlcmUgYWMgdXQgY29uc2VxdWF0IHNlbXBlci4gU2l0IGFtZXQgbHVjdHVzIHZlbmVuYXRpcyBsZWN0dXMgbWFnbmEgZnJpbmdpbGxhLgoKTGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtIHNpdCBhbWV0LiBQdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzLiBWaXRhZSBjb25ndWUgbWF1cmlzIHJob25jdXMgYWVuZWFuIHZlbCBlbGl0IHNjZWxlcmlzcXVlLiBMb3JlbSBtb2xsaXMgYWxpcXVhbSB1dCBwb3J0dGl0b3IgbGVvIGEgZGlhbS4gVWxsYW1jb3JwZXIgYSBsYWN1cyB2ZXN0aWJ1bHVtIHNlZC4gTm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QuIEV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhIHVsdHJpY2llcyBtaSBxdWlzLiBFZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtIHZ1bHB1dGF0ZSBkaWduaXNzaW0uIE1ldHVzIGFsaXF1YW0gZWxlaWZlbmQgbWkgaW4gbnVsbGEuIEF0IHRlbXBvciBjb21tb2RvIHVsbGFtY29ycGVyIGEuIEEgZXJhdCBuYW0gYXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzLiBGZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdC4gRXVpc21vZCBpbiBwZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQgZHVpcyB1bHRyaWNpZXMgbGFjdXMgc2VkIHR1cnBpcy4gVm9sdXRwYXQgY29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZS4gTnVuYyBzY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcyBpbiBhbGlxdWFtIHNlbSBmcmluZ2lsbGEgdXQgbW9yYmkuIElkIHZvbHV0cGF0IGxhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UgYWMgdG9ydG9yLgoKQWxpcXVldCBwb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMgZW5pbS4gSWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzLiBDb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cy4gVmFyaXVzIHF1YW0gcXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtIGVsZW1lbnR1bS4gUGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMgc2l0IGFtZXQgdm9sdXRwYXQuIFNhZ2l0dGlzIGFsaXF1YW0gbWFsZXN1YWRhIGJpYmVuZHVtIGFyY3Ugdml0YWUgZWxlbWVudHVtLiBBbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbi4gQ29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYS4gVHVycGlzIGVnZXN0YXMgc2VkIHRlbXB1cyB1cm5hIGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhLiBJZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0LiBVdCBkaWFtIHF1YW0gbnVsbGEgcG9ydHRpdG9yIG1hc3NhLiBTYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dCBkaWFtIHF1YW0uIFZlc3RpYnVsdW0gcmhvbmN1cyBlc3QgcGVsbGVudGVzcXVlIGVsaXQgdWxsYW1jb3JwZXIgZGlnbmlzc2ltIGNyYXMuIEEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQuIEluIG51bGxhIHBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0gdWx0cmljZXMgc2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlLiBFdCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLiBFdSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IgZXUgYXVndWUgdXQuIERpZ25pc3NpbSBjcmFzIHRpbmNpZHVudCBsb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMuCgpOdWxsYSBhdCB2b2x1dHBhdCBkaWFtIHV0LiBMb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUuIFBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtIGV0IHRvcnRvciBjb25zZXF1YXQgaWQuIEF1Z3VlIG1hdXJpcyBhdWd1ZSBuZXF1ZSBncmF2aWRhIGluLiBJbiBudWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtIHVsdHJpY2VzIHNhZ2l0dGlzIG9yY2kuIEVsaXQgdXQgYWxpcXVhbSBwdXJ1cyBzaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzLiBBdWN0b3IgZWxpdCBzZWQgdnVscHV0YXRlIG1pIHNpdC4gU2VkIGxlY3R1cyB2ZXN0aWJ1bHVtIG1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMuIEFyY3UgZHVpIHZpdmFtdXMgYXJjdSBmZWxpcyBiaWJlbmR1bSB1dCB0cmlzdGlxdWUgZXQgZWdlc3Rhcy4KCkFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZS4gT3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaCB0ZWxsdXMgbW9sZXN0aWUgbnVuYyBub24uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtLiBFdCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIEZhdWNpYnVzIGluIG9ybmFyZSBxdWFtIHZpdmVycmEgb3JjaSBzYWdpdHRpcyBldS4gU2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUgYXVjdG9yIGV1IGF1Z3VlIHV0IGxlY3R1cy4gVmVsIG9yY2kgcG9ydGEgbm9uIHB1bHZpbmFyIG5lcXVlLiBTZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQuIFZlbmVuYXRpcyB0ZWxsdXMgaW4gbWV0dXMgdnVscHV0YXRlIGV1IHNjZWxlcmlzcXVlIGZlbGlzLiBNb3JiaSBlbmltIG51bmMgZmF1Y2lidXMgYSBwZWxsZW50ZXNxdWUgc2l0IGFtZXQuIE51bmMgcHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEuIFNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYy4gVml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzLgoKRGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIgdml0YWUganVzdG8gZWdldC4gTW9udGVzIG5hc2NldHVyIHJpZGljdWx1cyBtdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8uIERpcyBwYXJ0dXJpZW50IG1vbnRlcyBuYXNjZXR1ciByaWRpY3VsdXMgbXVzIG1hdXJpcyB2aXRhZSB1bHRyaWNpZXMuIFZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0gcXVhbSBudWxsYS4gVHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZSB1bHRyaWNlcyBncmF2aWRhIGRpY3R1bSBmdXNjZS4gVml2YW11cyBhcmN1IGZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzLiBNYXNzYSBlbmltIG5lYyBkdWkgbnVuYyBtYXR0aXMgZW5pbSB1dCB0ZWxsdXMgZWxlbWVudHVtLiBVdCB0cmlzdGlxdWUgZXQgZWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEuIE1pIGJpYmVuZHVtIG5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluLiBOdWxsYSBwb3J0dGl0b3IgbWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtLiBQdXJ1cyBpbiBtYXNzYSB0ZW1wb3IgbmVjIGZldWdpYXQgbmlzbC4gQ29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldCBpZC4gQWRpcGlzY2luZyBjb21tb2RvIGVsaXQgYXQgaW1wZXJkaWV0LiBUaW5jaWR1bnQgcHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaC4gQWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIuIExhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQuIENvbnNlcXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZC4gU2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIuCgpJYWN1bGlzIG51bmMgc2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUuIFJpc3VzIG5lYyBmZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjLiBNb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUuIFN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyIHF1aXMgYXVjdG9yIGVsaXQgc2VkLiBTZWQgZmF1Y2lidXMgdHVycGlzIGluIGV1IG1pLiBOdW5jIHNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzIGluIGFsaXF1YW0gc2VtIGZyaW5naWxsYS4gRWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtLiBVdCBldSBzZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hLiBDb252YWxsaXMgcG9zdWVyZSBtb3JiaSBsZW8gdXJuYSBtb2xlc3RpZS4gSWQgb3JuYXJlIGFyY3Ugb2RpbyB1dCBzZW0gbnVsbGEgcGhhcmV0cmEgZGlhbSBzaXQuIEludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0IGR1aXMgdWx0cmljaWVzIGxhY3VzLiBWZWxpdCB1dCB0b3J0b3IgcHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtLgoKVWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBPZGlvIGZhY2lsaXNpcyBtYXVyaXMgc2l0IGFtZXQgbWFzc2EuIE5pYmggdG9ydG9yIGlkIGFsaXF1ZXQgbGVjdHVzIHByb2luIG5pYmggbmlzbCBjb25kaW1lbnR1bSBpZC4gTGliZXJvIG51bmMgY29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQuIExhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UgYWMgdG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMuIE1hbGVzdWFkYSBiaWJlbmR1bSBhcmN1IHZpdGFlIGVsZW1lbnR1bSBjdXJhYml0dXIgdml0YWUgbnVuYyBzZWQuIEVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudC4gTWF0dGlzIG51bmMgc2VkIGJsYW5kaXQgbGliZXJvIHZvbHV0cGF0IHNlZCBjcmFzLiBMYWNpbmlhIGF0IHF1aXMgcmlzdXMgc2VkIHZ1bHB1dGF0ZSBvZGlvIHV0LiBQdWx2aW5hciBldGlhbSBub24gcXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtLiBTZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbSBibGFuZGl0LiBRdWlzcXVlIGVnZXN0YXMgZGlhbSBpbiBhcmN1LiBGYWNpbGlzaXMgc2VkIG9kaW8gbW9yYmkgcXVpcyBjb21tb2RvIG9kaW8uIENvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuIGV0LiBNYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jIHZlbCByaXN1cyBjb21tb2RvLiBGYWNpbGlzaSBjcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bSBuaWJoIGlwc3VtLgoKRmF1Y2lidXMgaW50ZXJkdW0gcG9zdWVyZSBsb3JlbSBpcHN1bSBkb2xvciBzaXQuIFRvcnRvciBhdCBhdWN0b3IgdXJuYSBudW5jIGlkIGN1cnN1cyBtZXR1cyBhbGlxdWFtLiBJcHN1bSBudW5jIGFsaXF1ZXQgYmliZW5kdW0gZW5pbS4gQWxpcXVhbSBlbGVpZmVuZCBtaSBpbiBudWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtLiBMaWJlcm8gZW5pbSBzZWQgZmF1Y2lidXMgdHVycGlzLiBUdXJwaXMgaW4gZXUgbWkgYmliZW5kdW0uIEV1IG5vbiBkaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtLiBMYW9yZWV0IGlkIGRvbmVjIHVsdHJpY2VzIHRpbmNpZHVudCBhcmN1IG5vbiBzb2RhbGVzIG5lcXVlIHNvZGFsZXMuIEEgZGlhbSBzb2xsaWNpdHVkaW4gdGVtcG9yIGlkIGV1IG5pc2wuIEluIGFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dCBtb3JiaS4gSWQgZXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzLiBWZWxpdCBsYW9yZWV0IGlkIGRvbmVjIHVsdHJpY2VzIHRpbmNpZHVudCBhcmN1IG5vbi4KCk5lcXVlIHZpdmVycmEganVzdG8gbmVjIHVsdHJpY2VzIGR1aSBzYXBpZW4gZWdldCBtaSBwcm9pbi4gTnVuYyBzZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUuIENvbnNlcXVhdCBtYXVyaXMgbnVuYyBjb25ndWUgbmlzaS4gRHVpIGlkIG9ybmFyZSBhcmN1IG9kaW8gdXQgc2VtLiBWdWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQgdm9sdXRwYXQgbWFlY2VuYXMuIENvbnNlY3RldHVyIGxpYmVybyBpZCBmYXVjaWJ1cyBuaXNsIHRpbmNpZHVudCBlZ2V0IG51bGxhbSBub24gbmlzaS4gQ29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldC4gUGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMgc2l0IGFtZXQgdm9sdXRwYXQgY29uc2VxdWF0LiBTb2RhbGVzIHV0IGV0aWFtIHNpdCBhbWV0IG5pc2wgcHVydXMuIFNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMuIERvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldCBtb2xlc3RpZS4gRG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcy4KCk5vbiBkaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtIGxvcmVtIHNlZC4gVml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jLiBNYWVjZW5hcyBhY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzIHZvbHV0cGF0IGVzdCB2ZWxpdCBlZ2VzdGFzIGR1aS4gUGVsbGVudGVzcXVlIHNpdCBhbWV0IHBvcnR0aXRvciBlZ2V0LiBGYXVjaWJ1cyBldCBtb2xlc3RpZSBhYyBmZXVnaWF0LiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nLiBWaXZlcnJhIHZpdGFlIGNvbmd1ZSBldSBjb25zZXF1YXQuIFRlbXBvciBjb21tb2RvIHVsbGFtY29ycGVyIGEgbGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdS4gUHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjIHRvcnRvci4gRXUgZmV1Z2lhdCBwcmV0aXVtIG5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzLiBVdCBjb25zZXF1YXQgc2VtcGVyIHZpdmVycmEgbmFtIGxpYmVybyBqdXN0by4gTWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQgc2VkIGxlY3R1cyB2ZXN0aWJ1bHVtLiBUZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltIG51bmMgZmF1Y2lidXMgYS4KCk9ybmFyZSBsZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMuIE1vcmJpIGxlbyB1cm5hIG1vbGVzdGllIGF0IGVsZW1lbnR1bSBldSBmYWNpbGlzaXMgc2VkIG9kaW8uIENvbW1vZG8gb2RpbyBhZW5lYW4gc2VkIGFkaXBpc2NpbmcgZGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZS4gU2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0uIFByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luIGdyYXZpZGEgaGVuZHJlcml0IGxlY3R1cy4gUHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cy4gQW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yLiBNYXR0aXMgbnVuYyBzZWQgYmxhbmRpdCBsaWJlcm8gdm9sdXRwYXQuIFRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbC4gVml0YWUganVzdG8gZWdldCBtYWduYSBmZXJtZW50dW0gaWFjdWxpcyBldS4gVWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uIHNvZGFsZXMuIEF0IHF1aXMgcmlzdXMgc2VkIHZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0gYmxhbmRpdC4gVHVycGlzIG51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQgdml2ZXJyYSBpcHN1bSBudW5jIGFsaXF1ZXQuIEVzdCBwbGFjZXJhdCBpbiBlZ2VzdGFzIGVyYXQuIElkIGRvbmVjIHVsdHJpY2VzIHRpbmNpZHVudCBhcmN1IG5vbiBzb2RhbGVzIG5lcXVlLgoKQ29udmFsbGlzIGEgY3JhcyBzZW1wZXIgYXVjdG9yIG5lcXVlIHZpdGFlIHRlbXB1cy4gRmVsaXMgaW1wZXJkaWV0IHByb2luIGZlcm1lbnR1bSBsZW8gdmVsIG9yY2kgcG9ydGEgbm9uIHB1bHZpbmFyLiBWdWxwdXRhdGUgbWkgc2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EuIENvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtLiBWaXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZS4gU2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIGludGVnZXIuIExhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uIHNvZGFsZXMuIEZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMgc2VtcGVyLiBJbiBwZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQgZHVpcyB1bHRyaWNpZXMgbGFjdXMuIFZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0gcXVhbSBudWxsYSBwb3J0dGl0b3IgbWFzc2EuIE1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBSaXN1cyB1bHRyaWNpZXMgdHJpc3RpcXVlIG51bGxhIGFsaXF1ZXQgZW5pbS4gRWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQgb2Rpby4gQWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kgcXVpcyBlbGVpZmVuZCBxdWFtIGFkaXBpc2Npbmcgdml0YWUgcHJvaW4uIENvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yIGF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZyBhdC4gU2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0LiBFcmF0IHBlbGxlbnRlc3F1ZSBhZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdCBpbXBlcmRpZXQgZHVpIGFjY3Vtc2FuIHNpdC4gRGlhbSB2ZWwgcXVhbSBlbGVtZW50dW0gcHVsdmluYXIuIEV0aWFtIHRlbXBvciBvcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bSBuaWJoIHRlbGx1cyBtb2xlc3RpZS4KCk1hdHRpcyBlbmltIHV0IHRlbGx1cyBlbGVtZW50dW0gc2FnaXR0aXMgdml0YWUgZXQgbGVvLiBBdCB1bHRyaWNlcyBtaSB0ZW1wdXMgaW1wZXJkaWV0LiBUaW5jaWR1bnQgdG9ydG9yIGFsaXF1YW0gbnVsbGEgZmFjaWxpc2kgY3JhcyBmZXJtZW50dW0uIEZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlIGlkIHZlbGl0LiBMZW8gZHVpcyB1dCBkaWFtIHF1YW0uIEFjIGZldWdpYXQgc2VkIGxlY3R1cyB2ZXN0aWJ1bHVtIG1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQuIERpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtLiBWb2x1dHBhdCBjb21tb2RvIHNlZCBlZ2VzdGFzIGVnZXN0YXMgZnJpbmdpbGxhIHBoYXNlbGx1cy4gVG9ydG9yIGF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMgaW50ZWdlci4gVWx0cmljZXMgZHVpIHNhcGllbiBlZ2V0IG1pIHByb2luIHNlZCBsaWJlcm8uIElwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyLiBFdSBzZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bS4gQW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgZHVpcyB0cmlzdGlxdWUgc29sbGljaXR1ZGluIG5pYmggc2l0IGFtZXQuIFZlbmVuYXRpcyBhIGNvbmRpbWVudHVtIHZpdGFlIHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIERvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldCBtb2xlc3RpZSBhYyBmZXVnaWF0IHNlZC4gQWxpcXVhbSBldGlhbSBlcmF0IHZlbGl0IHNjZWxlcmlzcXVlIGluLiBBdCBlbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpIHF1aXMgY29tbW9kbyBvZGlvLiBWZWwgb3JjaSBwb3J0YSBub24gcHVsdmluYXIgbmVxdWUgbGFvcmVldCBzdXNwZW5kaXNzZS4gTWFnbmEgZWdldCBlc3QgbG9yZW0gaXBzdW0gZG9sb3Igc2l0LgoKTnVuYyBzZWQgYmxhbmRpdCBsaWJlcm8gdm9sdXRwYXQgc2VkIGNyYXMgb3JuYXJlIGFyY3UgZHVpLiBBbWV0IHJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzLiBUZW1wdXMgaW1wZXJkaWV0IG51bGxhIG1hbGVzdWFkYSBwZWxsZW50ZXNxdWUgZWxpdCBlZ2V0LiBBcmN1IHZpdGFlIGVsZW1lbnR1bSBjdXJhYml0dXIgdml0YWUgbnVuYyBzZWQuIEluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcy4gRWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaS4gVGVsbHVzIG9yY2kgYWMgYXVjdG9yIGF1Z3VlIG1hdXJpcyBhdWd1ZSBuZXF1ZSBncmF2aWRhIGluLiBUdXJwaXMgaW4gZXUgbWkgYmliZW5kdW0gbmVxdWUgZWdlc3Rhcy4gRmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpIHF1aXMgY29tbW9kbyBvZGlvIGFlbmVhbiBzZWQuIE5lcXVlIGFsaXF1YW0gdmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cyByaXN1cy4gTWFnbmEgYWMgcGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzIHVsdHJpY2VzIGVyb3MgaW4gY3Vyc3VzLiBWaXZlcnJhIGFkaXBpc2NpbmcgYXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMgbW9yYmkuIEF0IGluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUuIERpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdCBhbWV0IGFsaXF1YW0uIFV0IG9ybmFyZSBsZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGluLgoKU2l0IGFtZXQgYWxpcXVhbSBpZCBkaWFtIG1hZWNlbmFzLiBGYXVjaWJ1cyBwdXJ1cyBpbiBtYXNzYSB0ZW1wb3IgbmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlLiBVdCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMuIEFsaXF1YW0gbnVsbGEgZmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2RpbyBldSBmZXVnaWF0IHByZXRpdW0uIEVnZXN0YXMgZGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoLiBFdSBhdWd1ZSB1dCBsZWN0dXMgYXJjdSBiaWJlbmR1bS4gTnVsbGEgYWxpcXVldCBlbmltIHRvcnRvciBhdCBhdWN0b3IgdXJuYSBudW5jIGlkLiBDb252YWxsaXMgcG9zdWVyZSBtb3JiaSBsZW8gdXJuYS4gU2VtIGZyaW5naWxsYSB1dCBtb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZC4gQWMgdG9ydG9yIHZpdGFlIHB1cnVzIGZhdWNpYnVzLiBFdCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzLiBQdXJ1cyBzaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzLiBGYWNpbGlzaSBudWxsYW0gdmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cyB2aXRhZSBjb25ndWUuIEV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpIHBoYXNlbGx1cyBlZ2VzdGFzIHRlbGx1cyBydXRydW0uIFV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhhcmV0cmEuIEFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcyB1bHRyaWNpZXMgbWkgZWdldCBtYXVyaXMuIFV0IGNvbnNlcXVhdCBzZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvLiBBIGxhY3VzIHZlc3RpYnVsdW0gc2VkIGFyY3Ugbm9uIG9kaW8gZXVpc21vZC4gSGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdCBxdWlzcXVlIHNhZ2l0dGlzIHB1cnVzIHNpdCBhbWV0IHZvbHV0cGF0IGNvbnNlcXVhdC4KClZpdmVycmEgbmliaCBjcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jLiBHcmF2aWRhIGFyY3UgYWMgdG9ydG9yIGRpZ25pc3NpbS4gTW9yYmkgbm9uIGFyY3UgcmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlLiBGcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyIGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltIGRpYW0uIE5pYmggdmVuZW5hdGlzIGNyYXMgc2VkIGZlbGlzIGVnZXQgdmVsaXQgYWxpcXVldCBzYWdpdHRpcy4gSGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0LiBFbmltIGxvYm9ydGlzIHNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMuIEN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMgZW5pbSBkaWFtLiBTaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzIGxlY3R1cyBtYWduYSBmcmluZ2lsbGEgdXJuYSBwb3J0dGl0b3IgcmhvbmN1cy4gTWFsZXN1YWRhIHBlbGxlbnRlc3F1ZSBlbGl0IGVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzLiBJbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cyBhLiBTZWQgdnVscHV0YXRlIG1pIHNpdCBhbWV0LiBQZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcy4gQ3JhcyBmZXJtZW50dW0gb2RpbyBldSBmZXVnaWF0LiBQdXJ1cyBncmF2aWRhIHF1aXMgYmxhbmRpdCB0dXJwaXMgY3Vyc3VzIGluIGhhYy4KCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtLiBUb3J0b3IgcG9zdWVyZSBhYyB1dCBjb25zZXF1YXQuIFJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhIGp1c3RvIG5lYyB1bHRyaWNlcy4gUGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMuIExhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0LiBNYXVyaXMgcmhvbmN1cyBhZW5lYW4gdmVsIGVsaXQgc2NlbGVyaXNxdWUgbWF1cmlzLiBPcm5hcmUgYXJjdSBkdWkgdml2YW11cyBhcmN1IGZlbGlzIGJpYmVuZHVtLiBBdCBlbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvLiBGYXVjaWJ1cyBwdXJ1cyBpbiBtYXNzYSB0ZW1wb3IuIEVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0uCgpOZXF1ZSBncmF2aWRhIGluIGZlcm1lbnR1bSBldCBzb2xsaWNpdHVkaW4gYWMgb3JjaS4gQ29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpLiBWdWxwdXRhdGUgc2FwaWVuIG5lYyBzYWdpdHRpcyBhbGlxdWFtIG1hbGVzdWFkYSBiaWJlbmR1bSBhcmN1LiBBYyBhdWN0b3IgYXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlLiBRdWlzIHZhcml1cyBxdWFtIHF1aXNxdWUgaWQgZGlhbSB2ZWwgcXVhbSBlbGVtZW50dW0gcHVsdmluYXIuIEFkaXBpc2NpbmcgYXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMgbW9yYmkuIFZpdmVycmEgdGVsbHVzIGluIGhhYyBoYWJpdGFzc2UgcGxhdGVhLiBFdSBjb25zZXF1YXQgYWMgZmVsaXMgZG9uZWMgZXQgb2Rpby4gTWFzc2EgdWx0cmljaWVzIG1pIHF1aXMgaGVuZHJlcml0IGRvbG9yIG1hZ25hIGVnZXQgZXN0LiBJbiBtb2xsaXMgbnVuYyBzZWQgaWQgc2VtcGVyIHJpc3VzIGluLgoKUG9zdWVyZSBhYyB1dCBjb25zZXF1YXQgc2VtcGVyIHZpdmVycmEgbmFtIGxpYmVybyBqdXN0byBsYW9yZWV0LiBGcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4uIFBvcnR0aXRvciBsYWN1cyBsdWN0dXMgYWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUuIEVzdCBhbnRlIGluIG5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMuIEN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZCB2ZWxpdC4gRXUgYXVndWUgdXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzLiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdCBxdWlzcXVlLiBWb2x1dHBhdCBhYyB0aW5jaWR1bnQgdml0YWUgc2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0LiBFZ2VzdGFzIGludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3RpcXVlIG1hZ25hIHNpdC4gUG9ydHRpdG9yIHJob25jdXMgZG9sb3IgcHVydXMgbm9uLiBWaXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldS4gQSBpYWN1bGlzIGF0IGVyYXQgcGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kby4gU2NlbGVyaXNxdWUgdml2ZXJyYSBtYXVyaXMgaW4gYWxpcXVhbSBzZW0gZnJpbmdpbGxhLiBWaXZlcnJhIGlwc3VtIG51bmMgYWxpcXVldCBiaWJlbmR1bSBlbmltIGZhY2lsaXNpcy4KCkxlY3R1cyBxdWFtIGlkIGxlbyBpbiB2aXRhZSB0dXJwaXMgbWFzc2EuIEFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nLiBBbGlxdWFtIHNlbSBldCB0b3J0b3IgY29uc2VxdWF0LiBNYWVjZW5hcyB2b2x1dHBhdCBibGFuZGl0IGFsaXF1YW0gZXRpYW0gZXJhdCB2ZWxpdCBzY2VsZXJpc3F1ZSBpbi4gRmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbSBuZXF1ZS4gUGhhcmV0cmEgc2l0IGFtZXQgYWxpcXVhbSBpZC4gTGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdC4gVmFyaXVzIHNpdCBhbWV0IG1hdHRpcyB2dWxwdXRhdGUgZW5pbSBudWxsYS4gVGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtIG5pYmggdGVsbHVzIG1vbGVzdGllLiBBZGlwaXNjaW5nIHZpdGFlIHByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hLiBPcmNpIGFjIGF1Y3RvciBhdWd1ZSBtYXVyaXMgYXVndWUgbmVxdWUgZ3JhdmlkYSBpbiBmZXJtZW50dW0uIFNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdCBkaWFtIHV0IHZlbmVuYXRpcy4KCkFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gU2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhLiBKdXN0byBsYW9yZWV0IHNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0uIFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbS4gVml0YWUgc3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQuIEFudGUgaW4gbmliaCBtYXVyaXMgY3Vyc3VzIG1hdHRpcyBtb2xlc3RpZSBhLiBWaXRhZSBjb25ndWUgbWF1cmlzIHJob25jdXMgYWVuZWFuLiBQb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjIHV0IGNvbnNlcXVhdCBzZW1wZXIuIFZpdmVycmEgbWFlY2VuYXMgYWNjdW1zYW4gbGFjdXMgdmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QuIFBlbGxlbnRlc3F1ZSBhZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdCBpbXBlcmRpZXQgZHVpLiBQZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzLiBBdCBlbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpIHF1aXMgY29tbW9kby4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjLiBGYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpLgoKTnVuYyBmYXVjaWJ1cyBhIHBlbGxlbnRlc3F1ZSBzaXQgYW1ldCBwb3J0dGl0b3IgZWdldC4gRXUgYXVndWUgdXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzLiBFZ2VzdGFzIG1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlLiBOaXNpIHNjZWxlcmlzcXVlIGV1IHVsdHJpY2VzIHZpdGFlLiBFZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMuIENvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMuIEFtZXQgZmFjaWxpc2lzIG1hZ25hIGV0aWFtIHRlbXBvciBvcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bS4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwuIEF0IGluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQuIFF1aXMgaGVuZHJlcml0IGRvbG9yIG1hZ25hIGVnZXQgZXN0LgoKQWRpcGlzY2luZyB2aXRhZSBwcm9pbiBzYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzLiBVdCBwaGFyZXRyYSBzaXQgYW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMuIFByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbS4gVXJuYSBuZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luLiBOaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYS4gVXQgZXRpYW0gc2l0IGFtZXQgbmlzbCBwdXJ1cyBpbi4gVWx0cmljaWVzIG1pIGVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZS4gVXQgb3JuYXJlIGxlY3R1cyBzaXQgYW1ldCBlc3QuIERvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldCBtb2xlc3RpZSBhYyBmZXVnaWF0LiBTaXQgYW1ldCB0ZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUgdHVycGlzLiBBbWV0IGVzdCBwbGFjZXJhdCBpbiBlZ2VzdGFzIGVyYXQuIEV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyIGVnZXQuCgpJbiBudWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtIHVsdHJpY2VzIHNhZ2l0dGlzIG9yY2kgYSBzY2VsZXJpc3F1ZS4gQW1ldCByaXN1cyBudWxsYW0gZWdldCBmZWxpcy4gQSBsYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYSBhdC4gVHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoIHNpdCBhbWV0IGNvbW1vZG8gbnVsbGEgZmFjaWxpc2kuIFNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcy4gQWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUuIERpYW0gdmVsIHF1YW0gZWxlbWVudHVtIHB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzIHN1c3BlbmRpc3NlLiBVdCB2ZW5lbmF0aXMgdGVsbHVzIGluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZS4gTGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUuIFVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvci4gVXQgdmVuZW5hdGlzIHRlbGx1cyBpbiBtZXR1cyB2dWxwdXRhdGUgZXUgc2NlbGVyaXNxdWUgZmVsaXMgaW1wZXJkaWV0LiBFbGl0IGR1aXMgdHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoIHNpdCBhbWV0IGNvbW1vZG8gbnVsbGEuIEZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlIGlkIHZlbGl0IHV0IHRvcnRvciBwcmV0aXVtLiBQdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0uIFV0IGVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcy4gSW4gbWFzc2EgdGVtcG9yIG5lYyBmZXVnaWF0IG5pc2wgcHJldGl1bSBmdXNjZS4gVWx0cmljZXMgaW4gaWFjdWxpcyBudW5jIHNlZC4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIE5vbiBhcmN1IHJpc3VzIHF1aXMgdmFyaXVzIHF1YW0uCgpFZ2V0IG1hdXJpcyBwaGFyZXRyYSBldCB1bHRyaWNlcyBuZXF1ZS4gVmVsIHF1YW0gZWxlbWVudHVtIHB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzLiBFbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlLiBDb252YWxsaXMgYSBjcmFzIHNlbXBlciBhdWN0b3IuIE1hdHRpcyBwZWxsZW50ZXNxdWUgaWQgbmliaCB0b3J0b3IgaWQgYWxpcXVldCBsZWN0dXMgcHJvaW4uIFVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzIGVsZWlmZW5kLiBBbGlxdWFtIG51bGxhIGZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8uIE5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzLiBUb3J0b3Igdml0YWUgcHVydXMgZmF1Y2lidXMgb3JuYXJlIHN1c3BlbmRpc3NlLiBBZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gRmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIGVnZXQuIFRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4gT3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaCB0ZWxsdXMgbW9sZXN0aWUgbnVuYy4gSnVzdG8gZWdldCBtYWduYSBmZXJtZW50dW0gaWFjdWxpcyBldSBub24gZGlhbSBwaGFzZWxsdXMuIEV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaS4gTWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMgZWdlc3Rhcy4gT3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaCB0ZWxsdXMgbW9sZXN0aWUgbnVuYyBub24uIEV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhIHVsdHJpY2llcyBtaSBxdWlzIGhlbmRyZXJpdCBkb2xvci4gRXQgc29sbGljaXR1ZGluIGFjIG9yY2kgcGhhc2VsbHVzLiBDb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlIG5pc2kuCgpSdXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9yLiBFbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZSBzYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0uIEVsaXQgYXQgaW1wZXJkaWV0IGR1aSBhY2N1bXNhbiBzaXQgYW1ldC4gSW1wZXJkaWV0IHNlZCBldWlzbW9kIG5pc2kgcG9ydGEgbG9yZW0gbW9sbGlzIGFsaXF1YW0uIE51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQgdml2ZXJyYSBpcHN1bSBudW5jLiBWZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8gaW4gdml0YWUuIEVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcyB2b2x1dHBhdCBibGFuZGl0IGFsaXF1YW0gZXRpYW0gZXJhdCB2ZWxpdC4gTnVsbGEgZmFjaWxpc2kgbW9yYmkgdGVtcHVzIGlhY3VsaXMuIEdyYXZpZGEgcXVpcyBibGFuZGl0IHR1cnBpcyBjdXJzdXMgaW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEgZGljdHVtc3QuIEludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVybyBpZCBmYXVjaWJ1cyBuaXNsIHRpbmNpZHVudCBlZ2V0LiBNYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzIGF0IGVyYXQuIERpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEuIEF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzIGFsaXF1YW0gZWxlaWZlbmQuIEhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gUXVpcyBoZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldCBlc3QgbG9yZW0uIERpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtIHZpdmVycmEgYWxpcXVldC4KCk5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldC4gRG9sb3IgbW9yYmkgbm9uIGFyY3UgcmlzdXMuIFVsbGFtY29ycGVyIGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltIGRpYW0gcXVpcyBlbmltIGxvYm9ydGlzLiBWZWxpdCBsYW9yZWV0IGlkIGRvbmVjIHVsdHJpY2VzIHRpbmNpZHVudCBhcmN1LiBBcmN1IGJpYmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhhcmV0cmEuIFBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtLiBWaXRhZSB0ZW1wdXMgcXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtLiBGYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtLiBSaWRpY3VsdXMgbXVzIG1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvLiBQZWxsZW50ZXNxdWUgZWxpdCBlZ2V0IGdyYXZpZGEgY3VtIHNvY2lpcy4gUG9ydHRpdG9yIGxlbyBhIGRpYW0gc29sbGljaXR1ZGluIHRlbXBvci4gVXQgZXRpYW0gc2l0IGFtZXQgbmlzbCBwdXJ1cy4gT2RpbyB0ZW1wb3Igb3JjaSBkYXBpYnVzIHVsdHJpY2VzIGluIGlhY3VsaXMgbnVuYy4gQ3JhcyBzZWQgZmVsaXMgZWdldCB2ZWxpdCBhbGlxdWV0IHNhZ2l0dGlzIGlkIGNvbnNlY3RldHVyIHB1cnVzLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBEaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaSBlZ2V0IG1hdXJpcy4gUXVpcyBlbmltIGxvYm9ydGlzIHNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkuIEVsZW1lbnR1bSBuaWJoIHRlbGx1cyBtb2xlc3RpZSBudW5jIG5vbiBibGFuZGl0LgoKUmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlIGlkIGRpYW0uIFNlZCBhdWd1ZSBsYWN1cyB2aXZlcnJhIHZpdGFlIGNvbmd1ZSBldSBjb25zZXF1YXQgYWMgZmVsaXMuIEFkaXBpc2NpbmcgZWxpdCBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBDb25ndWUgcXVpc3F1ZSBlZ2VzdGFzIGRpYW0gaW4gYXJjdS4gRHVpIHNhcGllbiBlZ2V0IG1pIHByb2luIHNlZCBsaWJlcm8gZW5pbS4gVm9sdXRwYXQgZGlhbSB1dCB2ZW5lbmF0aXMgdGVsbHVzIGluLiBQcmV0aXVtIGZ1c2NlIGlkIHZlbGl0IHV0IHRvcnRvci4gU2VtcGVyIGZldWdpYXQgbmliaCBzZWQgcHVsdmluYXIgcHJvaW4gZ3JhdmlkYSBoZW5kcmVyaXQgbGVjdHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtLiBTZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMuIFF1YW0gaWQgbGVvIGluIHZpdGFlIHR1cnBpcyBtYXNzYSBzZWQuIEZhdWNpYnVzIHNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0uIE51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQgdmVuZW5hdGlzIHRlbGx1cyBpbi4KClBoYXNlbGx1cyBmYXVjaWJ1cyBzY2VsZXJpc3F1ZSBlbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZS4gVml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYyBmZWxpcy4gRmV1Z2lhdCBuaWJoIHNlZCBwdWx2aW5hciBwcm9pbiBncmF2aWRhIGhlbmRyZXJpdC4gQW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYS4gRGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yIGF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZy4gUG9ydHRpdG9yIHJob25jdXMgZG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQuIElwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzLiBWYXJpdXMgcXVhbSBxdWlzcXVlIGlkIGRpYW0gdmVsIHF1YW0gZWxlbWVudHVtIHB1bHZpbmFyLiBEdWlzIHVsdHJpY2llcyBsYWN1cyBzZWQgdHVycGlzIHRpbmNpZHVudCBpZCBhbGlxdWV0LiBFdCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgc2VkLiBEb2xvciBzZWQgdml2ZXJyYSBpcHN1bSBudW5jIGFsaXF1ZXQgYmliZW5kdW0gZW5pbS4gRGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYS4gRG9uZWMgYWRpcGlzY2luZyB0cmlzdGlxdWUgcmlzdXMgbmVjIGZldWdpYXQgaW4gZmVybWVudHVtLiBWdWxwdXRhdGUgc2FwaWVuIG5lYyBzYWdpdHRpcyBhbGlxdWFtIG1hbGVzdWFkYS4gRGljdHVtc3QgdmVzdGlidWx1bSByaG9uY3VzIGVzdCBwZWxsZW50ZXNxdWUuIE9yY2kgbnVsbGEgcGVsbGVudGVzcXVlIGRpZ25pc3NpbSBlbmltIHNpdCBhbWV0LgoKQ29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldCBpZCBkb25lYy4gU2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldCBlZ2VzdGFzLiBGZXJtZW50dW0gaWFjdWxpcyBldSBub24gZGlhbSBwaGFzZWxsdXMgdmVzdGlidWx1bSBsb3JlbS4gTWFsZXN1YWRhIHBlbGxlbnRlc3F1ZSBlbGl0IGVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzLiBUdXJwaXMgbWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMgZWdlc3RhcyBzZWQuIFNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dCBldSBzZW0gaW50ZWdlciB2aXRhZS4gTWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4gaW4uIE5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcyBhdWN0b3IuIFRyaXN0aXF1ZSBudWxsYSBhbGlxdWV0IGVuaW0gdG9ydG9yIGF0IGF1Y3Rvci4gSXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMgZ3JhdmlkYSBkaWN0dW0uCgpFZ2V0IG51bGxhIGZhY2lsaXNpIGV0aWFtIGRpZ25pc3NpbSBkaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZS4gTGVjdHVzIHByb2luIG5pYmggbmlzbCBjb25kaW1lbnR1bSBpZCB2ZW5lbmF0aXMgYSBjb25kaW1lbnR1bS4gUmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlIGlkLiBBbGlxdWFtIHB1cnVzIHNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMgbGVjdHVzIG1hZ25hLiBQcmV0aXVtIG5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzLiBBcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzLiBOaXNpIHF1aXMgZWxlaWZlbmQgcXVhbSBhZGlwaXNjaW5nIHZpdGFlLiBNYXNzYSB2aXRhZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zLiBEaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaSBlZ2V0IG1hdXJpcyBwaGFyZXRyYSBldCB1bHRyaWNlcy4gTXVzIG1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIuIEludGVnZXIgZW5pbSBuZXF1ZSB2b2x1dHBhdCBhYyB0aW5jaWR1bnQgdml0YWUgc2VtcGVyIHF1aXMgbGVjdHVzLiBOZWMgbmFtIGFsaXF1YW0gc2VtIGV0IHRvcnRvciBjb25zZXF1YXQgaWQgcG9ydGEgbmliaC4gVmVzdGlidWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudC4gUGhhc2VsbHVzIHZlc3RpYnVsdW0gbG9yZW0gc2VkIHJpc3VzIHVsdHJpY2llcyB0cmlzdGlxdWUuIEVsZW1lbnR1bSBjdXJhYml0dXIgdml0YWUgbnVuYyBzZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMuIFNpdCBhbWV0IG5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcy4KCkltcGVyZGlldCBzZWQgZXVpc21vZCBuaXNpIHBvcnRhIGxvcmVtIG1vbGxpcy4gTmlzaSBsYWN1cyBzZWQgdml2ZXJyYSB0ZWxsdXMuIE1pIGJpYmVuZHVtIG5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUuIFB1cnVzIGZhdWNpYnVzIG9ybmFyZSBzdXNwZW5kaXNzZSBzZWQuIFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQW1ldCBjb21tb2RvIG51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzLiBQdXJ1cyBzaXQgYW1ldCB2b2x1dHBhdCBjb25zZXF1YXQuIFZlc3RpYnVsdW0gbG9yZW0gc2VkIHJpc3VzIHVsdHJpY2llcy4gU2VtcGVyIHZpdmVycmEgbmFtIGxpYmVybyBqdXN0byBsYW9yZWV0IHNpdC4gQWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzLiBBbGlxdWFtIGVsZWlmZW5kIG1pIGluIG51bGxhIHBvc3VlcmUuIFZpdmVycmEgbmliaCBjcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jLiBUZW1wb3IgaWQgZXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzLiBEdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhLiBMZW8gYSBkaWFtIHNvbGxpY2l0dWRpbiB0ZW1wb3IgaWQgZXUgbmlzbC4KClNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbS4gVXQgdGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dCBkaWFtLiBTaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBOYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQuIEFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMuIEluIHZpdGFlIHR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzIHNlZC4gT3JjaSBwaGFzZWxsdXMgZWdlc3RhcyB0ZWxsdXMgcnV0cnVtIHRlbGx1cy4gUHVydXMgZmF1Y2lidXMgb3JuYXJlIHN1c3BlbmRpc3NlIHNlZCBuaXNpIGxhY3VzIHNlZCB2aXZlcnJhLiBWYXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZS4gVm9sdXRwYXQgY29tbW9kbyBzZWQgZWdlc3RhcyBlZ2VzdGFzIGZyaW5naWxsYS4gQWVuZWFuIHZlbCBlbGl0IHNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUuIExlY3R1cyB1cm5hIGR1aXMgY29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldC4gVml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYy4gU2l0IGFtZXQgZmFjaWxpc2lzIG1hZ25hIGV0aWFtIHRlbXBvciBvcmNpLgoKU2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcy4gTmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRhZSBwcm9pbiBzYWdpdHRpcy4gSW50ZWdlciBxdWlzIGF1Y3RvciBlbGl0IHNlZC4gTmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzLiBTZWQgYmxhbmRpdCBsaWJlcm8gdm9sdXRwYXQgc2VkIGNyYXMgb3JuYXJlIGFyY3UuIEluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhIG5pYmguIFZvbHV0cGF0IGNvbW1vZG8gc2VkIGVnZXN0YXMgZWdlc3Rhcy4gUGVsbGVudGVzcXVlIGRpZ25pc3NpbSBlbmltIHNpdCBhbWV0IHZlbmVuYXRpcyB1cm5hIGN1cnN1cy4gRmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgaW50ZWdlciBlZ2V0IGFsaXF1ZXQgbmliaCBwcmFlc2VudC4gVml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYy4gQ3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLiBFbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZSBzYXBpZW4gbmVjLgoKRmFjaWxpc2lzIHZvbHV0cGF0IGVzdCB2ZWxpdCBlZ2VzdGFzIGR1aSBpZC4gRWdldCBhcmN1IGRpY3R1bSB2YXJpdXMgZHVpcyBhdC4gRXUgdWx0cmljZXMgdml0YWUgYXVjdG9yIGV1LiBTZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzLiBMaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtIHNpdC4gUmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEuIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbS4gTnVuYyBub24gYmxhbmRpdCBtYXNzYSBlbmltLiBOaWJoIG1hdXJpcyBjdXJzdXMgbWF0dGlzIG1vbGVzdGllIGEgaWFjdWxpcyBhdCBlcmF0LiBEaWFtIHZvbHV0cGF0IGNvbW1vZG8gc2VkIGVnZXN0YXMuCgpPcmNpIGRhcGlidXMgdWx0cmljZXMgaW4gaWFjdWxpcyBudW5jLiBTaXQgYW1ldCBuaXNsIHB1cnVzIGluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIuIFBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvciBpZCBhbGlxdWV0IGxlY3R1cyBwcm9pbiBuaWJoLiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdCBxdWlzcXVlLiBFbmltIGJsYW5kaXQgdm9sdXRwYXQgbWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdC4gQ3VyYWJpdHVyIHZpdGFlIG51bmMgc2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbS4gVml2ZXJyYSBtYXVyaXMgaW4gYWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVudCBhdWd1ZS4gTnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtIG51bmMuIER1aSBudW5jIG1hdHRpcyBlbmltIHV0LiBOZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMuIFV0IG9ybmFyZSBsZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMuIFBsYWNlcmF0IHZlc3RpYnVsdW0gbGVjdHVzIG1hdXJpcyB1bHRyaWNlcy4gQWNjdW1zYW4gc2l0IGFtZXQgbnVsbGEgZmFjaWxpc2kgbW9yYmkuIExhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIEVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcy4gRW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzLgoKTWkgYmliZW5kdW0gbmVxdWUgZWdlc3RhcyBjb25ndWUuIFV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhhcmV0cmEuIFNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdCBkaWFtIHV0LiBNYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkuIEFlbmVhbiBwaGFyZXRyYSBtYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMuIEFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtLiBFZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtIHZ1bHB1dGF0ZSBkaWduaXNzaW0uIFVsbGFtY29ycGVyIHNpdCBhbWV0IHJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQgbnVuYy4gTGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8uIEluIGFudGUgbWV0dXMgZGljdHVtIGF0IHRlbXBvciBjb21tb2RvIHVsbGFtY29ycGVyLiBSaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbSBibGFuZGl0IHZvbHV0cGF0LiBQaGFyZXRyYSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkgcXVpcyBoZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldC4gUGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzIHVsdHJpY2VzIGVyb3MgaW4uIEVuaW0gc2l0IGFtZXQgdmVuZW5hdGlzIHVybmEgY3Vyc3VzIGVnZXQuIEJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUgY29udmFsbGlzIGEuIE9kaW8gdXQgc2VtIG51bGxhIHBoYXJldHJhIGRpYW0gc2l0LiBBZGlwaXNjaW5nIGF0IGluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUuCgpDcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdC4gRGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cy4gRW5pbSBmYWNpbGlzaXMgZ3JhdmlkYSBuZXF1ZSBjb252YWxsaXMgYSBjcmFzIHNlbXBlciBhdWN0b3IgbmVxdWUuIExlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cy4gRGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0LiBWaXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQuIE1hc3NhIGVnZXQgZWdlc3RhcyBwdXJ1cyB2aXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wuIExlY3R1cyBwcm9pbiBuaWJoIG5pc2wgY29uZGltZW50dW0gaWQgdmVuZW5hdGlzIGEuIE51bGxhIGZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8uIE1vcmJpIG5vbiBhcmN1IHJpc3VzIHF1aXMgdmFyaXVzIHF1YW0gcXVpc3F1ZSBpZCBkaWFtLiBTYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhIGp1c3RvLiBBZW5lYW4gcGhhcmV0cmEgbWFnbmEgYWMgcGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMuIE51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bS4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBUZW1wb3IgbmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlIGlkLiBBdWd1ZSBsYWN1cyB2aXZlcnJhIHZpdGFlIGNvbmd1ZS4gVGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QuIEF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlLiBFbmltIHRvcnRvciBhdCBhdWN0b3IgdXJuYSBudW5jIGlkLiBPcm5hcmUgc3VzcGVuZGlzc2Ugc2VkIG5pc2kgbGFjdXMgc2VkIHZpdmVycmEgdGVsbHVzIGluLgoKSW4gbnVsbGEgcG9zdWVyZSBzb2xsaWNpdHVkaW4gYWxpcXVhbSB1bHRyaWNlcyBzYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUuIEFkaXBpc2NpbmcgYXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMuIFZlc3RpYnVsdW0gbGVjdHVzIG1hdXJpcyB1bHRyaWNlcyBlcm9zIGluIGN1cnN1cy4gTWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlciBtYWxlc3VhZGEuIERvbG9yIG1vcmJpIG5vbiBhcmN1IHJpc3VzIHF1aXMuIENvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYS4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQgYW1ldCBtYXR0aXMgdnVscHV0YXRlLiBWaXZlcnJhIG9yY2kgc2FnaXR0aXMgZXUgdm9sdXRwYXQgb2RpbyBmYWNpbGlzaXMgbWF1cmlzIHNpdCBhbWV0LiBEdWkgdml2YW11cyBhcmN1IGZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZS4gTWkgcXVpcyBoZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldCBlc3QgbG9yZW0uIE1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtIHZpdmVycmEuIExvcmVtIG1vbGxpcyBhbGlxdWFtIHV0IHBvcnR0aXRvciBsZW8gYSBkaWFtIHNvbGxpY2l0dWRpbi4gSW4gYXJjdSBjdXJzdXMgZXVpc21vZCBxdWlzIHZpdmVycmEgbmliaCBjcmFzLiBBbWV0IHB1cnVzIGdyYXZpZGEgcXVpcyBibGFuZGl0IHR1cnBpcyBjdXJzdXMgaW4gaGFjLiBGZWxpcyBlZ2V0IHZlbGl0IGFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMuIFNjZWxlcmlzcXVlIGluIGRpY3R1bSBub24gY29uc2VjdGV0dXIgYSBlcmF0IG5hbSBhdCBsZWN0dXMuIE51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQuIE1vcmJpIG5vbiBhcmN1IHJpc3VzIHF1aXMgdmFyaXVzIHF1YW0gcXVpc3F1ZSBpZC4gTW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMuCgpNYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtLiBQb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcy4gQWMgZmVsaXMgZG9uZWMgZXQgb2RpbyBwZWxsZW50ZXNxdWUgZGlhbSB2b2x1dHBhdCBjb21tb2RvLiBDb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0IGlkLiBFdCBlZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMuIEFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMuIFNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luLiBEb25lYyBhYyBvZGlvIHRlbXBvciBvcmNpIGRhcGlidXMgdWx0cmljZXMgaW4gaWFjdWxpcyBudW5jLiBWdWxwdXRhdGUgZW5pbSBudWxsYSBhbGlxdWV0IHBvcnR0aXRvciBsYWN1cyBsdWN0dXMuIExhY3VzIHNlZCB2aXZlcnJhIHRlbGx1cyBpbiBoYWMgaGFiaXRhc3NlLiBTZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjIGZlbGlzLiBFbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UuIEVuaW0gdXQgc2VtIHZpdmVycmEgYWxpcXVldCBlZ2V0LiBUcmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcy4gSXBzdW0gbnVuYyBhbGlxdWV0IGJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUgY29udmFsbGlzLiBSaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYS4KCk1vcmJpIHF1aXMgY29tbW9kbyBvZGlvIGFlbmVhbi4gUmlzdXMgbnVsbGFtIGVnZXQgZmVsaXMgZWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhbGlxdWFtLiBOYW0gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbnNlcXVhdCBpZCBwb3J0YS4gUXVhbSBlbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UgZmF1Y2lidXMuIFV0IG9ybmFyZSBsZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMgZXJhdC4gUXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtIGRvbG9yIHNpdC4gQWMgcGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzIHVsdHJpY2VzIGVyb3MgaW4uIFRyaXN0aXF1ZSByaXN1cyBuZWMgZmV1Z2lhdCBpbi4gQmxhbmRpdCBjdXJzdXMgcmlzdXMgYXQgdWx0cmljZXMgbWkuIFNlbSBmcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4uIEEgYXJjdSBjdXJzdXMgdml0YWUgY29uZ3VlIG1hdXJpcyByaG9uY3VzIGFlbmVhbiB2ZWwuIEEgcGVsbGVudGVzcXVlIHNpdCBhbWV0IHBvcnR0aXRvciBlZ2V0IGRvbG9yIG1vcmJpIG5vbi4KClByb2luIGZlcm1lbnR1bSBsZW8gdmVsIG9yY2kgcG9ydGEgbm9uLiBGZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltIG51bmMgZmF1Y2lidXMuIE51bGxhIGFsaXF1ZXQgcG9ydHRpdG9yIGxhY3VzIGx1Y3R1cyBhY2N1bXNhbi4gQSBlcmF0IG5hbSBhdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcy4gTm9uIHNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQuIFJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQuIEdyYXZpZGEgcnV0cnVtIHF1aXNxdWUgbm9uIHRlbGx1cyBvcmNpIGFjIGF1Y3RvciBhdWd1ZSBtYXVyaXMuIENvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYS4gTGVvIGluIHZpdGFlIHR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzLiBTZWQgb2RpbyBtb3JiaSBxdWlzIGNvbW1vZG8gb2RpbyBhZW5lYW4gc2VkIGFkaXBpc2NpbmcgZGlhbS4gRWxpdCBzY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyLiBTaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtIHNpdCBhbWV0LiBJbiBkaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEgZXJhdC4gUHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldCBudWxsYS4gQWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0gcHVydXMgc2l0LiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpLiBTaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0uCgpJbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltIG51bmMgZmF1Y2lidXMuIElhY3VsaXMgdXJuYSBpZCB2b2x1dHBhdCBsYWN1cyBsYW9yZWV0IG5vbiBjdXJhYml0dXIuIFByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bS4gUXVpcyB2ZWwgZXJvcyBkb25lYyBhYyBvZGlvLiBQZWxsZW50ZXNxdWUgZGlhbSB2b2x1dHBhdCBjb21tb2RvIHNlZC4gQWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUgYWMgdXQuIFBvc3VlcmUgbW9yYmkgbGVvIHVybmEgbW9sZXN0aWUgYXQgZWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQuIE5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZS4gU2VtIHZpdmVycmEgYWxpcXVldCBlZ2V0IHNpdCBhbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbS4gU2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQgc2VkIGxlY3R1cyB2ZXN0aWJ1bHVtLiBFZ2VzdGFzIGRpYW0gaW4gYXJjdSBjdXJzdXMuIE1hc3NhIGVnZXQgZWdlc3RhcyBwdXJ1cyB2aXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wuIEluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQgcHJvaW4uIE5vbiBlbmltIHByYWVzZW50IGVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbC4gTm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UgZmF1Y2lidXMgaW50ZXJkdW0gcG9zdWVyZSBsb3JlbSBpcHN1bS4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBPZGlvIHRlbXBvciBvcmNpIGRhcGlidXMgdWx0cmljZXMgaW4gaWFjdWxpcy4KCkFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtLiBCaWJlbmR1bSBlbmltIGZhY2lsaXNpcyBncmF2aWRhIG5lcXVlLiBNYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQgbW9sZXN0aWUgYWMgZmV1Z2lhdCBzZWQgbGVjdHVzIHZlc3RpYnVsdW0uIFRlbXB1cyBpbXBlcmRpZXQgbnVsbGEgbWFsZXN1YWRhIHBlbGxlbnRlc3F1ZSBlbGl0IGVnZXQgZ3JhdmlkYS4gQXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bS4gTnVsbGEgcG9zdWVyZSBzb2xsaWNpdHVkaW4gYWxpcXVhbSB1bHRyaWNlcyBzYWdpdHRpcyBvcmNpLiBOaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIEEgYXJjdSBjdXJzdXMgdml0YWUgY29uZ3VlIG1hdXJpcyByaG9uY3VzIGFlbmVhbiB2ZWwuIEV1IG5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cy4gVGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMgZmV1Z2lhdCBpbi4KCkZ1c2NlIHV0IHBsYWNlcmF0IG9yY2kgbnVsbGEgcGVsbGVudGVzcXVlIGRpZ25pc3NpbSBlbmltIHNpdC4gVml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0LiBNYWxlc3VhZGEgcHJvaW4gbGliZXJvIG51bmMgY29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQgYW1ldCBtYXR0aXMuIE5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluIGFyY3UuIFBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvciBpZC4gVml2ZXJyYSBhY2N1bXNhbiBpbiBuaXNsIG5pc2kgc2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUgYXVjdG9yLiBOZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kLiBRdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQuIEV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEgZmVybWVudHVtLiBMYW9yZWV0IG5vbiBjdXJhYml0dXIgZ3JhdmlkYSBhcmN1IGFjIHRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzLiBTaXQgYW1ldCB2b2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMuCgpRdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhLiBBZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cyBuZWMgZmV1Z2lhdCBpbi4gRWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoIHByYWVzZW50IHRyaXN0aXF1ZS4gVmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cyByaXN1cy4gVGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuIGV0LiBNYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaS4gU2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldC4gVml2YW11cyBhdCBhdWd1ZSBlZ2V0IGFyY3UgZGljdHVtIHZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyLiBEdWlzIHRyaXN0aXF1ZSBzb2xsaWNpdHVkaW4gbmliaCBzaXQuIFBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtLiBFbmltIGxvYm9ydGlzIHNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4gb3JuYXJlLiBJbnRlcmR1bSBjb25zZWN0ZXR1ciBsaWJlcm8gaWQgZmF1Y2lidXMgbmlzbCB0aW5jaWR1bnQgZWdldC4gVXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbSBuZXF1ZS4gSnVzdG8gbmVjIHVsdHJpY2VzIGR1aSBzYXBpZW4gZWdldCBtaS4gRmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0IGFtZXQgcmlzdXMgbnVsbGFtIGVnZXQuCgpFZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ci4gSW4gZXUgbWkgYmliZW5kdW0gbmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZS4gQXQgYXVjdG9yIHVybmEgbnVuYyBpZCBjdXJzdXMgbWV0dXMgYWxpcXVhbSBlbGVpZmVuZC4gQ29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMuIEFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudC4gRW5pbSBibGFuZGl0IHZvbHV0cGF0IG1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbSBlcmF0LiBQZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldC4gT3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlci4gVmVsaXQgc2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzLiBJYWN1bGlzIHVybmEgaWQgdm9sdXRwYXQgbGFjdXMgbGFvcmVldCBub24uIFNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdCBkaWFtIHV0IHZlbmVuYXRpcyB0ZWxsdXMuIE1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbS4gUHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEgcHJvaW4gbGliZXJvIG51bmMgY29uc2VxdWF0LiBDb21tb2RvIG51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlLgoKVGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9yIGFsaXF1YW0uIE5vbiBkaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtIGxvcmVtIHNlZC4gQSBsYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1IG5vbi4gQ29uZGltZW50dW0gdml0YWUgc2FwaWVuIHBlbGxlbnRlc3F1ZSBoYWJpdGFudC4gUGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kbyBlbGl0IGF0IGltcGVyZGlldCBkdWkuIEVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbiBuaXNsIG5pc2kgc2NlbGVyaXNxdWUuIEFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMuIE5pYmggdG9ydG9yIGlkIGFsaXF1ZXQgbGVjdHVzIHByb2luLiBTaXQgYW1ldCBqdXN0byBkb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdC4gRWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4gaW4uIFNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQgYW1ldCBuaXNsLiBTaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzIGxlY3R1cyBtYWduYSBmcmluZ2lsbGEgdXJuYS4gTmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQuIE5vbiBjdXJhYml0dXIgZ3JhdmlkYSBhcmN1IGFjIHRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbi4gRWdldCBtaSBwcm9pbiBzZWQgbGliZXJvIGVuaW0gc2VkLiBEb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cyBuZWMgZmV1Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVyZSB1cm5hLiBBdWN0b3IgdXJuYSBudW5jIGlkIGN1cnN1cyBtZXR1cyBhbGlxdWFtIGVsZWlmZW5kLiBUdXJwaXMgbnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtLiBWZWxpdCBsYW9yZWV0IGlkIGRvbmVjIHVsdHJpY2VzIHRpbmNpZHVudCBhcmN1IG5vbi4gRG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYS4KClByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cy4gVGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0LiBGYWNpbGlzaSBudWxsYW0gdmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cyB2aXRhZSBjb25ndWUuIFZpdGFlIGVsZW1lbnR1bSBjdXJhYml0dXIgdml0YWUgbnVuYy4gUGhhcmV0cmEgc2l0IGFtZXQgYWxpcXVhbSBpZCBkaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaS4gU2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50LiBTZWQgZWdlc3RhcyBlZ2VzdGFzIGZyaW5naWxsYSBwaGFzZWxsdXMgZmF1Y2lidXMgc2NlbGVyaXNxdWUgZWxlaWZlbmQgZG9uZWMgcHJldGl1bS4gUHVydXMgc2l0IGFtZXQgdm9sdXRwYXQgY29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZS4gQ3JhcyBwdWx2aW5hciBtYXR0aXMgbnVuYyBzZWQgYmxhbmRpdCBsaWJlcm8gdm9sdXRwYXQgc2VkIGNyYXMuIFZpdmVycmEgbmliaCBjcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jIHNlZCBibGFuZGl0IGxpYmVyby4gVml0YWUgcHJvaW4gc2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcy4KCk5pc2kgcXVpcyBlbGVpZmVuZCBxdWFtIGFkaXBpc2Npbmcgdml0YWUgcHJvaW4gc2FnaXR0aXMuIEF1Y3RvciBuZXF1ZSB2aXRhZSB0ZW1wdXMgcXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtLiBQcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhIGVzdCB1bGxhbWNvcnBlci4gRXJhdCBuYW0gYXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gRWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQgb2Rpby4gT3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlciBlZ2V0LiBFdWlzbW9kIGluIHBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcyBsYWN1cy4gUXVhbSBlbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0uIFV0IHNlbSBudWxsYSBwaGFyZXRyYSBkaWFtIHNpdCBhbWV0IG5pc2wuIFB1bHZpbmFyIG1hdHRpcyBudW5jIHNlZCBibGFuZGl0LiBMYWN1cyBsYW9yZWV0IG5vbiBjdXJhYml0dXIgZ3JhdmlkYSBhcmN1LiBVbHRyaWNpZXMgbWkgZWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlLiBNb3JiaSBlbmltIG51bmMgZmF1Y2lidXMgYS4gTnVsbGEgcGVsbGVudGVzcXVlIGRpZ25pc3NpbSBlbmltIHNpdC4gU2l0IGFtZXQgbmlzbCBwdXJ1cyBpbiBtb2xsaXMgbnVuYyBzZWQgaWQgc2VtcGVyLiBTZW1wZXIgcmlzdXMgaW4gaGVuZHJlcml0IGdyYXZpZGEgcnV0cnVtLiBMb2JvcnRpcyBtYXR0aXMgYWxpcXVhbSBmYXVjaWJ1cyBwdXJ1cyBpbiBtYXNzYSB0ZW1wb3IgbmVjLiBQZWxsZW50ZXNxdWUgaWQgbmliaCB0b3J0b3IgaWQgYWxpcXVldCBsZWN0dXMuIEF1Y3RvciBuZXF1ZSB2aXRhZSB0ZW1wdXMgcXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtLiBPZGlvIHRlbXBvciBvcmNpIGRhcGlidXMgdWx0cmljZXMgaW4gaWFjdWxpcy4KCkxlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4gZWdlc3Rhcy4gQXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2ZWwgdHVycGlzIG51bmMgZWdldCBsb3JlbSBkb2xvci4gUXVhbSBpZCBsZW8gaW4gdml0YWUgdHVycGlzLiBSaXN1cyBmZXVnaWF0IGluIGFudGUgbWV0dXMgZGljdHVtLiBJbiBuaWJoIG1hdXJpcyBjdXJzdXMgbWF0dGlzIG1vbGVzdGllIGEgaWFjdWxpcy4gQXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbSBibGFuZGl0LiBQdWx2aW5hciBldGlhbSBub24gcXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlLiBOZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmguIFV0IHRvcnRvciBwcmV0aXVtIHZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0gYWMgdG9ydG9yIHZpdGFlLiBTb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQuIFZpdmVycmEgdml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYyBmZWxpcy4gU2NlbGVyaXNxdWUgaW4gZGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhLiBNYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyIG1vcmJpLiBKdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzIGV1IG5vbi4KCk51bGxhIHBlbGxlbnRlc3F1ZSBkaWduaXNzaW0gZW5pbSBzaXQgYW1ldCB2ZW5lbmF0aXMgdXJuYSBjdXJzdXMuIFNlZCBwdWx2aW5hciBwcm9pbiBncmF2aWRhIGhlbmRyZXJpdC4gSW1wZXJkaWV0IHByb2luIGZlcm1lbnR1bSBsZW8gdmVsIG9yY2kgcG9ydGEuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQuIFVsbGFtY29ycGVyIG1hbGVzdWFkYSBwcm9pbiBsaWJlcm8gbnVuYyBjb25zZXF1YXQgaW50ZXJkdW0gdmFyaXVzIHNpdC4gTWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkgbGVvLiBRdWFtIHZpdmVycmEgb3JjaSBzYWdpdHRpcyBldSB2b2x1dHBhdCBvZGlvIGZhY2lsaXNpcy4gRWdlc3RhcyBjb25ndWUgcXVpc3F1ZSBlZ2VzdGFzIGRpYW0gaW4uIE1hdXJpcyBpbiBhbGlxdWFtIHNlbSBmcmluZ2lsbGEgdXQuIERpYW0gcXVpcyBlbmltIGxvYm9ydGlzIHNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4uIFRlbXB1cyBlZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtIHZ1bHB1dGF0ZS4gTmliaCBwcmFlc2VudCB0cmlzdGlxdWUgbWFnbmEgc2l0IGFtZXQuIFRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkuIEFjIGZlbGlzIGRvbmVjIGV0IG9kaW8gcGVsbGVudGVzcXVlIGRpYW0gdm9sdXRwYXQuCgpWaXZhbXVzIGF0IGF1Z3VlIGVnZXQgYXJjdSBkaWN0dW0gdmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIuIEFsaXF1ZXQgcG9ydHRpdG9yIGxhY3VzIGx1Y3R1cyBhY2N1bXNhbiB0b3J0b3IuIEVuaW0gdXQgc2VtIHZpdmVycmEgYWxpcXVldCBlZ2V0IHNpdCBhbWV0LiBUaW5jaWR1bnQgdml0YWUgc2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0uIEludGVnZXIgZW5pbSBuZXF1ZSB2b2x1dHBhdCBhYyB0aW5jaWR1bnQuIEZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0uIEV0aWFtIG5vbiBxdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtLiBWZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZC4gRWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEgZGljdHVtIGZ1c2NlLiBMYWN1cyBsYW9yZWV0IG5vbiBjdXJhYml0dXIgZ3JhdmlkYSBhcmN1IGFjIHRvcnRvci4KCkZhdWNpYnVzIHNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0uIEFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZS4gRWdldCBtYWduYSBmZXJtZW50dW0gaWFjdWxpcyBldSBub24gZGlhbSBwaGFzZWxsdXMgdmVzdGlidWx1bSBsb3JlbS4gRG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0LiBWaXRhZSBzdXNjaXBpdCB0ZWxsdXMgbWF1cmlzIGEuIFByb2luIGZlcm1lbnR1bSBsZW8gdmVsIG9yY2kgcG9ydGEgbm9uIHB1bHZpbmFyIG5lcXVlIGxhb3JlZXQuIEFtZXQgcHVydXMgZ3JhdmlkYSBxdWlzIGJsYW5kaXQuIEFlbmVhbiBwaGFyZXRyYSBtYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMuIEZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoIHNlZC4gTmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpLiBFbmltIHNpdCBhbWV0IHZlbmVuYXRpcyB1cm5hIGN1cnN1cyBlZ2V0IG51bmMuIFRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBldWlzbW9kIGluIHBlbGxlbnRlc3F1ZS4gVGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlLiBSaXN1cyBudWxsYW0gZWdldCBmZWxpcyBlZ2V0LiBUb3J0b3IgYWxpcXVhbSBudWxsYSBmYWNpbGlzaSBjcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bS4gRWdldCBkdWlzIGF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcyBwZWxsZW50ZXNxdWUuIFByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMuIE1hc3NhIGlkIG5lcXVlIGFsaXF1YW0gdmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cyByaXN1cyBhdC4gTmVjIHVsbGFtY29ycGVyIHNpdCBhbWV0IHJpc3VzIG51bGxhbSBlZ2V0LgoKQW1ldCBkaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMgZW5pbSBkaWFtIHZ1bHB1dGF0ZSB1dC4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIGludGVnZXIgZWdldC4gTmliaCB0ZWxsdXMgbW9sZXN0aWUgbnVuYyBub24gYmxhbmRpdCBtYXNzYSBlbmltIG5lYy4gVG9ydG9yIHBvc3VlcmUgYWMgdXQgY29uc2VxdWF0IHNlbXBlci4gVml2ZXJyYSBtYWVjZW5hcyBhY2N1bXNhbiBsYWN1cyB2ZWwuIFNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtIHZ1bHB1dGF0ZS4gVWxsYW1jb3JwZXIgc2l0IGFtZXQgcmlzdXMgbnVsbGFtIGVnZXQuIE5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLiBTaXQgYW1ldCB0ZWxsdXMgY3JhcyBhZGlwaXNjaW5nLiBCaWJlbmR1bSBlbmltIGZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMgc2VtcGVyLiBOYW0gYXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMuIFN1c3BlbmRpc3NlIGluIGVzdCBhbnRlIGluLiBUb3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nLiBJbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltLiBPcm5hcmUgYXJjdSBkdWkgdml2YW11cyBhcmN1LiBQb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjIHV0LiBJbnRlcmR1bSBjb25zZWN0ZXR1ciBsaWJlcm8gaWQgZmF1Y2lidXMgbmlzbCB0aW5jaWR1bnQgZWdldC4gQXVjdG9yIGVsaXQgc2VkIHZ1bHB1dGF0ZSBtaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kby4gVXQgb3JuYXJlIGxlY3R1cyBzaXQgYW1ldC4gSXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0LgoKQWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdC4gTmliaCB2ZW5lbmF0aXMgY3JhcyBzZWQgZmVsaXMuIEN1cnN1cyBtZXR1cyBhbGlxdWFtIGVsZWlmZW5kIG1pIGluIG51bGxhLiBJZCBldSBuaXNsIG51bmMgbWkuIFV0IHRlbGx1cyBlbGVtZW50dW0gc2FnaXR0aXMgdml0YWUgZXQgbGVvIGR1aXMgdXQuIEZlbGlzIGVnZXQgdmVsaXQgYWxpcXVldCBzYWdpdHRpcyBpZC4gVGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldC4gRHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQuIFVsdHJpY2VzIG1pIHRlbXB1cyBpbXBlcmRpZXQgbnVsbGEuIEludGVnZXIgcXVpcyBhdWN0b3IgZWxpdCBzZWQgdnVscHV0YXRlLiBUZW1wdXMgcXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtIHNlbS4gVHJpc3RpcXVlIG51bGxhIGFsaXF1ZXQgZW5pbSB0b3J0b3IuIExlY3R1cyBtYXVyaXMgdWx0cmljZXMgZXJvcyBpbiBjdXJzdXMgdHVycGlzIG1hc3NhIHRpbmNpZHVudCBkdWkuIEFkaXBpc2NpbmcgZGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cy4gUHVsdmluYXIgbmVxdWUgbGFvcmVldCBzdXNwZW5kaXNzZSBpbnRlcmR1bSBjb25zZWN0ZXR1ciBsaWJlcm8gaWQuIE1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtLiBOaXNsIHRpbmNpZHVudCBlZ2V0IG51bGxhbSBub24gbmlzaSBlc3QuCgpBbGlxdWV0IGVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzLiBIZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldCBlc3QgbG9yZW0gaXBzdW0gZG9sb3IuIEF0IHZvbHV0cGF0IGRpYW0gdXQgdmVuZW5hdGlzLiBSdXRydW0gcXVpc3F1ZSBub24gdGVsbHVzIG9yY2kuIEVyYXQgaW1wZXJkaWV0IHNlZCBldWlzbW9kIG5pc2kgcG9ydGEuIE9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbiBuaXNsIG5pc2kuIEFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIuIFJob25jdXMgZG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsLiBRdWFtIGVsZW1lbnR1bSBwdWx2aW5hciBldGlhbSBub24gcXVhbSBsYWN1cy4gUHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbiBuaXNsIG5pc2kgc2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUuIFNlZCBpZCBzZW1wZXIgcmlzdXMgaW4gaGVuZHJlcml0IGdyYXZpZGEgcnV0cnVtIHF1aXNxdWUuIEV1IGF1Z3VlIHV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cy4gVXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlLiBFdSBzZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzLiBNb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQuIEZlcm1lbnR1bSBsZW8gdmVsIG9yY2kgcG9ydGEuIEluIGFudGUgbWV0dXMgZGljdHVtIGF0IHRlbXBvciBjb21tb2RvIHVsbGFtY29ycGVyLgoKVml0YWUgdGVtcHVzIHF1YW0gcGVsbGVudGVzcXVlIG5lYyBuYW0gYWxpcXVhbSBzZW0gZXQuIEFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzLiBQZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQgZHVpcyB1bHRyaWNpZXMuIE5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0gaWQuIFZlbGl0IGFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMgdXQuIElkIGRpYW0gbWFlY2VuYXMgdWx0cmljaWVzIG1pIGVnZXQuIERpYW0gZG9uZWMgYWRpcGlzY2luZyB0cmlzdGlxdWUgcmlzdXMgbmVjLiBFZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzIGFsaXF1YW0uIFJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQuIE9yY2kgYWMgYXVjdG9yIGF1Z3VlIG1hdXJpcy4gTGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2RpbyBldWlzbW9kIGxhY2luaWEuIFJpc3VzIHF1aXMgdmFyaXVzIHF1YW0gcXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtLgoKQmxhbmRpdCBjdXJzdXMgcmlzdXMgYXQgdWx0cmljZXMgbWkuIEluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIuIEF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvci4gSWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMuIEluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZS4gTmlzbCBuaXNpIHNjZWxlcmlzcXVlIGV1IHVsdHJpY2VzIHZpdGFlIGF1Y3Rvci4gVWx0cmljZXMgZXJvcyBpbiBjdXJzdXMgdHVycGlzIG1hc3NhLiBBZW5lYW4gcGhhcmV0cmEgbWFnbmEgYWMgcGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzLiBJZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdCBjdXJzdXMuIFNpdCBhbWV0IG51bGxhIGZhY2lsaXNpIG1vcmJpIHRlbXB1cyBpYWN1bGlzIHVybmEuIENvbW1vZG8gbnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtLiBGYWNpbGlzaSBldGlhbSBkaWduaXNzaW0gZGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUuIFZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMuIEFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0uIFBvc3VlcmUgYWMgdXQgY29uc2VxdWF0IHNlbXBlciB2aXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldC4gU2VkIHZ1bHB1dGF0ZSBtaSBzaXQgYW1ldCBtYXVyaXMuIFBvc3VlcmUgbW9yYmkgbGVvIHVybmEgbW9sZXN0aWUgYXQuIFZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpIGlkLgoKU2l0IGFtZXQgdmVuZW5hdGlzIHVybmEgY3Vyc3VzIGVnZXQgbnVuYyBzY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcy4gTmlzbCBwdXJ1cyBpbiBtb2xsaXMgbnVuYyBzZWQgaWQgc2VtcGVyIHJpc3VzLiBWZWxpdCBzY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEuIFByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMuIE1pIGlwc3VtIGZhdWNpYnVzIHZpdGFlIGFsaXF1ZXQgbmVjIHVsbGFtY29ycGVyLiBWdWxwdXRhdGUgbWkgc2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8uIEZhdWNpYnVzIHR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bSBuZXF1ZS4gRmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2RpbyBldSBmZXVnaWF0IHByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQuIE5pYmggdG9ydG9yIGlkIGFsaXF1ZXQgbGVjdHVzIHByb2luIG5pYmggbmlzbCBjb25kaW1lbnR1bS4gQ3JhcyB0aW5jaWR1bnQgbG9ib3J0aXMgZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIGVnZXQgYXJjdS4KCkVuaW0gdXQgdGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldC4gRXRpYW0gZGlnbmlzc2ltIGRpYW0gcXVpcyBlbmltLiBFbGl0IGVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMuIExhY2luaWEgcXVpcyB2ZWwgZXJvcyBkb25lYyBhYyBvZGlvIHRlbXBvciBvcmNpIGRhcGlidXMuIENvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYS4gUGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQuIFZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0LiBJcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlLiBBZW5lYW4gc2VkIGFkaXBpc2NpbmcgZGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZS4gRmV1Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVyZSB1cm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQuIFN1c2NpcGl0IHRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZCBlbmltIHV0IHNlbS4gU2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1LiBGYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaSBsZW8uIEEgYXJjdSBjdXJzdXMgdml0YWUgY29uZ3VlIG1hdXJpcyByaG9uY3VzIGFlbmVhbiB2ZWwgZWxpdC4gTmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlIGlkIHZlbGl0IHV0LiBJbiBpYWN1bGlzIG51bmMgc2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUuIFR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bSBuZXF1ZS4gTWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQuCgpFdWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQuIFF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQgdmVuZW5hdGlzLiBTY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcyBpbiBhbGlxdWFtLiBOZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMuIFNpdCBhbWV0IGp1c3RvIGRvbmVjIGVuaW0uIExhY3VzIHNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMgZmV1Z2lhdCBpbiBhbnRlLiBVbHRyaWNlcyBkdWkgc2FwaWVuIGVnZXQgbWkgcHJvaW4gc2VkLiBVcm5hIHBvcnR0aXRvciByaG9uY3VzIGRvbG9yIHB1cnVzIG5vbiBlbmltIHByYWVzZW50LiBOaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUuIFBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0gdWx0cmljZXMgc2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlci4gRWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzIHNlZCBzZWQgcmlzdXMgcHJldGl1bSBxdWFtIHZ1bHB1dGF0ZS4gU2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gQW1ldCBjb21tb2RvIG51bGxhIGZhY2lsaXNpIG51bGxhbS4gUGVsbGVudGVzcXVlIGRpYW0gdm9sdXRwYXQgY29tbW9kbyBzZWQgZWdlc3Rhcy4KCk1hc3NhIHRpbmNpZHVudCBudW5jIHB1bHZpbmFyIHNhcGllbi4gVmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIgbG9yZW0gZG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0LiBDb25zZXF1YXQgYWMgZmVsaXMgZG9uZWMgZXQgb2RpbyBwZWxsZW50ZXNxdWUuIExvYm9ydGlzIHNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4gb3JuYXJlIHF1YW0gdml2ZXJyYS4gTWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIE11cyBtYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jIHZlbCByaXN1cy4gTW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gQ29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbSBuZXF1ZS4gRmVsaXMgaW1wZXJkaWV0IHByb2luIGZlcm1lbnR1bSBsZW8gdmVsIG9yY2kuIEFlbmVhbiBwaGFyZXRyYSBtYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMgZXJvcy4gQW1ldCByaXN1cyBudWxsYW0gZWdldCBmZWxpcyBlZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzLiBFbGVtZW50dW0gbmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRhZSBwcm9pbiBzYWdpdHRpcy4gRXQgdG9ydG9yIGNvbnNlcXVhdCBpZCBwb3J0YS4gTm9uIHNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQgYW1ldC4KClZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0gYWMgdG9ydG9yIHZpdGFlLiBQcm9pbiBuaWJoIG5pc2wgY29uZGltZW50dW0gaWQgdmVuZW5hdGlzIGEgY29uZGltZW50dW0gdml0YWUgc2FwaWVuLiBJZCB2b2x1dHBhdCBsYWN1cyBsYW9yZWV0IG5vbi4gTWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtIHZpdmVycmEgYWxpcXVldC4gQW1ldCBmYWNpbGlzaXMgbWFnbmEgZXRpYW0gdGVtcG9yIG9yY2kgZXUuIEluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhLiBOaXNsIHB1cnVzIGluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIgcmlzdXMuIExvcmVtIGRvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldCBtb2xlc3RpZSBhYyBmZXVnaWF0LiBOb24gY29uc2VjdGV0dXIgYSBlcmF0IG5hbSBhdCBsZWN0dXMgdXJuYS4gTGFvcmVldCBzdXNwZW5kaXNzZSBpbnRlcmR1bSBjb25zZWN0ZXR1ciBsaWJlcm8gaWQgZmF1Y2lidXMgbmlzbC4gRWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEgZGljdHVtIGZ1c2NlIHV0LiBBbGlxdWV0IHJpc3VzIGZldWdpYXQgaW4gYW50ZS4gU2VtcGVyIGVnZXQgZHVpcyBhdCB0ZWxsdXMgYXQgdXJuYSBjb25kaW1lbnR1bSBtYXR0aXMgcGVsbGVudGVzcXVlLgoKVGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtIG5pYmguIFNpdCBhbWV0IG1hdXJpcyBjb21tb2RvIHF1aXMgaW1wZXJkaWV0IG1hc3NhIHRpbmNpZHVudCBudW5jIHB1bHZpbmFyLiBWZWxpdCBzY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uLiBTZW0gZXQgdG9ydG9yIGNvbnNlcXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZC4gUG9zdWVyZSB1cm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaC4gUXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtLiBUdXJwaXMgZWdlc3RhcyBzZWQgdGVtcHVzIHVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EuIE1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMuIEEgY3JhcyBzZW1wZXIgYXVjdG9yIG5lcXVlIHZpdGFlIHRlbXB1cy4gVmVsIGVsaXQgc2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hci4gTnVuYyBsb2JvcnRpcyBtYXR0aXMgYWxpcXVhbSBmYXVjaWJ1cy4KCkFkaXBpc2NpbmcgZWxpdCBkdWlzIHRyaXN0aXF1ZSBzb2xsaWNpdHVkaW4gbmliaC4gRmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpLiBBIGNyYXMgc2VtcGVyIGF1Y3RvciBuZXF1ZS4gRmF1Y2lidXMgYSBwZWxsZW50ZXNxdWUgc2l0IGFtZXQgcG9ydHRpdG9yIGVnZXQgZG9sb3IgbW9yYmkgbm9uLiBUb3J0b3IgY29uc2VxdWF0IGlkIHBvcnRhIG5pYmguIEFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpIGlkLiBOb24gc29kYWxlcyBuZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdCBhbWV0IG5pc2wuIEFjIHRpbmNpZHVudCB2aXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQgZGlhbS4gVml2ZXJyYSB2aXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjIGZlbGlzIGRvbmVjLiBBdWd1ZSB1dCBsZWN0dXMgYXJjdSBiaWJlbmR1bSBhdCB2YXJpdXMuIFV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cyB2ZWwuIFRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbiBwaGFyZXRyYS4gVml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dC4gQXVjdG9yIHVybmEgbnVuYyBpZCBjdXJzdXMgbWV0dXMgYWxpcXVhbSBlbGVpZmVuZC4gQXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEuIEV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLiBTdXNwZW5kaXNzZSB1bHRyaWNlcyBncmF2aWRhIGRpY3R1bSBmdXNjZSB1dCBwbGFjZXJhdCBvcmNpIG51bGxhIHBlbGxlbnRlc3F1ZS4KClR1cnBpcyBlZ2VzdGFzIHNlZCB0ZW1wdXMgdXJuYSBldC4gQWRpcGlzY2luZyBjb21tb2RvIGVsaXQgYXQgaW1wZXJkaWV0IGR1aS4gSW4gdml0YWUgdHVycGlzIG1hc3NhIHNlZCBlbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMuIFNlZCBwdWx2aW5hciBwcm9pbiBncmF2aWRhIGhlbmRyZXJpdC4gU3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcyBhdWN0b3IuIERpYW0gaW4gYXJjdSBjdXJzdXMgZXVpc21vZCBxdWlzIHZpdmVycmEgbmliaCBjcmFzLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cy4gT3JjaSBzYWdpdHRpcyBldSB2b2x1dHBhdCBvZGlvLiBFdSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IgZXUuIFVsbGFtY29ycGVyIGEgbGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2Rpby4gU2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlLgoKVXQgYWxpcXVhbSBwdXJ1cyBzaXQgYW1ldC4gTWF0dGlzIGVuaW0gdXQgdGVsbHVzIGVsZW1lbnR1bS4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHBlbGxlbnRlc3F1ZS4gVmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcy4gVWx0cmljZXMgc2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlciBlZ2V0IGR1aXMgYXQuIFV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0uIEN1cnN1cyBpbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdCBxdWlzcXVlIHNhZ2l0dGlzIHB1cnVzIHNpdC4gVWx0cmljaWVzIG1pIGVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZS4gTnVuYyBzY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcyBpbiBhbGlxdWFtIHNlbS4gVml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jIHZlbCByaXN1cyBjb21tb2RvLiBVcm5hIGNvbmRpbWVudHVtIG1hdHRpcyBwZWxsZW50ZXNxdWUgaWQgbmliaC4gUGVsbGVudGVzcXVlIGV1IHRpbmNpZHVudCB0b3J0b3IgYWxpcXVhbSBudWxsYSBmYWNpbGlzaSBjcmFzIGZlcm1lbnR1bSBvZGlvLiBGYWNpbGlzaXMgZ3JhdmlkYSBuZXF1ZSBjb252YWxsaXMgYSBjcmFzLiBDb25zZXF1YXQgaW50ZXJkdW0gdmFyaXVzIHNpdCBhbWV0IG1hdHRpcyB2dWxwdXRhdGUgZW5pbS4gRXVpc21vZCBsYWNpbmlhIGF0IHF1aXMgcmlzdXMgc2VkLgoKVml2ZXJyYSBtYWVjZW5hcyBhY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzIHZvbHV0cGF0IGVzdCB2ZWxpdCBlZ2VzdGFzLiBFdSBtaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbi4gRW5pbSBuZXF1ZSB2b2x1dHBhdCBhYyB0aW5jaWR1bnQgdml0YWUgc2VtcGVyIHF1aXMgbGVjdHVzLiBEdWlzIGF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcyBwZWxsZW50ZXNxdWUuIE5vbiBlbmltIHByYWVzZW50IGVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEuIEV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMuIE1hdXJpcyBzaXQgYW1ldCBtYXNzYSB2aXRhZSB0b3J0b3IgY29uZGltZW50dW0uIEN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoIGNyYXMgcHVsdmluYXIgbWF0dGlzLiBTZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdC4gUXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtIHNlbSBldCB0b3J0b3IuIFZpdGFlIGNvbmd1ZSBtYXVyaXMgcmhvbmN1cyBhZW5lYW4gdmVsIGVsaXQgc2NlbGVyaXNxdWUuIFRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoIHNlZCBwdWx2aW5hciBwcm9pbi4gQ3JhcyBvcm5hcmUgYXJjdSBkdWkgdml2YW11cyBhcmN1IGZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZS4KCkVsaXQgZWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcy4gTGVvIHZlbCBmcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyIGVnZXQuIE5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQuIEVyb3MgaW4gY3Vyc3VzIHR1cnBpcyBtYXNzYSB0aW5jaWR1bnQgZHVpLiBEaWN0dW0gdmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIgbG9yZW0gZG9uZWMgbWFzc2EuIEFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzIG5lYyBmZXVnaWF0LiBFbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZSBzYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0uIE1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQgdWxsYW1jb3JwZXIgbW9yYmkuIFF1YW0gdnVscHV0YXRlIGRpZ25pc3NpbSBzdXNwZW5kaXNzZSBpbiBlc3QgYW50ZSBpbiBuaWJoIG1hdXJpcy4gQWVuZWFuIHZlbCBlbGl0IHNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cy4gSW1wZXJkaWV0IHNlZCBldWlzbW9kIG5pc2kgcG9ydGEgbG9yZW0gbW9sbGlzLiBQdWx2aW5hciBuZXF1ZSBsYW9yZWV0IHN1c3BlbmRpc3NlIGludGVyZHVtLiBTYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZS4gR3JhdmlkYSBkaWN0dW0gZnVzY2UgdXQgcGxhY2VyYXQgb3JjaSBudWxsYS4gVml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYy4gVmFyaXVzIHNpdCBhbWV0IG1hdHRpcyB2dWxwdXRhdGUuIExlY3R1cyB1cm5hIGR1aXMgY29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldC4KCk5pc2kgdml0YWUgc3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2VuYXMuIE9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzIG51bmMuIFNjZWxlcmlzcXVlIGluIGRpY3R1bSBub24gY29uc2VjdGV0dXIgYSBlcmF0IG5hbS4gVml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dC4gU2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EuIENvbnNlcXVhdCBzZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQuIENvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlkIGludGVyZHVtIHZlbGl0IGxhb3JlZXQgaWQuIEVnZXQgZmVsaXMgZWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhbGlxdWFtLiBTaXQgYW1ldCBqdXN0byBkb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdC4gSW50ZXJkdW0gdmFyaXVzIHNpdCBhbWV0IG1hdHRpcyB2dWxwdXRhdGUgZW5pbSBudWxsYSBhbGlxdWV0LiBBbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gTmlzaSBlc3Qgc2l0IGFtZXQgZmFjaWxpc2lzIG1hZ25hIGV0aWFtIHRlbXBvciBvcmNpLiBWaXZlcnJhIG5pYmggY3JhcyBwdWx2aW5hciBtYXR0aXMgbnVuYy4KCk5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzLiBDb21tb2RvIG51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhLiBTZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZC4gTWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuLiBTZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEuIFRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtLiBMZW8gZHVpcyB1dCBkaWFtIHF1YW0gbnVsbGEgcG9ydHRpdG9yIG1hc3NhIGlkLiBPZGlvIHV0IGVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcyB2b2x1dHBhdC4gU2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYSBqdXN0byBuZWMuIFNlZCB1bGxhbWNvcnBlciBtb3JiaSB0aW5jaWR1bnQgb3JuYXJlLiBBY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzIHZvbHV0cGF0IGVzdCB2ZWxpdCBlZ2VzdGFzIGR1aSBpZC4gQXJjdSBub24gb2RpbyBldWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cy4gRmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtIGEgYXJjdS4gU2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlciBlZ2V0LgoKRW5pbSBmYWNpbGlzaXMgZ3JhdmlkYSBuZXF1ZSBjb252YWxsaXMgYSBjcmFzLiBOdWxsYW0gbm9uIG5pc2kgZXN0IHNpdC4gU29sbGljaXR1ZGluIHRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkgaXBzdW0uIEV1IGNvbnNlcXVhdCBhYyBmZWxpcyBkb25lYyBldC4gQWxpcXVldCBuaWJoIHByYWVzZW50IHRyaXN0aXF1ZSBtYWduYSBzaXQuIEJsYW5kaXQgY3Vyc3VzIHJpc3VzIGF0IHVsdHJpY2VzIG1pIHRlbXB1cyBpbXBlcmRpZXQgbnVsbGEgbWFsZXN1YWRhLiBUdXJwaXMgaW4gZXUgbWkgYmliZW5kdW0gbmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZSBlZ2VzdGFzLiBFZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbi4gU2l0IGFtZXQgdm9sdXRwYXQgY29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpIHZpdGFlLiBJbnRlZ2VyIGVuaW0gbmVxdWUgdm9sdXRwYXQgYWMgdGluY2lkdW50LiBTY2VsZXJpc3F1ZSBlbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZSBzYXBpZW4uIEZhdWNpYnVzIHZpdGFlIGFsaXF1ZXQgbmVjIHVsbGFtY29ycGVyIHNpdCBhbWV0LiBNYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyLiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdCBxdWlzcXVlIHNhZ2l0dGlzIHB1cnVzIHNpdC4gQWxpcXVhbSBlbGVpZmVuZCBtaSBpbiBudWxsYSBwb3N1ZXJlLiBFdSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbi4gRHVpcyB1bHRyaWNpZXMgbGFjdXMgc2VkIHR1cnBpcyB0aW5jaWR1bnQuIE1vbGVzdGllIGEgaWFjdWxpcyBhdCBlcmF0IHBlbGxlbnRlc3F1ZSBhZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdC4gVHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gUGhhc2VsbHVzIGZhdWNpYnVzIHNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbi4KCkluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUuIFNlZCB1bGxhbWNvcnBlciBtb3JiaSB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhLiBWaXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldS4gRW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzLiBRdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBPZGlvIG1vcmJpIHF1aXMgY29tbW9kbyBvZGlvIGFlbmVhbiBzZWQgYWRpcGlzY2luZyBkaWFtLiBWaXRhZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjLiBWb2x1dHBhdCBibGFuZGl0IGFsaXF1YW0gZXRpYW0gZXJhdCB2ZWxpdCBzY2VsZXJpc3F1ZSBpbi4gQmxhbmRpdCBjdXJzdXMgcmlzdXMgYXQgdWx0cmljZXMgbWkuIE51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlIGNvbmd1ZS4gTG9ib3J0aXMgZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIGVnZXQgYXJjdSBkaWN0dW0gdmFyaXVzLgoKUHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZS4gTWFzc2Egdml0YWUgdG9ydG9yIGNvbmRpbWVudHVtIGxhY2luaWEuIEVyYXQgdmVsaXQgc2NlbGVyaXNxdWUgaW4gZGljdHVtIG5vbi4gUnV0cnVtIHRlbGx1cyBwZWxsZW50ZXNxdWUgZXUgdGluY2lkdW50IHRvcnRvciBhbGlxdWFtLiBGZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdC4gU2VkIGZhdWNpYnVzIHR1cnBpcyBpbiBldSBtaS4gSW4gaGVuZHJlcml0IGdyYXZpZGEgcnV0cnVtIHF1aXNxdWUgbm9uIHRlbGx1cyBvcmNpIGFjIGF1Y3Rvci4gU2FnaXR0aXMgYWxpcXVhbSBtYWxlc3VhZGEgYmliZW5kdW0gYXJjdSB2aXRhZSBlbGVtZW50dW0gY3VyYWJpdHVyLiBBZW5lYW4gc2VkIGFkaXBpc2NpbmcgZGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZS4gVGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlIGRpZ25pc3NpbS4gVml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzLiBTYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQgZHVpcyBhdCB0ZWxsdXMuIFRpbmNpZHVudCBhcmN1IG5vbiBzb2RhbGVzIG5lcXVlIHNvZGFsZXMgdXQgZXRpYW0gc2l0LiBDcmFzIHNlZCBmZWxpcyBlZ2V0IHZlbGl0IGFsaXF1ZXQgc2FnaXR0aXMuIFNhZ2l0dGlzIHB1cnVzIHNpdCBhbWV0IHZvbHV0cGF0IGNvbnNlcXVhdC4gRXVpc21vZCBsYWNpbmlhIGF0IHF1aXMgcmlzdXMgc2VkIHZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0uIFZlbCByaXN1cyBjb21tb2RvIHZpdmVycmEgbWFlY2VuYXMgYWNjdW1zYW4gbGFjdXMgdmVsIGZhY2lsaXNpcy4gRGlhbSBwaGFzZWxsdXMgdmVzdGlidWx1bSBsb3JlbSBzZWQgcmlzdXMuIFZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0gYWMgdG9ydG9yIHZpdGFlIHB1cnVzIGZhdWNpYnVzIG9ybmFyZS4KCkRvbG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyLiBGZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEuIEludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMgbW9yYmkgZW5pbSBudW5jLiBBbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzLiBOaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhIGp1c3RvIG5lYyB1bHRyaWNlcy4gVmVsaXQgYWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0uIE1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIgcmlzdXMgaW4uIEF0IGF1Z3VlIGVnZXQgYXJjdSBkaWN0dW0gdmFyaXVzLiBBdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQuIE1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhLiBBY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzIHZvbHV0cGF0LiBMYWN1cyB2aXZlcnJhIHZpdGFlIGNvbmd1ZSBldSBjb25zZXF1YXQgYWMgZmVsaXMgZG9uZWMgZXQuIFByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbS4gUXVhbSBudWxsYSBwb3J0dGl0b3IgbWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQuCgpSaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYSBqdXN0by4gTWFnbmEgZnJpbmdpbGxhIHVybmEgcG9ydHRpdG9yIHJob25jdXMgZG9sb3IgcHVydXMgbm9uIGVuaW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cy4gU2VkIHJpc3VzIHVsdHJpY2llcyB0cmlzdGlxdWUgbnVsbGEgYWxpcXVldCBlbmltIHRvcnRvciBhdC4gVXJuYSBpZCB2b2x1dHBhdCBsYWN1cyBsYW9yZWV0IG5vbiBjdXJhYml0dXIgZ3JhdmlkYS4gTmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZSBlZ2VzdGFzIGRpYW0uIFNhZ2l0dGlzIGlkIGNvbnNlY3RldHVyIHB1cnVzIHV0IGZhdWNpYnVzIHB1bHZpbmFyIGVsZW1lbnR1bSBpbnRlZ2VyIGVuaW0uIE5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcyBhdWN0b3IuIEdyYXZpZGEgYXJjdSBhYyB0b3J0b3IgZGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yLiBJbiBtYXNzYSB0ZW1wb3IgbmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlIGlkLiBBIGlhY3VsaXMgYXQgZXJhdCBwZWxsZW50ZXNxdWUuIFV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMuCgpNYXR0aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEgYWxpcXVldC4gTmVjIG5hbSBhbGlxdWFtIHNlbSBldCB0b3J0b3IgY29uc2VxdWF0LiBIYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMuIE5vbiBibGFuZGl0IG1hc3NhIGVuaW0gbmVjIGR1aS4gQ29tbW9kbyBudWxsYSBmYWNpbGlzaSBudWxsYW0gdmVoaWN1bGEgaXBzdW0gYS4gRHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQuIE5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IuIFRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4uIEdyYXZpZGEgY3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLiBUZWxsdXMgbW9sZXN0aWUgbnVuYyBub24gYmxhbmRpdCBtYXNzYSBlbmltLiBHcmF2aWRhIGFyY3UgYWMgdG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMgYWVuZWFuIGV0LiBFbmltIHByYWVzZW50IGVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyIGVnZXQuIFByZXRpdW0gZnVzY2UgaWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZS4gVXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzIHZlbC4gVml0YWUgc2FwaWVuIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQuIE5lcXVlIHZpdGFlIHRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMuCgpQcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoIHNlZCBwdWx2aW5hciBwcm9pbiBncmF2aWRhLiBOaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldC4gVml0YWUgcHVydXMgZmF1Y2lidXMgb3JuYXJlIHN1c3BlbmRpc3NlIHNlZCBuaXNpLiBJbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoIHByYWVzZW50IHRyaXN0aXF1ZSBtYWduYSBzaXQuIEF1Y3RvciBlbGl0IHNlZCB2dWxwdXRhdGUgbWkgc2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcy4gRGlhbSBxdWFtIG51bGxhIHBvcnR0aXRvciBtYXNzYSBpZCBuZXF1ZSBhbGlxdWFtLiBOaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlbyBpbiB2aXRhZS4gUHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEgcHJvaW4gbGliZXJvLiBUdXJwaXMgZWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoLiBOdWxsYSBwaGFyZXRyYSBkaWFtIHNpdCBhbWV0LiBMdWN0dXMgdmVuZW5hdGlzIGxlY3R1cyBtYWduYSBmcmluZ2lsbGEgdXJuYSBwb3J0dGl0b3IgcmhvbmN1cyBkb2xvci4gVXQgc2VtIHZpdmVycmEgYWxpcXVldCBlZ2V0IHNpdCBhbWV0IHRlbGx1cyBjcmFzLiBTZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzLiBRdWlzcXVlIGVnZXN0YXMgZGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoLiBNYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgc2VkIHRlbXB1cy4gUXVhbSB2dWxwdXRhdGUgZGlnbmlzc2ltIHN1c3BlbmRpc3NlIGluIGVzdCBhbnRlIGluIG5pYmggbWF1cmlzLgoKU2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQgZHVpcyBhdCB0ZWxsdXMgYXQuIFNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzIGluIGFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dCBtb3JiaSB0aW5jaWR1bnQuIEZ1c2NlIGlkIHZlbGl0IHV0IHRvcnRvciBwcmV0aXVtIHZpdmVycmEgc3VzcGVuZGlzc2UuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzLiBWdWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQgdm9sdXRwYXQgbWFlY2VuYXMgdm9sdXRwYXQuIEZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZy4gTWkgc2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50LiBTZWQgYXJjdSBub24gb2RpbyBldWlzbW9kLiBTdXNwZW5kaXNzZSBpbiBlc3QgYW50ZSBpbiBuaWJoIG1hdXJpcyBjdXJzdXMgbWF0dGlzLiBTZWQgcmlzdXMgdWx0cmljaWVzIHRyaXN0aXF1ZSBudWxsYSBhbGlxdWV0IGVuaW0gdG9ydG9yIGF0LiBGYXVjaWJ1cyBwdXJ1cyBpbiBtYXNzYSB0ZW1wb3IgbmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlLiBJbiBtZXR1cyB2dWxwdXRhdGUgZXUgc2NlbGVyaXNxdWUgZmVsaXMgaW1wZXJkaWV0IHByb2luIGZlcm1lbnR1bS4gTWFzc2EgdGluY2lkdW50IGR1aSB1dCBvcm5hcmUgbGVjdHVzIHNpdC4gTnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtIG51bmMgYWxpcXVldCBiaWJlbmR1bS4gRWxlbWVudHVtIGludGVnZXIgZW5pbSBuZXF1ZSB2b2x1dHBhdCBhYyB0aW5jaWR1bnQgdml0YWUuIE5pc2wgcHVydXMgaW4gbW9sbGlzIG51bmMuIFNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4gb3JuYXJlIHF1YW0uIEFtZXQgdm9sdXRwYXQgY29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpIHZpdGFlLiBOb24gcHVsdmluYXIgbmVxdWUgbGFvcmVldCBzdXNwZW5kaXNzZSBpbnRlcmR1bSBjb25zZWN0ZXR1ciBsaWJlcm8uIEN1cnN1cyBtYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzIGF0IGVyYXQgcGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kby4KCkluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIuIEVsaXQgc2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQuIEF0IGF1Y3RvciB1cm5hIG51bmMgaWQuIFVsdHJpY2VzIHNhZ2l0dGlzIG9yY2kgYSBzY2VsZXJpc3F1ZSBwdXJ1cyBzZW1wZXIuIEVyb3MgZG9uZWMgYWMgb2RpbyB0ZW1wb3Igb3JjaS4gSWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0uIENvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbiBhcmN1LiBWYXJpdXMgbW9yYmkgZW5pbSBudW5jIGZhdWNpYnVzIGEgcGVsbGVudGVzcXVlIHNpdCBhbWV0LiBFdCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nIGF0IGluLiBFbGl0IHVsbGFtY29ycGVyIGRpZ25pc3NpbSBjcmFzIHRpbmNpZHVudC4gRXRpYW0gc2l0IGFtZXQgbmlzbCBwdXJ1cyBpbiBtb2xsaXMgbnVuYyBzZWQgaWQuIFRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcy4gU2VtIHZpdmVycmEgYWxpcXVldCBlZ2V0IHNpdCBhbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcuIEN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcyBtaSB0ZW1wdXMgaW1wZXJkaWV0IG51bGxhIG1hbGVzdWFkYS4gRGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0LiBFbmltIG51bGxhIGFsaXF1ZXQgcG9ydHRpdG9yIGxhY3VzIGx1Y3R1cyBhY2N1bXNhbiB0b3J0b3IgcG9zdWVyZSBhYy4gRmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0IGFtZXQgcmlzdXMgbnVsbGFtLgoKUmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEganVzdG8gbmVjIHVsdHJpY2VzIGR1aS4gRGljdHVtIHZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gTmFtIGxpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0uIE1vbnRlcyBuYXNjZXR1ciByaWRpY3VsdXMgbXVzIG1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIuIEluIG9ybmFyZSBxdWFtIHZpdmVycmEgb3JjaSBzYWdpdHRpcyBldSB2b2x1dHBhdCBvZGlvLiBTYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0gbWFsZXN1YWRhIGJpYmVuZHVtIGFyY3UuIFNjZWxlcmlzcXVlIGV1IHVsdHJpY2VzIHZpdGFlIGF1Y3RvciBldSBhdWd1ZSB1dCBsZWN0dXMgYXJjdS4gUXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQgZGlhbS4gRmVsaXMgZWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhbGlxdWFtIGZhdWNpYnVzIHB1cnVzIGluIG1hc3NhLiBNaSBxdWlzIGhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbS4gSWQgZGlhbSBtYWVjZW5hcyB1bHRyaWNpZXMgbWkgZWdldCBtYXVyaXMgcGhhcmV0cmEuIEZhY2lsaXNpIG1vcmJpIHRlbXB1cyBpYWN1bGlzIHVybmEgaWQuIEVsaXQgYXQgaW1wZXJkaWV0IGR1aSBhY2N1bXNhbiBzaXQgYW1ldCBudWxsYSBmYWNpbGlzaSBtb3JiaS4gVGluY2lkdW50IGxvYm9ydGlzIGZldWdpYXQgdml2YW11cyBhdC4gRGlzIHBhcnR1cmllbnQgbW9udGVzIG5hc2NldHVyIHJpZGljdWx1cyBtdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8uIEZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdC4gVm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtIGV0aWFtIGVyYXQuIFV0IHRlbGx1cyBlbGVtZW50dW0gc2FnaXR0aXMgdml0YWUgZXQgbGVvIGR1aXMuCgpNYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgc2VkIHRlbXB1cy4gRHVpIHV0IG9ybmFyZSBsZWN0dXMgc2l0LiBTZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzIGNyYXMgYWRpcGlzY2luZy4gSWFjdWxpcyB1cm5hIGlkIHZvbHV0cGF0IGxhY3VzIGxhb3JlZXQgbm9uLiBVdCBsZWN0dXMgYXJjdSBiaWJlbmR1bSBhdCB2YXJpdXMuIEF0IGVyYXQgcGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kby4gVm9sdXRwYXQgc2VkIGNyYXMgb3JuYXJlIGFyY3UgZHVpIHZpdmFtdXMgYXJjdS4gVXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtLiBBbWV0IHZvbHV0cGF0IGNvbnNlcXVhdCBtYXVyaXMgbnVuYyBjb25ndWUuIFRlbXBvciBvcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bSBuaWJoLiBUaW5jaWR1bnQgZWdldCBudWxsYW0gbm9uIG5pc2kgZXN0IHNpdC4gTGliZXJvIGVuaW0gc2VkIGZhdWNpYnVzIHR1cnBpcyBpbiBldSBtaS4gVGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9yIGFsaXF1YW0gbnVsbGEgZmFjaWxpc2kuIElkIGNvbnNlY3RldHVyIHB1cnVzIHV0IGZhdWNpYnVzIHB1bHZpbmFyIGVsZW1lbnR1bSBpbnRlZ2VyLgoKVnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbSBtYWxlc3VhZGEgYmliZW5kdW0uIEZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvci4gU2NlbGVyaXNxdWUgaW4gZGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhLiBCaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbS4gTGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2RpbyBldWlzbW9kIGxhY2luaWEgYXQgcXVpcy4gRHVpIGlkIG9ybmFyZSBhcmN1IG9kaW8gdXQgc2VtIG51bGxhIHBoYXJldHJhLiBOdW5jIGZhdWNpYnVzIGEgcGVsbGVudGVzcXVlIHNpdC4gVml0YWUgbnVuYyBzZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUuIENyYXMgb3JuYXJlIGFyY3UgZHVpIHZpdmFtdXMgYXJjdS4gTmFtIGF0IGxlY3R1cyB1cm5hIGR1aXMgY29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMuIFVsbGFtY29ycGVyIGRpZ25pc3NpbSBjcmFzIHRpbmNpZHVudCBsb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUuIFNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBkdWlzIHRyaXN0aXF1ZSBzb2xsaWNpdHVkaW4gbmliaC4KCkZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldCBudWxsYSBmYWNpbGlzaSBldGlhbS4gVGVtcG9yIG9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzIG51bmMgc2VkIGF1Z3VlLiBBIGxhY3VzIHZlc3RpYnVsdW0gc2VkIGFyY3Ugbm9uIG9kaW8gZXVpc21vZCBsYWNpbmlhLiBTb2RhbGVzIG5lcXVlIHNvZGFsZXMgdXQgZXRpYW0gc2l0LiBGZWxpcyBiaWJlbmR1bSB1dCB0cmlzdGlxdWUgZXQgZWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlLiBQcm9pbiBzYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhLiBDb25kaW1lbnR1bSBpZCB2ZW5lbmF0aXMgYSBjb25kaW1lbnR1bSB2aXRhZSBzYXBpZW4uIEZhY2lsaXNpcyBtYXVyaXMgc2l0IGFtZXQgbWFzc2Egdml0YWUgdG9ydG9yLiBQZWxsZW50ZXNxdWUgYWRpcGlzY2luZyBjb21tb2RvIGVsaXQgYXQuIEFsaXF1YW0gZXRpYW0gZXJhdCB2ZWxpdCBzY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uLiBBbGlxdWFtIG1hbGVzdWFkYSBiaWJlbmR1bSBhcmN1IHZpdGFlIGVsZW1lbnR1bSBjdXJhYml0dXIgdml0YWUgbnVuYy4gQSBlcmF0IG5hbSBhdCBsZWN0dXMgdXJuYSBkdWlzLiBEdWkgYWNjdW1zYW4gc2l0IGFtZXQgbnVsbGEgZmFjaWxpc2kgbW9yYmkgdGVtcHVzIGlhY3VsaXMuIE5lYyBmZXVnaWF0IG5pc2wgcHJldGl1bSBmdXNjZS4gVHVycGlzIG51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQgdml2ZXJyYS4gVnVscHV0YXRlIGVuaW0gbnVsbGEgYWxpcXVldCBwb3J0dGl0b3IuIEFtZXQgYWxpcXVhbSBpZCBkaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaS4KCkZlcm1lbnR1bSBldCBzb2xsaWNpdHVkaW4gYWMgb3JjaSBwaGFzZWxsdXMuIEdyYXZpZGEgaW4gZmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpIHBoYXNlbGx1cyBlZ2VzdGFzLiBMZW8gaW50ZWdlciBtYWxlc3VhZGEgbnVuYyB2ZWwgcmlzdXMgY29tbW9kby4gU3VzcGVuZGlzc2UgaW4gZXN0IGFudGUgaW4gbmliaCBtYXVyaXMuIER1aXMgY29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0uIFVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaSB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIFNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQgYW1ldC4gQWxpcXVldCBlbmltIHRvcnRvciBhdCBhdWN0b3IgdXJuYSBudW5jIGlkIGN1cnN1cyBtZXR1cy4gSGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gU2VtIGludGVnZXIgdml0YWUganVzdG8gZWdldCBtYWduYSBmZXJtZW50dW0uIFNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcy4gRXVpc21vZCBsYWNpbmlhIGF0IHF1aXMgcmlzdXMgc2VkLiBWaXZlcnJhIG1hZWNlbmFzIGFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0LiBJbiBuaWJoIG1hdXJpcyBjdXJzdXMgbWF0dGlzIG1vbGVzdGllIGEgaWFjdWxpcyBhdCBlcmF0LgoKU2VtcGVyIHJpc3VzIGluIGhlbmRyZXJpdCBncmF2aWRhIHJ1dHJ1bSBxdWlzcXVlIG5vbi4gTGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0uIE51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQgdml2ZXJyYSBpcHN1bS4gSW4gZmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpIHBoYXNlbGx1cyBlZ2VzdGFzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtLiBNYXVyaXMgbnVuYyBjb25ndWUgbmlzaSB2aXRhZSBzdXNjaXBpdCB0ZWxsdXMuIFZpdGFlIHR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtLiBQaGFyZXRyYSBldCB1bHRyaWNlcyBuZXF1ZSBvcm5hcmUgYWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kgcXVpcy4gRWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dCBldS4gTm9uIHB1bHZpbmFyIG5lcXVlIGxhb3JlZXQgc3VzcGVuZGlzc2UgaW50ZXJkdW0gY29uc2VjdGV0dXIuIEVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMuIE51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlLiBJZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUuIFNjZWxlcmlzcXVlIGZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4uCgpDb21tb2RvIGVsaXQgYXQgaW1wZXJkaWV0IGR1aSBhY2N1bXNhbiBzaXQgYW1ldCBudWxsYS4gTWkgcHJvaW4gc2VkIGxpYmVybyBlbmltIHNlZCBmYXVjaWJ1cy4gQWxpcXVldCBiaWJlbmR1bSBlbmltIGZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMuIFB1bHZpbmFyIG5lcXVlIGxhb3JlZXQgc3VzcGVuZGlzc2UgaW50ZXJkdW0gY29uc2VjdGV0dXIuIERpZ25pc3NpbSBjb252YWxsaXMgYWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cyB2aXZlcnJhIGFkaXBpc2NpbmcuIEV1IHVsdHJpY2VzIHZpdGFlIGF1Y3RvciBldSBhdWd1ZSB1dCBsZWN0dXMgYXJjdSBiaWJlbmR1bS4gVmVsIHR1cnBpcyBudW5jIGVnZXQgbG9yZW0gZG9sb3Igc2VkIHZpdmVycmEgaXBzdW0gbnVuYy4gVml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltIGV1LiBTb2RhbGVzIG5lcXVlIHNvZGFsZXMgdXQgZXRpYW0uIFNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dCBldS4gRXJhdCBuYW0gYXQgbGVjdHVzIHVybmEuIEV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0uIE9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYS4gTWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQuIFZlc3RpYnVsdW0gcmhvbmN1cyBlc3QgcGVsbGVudGVzcXVlIGVsaXQgdWxsYW1jb3JwZXIuIEF0IGluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYy4KClNlZCB0ZW1wdXMgdXJuYSBldCBwaGFyZXRyYSBwaGFyZXRyYSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkuIEFtZXQgcHVydXMgZ3JhdmlkYSBxdWlzIGJsYW5kaXQgdHVycGlzIGN1cnN1cyBpbi4gSGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gRWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldCBudWxsYS4gTmliaCBjcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jIHNlZCBibGFuZGl0IGxpYmVybyB2b2x1dHBhdC4gTmlzaSBwb3J0YSBsb3JlbSBtb2xsaXMgYWxpcXVhbSB1dCBwb3J0dGl0b3IgbGVvIGEgZGlhbS4gVm9sdXRwYXQgb2RpbyBmYWNpbGlzaXMgbWF1cmlzIHNpdCBhbWV0IG1hc3NhIHZpdGFlIHRvcnRvci4gVml2ZXJyYSBvcmNpIHNhZ2l0dGlzIGV1IHZvbHV0cGF0IG9kaW8gZmFjaWxpc2lzIG1hdXJpcyBzaXQgYW1ldC4gTGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bSBzaXQuIE1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhIG51bmMuIEVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzLiBFZ2VzdGFzIG1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpLgoKUXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtIGVsZW1lbnR1bSBwdWx2aW5hciBldGlhbSBub24gcXVhbS4gT3JuYXJlIHF1YW0gdml2ZXJyYSBvcmNpIHNhZ2l0dGlzLiBUZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUgdHVycGlzIGVnZXN0YXMgcHJldGl1bSBhZW5lYW4uIE5pc2kgbGFjdXMgc2VkIHZpdmVycmEgdGVsbHVzLiBFdCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzIG5hc2NldHVyIHJpZGljdWx1cy4gQ29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8gdGVtcG9yIG9yY2kuIEZlbGlzIGVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMuIFNhcGllbiBldCBsaWd1bGEgdWxsYW1jb3JwZXIgbWFsZXN1YWRhLiBQcm9pbiBzZWQgbGliZXJvIGVuaW0gc2VkIGZhdWNpYnVzIHR1cnBpcyBpbi4gTWF1cmlzIHNpdCBhbWV0IG1hc3NhIHZpdGFlLiBVbHRyaWNlcyBpbiBpYWN1bGlzIG51bmMgc2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlLiBEaWFtIHF1YW0gbnVsbGEgcG9ydHRpdG9yIG1hc3NhIGlkIG5lcXVlIGFsaXF1YW0gdmVzdGlidWx1bS4gRmV1Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVyZSB1cm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQuIExvYm9ydGlzIG1hdHRpcyBhbGlxdWFtIGZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvciBuZWMgZmV1Z2lhdC4gRGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoIGNyYXMuIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0uIFBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcyBsYWN1cyBzZWQuIFRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBldWlzbW9kIGluLgoKRXJhdCB2ZWxpdCBzY2VsZXJpc3F1ZSBpbiBkaWN0dW0uIFVsbGFtY29ycGVyIGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltIGRpYW0gcXVpcyBlbmltIGxvYm9ydGlzLiBNYXR0aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEgYWxpcXVldCBwb3J0dGl0b3IgbGFjdXMgbHVjdHVzLiBWb2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlIG5pc2kgdml0YWUgc3VzY2lwaXQgdGVsbHVzLiBJZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0IGlkIGRvbmVjIHVsdHJpY2VzLiBRdWFtIG51bGxhIHBvcnR0aXRvciBtYXNzYSBpZCBuZXF1ZSBhbGlxdWFtLiBHcmF2aWRhIHF1aXMgYmxhbmRpdCB0dXJwaXMgY3Vyc3VzIGluLiBOb24gY3VyYWJpdHVyIGdyYXZpZGEgYXJjdSBhYy4gU3VzcGVuZGlzc2UgZmF1Y2lidXMgaW50ZXJkdW0gcG9zdWVyZSBsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gTmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoIHNlZCBwdWx2aW5hci4gTmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIG1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcy4gU2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0LiBVbHRyaWNlcyBkdWkgc2FwaWVuIGVnZXQgbWkgcHJvaW4gc2VkIGxpYmVybyBlbmltLgoKTWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkuIEV1IG5pc2wgbnVuYyBtaSBpcHN1bS4gQ29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldCBpZCBkb25lYy4gRXUgYXVndWUgdXQgbGVjdHVzIGFyY3UuIFRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMuIEVyb3MgZG9uZWMgYWMgb2RpbyB0ZW1wb3Igb3JjaSBkYXBpYnVzLiBBYyB0b3J0b3IgZGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yIGF0IHJpc3VzIHZpdmVycmEuIFRvcnRvciBwb3N1ZXJlIGFjIHV0IGNvbnNlcXVhdCBzZW1wZXIuIE1vbGVzdGllIGFjIGZldWdpYXQgc2VkIGxlY3R1cyB2ZXN0aWJ1bHVtIG1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdC4gUG9ydGEgbG9yZW0gbW9sbGlzIGFsaXF1YW0gdXQgcG9ydHRpdG9yIGxlbyBhLiBGYXVjaWJ1cyBvcm5hcmUgc3VzcGVuZGlzc2Ugc2VkIG5pc2kgbGFjdXMgc2VkIHZpdmVycmEgdGVsbHVzIGluLiBBYyB0dXJwaXMgZWdlc3RhcyBzZWQgdGVtcHVzLiBOaXNpIHBvcnRhIGxvcmVtIG1vbGxpcyBhbGlxdWFtIHV0IHBvcnR0aXRvciBsZW8gYS4KCkV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3Rhcy4gQSBkaWFtIHNvbGxpY2l0dWRpbiB0ZW1wb3IgaWQgZXUgbmlzbC4gTGVvIHZlbCBmcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyIGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0uIE9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZy4gQXJjdSBub24gb2RpbyBldWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQuIFVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZC4gVG9ydG9yIGNvbmRpbWVudHVtIGxhY2luaWEgcXVpcyB2ZWwgZXJvcyBkb25lYyBhYyBvZGlvIHRlbXBvci4gRXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRhZSBwcm9pbiBzYWdpdHRpcy4gSXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIFByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYyB0b3J0b3Igdml0YWUgcHVydXMgZmF1Y2lidXMuIEVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yLiBFdWlzbW9kIGluIHBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcyBsYWN1cyBzZWQgdHVycGlzLiBJbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlLiBRdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbiBvcm5hcmUuIERvbmVjIGFjIG9kaW8gdGVtcG9yIG9yY2kgZGFwaWJ1cy4gTWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlciBtYWxlc3VhZGEgbnVuYyB2ZWwgcmlzdXMgY29tbW9kby4KClJpc3VzIHZpdmVycmEgYWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMuIE51bmMgcHVsdmluYXIgc2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlci4gQXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEgaW4uIEZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdC4gQXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bS4gVGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcy4gTnVuYyBzZWQgaWQgc2VtcGVyIHJpc3VzIGluLiBNb2xlc3RpZSBhYyBmZXVnaWF0IHNlZCBsZWN0dXMgdmVzdGlidWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQuIFZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0IGR1aXMgdWx0cmljaWVzIGxhY3VzIHNlZC4gTG9ib3J0aXMgZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIGVnZXQgYXJjdSBkaWN0dW0gdmFyaXVzLiBTaXQgYW1ldCBtYXNzYSB2aXRhZSB0b3J0b3IgY29uZGltZW50dW0uIFZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0IHZlbGl0IGFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIuIEF0IGVsZW1lbnR1bSBldSBmYWNpbGlzaXMgc2VkIG9kaW8gbW9yYmkuIFV0IGV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvLiBNYXVyaXMgbnVuYyBjb25ndWUgbmlzaSB2aXRhZS4gRmF1Y2lidXMgYSBwZWxsZW50ZXNxdWUgc2l0IGFtZXQgcG9ydHRpdG9yIGVnZXQuIE5vbiB0ZWxsdXMgb3JjaSBhYyBhdWN0b3IgYXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEuIFJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMuIEFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbi4KCkhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEuIER1aSBpZCBvcm5hcmUgYXJjdSBvZGlvIHV0IHNlbSBudWxsYSBwaGFyZXRyYS4gTWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0IGFtZXQuIERvbG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtIGlwc3VtLiBVdCB2ZW5lbmF0aXMgdGVsbHVzIGluIG1ldHVzLiBCaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcyBhdWN0b3IuIEJpYmVuZHVtIHV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UuIERpZ25pc3NpbSBzdXNwZW5kaXNzZSBpbiBlc3QgYW50ZS4gSWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpLiBQaGFyZXRyYSB2ZWwgdHVycGlzIG51bmMgZWdldCBsb3JlbSBkb2xvci4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbi4gRWxlbWVudHVtIHB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtLiBTYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlci4gVGluY2lkdW50IHRvcnRvciBhbGlxdWFtIG51bGxhIGZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8gZXUuCgpVdCB0ZWxsdXMgZWxlbWVudHVtIHNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0LiBBYyB0b3J0b3IgZGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yIGF0IHJpc3VzLiBQaGFzZWxsdXMgZWdlc3RhcyB0ZWxsdXMgcnV0cnVtIHRlbGx1cy4gTmlzbCByaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYS4gQWMgb3JjaSBwaGFzZWxsdXMgZWdlc3RhcyB0ZWxsdXMgcnV0cnVtIHRlbGx1cyBwZWxsZW50ZXNxdWUgZXUuIERvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBkdWlzIHRyaXN0aXF1ZSBzb2xsaWNpdHVkaW4gbmliaC4gTmlzbCBjb25kaW1lbnR1bSBpZCB2ZW5lbmF0aXMgYSBjb25kaW1lbnR1bS4gRGljdHVtc3QgcXVpc3F1ZSBzYWdpdHRpcyBwdXJ1cyBzaXQgYW1ldCB2b2x1dHBhdC4gQXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bSB2YXJpdXMuIERvbG9yIHB1cnVzIG5vbiBlbmltIHByYWVzZW50IGVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbC4gU2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQgZHVpcyBhdCB0ZWxsdXMgYXQgdXJuYS4gVXQgdmVuZW5hdGlzIHRlbGx1cyBpbiBtZXR1cyB2dWxwdXRhdGUgZXUgc2NlbGVyaXNxdWUgZmVsaXMuIEFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzIG5lYyBmZXVnaWF0IGluLgoKU2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYyBmZWxpcy4gVXJuYSBldCBwaGFyZXRyYSBwaGFyZXRyYSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkgcXVpcy4gUHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkLiBTZWQgZmVsaXMgZWdldCB2ZWxpdCBhbGlxdWV0LiBTZWQgYWRpcGlzY2luZyBkaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlLiBNaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbS4gRWdlc3RhcyBlZ2VzdGFzIGZyaW5naWxsYSBwaGFzZWxsdXMgZmF1Y2lidXMuIFRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzLiBBZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cyBzaXQgYW1ldC4gUHVydXMgbm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYS4KCkNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0IGx1Y3R1cy4gTGFjdXMgbGFvcmVldCBub24gY3VyYWJpdHVyIGdyYXZpZGEuIE5pc2kgc2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUgYXVjdG9yLiBOdWxsYSBwaGFyZXRyYSBkaWFtIHNpdCBhbWV0IG5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZy4gT3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlciBlZ2V0IGR1aXMgYXQgdGVsbHVzIGF0LiBJbiBlZ2VzdGFzIGVyYXQgaW1wZXJkaWV0IHNlZC4gVm9sdXRwYXQgY29tbW9kbyBzZWQgZWdlc3RhcyBlZ2VzdGFzIGZyaW5naWxsYSBwaGFzZWxsdXMgZmF1Y2lidXMgc2NlbGVyaXNxdWUuIE1hdXJpcyBjdXJzdXMgbWF0dGlzIG1vbGVzdGllIGEgaWFjdWxpcyBhdC4gRW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbiBwaGFyZXRyYS4gRWdldCBkdWlzIGF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcyBwZWxsZW50ZXNxdWUgaWQuIFF1aXNxdWUgaWQgZGlhbSB2ZWwgcXVhbSBlbGVtZW50dW0uCgpSaXN1cyB1bHRyaWNpZXMgdHJpc3RpcXVlIG51bGxhIGFsaXF1ZXQgZW5pbSB0b3J0b3IgYXQuIEV0IHRvcnRvciBhdCByaXN1cyB2aXZlcnJhIGFkaXBpc2NpbmcgYXQgaW4gdGVsbHVzLiBTY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YSBub24uIERpYW0gaW4gYXJjdSBjdXJzdXMgZXVpc21vZC4gRWdldCBudWxsYW0gbm9uIG5pc2kgZXN0IHNpdC4gVXQgc2VtIG51bGxhIHBoYXJldHJhIGRpYW0gc2l0IGFtZXQuIEZlcm1lbnR1bSBkdWkgZmF1Y2lidXMgaW4gb3JuYXJlIHF1YW0gdml2ZXJyYSBvcmNpIHNhZ2l0dGlzIGV1LiBWaXRhZSBwdXJ1cyBmYXVjaWJ1cyBvcm5hcmUgc3VzcGVuZGlzc2Ugc2VkIG5pc2kgbGFjdXMgc2VkLiBBdCB1bHRyaWNlcyBtaSB0ZW1wdXMgaW1wZXJkaWV0IG51bGxhLiBUZWxsdXMgbWF1cmlzIGEgZGlhbSBtYWVjZW5hcyBzZWQuCgpDb25kaW1lbnR1bSB2aXRhZSBzYXBpZW4gcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cy4gVnVscHV0YXRlIG9kaW8gdXQgZW5pbSBibGFuZGl0IHZvbHV0cGF0IG1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbS4gTWkgc2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8uIEVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyIGVnZXQuIEFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzLiBFdCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMuIFF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0LiBUb3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8gdGVtcG9yLiBJZCB2ZWxpdCB1dCB0b3J0b3IgcHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjLiBUdXJwaXMgbWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMgZWdlc3Rhcy4gUmhvbmN1cyBlc3QgcGVsbGVudGVzcXVlIGVsaXQgdWxsYW1jb3JwZXIgZGlnbmlzc2ltIGNyYXMgdGluY2lkdW50LiBJbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoIHByYWVzZW50IHRyaXN0aXF1ZSBtYWduYSBzaXQgYW1ldCBwdXJ1cy4gRXUgc2NlbGVyaXNxdWUgZmVsaXMgaW1wZXJkaWV0IHByb2luIGZlcm1lbnR1bSBsZW8uIEF1Z3VlIG5lcXVlIGdyYXZpZGEgaW4gZmVybWVudHVtIGV0LiBOdWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtIHVsdHJpY2VzIHNhZ2l0dGlzLiBUcmlzdGlxdWUgcmlzdXMgbmVjIGZldWdpYXQgaW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMgdGluY2lkdW50LiBBbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQgYW1ldCByaXN1cy4gQW1ldCBwb3J0dGl0b3IgZWdldCBkb2xvciBtb3JiaSBub24uIFZlbmVuYXRpcyB1cm5hIGN1cnN1cyBlZ2V0IG51bmMgc2NlbGVyaXNxdWUgdml2ZXJyYSBtYXVyaXMgaW4uCgpFbGVpZmVuZCBkb25lYyBwcmV0aXVtIHZ1bHB1dGF0ZSBzYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0gbWFsZXN1YWRhLiBOdWxsYSBwaGFyZXRyYSBkaWFtIHNpdCBhbWV0IG5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bS4gTGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjLiBMZWN0dXMgcHJvaW4gbmliaCBuaXNsIGNvbmRpbWVudHVtIGlkIHZlbmVuYXRpcyBhIGNvbmRpbWVudHVtLiBFdWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbS4gU2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEgcHJvaW4gbGliZXJvLiBFdCB0b3J0b3IgY29uc2VxdWF0IGlkIHBvcnRhLiBNb250ZXMgbmFzY2V0dXIgcmlkaWN1bHVzIG11cyBtYXVyaXMuIEFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gQW1ldCByaXN1cyBudWxsYW0gZWdldCBmZWxpcyBlZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzLgpMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gQWxpcXVhbSBwdXJ1cyBzaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzIGxlY3R1cyBtYWduYSBmcmluZ2lsbGEgdXJuYS4gSXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMgZ3JhdmlkYSBkaWN0dW0gZnVzY2UgdXQuIE1vcmJpIGxlbyB1cm5hIG1vbGVzdGllIGF0IGVsZW1lbnR1bS4gRXN0IGFudGUgaW4gbmliaCBtYXVyaXMgY3Vyc3VzIG1hdHRpcy4gRXN0IHBsYWNlcmF0IGluIGVnZXN0YXMgZXJhdC4gU2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gVHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3Rhcy4gUGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkgbGVvIHVybmEgbW9sZXN0aWUgYXQgZWxlbWVudHVtIGV1LiBGYXVjaWJ1cyBuaXNsIHRpbmNpZHVudCBlZ2V0IG51bGxhbSBub24gbmlzaS4KClZpdmVycmEgYWxpcXVldCBlZ2V0IHNpdCBhbWV0IHRlbGx1cyBjcmFzLiBGYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZS4gRWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhbGlxdWFtIGZhdWNpYnVzIHB1cnVzIGluLiBJbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cy4gQWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzIGF0IHVsdHJpY2VzIG1pIHRlbXB1cy4gRmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdCBwcmV0aXVtIG5pYmguIE5lYyB0aW5jaWR1bnQgcHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaCBzZWQgcHVsdmluYXIuIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0gcXVhbS4gU2VkIHJpc3VzIHByZXRpdW0gcXVhbSB2dWxwdXRhdGUgZGlnbmlzc2ltIHN1c3BlbmRpc3NlIGluIGVzdCBhbnRlLiBNYWduYSBldGlhbSB0ZW1wb3Igb3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaC4gRWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaS4KClJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZS4gU2VkIGxpYmVybyBlbmltIHNlZCBmYXVjaWJ1cyB0dXJwaXMgaW4uIEFtZXQgbHVjdHVzIHZlbmVuYXRpcyBsZWN0dXMgbWFnbmEgZnJpbmdpbGxhIHVybmEuIENvbnZhbGxpcyBhIGNyYXMgc2VtcGVyIGF1Y3RvciBuZXF1ZS4gRXJhdCBpbXBlcmRpZXQgc2VkIGV1aXNtb2QgbmlzaSBwb3J0YSBsb3JlbS4gUHJvaW4gc2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUuIEFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjIHV0IGNvbnNlcXVhdCBzZW1wZXIgdml2ZXJyYS4gQXQgdGVtcG9yIGNvbW1vZG8gdWxsYW1jb3JwZXIgYSBsYWN1cy4gQXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEgaW4gZmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYy4gVG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMgYWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cy4gTGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtIHNpdCBhbWV0IGp1c3RvLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZS4gTGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2RpbyBldWlzbW9kLiBGYWNpbGlzaSBldGlhbSBkaWduaXNzaW0gZGlhbSBxdWlzLiBUb3J0b3IgcG9zdWVyZSBhYyB1dCBjb25zZXF1YXQgc2VtcGVyLiBTaXQgYW1ldCBsdWN0dXMgdmVuZW5hdGlzIGxlY3R1cyBtYWduYSBmcmluZ2lsbGEuCgpMYW9yZWV0IHNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0IGFtZXQuIFB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMuIFZpdGFlIGNvbmd1ZSBtYXVyaXMgcmhvbmN1cyBhZW5lYW4gdmVsIGVsaXQgc2NlbGVyaXNxdWUuIExvcmVtIG1vbGxpcyBhbGlxdWFtIHV0IHBvcnR0aXRvciBsZW8gYSBkaWFtLiBVbGxhbWNvcnBlciBhIGxhY3VzIHZlc3RpYnVsdW0gc2VkLiBOb24gZW5pbSBwcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhIGVzdC4gRXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EgdWx0cmljaWVzIG1pIHF1aXMuIEVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlIGRpZ25pc3NpbS4gTWV0dXMgYWxpcXVhbSBlbGVpZmVuZCBtaSBpbiBudWxsYS4gQXQgdGVtcG9yIGNvbW1vZG8gdWxsYW1jb3JwZXIgYS4gQSBlcmF0IG5hbSBhdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMuIEZldWdpYXQgaW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0LiBFdWlzbW9kIGluIHBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcyBsYWN1cyBzZWQgdHVycGlzLiBWb2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlLiBOdW5jIHNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzIGluIGFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dCBtb3JiaS4gSWQgdm9sdXRwYXQgbGFjdXMgbGFvcmVldCBub24gY3VyYWJpdHVyIGdyYXZpZGEgYXJjdSBhYyB0b3J0b3IuCgpBbGlxdWV0IHBvcnR0aXRvciBsYWN1cyBsdWN0dXMgYWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUgYWMuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYyBlbmltLiBJZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdCBjdXJzdXMgcmlzdXMuIENvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzLiBWYXJpdXMgcXVhbSBxdWlzcXVlIGlkIGRpYW0gdmVsIHF1YW0gZWxlbWVudHVtLiBQbGF0ZWEgZGljdHVtc3QgcXVpc3F1ZSBzYWdpdHRpcyBwdXJ1cyBzaXQgYW1ldCB2b2x1dHBhdC4gU2FnaXR0aXMgYWxpcXVhbSBtYWxlc3VhZGEgYmliZW5kdW0gYXJjdSB2aXRhZSBlbGVtZW50dW0uIEFtZXQgdGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuLiBDb252YWxsaXMgYWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cyB2aXZlcnJhLiBUdXJwaXMgZWdlc3RhcyBzZWQgdGVtcHVzIHVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EuIElkIHBvcnRhIG5pYmggdmVuZW5hdGlzIGNyYXMgc2VkIGZlbGlzIGVnZXQuIFV0IGRpYW0gcXVhbSBudWxsYSBwb3J0dGl0b3IgbWFzc2EuIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0gcXVhbS4gVmVzdGlidWx1bSByaG9uY3VzIGVzdCBwZWxsZW50ZXNxdWUgZWxpdCB1bGxhbWNvcnBlciBkaWduaXNzaW0gY3Jhcy4gQSBzY2VsZXJpc3F1ZSBwdXJ1cyBzZW1wZXIgZWdldC4gSW4gbnVsbGEgcG9zdWVyZSBzb2xsaWNpdHVkaW4gYWxpcXVhbSB1bHRyaWNlcyBzYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUuIEV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMuIEV1IHVsdHJpY2VzIHZpdGFlIGF1Y3RvciBldSBhdWd1ZSB1dC4gRGlnbmlzc2ltIGNyYXMgdGluY2lkdW50IGxvYm9ydGlzIGZldWdpYXQgdml2YW11cy4KCk51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQuIExvYm9ydGlzIGZldWdpYXQgdml2YW11cyBhdCBhdWd1ZS4gUGVsbGVudGVzcXVlIG5lYyBuYW0gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbnNlcXVhdCBpZC4gQXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEgaW4uIEluIG51bGxhIHBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0gdWx0cmljZXMgc2FnaXR0aXMgb3JjaS4gRWxpdCB1dCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMuIEF1Y3RvciBlbGl0IHNlZCB2dWxwdXRhdGUgbWkgc2l0LiBTZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZC4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cy4gQXJjdSBkdWkgdml2YW11cyBhcmN1IGZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzLgoKQXJjdSBmZWxpcyBiaWJlbmR1bSB1dCB0cmlzdGlxdWUgZXQgZWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlLiBPcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bSBuaWJoIHRlbGx1cyBtb2xlc3RpZSBudW5jIG5vbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0uIEV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3Rhcy4gRmF1Y2lidXMgaW4gb3JuYXJlIHF1YW0gdml2ZXJyYSBvcmNpIHNhZ2l0dGlzIGV1LiBTY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IgZXUgYXVndWUgdXQgbGVjdHVzLiBWZWwgb3JjaSBwb3J0YSBub24gcHVsdmluYXIgbmVxdWUuIFNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdC4gVmVuZW5hdGlzIHRlbGx1cyBpbiBtZXR1cyB2dWxwdXRhdGUgZXUgc2NlbGVyaXNxdWUgZmVsaXMuIE1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cyBhIHBlbGxlbnRlc3F1ZSBzaXQgYW1ldC4gTnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVyIG1hbGVzdWFkYS4gU2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gUHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjLiBWaXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMuCgpEaWduaXNzaW0gc29kYWxlcyB1dCBldSBzZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0LiBNb250ZXMgbmFzY2V0dXIgcmlkaWN1bHVzIG11cyBtYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlby4gRGlzIHBhcnR1cmllbnQgbW9udGVzIG5hc2NldHVyIHJpZGljdWx1cyBtdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcy4gVml0YWUgZXQgbGVvIGR1aXMgdXQgZGlhbSBxdWFtIG51bGxhLiBUcmlzdGlxdWUgZXQgZWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEgZGljdHVtIGZ1c2NlLiBWaXZhbXVzIGFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMuIE1hc3NhIGVuaW0gbmVjIGR1aSBudW5jIG1hdHRpcyBlbmltIHV0IHRlbGx1cyBlbGVtZW50dW0uIFV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMgZ3JhdmlkYS4gTWkgYmliZW5kdW0gbmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZSBlZ2VzdGFzIGRpYW0gaW4uIE51bGxhIHBvcnR0aXRvciBtYXNzYSBpZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0uIFB1cnVzIGluIG1hc3NhIHRlbXBvciBuZWMgZmV1Z2lhdCBuaXNsLiBDb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0IGlkLiBBZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdCBpbXBlcmRpZXQuIFRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBBZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZC4gQ29uc2VxdWF0IGlkIHBvcnRhIG5pYmggdmVuZW5hdGlzIGNyYXMgc2VkLiBTYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hci4KCklhY3VsaXMgbnVuYyBzZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZS4gUmlzdXMgbmVjIGZldWdpYXQgaW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMuIE1vcmJpIHRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBldWlzbW9kIGluIHBlbGxlbnRlc3F1ZS4gU3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIgcXVpcyBhdWN0b3IgZWxpdCBzZWQuIFNlZCBmYXVjaWJ1cyB0dXJwaXMgaW4gZXUgbWkuIE51bmMgc2NlbGVyaXNxdWUgdml2ZXJyYSBtYXVyaXMgaW4gYWxpcXVhbSBzZW0gZnJpbmdpbGxhLiBFbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0uIFV0IGV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEuIENvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpIGxlbyB1cm5hIG1vbGVzdGllLiBJZCBvcm5hcmUgYXJjdSBvZGlvIHV0IHNlbSBudWxsYSBwaGFyZXRyYSBkaWFtIHNpdC4gSW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQgZHVpcyB1bHRyaWNpZXMgbGFjdXMuIFZlbGl0IHV0IHRvcnRvciBwcmV0aXVtIHZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0uCgpVbGxhbWNvcnBlciBtb3JiaSB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIE9kaW8gZmFjaWxpc2lzIG1hdXJpcyBzaXQgYW1ldCBtYXNzYS4gTmliaCB0b3J0b3IgaWQgYWxpcXVldCBsZWN0dXMgcHJvaW4gbmliaCBuaXNsIGNvbmRpbWVudHVtIGlkLiBMaWJlcm8gbnVuYyBjb25zZXF1YXQgaW50ZXJkdW0gdmFyaXVzIHNpdC4gTGFjdXMgbGFvcmVldCBub24gY3VyYWJpdHVyIGdyYXZpZGEgYXJjdSBhYyB0b3J0b3IgZGlnbmlzc2ltIGNvbnZhbGxpcy4gTWFsZXN1YWRhIGJpYmVuZHVtIGFyY3Ugdml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZC4gRWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50LiBNYXR0aXMgbnVuYyBzZWQgYmxhbmRpdCBsaWJlcm8gdm9sdXRwYXQgc2VkIGNyYXMuIExhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQuIFB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUgbG9yZW0uIFNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQuIFF1aXNxdWUgZWdlc3RhcyBkaWFtIGluIGFyY3UuIEZhY2lsaXNpcyBzZWQgb2RpbyBtb3JiaSBxdWlzIGNvbW1vZG8gb2Rpby4gQ29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQuIE1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhIG51bmMgdmVsIHJpc3VzIGNvbW1vZG8uIEZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdCBwcmV0aXVtIG5pYmggaXBzdW0uCgpGYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtIGRvbG9yIHNpdC4gVG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzIGFsaXF1YW0uIElwc3VtIG51bmMgYWxpcXVldCBiaWJlbmR1bSBlbmltLiBBbGlxdWFtIGVsZWlmZW5kIG1pIGluIG51bGxhIHBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0uIExpYmVybyBlbmltIHNlZCBmYXVjaWJ1cyB0dXJwaXMuIFR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bS4gRXUgbm9uIGRpYW0gcGhhc2VsbHVzIHZlc3RpYnVsdW0uIExhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uIHNvZGFsZXMgbmVxdWUgc29kYWxlcy4gQSBkaWFtIHNvbGxpY2l0dWRpbiB0ZW1wb3IgaWQgZXUgbmlzbC4gSW4gYWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJpLiBJZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMuIFZlbGl0IGxhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uLgoKTmVxdWUgdml2ZXJyYSBqdXN0byBuZWMgdWx0cmljZXMgZHVpIHNhcGllbiBlZ2V0IG1pIHByb2luLiBOdW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dCBldS4gQ29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpLiBEdWkgaWQgb3JuYXJlIGFyY3Ugb2RpbyB1dCBzZW0uIFZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcy4gQ29uc2VjdGV0dXIgbGliZXJvIGlkIGZhdWNpYnVzIG5pc2wgdGluY2lkdW50IGVnZXQgbnVsbGFtIG5vbiBuaXNpLiBDb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0LiBQbGF0ZWEgZGljdHVtc3QgcXVpc3F1ZSBzYWdpdHRpcyBwdXJ1cyBzaXQgYW1ldCB2b2x1dHBhdCBjb25zZXF1YXQuIFNvZGFsZXMgdXQgZXRpYW0gc2l0IGFtZXQgbmlzbCBwdXJ1cy4gU29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcy4gRG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllLiBEb2xvciBwdXJ1cyBub24gZW5pbSBwcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzLgoKTm9uIGRpYW0gcGhhc2VsbHVzIHZlc3RpYnVsdW0gbG9yZW0gc2VkLiBWaXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhIG51bmMuIE1hZWNlbmFzIGFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpLiBQZWxsZW50ZXNxdWUgc2l0IGFtZXQgcG9ydHRpdG9yIGVnZXQuIEZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcuIFZpdmVycmEgdml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdC4gVGVtcG9yIGNvbW1vZG8gdWxsYW1jb3JwZXIgYSBsYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1LiBQcmV0aXVtIHZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0gYWMgdG9ydG9yLiBFdSBmZXVnaWF0IHByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMuIFV0IGNvbnNlcXVhdCBzZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvLiBNYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQgbW9sZXN0aWUgYWMgZmV1Z2lhdCBzZWQgbGVjdHVzIHZlc3RpYnVsdW0uIFRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cyBhLgoKT3JuYXJlIGxlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4gZWdlc3Rhcy4gTW9yYmkgbGVvIHVybmEgbW9sZXN0aWUgYXQgZWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQgb2Rpby4gQ29tbW9kbyBvZGlvIGFlbmVhbiBzZWQgYWRpcGlzY2luZyBkaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlLiBTaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbS4gUHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaCBzZWQgcHVsdmluYXIgcHJvaW4gZ3JhdmlkYSBoZW5kcmVyaXQgbGVjdHVzLiBQcmV0aXVtIG5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzLiBBbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IuIE1hdHRpcyBudW5jIHNlZCBibGFuZGl0IGxpYmVybyB2b2x1dHBhdC4gVGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbiBuaXNsLiBWaXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzIGV1LiBVbHRyaWNlcyB0aW5jaWR1bnQgYXJjdSBub24gc29kYWxlcy4gQXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbSBibGFuZGl0LiBUdXJwaXMgbnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtIG51bmMgYWxpcXVldC4gRXN0IHBsYWNlcmF0IGluIGVnZXN0YXMgZXJhdC4gSWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uIHNvZGFsZXMgbmVxdWUuCgpDb252YWxsaXMgYSBjcmFzIHNlbXBlciBhdWN0b3IgbmVxdWUgdml0YWUgdGVtcHVzLiBGZWxpcyBpbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YSBub24gcHVsdmluYXIuIFZ1bHB1dGF0ZSBtaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYS4gQ29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0uIFZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbCBuaXNpIHNjZWxlcmlzcXVlIGV1IHVsdHJpY2VzIHZpdGFlLiBTZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgaW50ZWdlci4gTGFvcmVldCBpZCBkb25lYyB1bHRyaWNlcyB0aW5jaWR1bnQgYXJjdSBub24gc29kYWxlcy4gRmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUgY29udmFsbGlzIGEgY3JhcyBzZW1wZXIuIEluIHBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcyBsYWN1cy4gVml0YWUgZXQgbGVvIGR1aXMgdXQgZGlhbSBxdWFtIG51bGxhIHBvcnR0aXRvciBtYXNzYS4gTWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaSB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIFJpc3VzIHVsdHJpY2llcyB0cmlzdGlxdWUgbnVsbGEgYWxpcXVldCBlbmltLiBFbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvLiBBZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRhZSBwcm9pbi4gQ29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nIGF0LiBTZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQuIEVyYXQgcGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kbyBlbGl0IGF0IGltcGVyZGlldCBkdWkgYWNjdW1zYW4gc2l0LiBEaWFtIHZlbCBxdWFtIGVsZW1lbnR1bSBwdWx2aW5hci4gRXRpYW0gdGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtIG5pYmggdGVsbHVzIG1vbGVzdGllLgoKTWF0dGlzIGVuaW0gdXQgdGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldCBsZW8uIEF0IHVsdHJpY2VzIG1pIHRlbXB1cyBpbXBlcmRpZXQuIFRpbmNpZHVudCB0b3J0b3IgYWxpcXVhbSBudWxsYSBmYWNpbGlzaSBjcmFzIGZlcm1lbnR1bS4gRmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UgaWQgdmVsaXQuIExlbyBkdWlzIHV0IGRpYW0gcXVhbS4gQWMgZmV1Z2lhdCBzZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZC4gRGlhbSBtYWVjZW5hcyBzZWQgZW5pbSB1dCBzZW0uIFZvbHV0cGF0IGNvbW1vZG8gc2VkIGVnZXN0YXMgZWdlc3RhcyBmcmluZ2lsbGEgcGhhc2VsbHVzLiBUb3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nIGF0IGluIHRlbGx1cyBpbnRlZ2VyLiBVbHRyaWNlcyBkdWkgc2FwaWVuIGVnZXQgbWkgcHJvaW4gc2VkIGxpYmVyby4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIuIEV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEgZmVybWVudHVtLiBBbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBkdWlzIHRyaXN0aXF1ZSBzb2xsaWNpdHVkaW4gbmliaCBzaXQgYW1ldC4gVmVuZW5hdGlzIGEgY29uZGltZW50dW0gdml0YWUgc2FwaWVuIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gRG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQgc2VkLiBBbGlxdWFtIGV0aWFtIGVyYXQgdmVsaXQgc2NlbGVyaXNxdWUgaW4uIEF0IGVsZW1lbnR1bSBldSBmYWNpbGlzaXMgc2VkIG9kaW8gbW9yYmkgcXVpcyBjb21tb2RvIG9kaW8uIFZlbCBvcmNpIHBvcnRhIG5vbiBwdWx2aW5hciBuZXF1ZSBsYW9yZWV0IHN1c3BlbmRpc3NlLiBNYWduYSBlZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvciBzaXQuCgpOdW5jIHNlZCBibGFuZGl0IGxpYmVybyB2b2x1dHBhdCBzZWQgY3JhcyBvcm5hcmUgYXJjdSBkdWkuIEFtZXQgcmlzdXMgbnVsbGFtIGVnZXQgZmVsaXMuIFRlbXB1cyBpbXBlcmRpZXQgbnVsbGEgbWFsZXN1YWRhIHBlbGxlbnRlc3F1ZSBlbGl0IGVnZXQuIEFyY3Ugdml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZC4gSW4gYXJjdSBjdXJzdXMgZXVpc21vZCBxdWlzLiBFZ2VzdGFzIG1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpLiBUZWxsdXMgb3JjaSBhYyBhdWN0b3IgYXVndWUgbWF1cmlzIGF1Z3VlIG5lcXVlIGdyYXZpZGEgaW4uIFR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzLiBGYWNpbGlzaXMgc2VkIG9kaW8gbW9yYmkgcXVpcyBjb21tb2RvIG9kaW8gYWVuZWFuIHNlZC4gTmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzLiBNYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMgZXJvcyBpbiBjdXJzdXMuIFZpdmVycmEgYWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaS4gQXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZS4gRGlhbSB2dWxwdXRhdGUgdXQgcGhhcmV0cmEgc2l0IGFtZXQgYWxpcXVhbS4gVXQgb3JuYXJlIGxlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4uCgpTaXQgYW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMuIEZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvciBuZWMgZmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UuIFV0IGFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzIHZlbmVuYXRpcy4gQWxpcXVhbSBudWxsYSBmYWNpbGlzaSBjcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bS4gRWdlc3RhcyBkaWFtIGluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhIG5pYmguIEV1IGF1Z3VlIHV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtLiBOdWxsYSBhbGlxdWV0IGVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQuIENvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpIGxlbyB1cm5hLiBTZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBldWlzbW9kLiBBYyB0b3J0b3Igdml0YWUgcHVydXMgZmF1Y2lidXMuIEV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMuIFB1cnVzIHNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMuIEZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlIGNvbmd1ZS4gRXQgc29sbGljaXR1ZGluIGFjIG9yY2kgcGhhc2VsbHVzIGVnZXN0YXMgdGVsbHVzIHJ1dHJ1bS4gVXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYS4gQWxpcXVhbSBpZCBkaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaSBlZ2V0IG1hdXJpcy4gVXQgY29uc2VxdWF0IHNlbXBlciB2aXZlcnJhIG5hbSBsaWJlcm8ganVzdG8uIEEgbGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2RpbyBldWlzbW9kLiBIYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMgc2l0IGFtZXQgdm9sdXRwYXQgY29uc2VxdWF0LgoKVml2ZXJyYSBuaWJoIGNyYXMgcHVsdmluYXIgbWF0dGlzIG51bmMuIEdyYXZpZGEgYXJjdSBhYyB0b3J0b3IgZGlnbmlzc2ltLiBNb3JiaSBub24gYXJjdSByaXN1cyBxdWlzIHZhcml1cyBxdWFtIHF1aXNxdWUuIEZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldCBudWxsYSBmYWNpbGlzaSBldGlhbSBkaWduaXNzaW0gZGlhbS4gTmliaCB2ZW5lbmF0aXMgY3JhcyBzZWQgZmVsaXMgZWdldCB2ZWxpdCBhbGlxdWV0IHNhZ2l0dGlzLiBIYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQuIEVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cy4gQ3Vyc3VzIHNpdCBhbWV0IGRpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYyBlbmltIGRpYW0uIFNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMgbGVjdHVzIG1hZ25hIGZyaW5naWxsYSB1cm5hIHBvcnR0aXRvciByaG9uY3VzLiBNYWxlc3VhZGEgcGVsbGVudGVzcXVlIGVsaXQgZWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMuIEludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMgbW9yYmkgZW5pbSBudW5jIGZhdWNpYnVzIGEuIFNlZCB2dWxwdXRhdGUgbWkgc2l0IGFtZXQuIFBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLiBDcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQuIFB1cnVzIGdyYXZpZGEgcXVpcyBibGFuZGl0IHR1cnBpcyBjdXJzdXMgaW4gaGFjLgoKTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0uIFRvcnRvciBwb3N1ZXJlIGFjIHV0IGNvbnNlcXVhdC4gUmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEganVzdG8gbmVjIHVsdHJpY2VzLiBQaGFyZXRyYSBldCB1bHRyaWNlcyBuZXF1ZSBvcm5hcmUgYWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kgcXVpcy4gTGFjdXMgdmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQuIE1hdXJpcyByaG9uY3VzIGFlbmVhbiB2ZWwgZWxpdCBzY2VsZXJpc3F1ZSBtYXVyaXMuIE9ybmFyZSBhcmN1IGR1aSB2aXZhbXVzIGFyY3UgZmVsaXMgYmliZW5kdW0uIEF0IGVsZW1lbnR1bSBldSBmYWNpbGlzaXMgc2VkIG9kaW8uIEZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvci4gRWdlc3RhcyBzZWQgc2VkIHJpc3VzIHByZXRpdW0gcXVhbS4KCk5lcXVlIGdyYXZpZGEgaW4gZmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpLiBDb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlIG5pc2kuIFZ1bHB1dGF0ZSBzYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0gbWFsZXN1YWRhIGJpYmVuZHVtIGFyY3UuIEFjIGF1Y3RvciBhdWd1ZSBtYXVyaXMgYXVndWUgbmVxdWUuIFF1aXMgdmFyaXVzIHF1YW0gcXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtIGVsZW1lbnR1bSBwdWx2aW5hci4gQWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaS4gVml2ZXJyYSB0ZWxsdXMgaW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEuIEV1IGNvbnNlcXVhdCBhYyBmZWxpcyBkb25lYyBldCBvZGlvLiBNYXNzYSB1bHRyaWNpZXMgbWkgcXVpcyBoZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldCBlc3QuIEluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIgcmlzdXMgaW4uCgpQb3N1ZXJlIGFjIHV0IGNvbnNlcXVhdCBzZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQuIEZyaW5naWxsYSB1dCBtb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbi4gUG9ydHRpdG9yIGxhY3VzIGx1Y3R1cyBhY2N1bXNhbiB0b3J0b3IgcG9zdWVyZS4gRXN0IGFudGUgaW4gbmliaCBtYXVyaXMgY3Vyc3VzIG1hdHRpcy4gQ3VyYWJpdHVyIHZpdGFlIG51bmMgc2VkIHZlbGl0LiBFdSBhdWd1ZSB1dCBsZWN0dXMgYXJjdSBiaWJlbmR1bSBhdCB2YXJpdXMuIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUuIFZvbHV0cGF0IGFjIHRpbmNpZHVudCB2aXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQuIEVnZXN0YXMgaW50ZWdlciBlZ2V0IGFsaXF1ZXQgbmliaCBwcmFlc2VudCB0cmlzdGlxdWUgbWFnbmEgc2l0LiBQb3J0dGl0b3IgcmhvbmN1cyBkb2xvciBwdXJ1cyBub24uIFZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbCBuaXNpIHNjZWxlcmlzcXVlIGV1LiBBIGlhY3VsaXMgYXQgZXJhdCBwZWxsZW50ZXNxdWUgYWRpcGlzY2luZyBjb21tb2RvLiBTY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcyBpbiBhbGlxdWFtIHNlbSBmcmluZ2lsbGEuIFZpdmVycmEgaXBzdW0gbnVuYyBhbGlxdWV0IGJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzLgoKTGVjdHVzIHF1YW0gaWQgbGVvIGluIHZpdGFlIHR1cnBpcyBtYXNzYS4gQWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cyB2aXZlcnJhIGFkaXBpc2NpbmcuIEFsaXF1YW0gc2VtIGV0IHRvcnRvciBjb25zZXF1YXQuIE1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbSBlcmF0IHZlbGl0IHNjZWxlcmlzcXVlIGluLiBGYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltIG5lcXVlLiBQaGFyZXRyYSBzaXQgYW1ldCBhbGlxdWFtIGlkLiBMaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0LiBWYXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZSBlbmltIG51bGxhLiBUZW1wb3Igb3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaCB0ZWxsdXMgbW9sZXN0aWUuIEFkaXBpc2Npbmcgdml0YWUgcHJvaW4gc2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEuIE9yY2kgYWMgYXVjdG9yIGF1Z3VlIG1hdXJpcyBhdWd1ZSBuZXF1ZSBncmF2aWRhIGluIGZlcm1lbnR1bS4gU2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQgdmVuZW5hdGlzLgoKQW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyIHF1aXMgYXVjdG9yLiBTZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEuIEp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bS4gU2l0IGFtZXQgYWxpcXVhbSBpZCBkaWFtLiBWaXRhZSBzdXNjaXBpdCB0ZWxsdXMgbWF1cmlzIGEgZGlhbSBtYWVjZW5hcyBzZWQgZW5pbSB1dC4gQW50ZSBpbiBuaWJoIG1hdXJpcyBjdXJzdXMgbWF0dGlzIG1vbGVzdGllIGEuIFZpdGFlIGNvbmd1ZSBtYXVyaXMgcmhvbmN1cyBhZW5lYW4uIFBvcnR0aXRvciBsYWN1cyBsdWN0dXMgYWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUgYWMgdXQgY29uc2VxdWF0IHNlbXBlci4gVml2ZXJyYSBtYWVjZW5hcyBhY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzIHZvbHV0cGF0IGVzdC4gUGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kbyBlbGl0IGF0IGltcGVyZGlldCBkdWkuIFBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMuIEF0IGVsZW1lbnR1bSBldSBmYWNpbGlzaXMgc2VkIG9kaW8gbW9yYmkgcXVpcyBjb21tb2RvLiBFdCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMuIEZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQgZWdlc3RhcyBkdWkuCgpOdW5jIGZhdWNpYnVzIGEgcGVsbGVudGVzcXVlIHNpdCBhbWV0IHBvcnR0aXRvciBlZ2V0LiBFdSBhdWd1ZSB1dCBsZWN0dXMgYXJjdSBiaWJlbmR1bSBhdCB2YXJpdXMuIEVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUuIE5pc2kgc2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUuIEVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZSB1bHRyaWNlcy4gQ29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzIHZlbmVuYXRpcy4gQW1ldCBmYWNpbGlzaXMgbWFnbmEgZXRpYW0gdGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbC4gQXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdC4gUXVpcyBoZW5kcmVyaXQgZG9sb3IgbWFnbmEgZWdldCBlc3QuCgpBZGlwaXNjaW5nIHZpdGFlIHByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMuIFV0IHBoYXJldHJhIHNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gUHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtLiBVcm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaCBzZWQgcHVsdmluYXIgcHJvaW4uIE5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hLiBVdCBldGlhbSBzaXQgYW1ldCBuaXNsIHB1cnVzIGluLiBVbHRyaWNpZXMgbWkgZWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlLiBVdCBvcm5hcmUgbGVjdHVzIHNpdCBhbWV0IGVzdC4gRG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQuIFNpdCBhbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMuIEFtZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMgZXJhdC4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIGludGVnZXIgZWdldC4KCkluIG51bGxhIHBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0gdWx0cmljZXMgc2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlLiBBbWV0IHJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzLiBBIGxhY3VzIHZlc3RpYnVsdW0gc2VkIGFyY3Ugbm9uIG9kaW8gZXVpc21vZCBsYWNpbmlhIGF0LiBUcmlzdGlxdWUgc29sbGljaXR1ZGluIG5pYmggc2l0IGFtZXQgY29tbW9kbyBudWxsYSBmYWNpbGlzaS4gU2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzLiBBYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZS4gRGlhbSB2ZWwgcXVhbSBlbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UuIFV0IHZlbmVuYXRpcyB0ZWxsdXMgaW4gbWV0dXMgdnVscHV0YXRlIGV1IHNjZWxlcmlzcXVlLiBMYWNpbmlhIGF0IHF1aXMgcmlzdXMgc2VkIHZ1bHB1dGF0ZS4gVXJuYSBjb25kaW1lbnR1bSBtYXR0aXMgcGVsbGVudGVzcXVlIGlkIG5pYmggdG9ydG9yLiBVdCB2ZW5lbmF0aXMgdGVsbHVzIGluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQuIEVsaXQgZHVpcyB0cmlzdGlxdWUgc29sbGljaXR1ZGluIG5pYmggc2l0IGFtZXQgY29tbW9kbyBudWxsYS4gRmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UgaWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0uIFB1cnVzIHV0IGZhdWNpYnVzIHB1bHZpbmFyIGVsZW1lbnR1bS4gVXQgZW5pbSBibGFuZGl0IHZvbHV0cGF0IG1hZWNlbmFzLiBJbiBtYXNzYSB0ZW1wb3IgbmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlLiBVbHRyaWNlcyBpbiBpYWN1bGlzIG51bmMgc2VkLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gTm9uIGFyY3UgcmlzdXMgcXVpcyB2YXJpdXMgcXVhbS4KCkVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlLiBWZWwgcXVhbSBlbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0gbGFjdXMuIEVsZW1lbnR1bSB0ZW1wdXMgZWdlc3RhcyBzZWQgc2VkIHJpc3VzIHByZXRpdW0gcXVhbSB2dWxwdXRhdGUuIENvbnZhbGxpcyBhIGNyYXMgc2VtcGVyIGF1Y3Rvci4gTWF0dGlzIHBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvciBpZCBhbGlxdWV0IGxlY3R1cyBwcm9pbi4gVWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMgZWxlaWZlbmQuIEFsaXF1YW0gbnVsbGEgZmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2Rpby4gTmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMuIFRvcnRvciB2aXRhZSBwdXJ1cyBmYXVjaWJ1cyBvcm5hcmUgc3VzcGVuZGlzc2UuIEFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyIHF1aXMgYXVjdG9yLiBGZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUgZWdldC4gVGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkLiBPcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bSBuaWJoIHRlbGx1cyBtb2xlc3RpZSBudW5jLiBKdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzIGV1IG5vbiBkaWFtIHBoYXNlbGx1cy4gRXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpLiBNYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzLiBPcmNpIGV1IGxvYm9ydGlzIGVsZW1lbnR1bSBuaWJoIHRlbGx1cyBtb2xlc3RpZSBudW5jIG5vbi4gRXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EgdWx0cmljaWVzIG1pIHF1aXMgaGVuZHJlcml0IGRvbG9yLiBFdCBzb2xsaWNpdHVkaW4gYWMgb3JjaSBwaGFzZWxsdXMuIENvbnNlcXVhdCBtYXVyaXMgbnVuYyBjb25ndWUgbmlzaS4KClJ1dHJ1bSB0ZWxsdXMgcGVsbGVudGVzcXVlIGV1IHRpbmNpZHVudCB0b3J0b3IuIEVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbS4gRWxpdCBhdCBpbXBlcmRpZXQgZHVpIGFjY3Vtc2FuIHNpdCBhbWV0LiBJbXBlcmRpZXQgc2VkIGV1aXNtb2QgbmlzaSBwb3J0YSBsb3JlbSBtb2xsaXMgYWxpcXVhbS4gTnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtIG51bmMuIFZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlbyBpbiB2aXRhZS4gRW5pbSBibGFuZGl0IHZvbHV0cGF0IG1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbSBlcmF0IHZlbGl0LiBOdWxsYSBmYWNpbGlzaSBtb3JiaSB0ZW1wdXMgaWFjdWxpcy4gR3JhdmlkYSBxdWlzIGJsYW5kaXQgdHVycGlzIGN1cnN1cyBpbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdC4gSW50ZXJkdW0gY29uc2VjdGV0dXIgbGliZXJvIGlkIGZhdWNpYnVzIG5pc2wgdGluY2lkdW50IGVnZXQuIE1hdHRpcyBtb2xlc3RpZSBhIGlhY3VsaXMgYXQgZXJhdC4gRGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIgdml0YWUganVzdG8gZWdldCBtYWduYS4gQXVjdG9yIHVybmEgbnVuYyBpZCBjdXJzdXMgbWV0dXMgYWxpcXVhbSBlbGVpZmVuZC4gSGVuZHJlcml0IGRvbG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LiBRdWlzIGhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbS4gRGlhbSBtYWVjZW5hcyBzZWQgZW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0LgoKTmFtIGxpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBhbWV0LiBEb2xvciBtb3JiaSBub24gYXJjdSByaXN1cy4gVWxsYW1jb3JwZXIgZWdldCBudWxsYSBmYWNpbGlzaSBldGlhbSBkaWduaXNzaW0gZGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMuIFZlbGl0IGxhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3UuIEFyY3UgYmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYS4gUGVsbGVudGVzcXVlIG5lYyBuYW0gYWxpcXVhbSBzZW0uIFZpdGFlIHRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0uIEZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0uIFJpZGljdWx1cyBtdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8uIFBlbGxlbnRlc3F1ZSBlbGl0IGVnZXQgZ3JhdmlkYSBjdW0gc29jaWlzLiBQb3J0dGl0b3IgbGVvIGEgZGlhbSBzb2xsaWNpdHVkaW4gdGVtcG9yLiBVdCBldGlhbSBzaXQgYW1ldCBuaXNsIHB1cnVzLiBPZGlvIHRlbXBvciBvcmNpIGRhcGlidXMgdWx0cmljZXMgaW4gaWFjdWxpcyBudW5jLiBDcmFzIHNlZCBmZWxpcyBlZ2V0IHZlbGl0IGFsaXF1ZXQgc2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMuIExlY3R1cyB1cm5hIGR1aXMgY29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMuIERpYW0gbWFlY2VuYXMgdWx0cmljaWVzIG1pIGVnZXQgbWF1cmlzLiBRdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aS4gRWxlbWVudHVtIG5pYmggdGVsbHVzIG1vbGVzdGllIG51bmMgbm9uIGJsYW5kaXQuCgpSaXN1cyBxdWlzIHZhcml1cyBxdWFtIHF1aXNxdWUgaWQgZGlhbS4gU2VkIGF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYyBmZWxpcy4gQWRpcGlzY2luZyBlbGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIENvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbiBhcmN1LiBEdWkgc2FwaWVuIGVnZXQgbWkgcHJvaW4gc2VkIGxpYmVybyBlbmltLiBWb2x1dHBhdCBkaWFtIHV0IHZlbmVuYXRpcyB0ZWxsdXMgaW4uIFByZXRpdW0gZnVzY2UgaWQgdmVsaXQgdXQgdG9ydG9yLiBTZW1wZXIgZmV1Z2lhdCBuaWJoIHNlZCBwdWx2aW5hciBwcm9pbiBncmF2aWRhIGhlbmRyZXJpdCBsZWN0dXMuIE5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0uIFNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcy4gUXVhbSBpZCBsZW8gaW4gdml0YWUgdHVycGlzIG1hc3NhIHNlZC4gRmF1Y2lidXMgc2NlbGVyaXNxdWUgZWxlaWZlbmQgZG9uZWMgcHJldGl1bS4gTnVsbGEgYXQgdm9sdXRwYXQgZGlhbSB1dCB2ZW5lbmF0aXMgdGVsbHVzIGluLgoKUGhhc2VsbHVzIGZhdWNpYnVzIHNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlLiBWaXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjIGZlbGlzLiBGZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luIGdyYXZpZGEgaGVuZHJlcml0LiBBbWV0IG1hdXJpcyBjb21tb2RvIHF1aXMgaW1wZXJkaWV0IG1hc3NhLiBEaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nLiBQb3J0dGl0b3IgcmhvbmN1cyBkb2xvciBwdXJ1cyBub24gZW5pbSBwcmFlc2VudC4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBOaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyIHF1aXMuIFZhcml1cyBxdWFtIHF1aXNxdWUgaWQgZGlhbSB2ZWwgcXVhbSBlbGVtZW50dW0gcHVsdmluYXIuIER1aXMgdWx0cmljaWVzIGxhY3VzIHNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQuIEV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBzZWQuIERvbG9yIHNlZCB2aXZlcnJhIGlwc3VtIG51bmMgYWxpcXVldCBiaWJlbmR1bSBlbmltLiBEaWFtIGluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhLiBEb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cyBuZWMgZmV1Z2lhdCBpbiBmZXJtZW50dW0uIFZ1bHB1dGF0ZSBzYXBpZW4gbmVjIHNhZ2l0dGlzIGFsaXF1YW0gbWFsZXN1YWRhLiBEaWN0dW1zdCB2ZXN0aWJ1bHVtIHJob25jdXMgZXN0IHBlbGxlbnRlc3F1ZS4gT3JjaSBudWxsYSBwZWxsZW50ZXNxdWUgZGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQuCgpDb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0IGlkIGRvbmVjLiBTZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMuIEZlcm1lbnR1bSBpYWN1bGlzIGV1IG5vbiBkaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtIGxvcmVtLiBNYWxlc3VhZGEgcGVsbGVudGVzcXVlIGVsaXQgZWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMuIFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzIHNlZC4gU2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyIHZpdGFlLiBNYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbi4gTmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gVHJpc3RpcXVlIG51bGxhIGFsaXF1ZXQgZW5pbSB0b3J0b3IgYXQgYXVjdG9yLiBJcHN1bSBzdXNwZW5kaXNzZSB1bHRyaWNlcyBncmF2aWRhIGRpY3R1bS4KCkVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltIGRpYW0gcXVpcyBlbmltIGxvYm9ydGlzIHNjZWxlcmlzcXVlLiBMZWN0dXMgcHJvaW4gbmliaCBuaXNsIGNvbmRpbWVudHVtIGlkIHZlbmVuYXRpcyBhIGNvbmRpbWVudHVtLiBSaXN1cyBxdWlzIHZhcml1cyBxdWFtIHF1aXNxdWUgaWQuIEFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzIHZlbmVuYXRpcyBsZWN0dXMgbWFnbmEuIFByZXRpdW0gbmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMuIEFyY3Ugbm9uIG9kaW8gZXVpc21vZCBsYWNpbmlhIGF0IHF1aXMgcmlzdXMuIE5pc2kgcXVpcyBlbGVpZmVuZCBxdWFtIGFkaXBpc2Npbmcgdml0YWUuIE1hc3NhIHZpdGFlIHRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MuIERpYW0gbWFlY2VuYXMgdWx0cmljaWVzIG1pIGVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzLiBNdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlci4gSW50ZWdlciBlbmltIG5lcXVlIHZvbHV0cGF0IGFjIHRpbmNpZHVudCB2aXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMuIE5lYyBuYW0gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbnNlcXVhdCBpZCBwb3J0YSBuaWJoLiBWZXN0aWJ1bHVtIG1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50LiBQaGFzZWxsdXMgdmVzdGlidWx1bSBsb3JlbSBzZWQgcmlzdXMgdWx0cmljaWVzIHRyaXN0aXF1ZS4gRWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcy4gU2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzLgoKSW1wZXJkaWV0IHNlZCBldWlzbW9kIG5pc2kgcG9ydGEgbG9yZW0gbW9sbGlzLiBOaXNpIGxhY3VzIHNlZCB2aXZlcnJhIHRlbGx1cy4gTWkgYmliZW5kdW0gbmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZS4gUHVydXMgZmF1Y2lidXMgb3JuYXJlIHN1c3BlbmRpc3NlIHNlZC4gVHVycGlzIG1hc3NhIHNlZCBlbGVtZW50dW0gdGVtcHVzLiBBbWV0IGNvbW1vZG8gbnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtIGEgYXJjdSBjdXJzdXMuIFB1cnVzIHNpdCBhbWV0IHZvbHV0cGF0IGNvbnNlcXVhdC4gVmVzdGlidWx1bSBsb3JlbSBzZWQgcmlzdXMgdWx0cmljaWVzLiBTZW1wZXIgdml2ZXJyYSBuYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0LiBBbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdCBjdXJzdXMuIEFsaXF1YW0gZWxlaWZlbmQgbWkgaW4gbnVsbGEgcG9zdWVyZS4gVml2ZXJyYSBuaWJoIGNyYXMgcHVsdmluYXIgbWF0dGlzIG51bmMuIFRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMuIER1aXMgYXQgY29uc2VjdGV0dXIgbG9yZW0gZG9uZWMgbWFzc2EuIExlbyBhIGRpYW0gc29sbGljaXR1ZGluIHRlbXBvciBpZCBldSBuaXNsLgoKU2NlbGVyaXNxdWUgZWxlaWZlbmQgZG9uZWMgcHJldGl1bSB2dWxwdXRhdGUgc2FwaWVuIG5lYyBzYWdpdHRpcyBhbGlxdWFtLiBVdCB0ZWxsdXMgZWxlbWVudHVtIHNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0uIFNpdCBhbWV0IG5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bSBlc3QgdWx0cmljaWVzIGludGVnZXIuIE5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldC4gQXJjdSBmZWxpcyBiaWJlbmR1bSB1dCB0cmlzdGlxdWUgZXQgZWdlc3Rhcy4gSW4gdml0YWUgdHVycGlzIG1hc3NhIHNlZCBlbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMgc2VkLiBPcmNpIHBoYXNlbGx1cyBlZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzLiBQdXJ1cyBmYXVjaWJ1cyBvcm5hcmUgc3VzcGVuZGlzc2Ugc2VkIG5pc2kgbGFjdXMgc2VkIHZpdmVycmEuIFZhcml1cyBzaXQgYW1ldCBtYXR0aXMgdnVscHV0YXRlLiBWb2x1dHBhdCBjb21tb2RvIHNlZCBlZ2VzdGFzIGVnZXN0YXMgZnJpbmdpbGxhLiBBZW5lYW4gdmVsIGVsaXQgc2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZS4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0LiBWaXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjLiBTaXQgYW1ldCBmYWNpbGlzaXMgbWFnbmEgZXRpYW0gdGVtcG9yIG9yY2kuCgpTaXQgYW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzLiBOaXNpIHF1aXMgZWxlaWZlbmQgcXVhbSBhZGlwaXNjaW5nIHZpdGFlIHByb2luIHNhZ2l0dGlzLiBJbnRlZ2VyIHF1aXMgYXVjdG9yIGVsaXQgc2VkLiBOaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMuIFNlZCBibGFuZGl0IGxpYmVybyB2b2x1dHBhdCBzZWQgY3JhcyBvcm5hcmUgYXJjdS4gSW4gYXJjdSBjdXJzdXMgZXVpc21vZCBxdWlzIHZpdmVycmEgbmliaC4gVm9sdXRwYXQgY29tbW9kbyBzZWQgZWdlc3RhcyBlZ2VzdGFzLiBQZWxsZW50ZXNxdWUgZGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQgdmVuZW5hdGlzIHVybmEgY3Vyc3VzLiBGYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoIHByYWVzZW50LiBWaXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjLiBDdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMuIEVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMuCgpGYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpIGlkLiBFZ2V0IGFyY3UgZGljdHVtIHZhcml1cyBkdWlzIGF0LiBFdSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IgZXUuIFNlbXBlciB2aXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0LiBSaG9uY3VzIG1hdHRpcyByaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYS4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtLiBOdW5jIG5vbiBibGFuZGl0IG1hc3NhIGVuaW0uIE5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzIGF0IGVyYXQuIERpYW0gdm9sdXRwYXQgY29tbW9kbyBzZWQgZWdlc3Rhcy4KCk9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzIG51bmMuIFNpdCBhbWV0IG5pc2wgcHVydXMgaW4gbW9sbGlzIG51bmMgc2VkIGlkIHNlbXBlci4gUGVsbGVudGVzcXVlIGlkIG5pYmggdG9ydG9yIGlkIGFsaXF1ZXQgbGVjdHVzIHByb2luIG5pYmguIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUuIEVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcyB2b2x1dHBhdCBibGFuZGl0LiBDdXJhYml0dXIgdml0YWUgbnVuYyBzZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtLiBWaXZlcnJhIG1hdXJpcyBpbiBhbGlxdWFtIHNlbSBmcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlLiBOdW5jIGVnZXQgbG9yZW0gZG9sb3Igc2VkIHZpdmVycmEgaXBzdW0gbnVuYy4gRHVpIG51bmMgbWF0dGlzIGVuaW0gdXQuIE5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcy4gVXQgb3JuYXJlIGxlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4gZWdlc3Rhcy4gUGxhY2VyYXQgdmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzIHVsdHJpY2VzLiBBY2N1bXNhbiBzaXQgYW1ldCBudWxsYSBmYWNpbGlzaSBtb3JiaS4gTGFjdXMgc3VzcGVuZGlzc2UgZmF1Y2lidXMgaW50ZXJkdW0gcG9zdWVyZSBsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4gRWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzLiBFbmltIHV0IHNlbSB2aXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMuCgpNaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZS4gVXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYS4gU2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQuIE1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaS4gQWVuZWFuIHBoYXJldHJhIG1hZ25hIGFjIHBsYWNlcmF0IHZlc3RpYnVsdW0gbGVjdHVzIG1hdXJpcyB1bHRyaWNlcy4gQWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0uIEVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlIGRpZ25pc3NpbS4gVWxsYW1jb3JwZXIgc2l0IGFtZXQgcmlzdXMgbnVsbGFtIGVnZXQgZmVsaXMgZWdldCBudW5jLiBMYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMgYWMgb2Rpby4gSW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8gdWxsYW1jb3JwZXIuIFJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQgdm9sdXRwYXQuIFBoYXJldHJhIG1hc3NhIG1hc3NhIHVsdHJpY2llcyBtaSBxdWlzIGhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0LiBQbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMgZXJvcyBpbi4gRW5pbSBzaXQgYW1ldCB2ZW5lbmF0aXMgdXJuYSBjdXJzdXMgZWdldC4gQmliZW5kdW0gZW5pbSBmYWNpbGlzaXMgZ3JhdmlkYSBuZXF1ZSBjb252YWxsaXMgYS4gT2RpbyB1dCBzZW0gbnVsbGEgcGhhcmV0cmEgZGlhbSBzaXQuIEFkaXBpc2NpbmcgYXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZS4KCkNyYXMgZmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdCBwcmV0aXVtIG5pYmggaXBzdW0gY29uc2VxdWF0LiBEaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzLiBFbmltIGZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMgc2VtcGVyIGF1Y3RvciBuZXF1ZS4gTGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzLiBEaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEgZXJhdCBuYW0gYXQuIFZpdGFlIHNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdC4gTWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbC4gTGVjdHVzIHByb2luIG5pYmggbmlzbCBjb25kaW1lbnR1bSBpZCB2ZW5lbmF0aXMgYS4gTnVsbGEgZmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2Rpby4gTW9yYmkgbm9uIGFyY3UgcmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlIGlkIGRpYW0uIFNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEganVzdG8uIEFlbmVhbiBwaGFyZXRyYSBtYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cy4gTnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtLiBEb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFRlbXBvciBuZWMgZmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UgaWQuIEF1Z3VlIGxhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlLiBUaW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZC4gQXQgcmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nIGF0IGluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUuIEVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQuIE9ybmFyZSBzdXNwZW5kaXNzZSBzZWQgbmlzaSBsYWN1cyBzZWQgdml2ZXJyYSB0ZWxsdXMgaW4uCgpJbiBudWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtIHVsdHJpY2VzIHNhZ2l0dGlzIG9yY2kgYSBzY2VsZXJpc3F1ZS4gQWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMgaW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cy4gVmVzdGlidWx1bSBsZWN0dXMgbWF1cmlzIHVsdHJpY2VzIGVyb3MgaW4gY3Vyc3VzLiBNYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYS4gRG9sb3IgbW9yYmkgbm9uIGFyY3UgcmlzdXMgcXVpcy4gQ29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhLiBDb25zZXF1YXQgaW50ZXJkdW0gdmFyaXVzIHNpdCBhbWV0IG1hdHRpcyB2dWxwdXRhdGUuIFZpdmVycmEgb3JjaSBzYWdpdHRpcyBldSB2b2x1dHBhdCBvZGlvIGZhY2lsaXNpcyBtYXVyaXMgc2l0IGFtZXQuIER1aSB2aXZhbXVzIGFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlLiBNaSBxdWlzIGhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbS4gTWF1cmlzIGEgZGlhbSBtYWVjZW5hcyBzZWQgZW5pbSB1dCBzZW0gdml2ZXJyYS4gTG9yZW0gbW9sbGlzIGFsaXF1YW0gdXQgcG9ydHRpdG9yIGxlbyBhIGRpYW0gc29sbGljaXR1ZGluLiBJbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoIGNyYXMuIEFtZXQgcHVydXMgZ3JhdmlkYSBxdWlzIGJsYW5kaXQgdHVycGlzIGN1cnN1cyBpbiBoYWMuIEZlbGlzIGVnZXQgdmVsaXQgYWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cy4gU2NlbGVyaXNxdWUgaW4gZGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cy4gTnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZC4gTW9yYmkgbm9uIGFyY3UgcmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlIGlkLiBNb3JiaSB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQgZWdlc3Rhcy4KCk1hc3NhIHNlZCBlbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0uIFBvcnRhIG5pYmggdmVuZW5hdGlzIGNyYXMgc2VkIGZlbGlzLiBBYyBmZWxpcyBkb25lYyBldCBvZGlvIHBlbGxlbnRlc3F1ZSBkaWFtIHZvbHV0cGF0IGNvbW1vZG8uIENvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlkIGludGVyZHVtIHZlbGl0IGxhb3JlZXQgaWQuIEV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZSB1bHRyaWNlcy4gQWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cy4gU2VtcGVyIGZldWdpYXQgbmliaCBzZWQgcHVsdmluYXIgcHJvaW4uIERvbmVjIGFjIG9kaW8gdGVtcG9yIG9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzIG51bmMuIFZ1bHB1dGF0ZSBlbmltIG51bGxhIGFsaXF1ZXQgcG9ydHRpdG9yIGxhY3VzIGx1Y3R1cy4gTGFjdXMgc2VkIHZpdmVycmEgdGVsbHVzIGluIGhhYyBoYWJpdGFzc2UuIFNlZCBhdWd1ZSBsYWN1cyB2aXZlcnJhIHZpdGFlIGNvbmd1ZSBldSBjb25zZXF1YXQgYWMgZmVsaXMuIEVsZW1lbnR1bSBwdWx2aW5hciBldGlhbSBub24gcXVhbSBsYWN1cyBzdXNwZW5kaXNzZS4gRW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQuIFRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzLiBJcHN1bSBudW5jIGFsaXF1ZXQgYmliZW5kdW0gZW5pbSBmYWNpbGlzaXMgZ3JhdmlkYSBuZXF1ZSBjb252YWxsaXMuIFJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhLgoKTW9yYmkgcXVpcyBjb21tb2RvIG9kaW8gYWVuZWFuLiBSaXN1cyBudWxsYW0gZWdldCBmZWxpcyBlZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzIGFsaXF1YW0uIE5hbSBhbGlxdWFtIHNlbSBldCB0b3J0b3IgY29uc2VxdWF0IGlkIHBvcnRhLiBRdWFtIGVsZW1lbnR1bSBwdWx2aW5hciBldGlhbSBub24gcXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cy4gVXQgb3JuYXJlIGxlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4gZWdlc3RhcyBlcmF0LiBRdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0gZG9sb3Igc2l0LiBBYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMgdWx0cmljZXMgZXJvcyBpbi4gVHJpc3RpcXVlIHJpc3VzIG5lYyBmZXVnaWF0IGluLiBCbGFuZGl0IGN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcyBtaS4gU2VtIGZyaW5naWxsYSB1dCBtb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbi4gQSBhcmN1IGN1cnN1cyB2aXRhZSBjb25ndWUgbWF1cmlzIHJob25jdXMgYWVuZWFuIHZlbC4gQSBwZWxsZW50ZXNxdWUgc2l0IGFtZXQgcG9ydHRpdG9yIGVnZXQgZG9sb3IgbW9yYmkgbm9uLgoKUHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YSBub24uIEZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cy4gTnVsbGEgYWxpcXVldCBwb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuLiBBIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5hIGR1aXMgY29udmFsbGlzLiBOb24gc29kYWxlcyBuZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdC4gUmlzdXMgbnVsbGFtIGVnZXQgZmVsaXMgZWdldC4gR3JhdmlkYSBydXRydW0gcXVpc3F1ZSBub24gdGVsbHVzIG9yY2kgYWMgYXVjdG9yIGF1Z3VlIG1hdXJpcy4gQ29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhLiBMZW8gaW4gdml0YWUgdHVycGlzIG1hc3NhIHNlZCBlbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMuIFNlZCBvZGlvIG1vcmJpIHF1aXMgY29tbW9kbyBvZGlvIGFlbmVhbiBzZWQgYWRpcGlzY2luZyBkaWFtLiBFbGl0IHNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIuIFNpdCBhbWV0IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0gc2l0IGFtZXQuIEluIGRpY3R1bSBub24gY29uc2VjdGV0dXIgYSBlcmF0LiBQcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhIGVzdCB1bGxhbWNvcnBlciBlZ2V0IG51bGxhLiBBZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cyBzaXQuIElwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIFNpdCBhbWV0IG5pc2wgc3VzY2lwaXQgYWRpcGlzY2luZyBiaWJlbmR1bS4KCkluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cy4gSWFjdWxpcyB1cm5hIGlkIHZvbHV0cGF0IGxhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ci4gUHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtLiBRdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8uIFBlbGxlbnRlc3F1ZSBkaWFtIHZvbHV0cGF0IGNvbW1vZG8gc2VkLiBBY2N1bXNhbiB0b3J0b3IgcG9zdWVyZSBhYyB1dC4gUG9zdWVyZSBtb3JiaSBsZW8gdXJuYSBtb2xlc3RpZSBhdCBlbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZC4gTmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzIHZpdGFlLiBTZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltLiBTYXBpZW4gZmF1Y2lidXMgZXQgbW9sZXN0aWUgYWMgZmV1Z2lhdCBzZWQgbGVjdHVzIHZlc3RpYnVsdW0uIEVnZXN0YXMgZGlhbSBpbiBhcmN1IGN1cnN1cy4gTWFzc2EgZWdldCBlZ2VzdGFzIHB1cnVzIHZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbC4gSW4gbWV0dXMgdnVscHV0YXRlIGV1IHNjZWxlcmlzcXVlIGZlbGlzIGltcGVyZGlldCBwcm9pbi4gTm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsLiBOb24gcXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtLiBFdCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIE9kaW8gdGVtcG9yIG9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzLgoKQWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0uIEJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUuIE1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldCBtb2xlc3RpZSBhYyBmZXVnaWF0IHNlZCBsZWN0dXMgdmVzdGlidWx1bS4gVGVtcHVzIGltcGVyZGlldCBudWxsYSBtYWxlc3VhZGEgcGVsbGVudGVzcXVlIGVsaXQgZWdldCBncmF2aWRhLiBBdCBhdWd1ZSBlZ2V0IGFyY3UgZGljdHVtLiBOdWxsYSBwb3N1ZXJlIHNvbGxpY2l0dWRpbiBhbGlxdWFtIHVsdHJpY2VzIHNhZ2l0dGlzIG9yY2kuIE5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYy4gQSBhcmN1IGN1cnN1cyB2aXRhZSBjb25ndWUgbWF1cmlzIHJob25jdXMgYWVuZWFuIHZlbC4gRXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzLiBUaW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cyBmZXVnaWF0IGluLgoKRnVzY2UgdXQgcGxhY2VyYXQgb3JjaSBudWxsYSBwZWxsZW50ZXNxdWUgZGlnbmlzc2ltIGVuaW0gc2l0LiBWaXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQuIE1hbGVzdWFkYSBwcm9pbiBsaWJlcm8gbnVuYyBjb25zZXF1YXQgaW50ZXJkdW0gdmFyaXVzIHNpdCBhbWV0IG1hdHRpcy4gTmVxdWUgZWdlc3RhcyBjb25ndWUgcXVpc3F1ZSBlZ2VzdGFzIGRpYW0gaW4gYXJjdS4gUGVsbGVudGVzcXVlIGlkIG5pYmggdG9ydG9yIGlkLiBWaXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IuIE5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluIGFyY3UgY3Vyc3VzIGV1aXNtb2QuIFF1aXMgaW1wZXJkaWV0IG1hc3NhIHRpbmNpZHVudCBudW5jIHB1bHZpbmFyIHNhcGllbiBldC4gRXUgc2VtIGludGVnZXIgdml0YWUganVzdG8gZWdldCBtYWduYSBmZXJtZW50dW0uIExhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UgYWMgdG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMuIFNpdCBhbWV0IHZvbHV0cGF0IGNvbnNlcXVhdCBtYXVyaXMgbnVuYy4KClF1aXMgaW1wZXJkaWV0IG1hc3NhIHRpbmNpZHVudCBudW5jIHB1bHZpbmFyIHNhcGllbiBldCBsaWd1bGEuIEFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzIG5lYyBmZXVnaWF0IGluLiBFZ2VzdGFzIGludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3RpcXVlLiBWZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzLiBUaW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQuIE1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpLiBTZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBWaXZhbXVzIGF0IGF1Z3VlIGVnZXQgYXJjdSBkaWN0dW0gdmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIuIER1aXMgdHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoIHNpdC4gUGVsbGVudGVzcXVlIG5lYyBuYW0gYWxpcXVhbSBzZW0uIEVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbiBvcm5hcmUuIEludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVybyBpZCBmYXVjaWJ1cyBuaXNsIHRpbmNpZHVudCBlZ2V0LiBVdCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltIG5lcXVlLiBKdXN0byBuZWMgdWx0cmljZXMgZHVpIHNhcGllbiBlZ2V0IG1pLiBGYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQgYW1ldCByaXN1cyBudWxsYW0gZWdldC4KCkVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyLiBJbiBldSBtaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlLiBBdCBhdWN0b3IgdXJuYSBudW5jIGlkIGN1cnN1cyBtZXR1cyBhbGlxdWFtIGVsZWlmZW5kLiBDb252YWxsaXMgYWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cy4gQW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgcGVsbGVudGVzcXVlIGhhYml0YW50LiBFbmltIGJsYW5kaXQgdm9sdXRwYXQgbWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtIGV0aWFtIGVyYXQuIFBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0LiBPcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyLiBWZWxpdCBzZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMuIElhY3VsaXMgdXJuYSBpZCB2b2x1dHBhdCBsYWN1cyBsYW9yZWV0IG5vbi4gU2VtcGVyIHF1aXMgbGVjdHVzIG51bGxhIGF0IHZvbHV0cGF0IGRpYW0gdXQgdmVuZW5hdGlzIHRlbGx1cy4gTWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtIGV0aWFtLiBQdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVyIG1hbGVzdWFkYSBwcm9pbiBsaWJlcm8gbnVuYyBjb25zZXF1YXQuIENvbW1vZG8gbnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtIGEgYXJjdSBjdXJzdXMgdml0YWUuCgpUZWxsdXMgcGVsbGVudGVzcXVlIGV1IHRpbmNpZHVudCB0b3J0b3IgYWxpcXVhbS4gTm9uIGRpYW0gcGhhc2VsbHVzIHZlc3RpYnVsdW0gbG9yZW0gc2VkLiBBIGxhY3VzIHZlc3RpYnVsdW0gc2VkIGFyY3Ugbm9uLiBDb25kaW1lbnR1bSB2aXRhZSBzYXBpZW4gcGVsbGVudGVzcXVlIGhhYml0YW50LiBQZWxsZW50ZXNxdWUgYWRpcGlzY2luZyBjb21tb2RvIGVsaXQgYXQgaW1wZXJkaWV0IGR1aS4gRWdlc3RhcyBwdXJ1cyB2aXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZS4gQWNjdW1zYW4gbGFjdXMgdmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQgZWdlc3Rhcy4gTmliaCB0b3J0b3IgaWQgYWxpcXVldCBsZWN0dXMgcHJvaW4uIFNpdCBhbWV0IGp1c3RvIGRvbmVjIGVuaW0gZGlhbSB2dWxwdXRhdGUgdXQgcGhhcmV0cmEgc2l0LiBFZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbiBpbi4gU29kYWxlcyBuZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdCBhbWV0IG5pc2wuIFNpdCBhbWV0IGx1Y3R1cyB2ZW5lbmF0aXMgbGVjdHVzIG1hZ25hIGZyaW5naWxsYSB1cm5hLiBOZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdC4gTm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UgYWMgdG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMgYWVuZWFuLiBFZ2V0IG1pIHByb2luIHNlZCBsaWJlcm8gZW5pbSBzZWQuIERvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzIG5lYyBmZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEuIEF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzIGFsaXF1YW0gZWxlaWZlbmQuIFR1cnBpcyBudW5jIGVnZXQgbG9yZW0gZG9sb3Igc2VkIHZpdmVycmEgaXBzdW0uIFZlbGl0IGxhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMgdGluY2lkdW50IGFyY3Ugbm9uLiBEb2xvciBwdXJ1cyBub24gZW5pbSBwcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhLgoKUHJvaW4gc2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcyByaG9uY3VzLiBUaW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQuIEZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhIGFyY3UgY3Vyc3VzIHZpdGFlIGNvbmd1ZS4gVml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jLiBQaGFyZXRyYSBzaXQgYW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMgdWx0cmljaWVzIG1pLiBTaXQgYW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQuIFNlZCBlZ2VzdGFzIGVnZXN0YXMgZnJpbmdpbGxhIHBoYXNlbGx1cyBmYXVjaWJ1cyBzY2VsZXJpc3F1ZSBlbGVpZmVuZCBkb25lYyBwcmV0aXVtLiBQdXJ1cyBzaXQgYW1ldCB2b2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlLiBDcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jIHNlZCBibGFuZGl0IGxpYmVybyB2b2x1dHBhdCBzZWQgY3Jhcy4gVml2ZXJyYSBuaWJoIGNyYXMgcHVsdmluYXIgbWF0dGlzIG51bmMgc2VkIGJsYW5kaXQgbGliZXJvLiBWaXRhZSBwcm9pbiBzYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzLgoKTmlzaSBxdWlzIGVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRhZSBwcm9pbiBzYWdpdHRpcy4gQXVjdG9yIG5lcXVlIHZpdGFlIHRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0uIFByYWVzZW50IGVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyLiBFcmF0IG5hbSBhdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBFbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvLiBPcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQuIEV1aXNtb2QgaW4gcGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0IGR1aXMgdWx0cmljaWVzIGxhY3VzLiBRdWFtIGVsZW1lbnR1bSBwdWx2aW5hciBldGlhbSBub24gcXVhbS4gVXQgc2VtIG51bGxhIHBoYXJldHJhIGRpYW0gc2l0IGFtZXQgbmlzbC4gUHVsdmluYXIgbWF0dGlzIG51bmMgc2VkIGJsYW5kaXQuIExhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UuIFVsdHJpY2llcyBtaSBlZ2V0IG1hdXJpcyBwaGFyZXRyYSBldCB1bHRyaWNlcyBuZXF1ZSBvcm5hcmUuIE1vcmJpIGVuaW0gbnVuYyBmYXVjaWJ1cyBhLiBOdWxsYSBwZWxsZW50ZXNxdWUgZGlnbmlzc2ltIGVuaW0gc2l0LiBTaXQgYW1ldCBuaXNsIHB1cnVzIGluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIuIFNlbXBlciByaXN1cyBpbiBoZW5kcmVyaXQgZ3JhdmlkYSBydXRydW0uIExvYm9ydGlzIG1hdHRpcyBhbGlxdWFtIGZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvciBuZWMuIFBlbGxlbnRlc3F1ZSBpZCBuaWJoIHRvcnRvciBpZCBhbGlxdWV0IGxlY3R1cy4gQXVjdG9yIG5lcXVlIHZpdGFlIHRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0uIE9kaW8gdGVtcG9yIG9yY2kgZGFwaWJ1cyB1bHRyaWNlcyBpbiBpYWN1bGlzLgoKTGVjdHVzIHNpdCBhbWV0IGVzdCBwbGFjZXJhdCBpbiBlZ2VzdGFzLiBBdCB2YXJpdXMgdmVsIHBoYXJldHJhIHZlbCB0dXJwaXMgbnVuYyBlZ2V0IGxvcmVtIGRvbG9yLiBRdWFtIGlkIGxlbyBpbiB2aXRhZSB0dXJwaXMuIFJpc3VzIGZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0uIEluIG5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzLiBBdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQuIFB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVtIHBvc3VlcmUuIE5lYyB0aW5jaWR1bnQgcHJhZXNlbnQgc2VtcGVyIGZldWdpYXQgbmliaC4gVXQgdG9ydG9yIHByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYyB0b3J0b3Igdml0YWUuIFNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIgdml0YWUganVzdG8gZWdldC4gVml2ZXJyYSB2aXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjIGZlbGlzLiBTY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEuIE1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdCBzZWQgdWxsYW1jb3JwZXIgbW9yYmkuIEp1c3RvIGVnZXQgbWFnbmEgZmVybWVudHVtIGlhY3VsaXMgZXUgbm9uLgoKTnVsbGEgcGVsbGVudGVzcXVlIGRpZ25pc3NpbSBlbmltIHNpdCBhbWV0IHZlbmVuYXRpcyB1cm5hIGN1cnN1cy4gU2VkIHB1bHZpbmFyIHByb2luIGdyYXZpZGEgaGVuZHJlcml0LiBJbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldC4gVWxsYW1jb3JwZXIgbWFsZXN1YWRhIHByb2luIGxpYmVybyBudW5jIGNvbnNlcXVhdCBpbnRlcmR1bSB2YXJpdXMgc2l0LiBNYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaSBsZW8uIFF1YW0gdml2ZXJyYSBvcmNpIHNhZ2l0dGlzIGV1IHZvbHV0cGF0IG9kaW8gZmFjaWxpc2lzLiBFZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbSBpbi4gTWF1cmlzIGluIGFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbi4gVGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlLiBOaWJoIHByYWVzZW50IHRyaXN0aXF1ZSBtYWduYSBzaXQgYW1ldC4gVGVtcG9yIGlkIGV1IG5pc2wgbnVuYyBtaS4gQWMgZmVsaXMgZG9uZWMgZXQgb2RpbyBwZWxsZW50ZXNxdWUgZGlhbSB2b2x1dHBhdC4KClZpdmFtdXMgYXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bSB2YXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ci4gQWxpcXVldCBwb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvci4gRW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQuIFRpbmNpZHVudCB2aXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQgZGlhbS4gSW50ZWdlciBlbmltIG5lcXVlIHZvbHV0cGF0IGFjIHRpbmNpZHVudC4gRmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bS4gRXRpYW0gbm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UgZmF1Y2lidXMgaW50ZXJkdW0uIFZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkLiBFZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMgZ3JhdmlkYSBkaWN0dW0gZnVzY2UuIExhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhIGFyY3UgYWMgdG9ydG9yLgoKRmF1Y2lidXMgc2NlbGVyaXNxdWUgZWxlaWZlbmQgZG9uZWMgcHJldGl1bS4gQXJjdSBmZWxpcyBiaWJlbmR1bSB1dCB0cmlzdGlxdWUgZXQgZWdlc3RhcyBxdWlzIGlwc3VtIHN1c3BlbmRpc3NlLiBFZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzIGV1IG5vbiBkaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtIGxvcmVtLiBEb25lYyBtYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQuIFZpdGFlIHN1c2NpcGl0IHRlbGx1cyBtYXVyaXMgYS4gUHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YSBub24gcHVsdmluYXIgbmVxdWUgbGFvcmVldC4gQW1ldCBwdXJ1cyBncmF2aWRhIHF1aXMgYmxhbmRpdC4gQWVuZWFuIHBoYXJldHJhIG1hZ25hIGFjIHBsYWNlcmF0IHZlc3RpYnVsdW0gbGVjdHVzIG1hdXJpcyB1bHRyaWNlcy4gRmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkLiBOZXF1ZSBvcm5hcmUgYWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kuIEVuaW0gc2l0IGFtZXQgdmVuZW5hdGlzIHVybmEgY3Vyc3VzIGVnZXQgbnVuYy4gVGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4gcGVsbGVudGVzcXVlLiBUaW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUuIFJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQuIFRvcnRvciBhbGlxdWFtIG51bGxhIGZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8gZXUgZmV1Z2lhdCBwcmV0aXVtLiBFZ2V0IGR1aXMgYXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZS4gUHJvaW4gc2FnaXR0aXMgbmlzbCByaG9uY3VzIG1hdHRpcy4gTWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzIGF0LiBOZWMgdWxsYW1jb3JwZXIgc2l0IGFtZXQgcmlzdXMgbnVsbGFtIGVnZXQuCgpBbWV0IGRpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0LiBFdCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgaW50ZWdlciBlZ2V0LiBOaWJoIHRlbGx1cyBtb2xlc3RpZSBudW5jIG5vbiBibGFuZGl0IG1hc3NhIGVuaW0gbmVjLiBUb3J0b3IgcG9zdWVyZSBhYyB1dCBjb25zZXF1YXQgc2VtcGVyLiBWaXZlcnJhIG1hZWNlbmFzIGFjY3Vtc2FuIGxhY3VzIHZlbC4gU2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlLiBVbGxhbWNvcnBlciBzaXQgYW1ldCByaXN1cyBudWxsYW0gZWdldC4gTmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIGludGVnZXIuIFNpdCBhbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcuIEJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUgY29udmFsbGlzIGEgY3JhcyBzZW1wZXIuIE5hbSBhdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcy4gU3VzcGVuZGlzc2UgaW4gZXN0IGFudGUgaW4uIFRvcnRvciBhdCByaXN1cyB2aXZlcnJhIGFkaXBpc2NpbmcuIEluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUgdmFyaXVzIG1vcmJpIGVuaW0uIE9ybmFyZSBhcmN1IGR1aSB2aXZhbXVzIGFyY3UuIFBvcnR0aXRvciBsYWN1cyBsdWN0dXMgYWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUgYWMgdXQuIEludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVybyBpZCBmYXVjaWJ1cyBuaXNsIHRpbmNpZHVudCBlZ2V0LiBBdWN0b3IgZWxpdCBzZWQgdnVscHV0YXRlIG1pIHNpdCBhbWV0IG1hdXJpcyBjb21tb2RvLiBVdCBvcm5hcmUgbGVjdHVzIHNpdCBhbWV0LiBJcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQuCgpBbGlxdWFtIHNlbSBmcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0LiBOaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcy4gQ3Vyc3VzIG1ldHVzIGFsaXF1YW0gZWxlaWZlbmQgbWkgaW4gbnVsbGEuIElkIGV1IG5pc2wgbnVuYyBtaS4gVXQgdGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dC4gRmVsaXMgZWdldCB2ZWxpdCBhbGlxdWV0IHNhZ2l0dGlzIGlkLiBUZWxsdXMgZWxlbWVudHVtIHNhZ2l0dGlzIHZpdGFlIGV0LiBEdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldC4gVWx0cmljZXMgbWkgdGVtcHVzIGltcGVyZGlldCBudWxsYS4gSW50ZWdlciBxdWlzIGF1Y3RvciBlbGl0IHNlZCB2dWxwdXRhdGUuIFRlbXB1cyBxdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtLiBUcmlzdGlxdWUgbnVsbGEgYWxpcXVldCBlbmltIHRvcnRvci4gTGVjdHVzIG1hdXJpcyB1bHRyaWNlcyBlcm9zIGluIGN1cnN1cyB0dXJwaXMgbWFzc2EgdGluY2lkdW50IGR1aS4gQWRpcGlzY2luZyBkaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlIHJpc3VzLiBQdWx2aW5hciBuZXF1ZSBsYW9yZWV0IHN1c3BlbmRpc3NlIGludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVybyBpZC4gTWF1cmlzIGEgZGlhbSBtYWVjZW5hcyBzZWQgZW5pbSB1dCBzZW0uIE5pc2wgdGluY2lkdW50IGVnZXQgbnVsbGFtIG5vbiBuaXNpIGVzdC4KCkFsaXF1ZXQgZW5pbSB0b3J0b3IgYXQgYXVjdG9yIHVybmEgbnVuYyBpZCBjdXJzdXMgbWV0dXMuIEhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvci4gQXQgdm9sdXRwYXQgZGlhbSB1dCB2ZW5lbmF0aXMuIFJ1dHJ1bSBxdWlzcXVlIG5vbiB0ZWxsdXMgb3JjaS4gRXJhdCBpbXBlcmRpZXQgc2VkIGV1aXNtb2QgbmlzaSBwb3J0YS4gT3JuYXJlIG1hc3NhIGVnZXQgZWdlc3RhcyBwdXJ1cyB2aXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaS4gQW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hci4gUmhvbmN1cyBkb2xvciBwdXJ1cyBub24gZW5pbSBwcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwuIFF1YW0gZWxlbWVudHVtIHB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtIGxhY3VzLiBQdXJ1cyB2aXZlcnJhIGFjY3Vtc2FuIGluIG5pc2wgbmlzaSBzY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZS4gU2VkIGlkIHNlbXBlciByaXN1cyBpbiBoZW5kcmVyaXQgZ3JhdmlkYSBydXRydW0gcXVpc3F1ZS4gRXUgYXVndWUgdXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzLiBVdCBtb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0gdmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUuIEV1IHNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEgZmVybWVudHVtIGlhY3VsaXMuIE1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldC4gRmVybWVudHVtIGxlbyB2ZWwgb3JjaSBwb3J0YS4gSW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8gdWxsYW1jb3JwZXIuCgpWaXRhZSB0ZW1wdXMgcXVhbSBwZWxsZW50ZXNxdWUgbmVjIG5hbSBhbGlxdWFtIHNlbSBldC4gQWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0gcHVydXMuIFBlbGxlbnRlc3F1ZSBtYXNzYSBwbGFjZXJhdCBkdWlzIHVsdHJpY2llcy4gTmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZC4gVmVsaXQgYWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dC4gSWQgZGlhbSBtYWVjZW5hcyB1bHRyaWNpZXMgbWkgZWdldC4gRGlhbSBkb25lYyBhZGlwaXNjaW5nIHRyaXN0aXF1ZSByaXN1cyBuZWMuIEVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMgYWxpcXVhbS4gUmlzdXMgc2VkIHZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0gYmxhbmRpdC4gT3JjaSBhYyBhdWN0b3IgYXVndWUgbWF1cmlzLiBMYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYS4gUmlzdXMgcXVpcyB2YXJpdXMgcXVhbSBxdWlzcXVlIGlkIGRpYW0gdmVsIHF1YW0uCgpCbGFuZGl0IGN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcyBtaS4gSW4gbW9sbGlzIG51bmMgc2VkIGlkIHNlbXBlci4gQXQgdXJuYSBjb25kaW1lbnR1bSBtYXR0aXMgcGVsbGVudGVzcXVlIGlkIG5pYmggdG9ydG9yLiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cy4gSW4gbWV0dXMgdnVscHV0YXRlIGV1IHNjZWxlcmlzcXVlLiBOaXNsIG5pc2kgc2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUgYXVjdG9yLiBVbHRyaWNlcyBlcm9zIGluIGN1cnN1cyB0dXJwaXMgbWFzc2EuIEFlbmVhbiBwaGFyZXRyYSBtYWduYSBhYyBwbGFjZXJhdCB2ZXN0aWJ1bHVtIGxlY3R1cyBtYXVyaXMuIElkIG5lcXVlIGFsaXF1YW0gdmVzdGlidWx1bSBtb3JiaSBibGFuZGl0IGN1cnN1cy4gU2l0IGFtZXQgbnVsbGEgZmFjaWxpc2kgbW9yYmkgdGVtcHVzIGlhY3VsaXMgdXJuYS4gQ29tbW9kbyBudWxsYSBmYWNpbGlzaSBudWxsYW0gdmVoaWN1bGEgaXBzdW0uIEZhY2lsaXNpIGV0aWFtIGRpZ25pc3NpbSBkaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZS4gVmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQgZWdlc3Rhcy4gQWxpcXVldCBlZ2V0IHNpdCBhbWV0IHRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbS4gUG9zdWVyZSBhYyB1dCBjb25zZXF1YXQgc2VtcGVyIHZpdmVycmEgbmFtIGxpYmVybyBqdXN0byBsYW9yZWV0LiBTZWQgdnVscHV0YXRlIG1pIHNpdCBhbWV0IG1hdXJpcy4gUG9zdWVyZSBtb3JiaSBsZW8gdXJuYSBtb2xlc3RpZSBhdC4gVmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQgZWdlc3RhcyBkdWkgaWQuCgpTaXQgYW1ldCB2ZW5lbmF0aXMgdXJuYSBjdXJzdXMgZWdldCBudW5jIHNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzLiBOaXNsIHB1cnVzIGluIG1vbGxpcyBudW5jIHNlZCBpZCBzZW1wZXIgcmlzdXMuIFZlbGl0IHNjZWxlcmlzcXVlIGluIGRpY3R1bSBub24gY29uc2VjdGV0dXIgYS4gUHJldGl1bSB2dWxwdXRhdGUgc2FwaWVuIG5lYyBzYWdpdHRpcy4gTWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIuIFZ1bHB1dGF0ZSBtaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kby4gRmF1Y2lidXMgdHVycGlzIGluIGV1IG1pIGJpYmVuZHVtIG5lcXVlLiBGYWNpbGlzaSBjcmFzIGZlcm1lbnR1bSBvZGlvIGV1IGZldWdpYXQgcHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdC4gTmliaCB0b3J0b3IgaWQgYWxpcXVldCBsZWN0dXMgcHJvaW4gbmliaCBuaXNsIGNvbmRpbWVudHVtLiBDcmFzIHRpbmNpZHVudCBsb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUgZWdldCBhcmN1LgoKRW5pbSB1dCB0ZWxsdXMgZWxlbWVudHVtIHNhZ2l0dGlzIHZpdGFlIGV0LiBFdGlhbSBkaWduaXNzaW0gZGlhbSBxdWlzIGVuaW0uIEVsaXQgZWdldCBncmF2aWRhIGN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcy4gTGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8gdGVtcG9yIG9yY2kgZGFwaWJ1cy4gQ29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhLiBQZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldC4gVmVuZW5hdGlzIGNyYXMgc2VkIGZlbGlzIGVnZXQuIElwc3VtIGEgYXJjdSBjdXJzdXMgdml0YWUuIEFlbmVhbiBzZWQgYWRpcGlzY2luZyBkaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlLiBGZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudC4gU3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkIGVuaW0gdXQgc2VtLiBTZWQgdmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUuIEZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIG1hZWNlbmFzIHBoYXJldHJhIGNvbnZhbGxpcyBwb3N1ZXJlIG1vcmJpIGxlby4gQSBhcmN1IGN1cnN1cyB2aXRhZSBjb25ndWUgbWF1cmlzIHJob25jdXMgYWVuZWFuIHZlbCBlbGl0LiBOZWMgZmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UgaWQgdmVsaXQgdXQuIEluIGlhY3VsaXMgbnVuYyBzZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZS4gVHVycGlzIGluIGV1IG1pIGJpYmVuZHVtIG5lcXVlLiBNYXNzYSBpZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdC4KCkV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dC4gUXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQgZGlhbSB1dCB2ZW5lbmF0aXMuIFNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzIGluIGFsaXF1YW0uIE5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBtYWVjZW5hcy4gU2l0IGFtZXQganVzdG8gZG9uZWMgZW5pbS4gTGFjdXMgc2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cyBmZXVnaWF0IGluIGFudGUuIFVsdHJpY2VzIGR1aSBzYXBpZW4gZWdldCBtaSBwcm9pbiBzZWQuIFVybmEgcG9ydHRpdG9yIHJob25jdXMgZG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQuIE5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZS4gUG9zdWVyZSBzb2xsaWNpdHVkaW4gYWxpcXVhbSB1bHRyaWNlcyBzYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyLiBFbGVtZW50dW0gdGVtcHVzIGVnZXN0YXMgc2VkIHNlZCByaXN1cyBwcmV0aXVtIHF1YW0gdnVscHV0YXRlLiBTaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBBbWV0IGNvbW1vZG8gbnVsbGEgZmFjaWxpc2kgbnVsbGFtLiBQZWxsZW50ZXNxdWUgZGlhbSB2b2x1dHBhdCBjb21tb2RvIHNlZCBlZ2VzdGFzLgoKTWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIgc2FwaWVuLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4gZmF1Y2lidXMgZXQuIENvbnNlcXVhdCBhYyBmZWxpcyBkb25lYyBldCBvZGlvIHBlbGxlbnRlc3F1ZS4gTG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbiBvcm5hcmUgcXVhbSB2aXZlcnJhLiBNYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gTXVzIG1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhIG51bmMgdmVsIHJpc3VzLiBNb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhLiBDb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltIG5lcXVlLiBGZWxpcyBpbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtIGxlbyB2ZWwgb3JjaS4gQWVuZWFuIHBoYXJldHJhIG1hZ25hIGFjIHBsYWNlcmF0IHZlc3RpYnVsdW0gbGVjdHVzIG1hdXJpcyB1bHRyaWNlcyBlcm9zLiBBbWV0IHJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMuIEVsZW1lbnR1bSBuaXNpIHF1aXMgZWxlaWZlbmQgcXVhbSBhZGlwaXNjaW5nIHZpdGFlIHByb2luIHNhZ2l0dGlzLiBFdCB0b3J0b3IgY29uc2VxdWF0IGlkIHBvcnRhLiBOb24gc29kYWxlcyBuZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdCBhbWV0LgoKVml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYyB0b3J0b3Igdml0YWUuIFByb2luIG5pYmggbmlzbCBjb25kaW1lbnR1bSBpZCB2ZW5lbmF0aXMgYSBjb25kaW1lbnR1bSB2aXRhZSBzYXBpZW4uIElkIHZvbHV0cGF0IGxhY3VzIGxhb3JlZXQgbm9uLiBNYWVjZW5hcyBzZWQgZW5pbSB1dCBzZW0gdml2ZXJyYSBhbGlxdWV0LiBBbWV0IGZhY2lsaXNpcyBtYWduYSBldGlhbSB0ZW1wb3Igb3JjaSBldS4gSW4gYXJjdSBjdXJzdXMgZXVpc21vZCBxdWlzIHZpdmVycmEuIE5pc2wgcHVydXMgaW4gbW9sbGlzIG51bmMgc2VkIGlkIHNlbXBlciByaXN1cy4gTG9yZW0gZG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzIGV0IG1vbGVzdGllIGFjIGZldWdpYXQuIE5vbiBjb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5hLiBMYW9yZWV0IHN1c3BlbmRpc3NlIGludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVybyBpZCBmYXVjaWJ1cyBuaXNsLiBFZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UgdWx0cmljZXMgZ3JhdmlkYSBkaWN0dW0gZnVzY2UgdXQuIEFsaXF1ZXQgcmlzdXMgZmV1Z2lhdCBpbiBhbnRlLiBTZW1wZXIgZWdldCBkdWlzIGF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcyBwZWxsZW50ZXNxdWUuCgpUZW1wb3Igb3JjaSBldSBsb2JvcnRpcyBlbGVtZW50dW0gbmliaC4gU2l0IGFtZXQgbWF1cmlzIGNvbW1vZG8gcXVpcyBpbXBlcmRpZXQgbWFzc2EgdGluY2lkdW50IG51bmMgcHVsdmluYXIuIFZlbGl0IHNjZWxlcmlzcXVlIGluIGRpY3R1bSBub24uIFNlbSBldCB0b3J0b3IgY29uc2VxdWF0IGlkIHBvcnRhIG5pYmggdmVuZW5hdGlzIGNyYXMgc2VkLiBQb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBRdWlzcXVlIGlkIGRpYW0gdmVsIHF1YW0uIFR1cnBpcyBlZ2VzdGFzIHNlZCB0ZW1wdXMgdXJuYSBldCBwaGFyZXRyYSBwaGFyZXRyYSBtYXNzYSBtYXNzYS4gTW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYy4gQSBjcmFzIHNlbXBlciBhdWN0b3IgbmVxdWUgdml0YWUgdGVtcHVzLiBWZWwgZWxpdCBzY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyLiBOdW5jIGxvYm9ydGlzIG1hdHRpcyBhbGlxdWFtIGZhdWNpYnVzLgoKQWRpcGlzY2luZyBlbGl0IGR1aXMgdHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoLiBGZXJtZW50dW0gZXQgc29sbGljaXR1ZGluIGFjIG9yY2kuIEEgY3JhcyBzZW1wZXIgYXVjdG9yIG5lcXVlLiBGYXVjaWJ1cyBhIHBlbGxlbnRlc3F1ZSBzaXQgYW1ldCBwb3J0dGl0b3IgZWdldCBkb2xvciBtb3JiaSBub24uIFRvcnRvciBjb25zZXF1YXQgaWQgcG9ydGEgbmliaC4gQWNjdW1zYW4gbGFjdXMgdmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQgZWdlc3RhcyBkdWkgaWQuIE5vbiBzb2RhbGVzIG5lcXVlIHNvZGFsZXMgdXQgZXRpYW0gc2l0IGFtZXQgbmlzbC4gQWMgdGluY2lkdW50IHZpdGFlIHNlbXBlciBxdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdCBkaWFtLiBWaXZlcnJhIHZpdGFlIGNvbmd1ZSBldSBjb25zZXF1YXQgYWMgZmVsaXMgZG9uZWMuIEF1Z3VlIHV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cy4gVXQgbGVjdHVzIGFyY3UgYmliZW5kdW0gYXQgdmFyaXVzIHZlbC4gVGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuIHBoYXJldHJhLiBWaXRhZSBlbGVtZW50dW0gY3VyYWJpdHVyIHZpdGFlIG51bmMgc2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0LiBBdWN0b3IgdXJuYSBudW5jIGlkIGN1cnN1cyBtZXR1cyBhbGlxdWFtIGVsZWlmZW5kLiBBdWd1ZSBtYXVyaXMgYXVndWUgbmVxdWUgZ3JhdmlkYS4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzIGludGVnZXIuIFN1c3BlbmRpc3NlIHVsdHJpY2VzIGdyYXZpZGEgZGljdHVtIGZ1c2NlIHV0IHBsYWNlcmF0IG9yY2kgbnVsbGEgcGVsbGVudGVzcXVlLgoKVHVycGlzIGVnZXN0YXMgc2VkIHRlbXB1cyB1cm5hIGV0LiBBZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdCBpbXBlcmRpZXQgZHVpLiBJbiB2aXRhZSB0dXJwaXMgbWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMgZWdlc3Rhcy4gU2VkIHB1bHZpbmFyIHByb2luIGdyYXZpZGEgaGVuZHJlcml0LiBTdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gRGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kIHF1aXMgdml2ZXJyYSBuaWJoIGNyYXMuIElwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzLiBPcmNpIHNhZ2l0dGlzIGV1IHZvbHV0cGF0IG9kaW8uIEV1IHVsdHJpY2VzIHZpdGFlIGF1Y3RvciBldS4gVWxsYW1jb3JwZXIgYSBsYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1IG5vbiBvZGlvLiBTZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZSBjb25ndWUuCgpVdCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0LiBNYXR0aXMgZW5pbSB1dCB0ZWxsdXMgZWxlbWVudHVtLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgcGVsbGVudGVzcXVlLiBWZXN0aWJ1bHVtIG1vcmJpIGJsYW5kaXQgY3Vyc3VzIHJpc3VzIGF0IHVsdHJpY2VzLiBVbHRyaWNlcyBzYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQgZHVpcyBhdC4gVXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bS4gQ3Vyc3VzIGluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMgc2l0LiBVbHRyaWNpZXMgbWkgZWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlLiBOdW5jIHNjZWxlcmlzcXVlIHZpdmVycmEgbWF1cmlzIGluIGFsaXF1YW0gc2VtLiBWaXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIgbWFsZXN1YWRhIG51bmMgdmVsIHJpc3VzIGNvbW1vZG8uIFVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZSBpZCBuaWJoLiBQZWxsZW50ZXNxdWUgZXUgdGluY2lkdW50IHRvcnRvciBhbGlxdWFtIG51bGxhIGZhY2lsaXNpIGNyYXMgZmVybWVudHVtIG9kaW8uIEZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMuIENvbnNlcXVhdCBpbnRlcmR1bSB2YXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZSBlbmltLiBFdWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQuCgpWaXZlcnJhIG1hZWNlbmFzIGFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMuIEV1IG1pIGJpYmVuZHVtIG5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluLiBFbmltIG5lcXVlIHZvbHV0cGF0IGFjIHRpbmNpZHVudCB2aXRhZSBzZW1wZXIgcXVpcyBsZWN0dXMuIER1aXMgYXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZS4gTm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYS4gRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcy4gTWF1cmlzIHNpdCBhbWV0IG1hc3NhIHZpdGFlIHRvcnRvciBjb25kaW1lbnR1bS4gQ3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhIG5pYmggY3JhcyBwdWx2aW5hciBtYXR0aXMuIFNlbXBlciB2aXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0LiBRdWFtIHBlbGxlbnRlc3F1ZSBuZWMgbmFtIGFsaXF1YW0gc2VtIGV0IHRvcnRvci4gVml0YWUgY29uZ3VlIG1hdXJpcyByaG9uY3VzIGFlbmVhbiB2ZWwgZWxpdCBzY2VsZXJpc3F1ZS4gVGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luLiBDcmFzIG9ybmFyZSBhcmN1IGR1aSB2aXZhbXVzIGFyY3UgZmVsaXMgYmliZW5kdW0gdXQgdHJpc3RpcXVlLgoKRWxpdCBlZ2V0IGdyYXZpZGEgY3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzLiBMZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldC4gTmFtIGxpYmVybyBqdXN0byBsYW9yZWV0IHNpdC4gRXJvcyBpbiBjdXJzdXMgdHVycGlzIG1hc3NhIHRpbmNpZHVudCBkdWkuIERpY3R1bSB2YXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYS4gQWRpcGlzY2luZyB0cmlzdGlxdWUgcmlzdXMgbmVjIGZldWdpYXQuIEVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbS4gTWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaS4gUXVhbSB2dWxwdXRhdGUgZGlnbmlzc2ltIHN1c3BlbmRpc3NlIGluIGVzdCBhbnRlIGluIG5pYmggbWF1cmlzLiBBZW5lYW4gdmVsIGVsaXQgc2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIElwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzLiBJbXBlcmRpZXQgc2VkIGV1aXNtb2QgbmlzaSBwb3J0YSBsb3JlbSBtb2xsaXMuIFB1bHZpbmFyIG5lcXVlIGxhb3JlZXQgc3VzcGVuZGlzc2UgaW50ZXJkdW0uIFNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlLiBHcmF2aWRhIGRpY3R1bSBmdXNjZSB1dCBwbGFjZXJhdCBvcmNpIG51bGxhLiBWaXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjLiBWYXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZS4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0LgoKTmlzaSB2aXRhZSBzdXNjaXBpdCB0ZWxsdXMgbWF1cmlzIGEgZGlhbSBtYWVjZW5hcy4gT3JjaSBkYXBpYnVzIHVsdHJpY2VzIGluIGlhY3VsaXMgbnVuYy4gU2NlbGVyaXNxdWUgaW4gZGljdHVtIG5vbiBjb25zZWN0ZXR1ciBhIGVyYXQgbmFtLiBWaXRhZSBlbGVtZW50dW0gY3VyYWJpdHVyIHZpdGFlIG51bmMgc2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0LiBTZWQgdWxsYW1jb3JwZXIgbW9yYmkgdGluY2lkdW50IG9ybmFyZSBtYXNzYS4gQ29uc2VxdWF0IHNlbXBlciB2aXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldC4gQ29udmFsbGlzIGNvbnZhbGxpcyB0ZWxsdXMgaWQgaW50ZXJkdW0gdmVsaXQgbGFvcmVldCBpZC4gRWdldCBmZWxpcyBlZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzIGFsaXF1YW0uIFNpdCBhbWV0IGp1c3RvIGRvbmVjIGVuaW0gZGlhbSB2dWxwdXRhdGUgdXQgcGhhcmV0cmEgc2l0LiBJbnRlcmR1bSB2YXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZSBlbmltIG51bGxhIGFsaXF1ZXQuIEFudGUgbWV0dXMgZGljdHVtIGF0IHRlbXBvciBjb21tb2RvLiBOaXNpIGVzdCBzaXQgYW1ldCBmYWNpbGlzaXMgbWFnbmEgZXRpYW0gdGVtcG9yIG9yY2kuIFZpdmVycmEgbmliaCBjcmFzIHB1bHZpbmFyIG1hdHRpcyBudW5jLgoKTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMuIENvbW1vZG8gbnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtIGEuIFNlZCBsZWN0dXMgdmVzdGlidWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkLiBNYXNzYSB0aW5jaWR1bnQgbnVuYyBwdWx2aW5hciBzYXBpZW4uIFNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gVGVtcHVzIHF1YW0gcGVsbGVudGVzcXVlIG5lYyBuYW0gYWxpcXVhbSBzZW0uIExlbyBkdWlzIHV0IGRpYW0gcXVhbSBudWxsYSBwb3J0dGl0b3IgbWFzc2EgaWQuIE9kaW8gdXQgZW5pbSBibGFuZGl0IHZvbHV0cGF0IG1hZWNlbmFzIHZvbHV0cGF0LiBTYWdpdHRpcyBuaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhIGp1c3RvIG5lYy4gU2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUuIEFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQgZXN0IHZlbGl0IGVnZXN0YXMgZHVpIGlkLiBBcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzLiBGYWNpbGlzaSBudWxsYW0gdmVoaWN1bGEgaXBzdW0gYSBhcmN1LiBTYWdpdHRpcyBvcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQuCgpFbmltIGZhY2lsaXNpcyBncmF2aWRhIG5lcXVlIGNvbnZhbGxpcyBhIGNyYXMuIE51bGxhbSBub24gbmlzaSBlc3Qgc2l0LiBTb2xsaWNpdHVkaW4gdGVtcG9yIGlkIGV1IG5pc2wgbnVuYyBtaSBpcHN1bS4gRXUgY29uc2VxdWF0IGFjIGZlbGlzIGRvbmVjIGV0LiBBbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3RpcXVlIG1hZ25hIHNpdC4gQmxhbmRpdCBjdXJzdXMgcmlzdXMgYXQgdWx0cmljZXMgbWkgdGVtcHVzIGltcGVyZGlldCBudWxsYSBtYWxlc3VhZGEuIFR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bSBuZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMuIEVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluLiBTaXQgYW1ldCB2b2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlIG5pc2kgdml0YWUuIEludGVnZXIgZW5pbSBuZXF1ZSB2b2x1dHBhdCBhYyB0aW5jaWR1bnQuIFNjZWxlcmlzcXVlIGVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbi4gRmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0IGFtZXQuIE1hdXJpcyB2aXRhZSB1bHRyaWNpZXMgbGVvIGludGVnZXIuIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0IHF1aXNxdWUgc2FnaXR0aXMgcHVydXMgc2l0LiBBbGlxdWFtIGVsZWlmZW5kIG1pIGluIG51bGxhIHBvc3VlcmUuIEV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuLiBEdWlzIHVsdHJpY2llcyBsYWN1cyBzZWQgdHVycGlzIHRpbmNpZHVudC4gTW9sZXN0aWUgYSBpYWN1bGlzIGF0IGVyYXQgcGVsbGVudGVzcXVlIGFkaXBpc2NpbmcgY29tbW9kbyBlbGl0IGF0LiBUcmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhLiBQaGFzZWxsdXMgZmF1Y2lidXMgc2NlbGVyaXNxdWUgZWxlaWZlbmQgZG9uZWMgcHJldGl1bSB2dWxwdXRhdGUgc2FwaWVuLgoKSW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEgZGljdHVtc3QgcXVpc3F1ZS4gU2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EuIFZpdmVycmEgYWNjdW1zYW4gaW4gbmlzbCBuaXNpIHNjZWxlcmlzcXVlIGV1LiBFbmltIHV0IHNlbSB2aXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMuIFF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIE9kaW8gbW9yYmkgcXVpcyBjb21tb2RvIG9kaW8gYWVuZWFuIHNlZCBhZGlwaXNjaW5nIGRpYW0uIFZpdGFlIHRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMuIFZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbSBlcmF0IHZlbGl0IHNjZWxlcmlzcXVlIGluLiBCbGFuZGl0IGN1cnN1cyByaXN1cyBhdCB1bHRyaWNlcyBtaS4gTnVsbGFtIHZlaGljdWxhIGlwc3VtIGEgYXJjdSBjdXJzdXMgdml0YWUgY29uZ3VlLiBMb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bSB2YXJpdXMuCgpQdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlLiBNYXNzYSB2aXRhZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYS4gRXJhdCB2ZWxpdCBzY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uLiBSdXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9yIGFsaXF1YW0uIEZldWdpYXQgaW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0LiBTZWQgZmF1Y2lidXMgdHVycGlzIGluIGV1IG1pLiBJbiBoZW5kcmVyaXQgZ3JhdmlkYSBydXRydW0gcXVpc3F1ZSBub24gdGVsbHVzIG9yY2kgYWMgYXVjdG9yLiBTYWdpdHRpcyBhbGlxdWFtIG1hbGVzdWFkYSBiaWJlbmR1bSBhcmN1IHZpdGFlIGVsZW1lbnR1bSBjdXJhYml0dXIuIEFlbmVhbiBzZWQgYWRpcGlzY2luZyBkaWFtIGRvbmVjIGFkaXBpc2NpbmcgdHJpc3RpcXVlLiBUZW1wdXMgZWdlc3RhcyBzZWQgc2VkIHJpc3VzIHByZXRpdW0gcXVhbSB2dWxwdXRhdGUgZGlnbmlzc2ltLiBWaXZlcnJhIG5hbSBsaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMuIFNhZ2l0dGlzIG9yY2kgYSBzY2VsZXJpc3F1ZSBwdXJ1cyBzZW1wZXIgZWdldCBkdWlzIGF0IHRlbGx1cy4gVGluY2lkdW50IGFyY3Ugbm9uIHNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQuIENyYXMgc2VkIGZlbGlzIGVnZXQgdmVsaXQgYWxpcXVldCBzYWdpdHRpcy4gU2FnaXR0aXMgcHVydXMgc2l0IGFtZXQgdm9sdXRwYXQgY29uc2VxdWF0LiBFdWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlIG9kaW8gdXQgZW5pbS4gVmVsIHJpc3VzIGNvbW1vZG8gdml2ZXJyYSBtYWVjZW5hcyBhY2N1bXNhbiBsYWN1cyB2ZWwgZmFjaWxpc2lzLiBEaWFtIHBoYXNlbGx1cyB2ZXN0aWJ1bHVtIGxvcmVtIHNlZCByaXN1cy4gVml2ZXJyYSBzdXNwZW5kaXNzZSBwb3RlbnRpIG51bGxhbSBhYyB0b3J0b3Igdml0YWUgcHVydXMgZmF1Y2lidXMgb3JuYXJlLgoKRG9sb3IgbWFnbmEgZWdldCBlc3QgbG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIuIEZldWdpYXQgaW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYS4gSW50ZWdlciBmZXVnaWF0IHNjZWxlcmlzcXVlIHZhcml1cyBtb3JiaSBlbmltIG51bmMuIEFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMuIE5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEganVzdG8gbmVjIHVsdHJpY2VzLiBWZWxpdCBhbGlxdWV0IHNhZ2l0dGlzIGlkIGNvbnNlY3RldHVyIHB1cnVzIHV0IGZhdWNpYnVzIHB1bHZpbmFyIGVsZW1lbnR1bS4gTW9sbGlzIG51bmMgc2VkIGlkIHNlbXBlciByaXN1cyBpbi4gQXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bSB2YXJpdXMuIEF0IHF1aXMgcmlzdXMgc2VkIHZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0gYmxhbmRpdC4gTWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlciBtYWxlc3VhZGEuIEFjY3Vtc2FuIGxhY3VzIHZlbCBmYWNpbGlzaXMgdm9sdXRwYXQuIExhY3VzIHZpdmVycmEgdml0YWUgY29uZ3VlIGV1IGNvbnNlcXVhdCBhYyBmZWxpcyBkb25lYyBldC4gUHJldGl1bSBuaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtLiBRdWFtIG51bGxhIHBvcnR0aXRvciBtYXNzYSBpZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdC4KClJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhIGp1c3RvLiBNYWduYSBmcmluZ2lsbGEgdXJuYSBwb3J0dGl0b3IgcmhvbmN1cyBkb2xvciBwdXJ1cyBub24gZW5pbS4gVmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIgbG9yZW0gZG9uZWMgbWFzc2Egc2FwaWVuIGZhdWNpYnVzLiBTZWQgcmlzdXMgdWx0cmljaWVzIHRyaXN0aXF1ZSBudWxsYSBhbGlxdWV0IGVuaW0gdG9ydG9yIGF0LiBVcm5hIGlkIHZvbHV0cGF0IGxhY3VzIGxhb3JlZXQgbm9uIGN1cmFiaXR1ciBncmF2aWRhLiBOZXF1ZSBlZ2VzdGFzIGNvbmd1ZSBxdWlzcXVlIGVnZXN0YXMgZGlhbS4gU2FnaXR0aXMgaWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbS4gTmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gR3JhdmlkYSBhcmN1IGFjIHRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IuIEluIG1hc3NhIHRlbXBvciBuZWMgZmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UgaWQuIEEgaWFjdWxpcyBhdCBlcmF0IHBlbGxlbnRlc3F1ZS4gVXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZSB1bHRyaWNlcy4KCk1hdHRpcyB2dWxwdXRhdGUgZW5pbSBudWxsYSBhbGlxdWV0LiBOZWMgbmFtIGFsaXF1YW0gc2VtIGV0IHRvcnRvciBjb25zZXF1YXQuIEhhYml0YXNzZSBwbGF0ZWEgZGljdHVtc3QgcXVpc3F1ZSBzYWdpdHRpcyBwdXJ1cy4gTm9uIGJsYW5kaXQgbWFzc2EgZW5pbSBuZWMgZHVpLiBDb21tb2RvIG51bGxhIGZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhLiBEdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbiBmYXVjaWJ1cyBldC4gTmlzbCBuaXNpIHNjZWxlcmlzcXVlIGV1IHVsdHJpY2VzIHZpdGFlIGF1Y3Rvci4gVGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0IGVnZXN0YXMgcHVydXMgdml2ZXJyYSBhY2N1bXNhbi4gR3JhdmlkYSBjdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMuIFRlbGx1cyBtb2xlc3RpZSBudW5jIG5vbiBibGFuZGl0IG1hc3NhIGVuaW0uIEdyYXZpZGEgYXJjdSBhYyB0b3J0b3IgZGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQuIEVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldC4gUHJldGl1bSBmdXNjZSBpZCB2ZWxpdCB1dCB0b3J0b3IgcHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlLiBVdCBsZWN0dXMgYXJjdSBiaWJlbmR1bSBhdCB2YXJpdXMgdmVsLiBWaXRhZSBzYXBpZW4gcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldC4gTmVxdWUgdml0YWUgdGVtcHVzIHF1YW0gcGVsbGVudGVzcXVlIG5lYy4KClByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyIHByb2luIGdyYXZpZGEuIE5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0LiBWaXRhZSBwdXJ1cyBmYXVjaWJ1cyBvcm5hcmUgc3VzcGVuZGlzc2Ugc2VkIG5pc2kuIEludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3RpcXVlIG1hZ25hIHNpdC4gQXVjdG9yIGVsaXQgc2VkIHZ1bHB1dGF0ZSBtaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzLiBEaWFtIHF1YW0gbnVsbGEgcG9ydHRpdG9yIG1hc3NhIGlkIG5lcXVlIGFsaXF1YW0uIE5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0gaWQgbGVvIGluIHZpdGFlLiBQdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVyIG1hbGVzdWFkYSBwcm9pbiBsaWJlcm8uIFR1cnBpcyBlZ2VzdGFzIGludGVnZXIgZWdldCBhbGlxdWV0IG5pYmguIE51bGxhIHBoYXJldHJhIGRpYW0gc2l0IGFtZXQuIEx1Y3R1cyB2ZW5lbmF0aXMgbGVjdHVzIG1hZ25hIGZyaW5naWxsYSB1cm5hIHBvcnR0aXRvciByaG9uY3VzIGRvbG9yLiBVdCBzZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzIGNyYXMuIFNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMuIFF1aXNxdWUgZWdlc3RhcyBkaWFtIGluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhIG5pYmguIE1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBzZWQgdGVtcHVzLiBRdWFtIHZ1bHB1dGF0ZSBkaWduaXNzaW0gc3VzcGVuZGlzc2UgaW4gZXN0IGFudGUgaW4gbmliaCBtYXVyaXMuCgpTY2VsZXJpc3F1ZSBwdXJ1cyBzZW1wZXIgZWdldCBkdWlzIGF0IHRlbGx1cyBhdC4gU2NlbGVyaXNxdWUgdml2ZXJyYSBtYXVyaXMgaW4gYWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVudC4gRnVzY2UgaWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0gdml2ZXJyYSBzdXNwZW5kaXNzZS4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMuIFZ1bHB1dGF0ZSBvZGlvIHV0IGVuaW0gYmxhbmRpdCB2b2x1dHBhdCBtYWVjZW5hcyB2b2x1dHBhdC4gRmF1Y2lidXMgaW50ZXJkdW0gcG9zdWVyZSBsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nLiBNaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kbyBxdWlzIGltcGVyZGlldCBtYXNzYSB0aW5jaWR1bnQuIFNlZCBhcmN1IG5vbiBvZGlvIGV1aXNtb2QuIFN1c3BlbmRpc3NlIGluIGVzdCBhbnRlIGluIG5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMuIFNlZCByaXN1cyB1bHRyaWNpZXMgdHJpc3RpcXVlIG51bGxhIGFsaXF1ZXQgZW5pbSB0b3J0b3IgYXQuIEZhdWNpYnVzIHB1cnVzIGluIG1hc3NhIHRlbXBvciBuZWMgZmV1Z2lhdCBuaXNsIHByZXRpdW0gZnVzY2UuIEluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtLiBNYXNzYSB0aW5jaWR1bnQgZHVpIHV0IG9ybmFyZSBsZWN0dXMgc2l0LiBOdW5jIGVnZXQgbG9yZW0gZG9sb3Igc2VkIHZpdmVycmEgaXBzdW0gbnVuYyBhbGlxdWV0IGJpYmVuZHVtLiBFbGVtZW50dW0gaW50ZWdlciBlbmltIG5lcXVlIHZvbHV0cGF0IGFjIHRpbmNpZHVudCB2aXRhZS4gTmlzbCBwdXJ1cyBpbiBtb2xsaXMgbnVuYy4gU2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbiBvcm5hcmUgcXVhbS4gQW1ldCB2b2x1dHBhdCBjb25zZXF1YXQgbWF1cmlzIG51bmMgY29uZ3VlIG5pc2kgdml0YWUuIE5vbiBwdWx2aW5hciBuZXF1ZSBsYW9yZWV0IHN1c3BlbmRpc3NlIGludGVyZHVtIGNvbnNlY3RldHVyIGxpYmVyby4gQ3Vyc3VzIG1hdHRpcyBtb2xlc3RpZSBhIGlhY3VsaXMgYXQgZXJhdCBwZWxsZW50ZXNxdWUgYWRpcGlzY2luZyBjb21tb2RvLgoKSW4gZmVybWVudHVtIHBvc3VlcmUgdXJuYSBuZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlci4gRWxpdCBzY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudC4gQXQgYXVjdG9yIHVybmEgbnVuYyBpZC4gVWx0cmljZXMgc2FnaXR0aXMgb3JjaSBhIHNjZWxlcmlzcXVlIHB1cnVzIHNlbXBlci4gRXJvcyBkb25lYyBhYyBvZGlvIHRlbXBvciBvcmNpLiBJZCB2ZWxpdCB1dCB0b3J0b3IgcHJldGl1bS4gQ29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtIGluIGFyY3UuIFZhcml1cyBtb3JiaSBlbmltIG51bmMgZmF1Y2lidXMgYSBwZWxsZW50ZXNxdWUgc2l0IGFtZXQuIEV0IHRvcnRvciBhdCByaXN1cyB2aXZlcnJhIGFkaXBpc2NpbmcgYXQgaW4uIEVsaXQgdWxsYW1jb3JwZXIgZGlnbmlzc2ltIGNyYXMgdGluY2lkdW50LiBFdGlhbSBzaXQgYW1ldCBuaXNsIHB1cnVzIGluIG1vbGxpcyBudW5jIHNlZCBpZC4gVGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzLiBTZW0gdml2ZXJyYSBhbGlxdWV0IGVnZXQgc2l0IGFtZXQgdGVsbHVzIGNyYXMgYWRpcGlzY2luZy4gQ3Vyc3VzIHJpc3VzIGF0IHVsdHJpY2VzIG1pIHRlbXB1cyBpbXBlcmRpZXQgbnVsbGEgbWFsZXN1YWRhLiBEaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEgZXJhdCBuYW0gYXQuIEVuaW0gbnVsbGEgYWxpcXVldCBwb3J0dGl0b3IgbGFjdXMgbHVjdHVzIGFjY3Vtc2FuIHRvcnRvciBwb3N1ZXJlIGFjLiBGYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQgYW1ldCByaXN1cyBudWxsYW0uCgpSaG9uY3VzIHVybmEgbmVxdWUgdml2ZXJyYSBqdXN0byBuZWMgdWx0cmljZXMgZHVpLiBEaWN0dW0gdmFyaXVzIGR1aXMgYXQgY29uc2VjdGV0dXIgbG9yZW0gZG9uZWMgbWFzc2Egc2FwaWVuLiBOYW0gbGliZXJvIGp1c3RvIGxhb3JlZXQgc2l0IGFtZXQgY3Vyc3VzIHNpdCBhbWV0IGRpY3R1bS4gTW9udGVzIG5hc2NldHVyIHJpZGljdWx1cyBtdXMgbWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlci4gSW4gb3JuYXJlIHF1YW0gdml2ZXJyYSBvcmNpIHNhZ2l0dGlzIGV1IHZvbHV0cGF0IG9kaW8uIFNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbSBtYWxlc3VhZGEgYmliZW5kdW0gYXJjdS4gU2NlbGVyaXNxdWUgZXUgdWx0cmljZXMgdml0YWUgYXVjdG9yIGV1IGF1Z3VlIHV0IGxlY3R1cyBhcmN1LiBRdWlzIGxlY3R1cyBudWxsYSBhdCB2b2x1dHBhdCBkaWFtLiBGZWxpcyBlZ2V0IG51bmMgbG9ib3J0aXMgbWF0dGlzIGFsaXF1YW0gZmF1Y2lidXMgcHVydXMgaW4gbWFzc2EuIE1pIHF1aXMgaGVuZHJlcml0IGRvbG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtLiBJZCBkaWFtIG1hZWNlbmFzIHVsdHJpY2llcyBtaSBlZ2V0IG1hdXJpcyBwaGFyZXRyYS4gRmFjaWxpc2kgbW9yYmkgdGVtcHVzIGlhY3VsaXMgdXJuYSBpZC4gRWxpdCBhdCBpbXBlcmRpZXQgZHVpIGFjY3Vtc2FuIHNpdCBhbWV0IG51bGxhIGZhY2lsaXNpIG1vcmJpLiBUaW5jaWR1bnQgbG9ib3J0aXMgZmV1Z2lhdCB2aXZhbXVzIGF0LiBEaXMgcGFydHVyaWVudCBtb250ZXMgbmFzY2V0dXIgcmlkaWN1bHVzIG11cyBtYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlby4gRmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2RpbyBldSBmZXVnaWF0LiBWb2x1dHBhdCBibGFuZGl0IGFsaXF1YW0gZXRpYW0gZXJhdC4gVXQgdGVsbHVzIGVsZW1lbnR1bSBzYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcy4KCk1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBzZWQgdGVtcHVzLiBEdWkgdXQgb3JuYXJlIGxlY3R1cyBzaXQuIFNlbSB2aXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMgY3JhcyBhZGlwaXNjaW5nLiBJYWN1bGlzIHVybmEgaWQgdm9sdXRwYXQgbGFjdXMgbGFvcmVldCBub24uIFV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtIGF0IHZhcml1cy4gQXQgZXJhdCBwZWxsZW50ZXNxdWUgYWRpcGlzY2luZyBjb21tb2RvLiBWb2x1dHBhdCBzZWQgY3JhcyBvcm5hcmUgYXJjdSBkdWkgdml2YW11cyBhcmN1LiBVdCBtb3JiaSB0aW5jaWR1bnQgYXVndWUgaW50ZXJkdW0uIEFtZXQgdm9sdXRwYXQgY29uc2VxdWF0IG1hdXJpcyBudW5jIGNvbmd1ZS4gVGVtcG9yIG9yY2kgZXUgbG9ib3J0aXMgZWxlbWVudHVtIG5pYmguIFRpbmNpZHVudCBlZ2V0IG51bGxhbSBub24gbmlzaSBlc3Qgc2l0LiBMaWJlcm8gZW5pbSBzZWQgZmF1Y2lidXMgdHVycGlzIGluIGV1IG1pLiBUZWxsdXMgcGVsbGVudGVzcXVlIGV1IHRpbmNpZHVudCB0b3J0b3IgYWxpcXVhbSBudWxsYSBmYWNpbGlzaS4gSWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIuCgpWdWxwdXRhdGUgc2FwaWVuIG5lYyBzYWdpdHRpcyBhbGlxdWFtIG1hbGVzdWFkYSBiaWJlbmR1bS4gRmF1Y2lidXMgcHVydXMgaW4gbWFzc2EgdGVtcG9yLiBTY2VsZXJpc3F1ZSBpbiBkaWN0dW0gbm9uIGNvbnNlY3RldHVyIGEuIEJpYmVuZHVtIG5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtLiBMYWN1cyB2ZXN0aWJ1bHVtIHNlZCBhcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzLiBEdWkgaWQgb3JuYXJlIGFyY3Ugb2RpbyB1dCBzZW0gbnVsbGEgcGhhcmV0cmEuIE51bmMgZmF1Y2lidXMgYSBwZWxsZW50ZXNxdWUgc2l0LiBWaXRhZSBudW5jIHNlZCB2ZWxpdCBkaWduaXNzaW0gc29kYWxlcyB1dCBldS4gQ3JhcyBvcm5hcmUgYXJjdSBkdWkgdml2YW11cyBhcmN1LiBOYW0gYXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gVWxsYW1jb3JwZXIgZGlnbmlzc2ltIGNyYXMgdGluY2lkdW50IGxvYm9ydGlzIGZldWdpYXQgdml2YW11cyBhdCBhdWd1ZS4gU2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IGR1aXMgdHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoLgoKRmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhIGVzdCB1bGxhbWNvcnBlciBlZ2V0IG51bGxhIGZhY2lsaXNpIGV0aWFtLiBUZW1wb3Igb3JjaSBkYXBpYnVzIHVsdHJpY2VzIGluIGlhY3VsaXMgbnVuYyBzZWQgYXVndWUuIEEgbGFjdXMgdmVzdGlidWx1bSBzZWQgYXJjdSBub24gb2RpbyBldWlzbW9kIGxhY2luaWEuIFNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbSBzaXQuIEZlbGlzIGJpYmVuZHVtIHV0IHRyaXN0aXF1ZSBldCBlZ2VzdGFzIHF1aXMgaXBzdW0gc3VzcGVuZGlzc2UuIFByb2luIHNhZ2l0dGlzIG5pc2wgcmhvbmN1cyBtYXR0aXMgcmhvbmN1cyB1cm5hIG5lcXVlIHZpdmVycmEuIENvbmRpbWVudHVtIGlkIHZlbmVuYXRpcyBhIGNvbmRpbWVudHVtIHZpdGFlIHNhcGllbi4gRmFjaWxpc2lzIG1hdXJpcyBzaXQgYW1ldCBtYXNzYSB2aXRhZSB0b3J0b3IuIFBlbGxlbnRlc3F1ZSBhZGlwaXNjaW5nIGNvbW1vZG8gZWxpdCBhdC4gQWxpcXVhbSBldGlhbSBlcmF0IHZlbGl0IHNjZWxlcmlzcXVlIGluIGRpY3R1bSBub24uIEFsaXF1YW0gbWFsZXN1YWRhIGJpYmVuZHVtIGFyY3Ugdml0YWUgZWxlbWVudHVtIGN1cmFiaXR1ciB2aXRhZSBudW5jLiBBIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5hIGR1aXMuIER1aSBhY2N1bXNhbiBzaXQgYW1ldCBudWxsYSBmYWNpbGlzaSBtb3JiaSB0ZW1wdXMgaWFjdWxpcy4gTmVjIGZldWdpYXQgbmlzbCBwcmV0aXVtIGZ1c2NlLiBUdXJwaXMgbnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhLiBWdWxwdXRhdGUgZW5pbSBudWxsYSBhbGlxdWV0IHBvcnR0aXRvci4gQW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMgdWx0cmljaWVzIG1pLgoKRmVybWVudHVtIGV0IHNvbGxpY2l0dWRpbiBhYyBvcmNpIHBoYXNlbGx1cy4gR3JhdmlkYSBpbiBmZXJtZW50dW0gZXQgc29sbGljaXR1ZGluIGFjIG9yY2kgcGhhc2VsbHVzIGVnZXN0YXMuIExlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jIHZlbCByaXN1cyBjb21tb2RvLiBTdXNwZW5kaXNzZSBpbiBlc3QgYW50ZSBpbiBuaWJoIG1hdXJpcy4gRHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bS4gVWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyIG1vcmJpIHRpbmNpZHVudCBvcm5hcmUgbWFzc2EgZWdldC4gU29kYWxlcyBuZXF1ZSBzb2RhbGVzIHV0IGV0aWFtIHNpdCBhbWV0LiBBbGlxdWV0IGVuaW0gdG9ydG9yIGF0IGF1Y3RvciB1cm5hIG51bmMgaWQgY3Vyc3VzIG1ldHVzLiBIYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhLiBTZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bS4gU2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzLiBFdWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQuIFZpdmVycmEgbWFlY2VuYXMgYWNjdW1zYW4gbGFjdXMgdmVsIGZhY2lsaXNpcyB2b2x1dHBhdCBlc3QgdmVsaXQuIEluIG5pYmggbWF1cmlzIGN1cnN1cyBtYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzIGF0IGVyYXQuCgpTZW1wZXIgcmlzdXMgaW4gaGVuZHJlcml0IGdyYXZpZGEgcnV0cnVtIHF1aXNxdWUgbm9uLiBMZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQgZGlhbS4gTnVuYyBlZ2V0IGxvcmVtIGRvbG9yIHNlZCB2aXZlcnJhIGlwc3VtLiBJbiBmZXJtZW50dW0gZXQgc29sbGljaXR1ZGluIGFjIG9yY2kgcGhhc2VsbHVzIGVnZXN0YXMuIE5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0uIE1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpIHZpdGFlIHN1c2NpcGl0IHRlbGx1cy4gVml0YWUgdHVycGlzIG1hc3NhIHNlZCBlbGVtZW50dW0uIFBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZCBlbGVtZW50dW0gbmlzaSBxdWlzLiBFbGVtZW50dW0gY3VyYWJpdHVyIHZpdGFlIG51bmMgc2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1LiBOb24gcHVsdmluYXIgbmVxdWUgbGFvcmVldCBzdXNwZW5kaXNzZSBpbnRlcmR1bSBjb25zZWN0ZXR1ci4gRW5pbSB0b3J0b3IgYXQgYXVjdG9yIHVybmEgbnVuYy4gTnVsbGEgZmFjaWxpc2kgbnVsbGFtIHZlaGljdWxhIGlwc3VtIGEgYXJjdSBjdXJzdXMgdml0YWUuIElkIGV1IG5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZS4gU2NlbGVyaXNxdWUgZmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbi4KCkNvbW1vZG8gZWxpdCBhdCBpbXBlcmRpZXQgZHVpIGFjY3Vtc2FuIHNpdCBhbWV0IG51bGxhLiBNaSBwcm9pbiBzZWQgbGliZXJvIGVuaW0gc2VkIGZhdWNpYnVzLiBBbGlxdWV0IGJpYmVuZHVtIGVuaW0gZmFjaWxpc2lzIGdyYXZpZGEgbmVxdWUgY29udmFsbGlzIGEgY3Jhcy4gUHVsdmluYXIgbmVxdWUgbGFvcmVldCBzdXNwZW5kaXNzZSBpbnRlcmR1bSBjb25zZWN0ZXR1ci4gRGlnbmlzc2ltIGNvbnZhbGxpcyBhZW5lYW4gZXQgdG9ydG9yIGF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZy4gRXUgdWx0cmljZXMgdml0YWUgYXVjdG9yIGV1IGF1Z3VlIHV0IGxlY3R1cyBhcmN1IGJpYmVuZHVtLiBWZWwgdHVycGlzIG51bmMgZWdldCBsb3JlbSBkb2xvciBzZWQgdml2ZXJyYSBpcHN1bSBudW5jLiBWaXZlcnJhIGFsaXF1ZXQgZWdldCBzaXQgYW1ldCB0ZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUuIFNvZGFsZXMgbmVxdWUgc29kYWxlcyB1dCBldGlhbS4gU2VkIHZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1LiBFcmF0IG5hbSBhdCBsZWN0dXMgdXJuYS4gRXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bS4gT3JuYXJlIG1hc3NhIGVnZXQgZWdlc3RhcyBwdXJ1cyB2aXZlcnJhLiBNYXNzYSBpZCBuZXF1ZSBhbGlxdWFtIHZlc3RpYnVsdW0gbW9yYmkgYmxhbmRpdC4gVmVzdGlidWx1bSByaG9uY3VzIGVzdCBwZWxsZW50ZXNxdWUgZWxpdCB1bGxhbWNvcnBlci4gQXQgaW4gdGVsbHVzIGludGVnZXIgZmV1Z2lhdCBzY2VsZXJpc3F1ZSB2YXJpdXMgbW9yYmkgZW5pbSBudW5jLgoKU2VkIHRlbXB1cyB1cm5hIGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhIHVsdHJpY2llcyBtaS4gQW1ldCBwdXJ1cyBncmF2aWRhIHF1aXMgYmxhbmRpdCB0dXJwaXMgY3Vyc3VzIGluLiBIYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMgZXQgbWFsZXN1YWRhLiBFbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhIGVzdCB1bGxhbWNvcnBlciBlZ2V0IG51bGxhLiBOaWJoIGNyYXMgcHVsdmluYXIgbWF0dGlzIG51bmMgc2VkIGJsYW5kaXQgbGliZXJvIHZvbHV0cGF0LiBOaXNpIHBvcnRhIGxvcmVtIG1vbGxpcyBhbGlxdWFtIHV0IHBvcnR0aXRvciBsZW8gYSBkaWFtLiBWb2x1dHBhdCBvZGlvIGZhY2lsaXNpcyBtYXVyaXMgc2l0IGFtZXQgbWFzc2Egdml0YWUgdG9ydG9yLiBWaXZlcnJhIG9yY2kgc2FnaXR0aXMgZXUgdm9sdXRwYXQgb2RpbyBmYWNpbGlzaXMgbWF1cmlzIHNpdCBhbWV0LiBMaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtIHNpdC4gTWF1cmlzIHZpdGFlIHVsdHJpY2llcyBsZW8gaW50ZWdlciBtYWxlc3VhZGEgbnVuYy4gRW5pbSB0b3J0b3IgYXQgYXVjdG9yIHVybmEgbnVuYyBpZCBjdXJzdXMgbWV0dXMuIEVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzIHBvc3VlcmUgbW9yYmkuCgpRdWlzcXVlIGlkIGRpYW0gdmVsIHF1YW0gZWxlbWVudHVtIHB1bHZpbmFyIGV0aWFtIG5vbiBxdWFtLiBPcm5hcmUgcXVhbSB2aXZlcnJhIG9yY2kgc2FnaXR0aXMuIFRlbGx1cyBjcmFzIGFkaXBpc2NpbmcgZW5pbSBldSB0dXJwaXMgZWdlc3RhcyBwcmV0aXVtIGFlbmVhbi4gTmlzaSBsYWN1cyBzZWQgdml2ZXJyYSB0ZWxsdXMuIEV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMgbmFzY2V0dXIgcmlkaWN1bHVzLiBDb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMgYWMgb2RpbyB0ZW1wb3Igb3JjaS4gRmVsaXMgZWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcy4gU2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEuIFByb2luIHNlZCBsaWJlcm8gZW5pbSBzZWQgZmF1Y2lidXMgdHVycGlzIGluLiBNYXVyaXMgc2l0IGFtZXQgbWFzc2Egdml0YWUuIFVsdHJpY2VzIGluIGlhY3VsaXMgbnVuYyBzZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZSBjb25ndWUuIERpYW0gcXVhbSBudWxsYSBwb3J0dGl0b3IgbWFzc2EgaWQgbmVxdWUgYWxpcXVhbSB2ZXN0aWJ1bHVtLiBGZXVnaWF0IGluIGZlcm1lbnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudC4gTG9ib3J0aXMgbWF0dGlzIGFsaXF1YW0gZmF1Y2lidXMgcHVydXMgaW4gbWFzc2EgdGVtcG9yIG5lYyBmZXVnaWF0LiBEaWFtIGluIGFyY3UgY3Vyc3VzIGV1aXNtb2QgcXVpcyB2aXZlcnJhIG5pYmggY3Jhcy4gU2FnaXR0aXMgdml0YWUgZXQgbGVvIGR1aXMgdXQgZGlhbS4gUGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0IGR1aXMgdWx0cmljaWVzIGxhY3VzIHNlZC4gVGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZlbGl0IGV1aXNtb2QgaW4uCgpFcmF0IHZlbGl0IHNjZWxlcmlzcXVlIGluIGRpY3R1bS4gVWxsYW1jb3JwZXIgZWdldCBudWxsYSBmYWNpbGlzaSBldGlhbSBkaWduaXNzaW0gZGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMuIE1hdHRpcyB2dWxwdXRhdGUgZW5pbSBudWxsYSBhbGlxdWV0IHBvcnR0aXRvciBsYWN1cyBsdWN0dXMuIFZvbHV0cGF0IGNvbnNlcXVhdCBtYXVyaXMgbnVuYyBjb25ndWUgbmlzaSB2aXRhZSBzdXNjaXBpdCB0ZWxsdXMuIElkIGludGVyZHVtIHZlbGl0IGxhb3JlZXQgaWQgZG9uZWMgdWx0cmljZXMuIFF1YW0gbnVsbGEgcG9ydHRpdG9yIG1hc3NhIGlkIG5lcXVlIGFsaXF1YW0uIEdyYXZpZGEgcXVpcyBibGFuZGl0IHR1cnBpcyBjdXJzdXMgaW4uIE5vbiBjdXJhYml0dXIgZ3JhdmlkYSBhcmN1IGFjLiBTdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LiBOZWMgdGluY2lkdW50IHByYWVzZW50IHNlbXBlciBmZXVnaWF0IG5pYmggc2VkIHB1bHZpbmFyLiBOZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgbWFlY2VuYXMgcGhhcmV0cmEgY29udmFsbGlzLiBTZW1wZXIgcXVpcyBsZWN0dXMgbnVsbGEgYXQuIFVsdHJpY2VzIGR1aSBzYXBpZW4gZWdldCBtaSBwcm9pbiBzZWQgbGliZXJvIGVuaW0uCgpNYWVjZW5hcyBwaGFyZXRyYSBjb252YWxsaXMgcG9zdWVyZSBtb3JiaS4gRXUgbmlzbCBudW5jIG1pIGlwc3VtLiBDb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdCBsYW9yZWV0IGlkIGRvbmVjLiBFdSBhdWd1ZSB1dCBsZWN0dXMgYXJjdS4gVG9ydG9yIGRpZ25pc3NpbSBjb252YWxsaXMgYWVuZWFuIGV0IHRvcnRvciBhdCByaXN1cy4gRXJvcyBkb25lYyBhYyBvZGlvIHRlbXBvciBvcmNpIGRhcGlidXMuIEFjIHRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMgdml2ZXJyYS4gVG9ydG9yIHBvc3VlcmUgYWMgdXQgY29uc2VxdWF0IHNlbXBlci4gTW9sZXN0aWUgYWMgZmV1Z2lhdCBzZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0LiBQb3J0YSBsb3JlbSBtb2xsaXMgYWxpcXVhbSB1dCBwb3J0dGl0b3IgbGVvIGEuIEZhdWNpYnVzIG9ybmFyZSBzdXNwZW5kaXNzZSBzZWQgbmlzaSBsYWN1cyBzZWQgdml2ZXJyYSB0ZWxsdXMgaW4uIEFjIHR1cnBpcyBlZ2VzdGFzIHNlZCB0ZW1wdXMuIE5pc2kgcG9ydGEgbG9yZW0gbW9sbGlzIGFsaXF1YW0gdXQgcG9ydHRpdG9yIGxlbyBhLgoKRXQgbmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2VzdGFzLiBBIGRpYW0gc29sbGljaXR1ZGluIHRlbXBvciBpZCBldSBuaXNsLiBMZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldCBudWxsYSBmYWNpbGlzaSBldGlhbS4gT3JuYXJlIGFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMgZWxlaWZlbmQgcXVhbSBhZGlwaXNjaW5nLiBBcmN1IG5vbiBvZGlvIGV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZC4gUGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldC4gVXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlkLiBUb3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjIG9kaW8gdGVtcG9yLiBFdWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMgZWxlaWZlbmQgcXVhbSBhZGlwaXNjaW5nIHZpdGFlIHByb2luIHNhZ2l0dGlzLiBJcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYy4gUHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkgbnVsbGFtIGFjIHRvcnRvciB2aXRhZSBwdXJ1cyBmYXVjaWJ1cy4gRWdldCBlc3QgbG9yZW0gaXBzdW0gZG9sb3IuIEV1aXNtb2QgaW4gcGVsbGVudGVzcXVlIG1hc3NhIHBsYWNlcmF0IGR1aXMgdWx0cmljaWVzIGxhY3VzIHNlZCB0dXJwaXMuIEluIHRlbGx1cyBpbnRlZ2VyIGZldWdpYXQgc2NlbGVyaXNxdWUuIFF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0gZHVpIGZhdWNpYnVzIGluIG9ybmFyZS4gRG9uZWMgYWMgb2RpbyB0ZW1wb3Igb3JjaSBkYXBpYnVzLiBNYXVyaXMgdml0YWUgdWx0cmljaWVzIGxlbyBpbnRlZ2VyIG1hbGVzdWFkYSBudW5jIHZlbCByaXN1cyBjb21tb2RvLgoKUmlzdXMgdml2ZXJyYSBhZGlwaXNjaW5nIGF0IGluIHRlbGx1cy4gTnVuYyBwdWx2aW5hciBzYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVyLiBBdWd1ZSBtYXVyaXMgYXVndWUgbmVxdWUgZ3JhdmlkYSBpbi4gRmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2RpbyBldSBmZXVnaWF0LiBBdCBhdWd1ZSBlZ2V0IGFyY3UgZGljdHVtLiBUZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUgdHVycGlzLiBOdW5jIHNlZCBpZCBzZW1wZXIgcmlzdXMgaW4uIE1vbGVzdGllIGFjIGZldWdpYXQgc2VkIGxlY3R1cyB2ZXN0aWJ1bHVtIG1hdHRpcyB1bGxhbWNvcnBlciB2ZWxpdC4gVmVsaXQgZXVpc21vZCBpbiBwZWxsZW50ZXNxdWUgbWFzc2EgcGxhY2VyYXQgZHVpcyB1bHRyaWNpZXMgbGFjdXMgc2VkLiBMb2JvcnRpcyBmZXVnaWF0IHZpdmFtdXMgYXQgYXVndWUgZWdldCBhcmN1IGRpY3R1bSB2YXJpdXMuIFNpdCBhbWV0IG1hc3NhIHZpdGFlIHRvcnRvciBjb25kaW1lbnR1bS4gVmVuZW5hdGlzIGNyYXMgc2VkIGZlbGlzIGVnZXQgdmVsaXQgYWxpcXVldCBzYWdpdHRpcyBpZCBjb25zZWN0ZXR1ci4gQXQgZWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQgb2RpbyBtb3JiaS4gVXQgZXUgc2VtIGludGVnZXIgdml0YWUganVzdG8uIE1hdXJpcyBudW5jIGNvbmd1ZSBuaXNpIHZpdGFlLiBGYXVjaWJ1cyBhIHBlbGxlbnRlc3F1ZSBzaXQgYW1ldCBwb3J0dGl0b3IgZWdldC4gTm9uIHRlbGx1cyBvcmNpIGFjIGF1Y3RvciBhdWd1ZSBtYXVyaXMgYXVndWUgbmVxdWUgZ3JhdmlkYS4gUmlzdXMgbnVsbGFtIGVnZXQgZmVsaXMgZWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcy4gQWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuLgoKSGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYS4gRHVpIGlkIG9ybmFyZSBhcmN1IG9kaW8gdXQgc2VtIG51bGxhIHBoYXJldHJhLiBNaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQgYW1ldC4gRG9sb3IgbWFnbmEgZWdldCBlc3QgbG9yZW0gaXBzdW0uIFV0IHZlbmVuYXRpcyB0ZWxsdXMgaW4gbWV0dXMuIEJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlciBxdWlzIGF1Y3Rvci4gQmliZW5kdW0gdXQgdHJpc3RpcXVlIGV0IGVnZXN0YXMgcXVpcyBpcHN1bSBzdXNwZW5kaXNzZS4gRGlnbmlzc2ltIHN1c3BlbmRpc3NlIGluIGVzdCBhbnRlLiBJZCB2ZWxpdCB1dCB0b3J0b3IgcHJldGl1bSB2aXZlcnJhIHN1c3BlbmRpc3NlIHBvdGVudGkuIFBoYXJldHJhIHZlbCB0dXJwaXMgbnVuYyBlZ2V0IGxvcmVtIGRvbG9yLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0gZHVpIGZhdWNpYnVzIGluLiBFbGVtZW50dW0gcHVsdmluYXIgZXRpYW0gbm9uIHF1YW0gbGFjdXMgc3VzcGVuZGlzc2UgZmF1Y2lidXMgaW50ZXJkdW0uIFNhZ2l0dGlzIGlkIGNvbnNlY3RldHVyIHB1cnVzIHV0IGZhdWNpYnVzIHB1bHZpbmFyIGVsZW1lbnR1bSBpbnRlZ2VyLiBUaW5jaWR1bnQgdG9ydG9yIGFsaXF1YW0gbnVsbGEgZmFjaWxpc2kgY3JhcyBmZXJtZW50dW0gb2RpbyBldS4KClV0IHRlbGx1cyBlbGVtZW50dW0gc2FnaXR0aXMgdml0YWUgZXQgbGVvIGR1aXMgdXQuIEFjIHRvcnRvciBkaWduaXNzaW0gY29udmFsbGlzIGFlbmVhbiBldCB0b3J0b3IgYXQgcmlzdXMuIFBoYXNlbGx1cyBlZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzLiBOaXNsIHJob25jdXMgbWF0dGlzIHJob25jdXMgdXJuYSBuZXF1ZSB2aXZlcnJhLiBBYyBvcmNpIHBoYXNlbGx1cyBlZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldS4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IGR1aXMgdHJpc3RpcXVlIHNvbGxpY2l0dWRpbiBuaWJoLiBOaXNsIGNvbmRpbWVudHVtIGlkIHZlbmVuYXRpcyBhIGNvbmRpbWVudHVtLiBEaWN0dW1zdCBxdWlzcXVlIHNhZ2l0dGlzIHB1cnVzIHNpdCBhbWV0IHZvbHV0cGF0LiBBdCBhdWd1ZSBlZ2V0IGFyY3UgZGljdHVtIHZhcml1cy4gRG9sb3IgcHVydXMgbm9uIGVuaW0gcHJhZXNlbnQgZWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsLiBTY2VsZXJpc3F1ZSBwdXJ1cyBzZW1wZXIgZWdldCBkdWlzIGF0IHRlbGx1cyBhdCB1cm5hLiBVdCB2ZW5lbmF0aXMgdGVsbHVzIGluIG1ldHVzIHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcy4gQWRpcGlzY2luZyB0cmlzdGlxdWUgcmlzdXMgbmVjIGZldWdpYXQgaW4uCgpTZWQgYXVndWUgbGFjdXMgdml2ZXJyYSB2aXRhZSBjb25ndWUgZXUgY29uc2VxdWF0IGFjIGZlbGlzLiBVcm5hIGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhIHVsdHJpY2llcyBtaSBxdWlzLiBQcmV0aXVtIG5pYmggaXBzdW0gY29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0gaWQuIFNlZCBmZWxpcyBlZ2V0IHZlbGl0IGFsaXF1ZXQuIFNlZCBhZGlwaXNjaW5nIGRpYW0gZG9uZWMgYWRpcGlzY2luZyB0cmlzdGlxdWUuIE1pIGJpYmVuZHVtIG5lcXVlIGVnZXN0YXMgY29uZ3VlIHF1aXNxdWUgZWdlc3RhcyBkaWFtLiBFZ2VzdGFzIGVnZXN0YXMgZnJpbmdpbGxhIHBoYXNlbGx1cyBmYXVjaWJ1cy4gVHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMuIEFkaXBpc2NpbmcgZWxpdCB1dCBhbGlxdWFtIHB1cnVzIHNpdCBhbWV0LiBQdXJ1cyBub24gZW5pbSBwcmFlc2VudCBlbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhLgoKQ29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0gcHVydXMgc2l0IGFtZXQgbHVjdHVzLiBMYWN1cyBsYW9yZWV0IG5vbiBjdXJhYml0dXIgZ3JhdmlkYS4gTmlzaSBzY2VsZXJpc3F1ZSBldSB1bHRyaWNlcyB2aXRhZSBhdWN0b3IuIE51bGxhIHBoYXJldHJhIGRpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nLiBPcmNpIGEgc2NlbGVyaXNxdWUgcHVydXMgc2VtcGVyIGVnZXQgZHVpcyBhdCB0ZWxsdXMgYXQuIEluIGVnZXN0YXMgZXJhdCBpbXBlcmRpZXQgc2VkLiBWb2x1dHBhdCBjb21tb2RvIHNlZCBlZ2VzdGFzIGVnZXN0YXMgZnJpbmdpbGxhIHBoYXNlbGx1cyBmYXVjaWJ1cyBzY2VsZXJpc3F1ZS4gTWF1cmlzIGN1cnN1cyBtYXR0aXMgbW9sZXN0aWUgYSBpYWN1bGlzIGF0LiBFbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuIHBoYXJldHJhLiBFZ2V0IGR1aXMgYXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzIHBlbGxlbnRlc3F1ZSBpZC4gUXVpc3F1ZSBpZCBkaWFtIHZlbCBxdWFtIGVsZW1lbnR1bS4KClJpc3VzIHVsdHJpY2llcyB0cmlzdGlxdWUgbnVsbGEgYWxpcXVldCBlbmltIHRvcnRvciBhdC4gRXQgdG9ydG9yIGF0IHJpc3VzIHZpdmVycmEgYWRpcGlzY2luZyBhdCBpbiB0ZWxsdXMuIFNjZWxlcmlzcXVlIGZlbGlzIGltcGVyZGlldCBwcm9pbiBmZXJtZW50dW0gbGVvIHZlbCBvcmNpIHBvcnRhIG5vbi4gRGlhbSBpbiBhcmN1IGN1cnN1cyBldWlzbW9kLiBFZ2V0IG51bGxhbSBub24gbmlzaSBlc3Qgc2l0LiBVdCBzZW0gbnVsbGEgcGhhcmV0cmEgZGlhbSBzaXQgYW1ldC4gRmVybWVudHVtIGR1aSBmYXVjaWJ1cyBpbiBvcm5hcmUgcXVhbSB2aXZlcnJhIG9yY2kgc2FnaXR0aXMgZXUuIFZpdGFlIHB1cnVzIGZhdWNpYnVzIG9ybmFyZSBzdXNwZW5kaXNzZSBzZWQgbmlzaSBsYWN1cyBzZWQuIEF0IHVsdHJpY2VzIG1pIHRlbXB1cyBpbXBlcmRpZXQgbnVsbGEuIFRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4KCkNvbmRpbWVudHVtIHZpdGFlIHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzLiBWdWxwdXRhdGUgb2RpbyB1dCBlbmltIGJsYW5kaXQgdm9sdXRwYXQgbWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtLiBNaSBzaXQgYW1ldCBtYXVyaXMgY29tbW9kby4gRWxlbWVudHVtIGZhY2lsaXNpcyBsZW8gdmVsIGZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXIgZWdldC4gQW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbSBwdXJ1cyBzaXQgYW1ldCBsdWN0dXMuIEV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcy4gUXVpcyBsZWN0dXMgbnVsbGEgYXQgdm9sdXRwYXQuIFRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMgYWMgb2RpbyB0ZW1wb3IuIElkIHZlbGl0IHV0IHRvcnRvciBwcmV0aXVtIHZpdmVycmEgc3VzcGVuZGlzc2UgcG90ZW50aSBudWxsYW0gYWMuIFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cyBlZ2VzdGFzLiBSaG9uY3VzIGVzdCBwZWxsZW50ZXNxdWUgZWxpdCB1bGxhbWNvcnBlciBkaWduaXNzaW0gY3JhcyB0aW5jaWR1bnQuIEludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3RpcXVlIG1hZ25hIHNpdCBhbWV0IHB1cnVzLiBFdSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQgcHJvaW4gZmVybWVudHVtIGxlby4gQXVndWUgbmVxdWUgZ3JhdmlkYSBpbiBmZXJtZW50dW0gZXQuIE51bGxhIHBvc3VlcmUgc29sbGljaXR1ZGluIGFsaXF1YW0gdWx0cmljZXMgc2FnaXR0aXMuIFRyaXN0aXF1ZSByaXN1cyBuZWMgZmV1Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVyZSB1cm5hIG5lYyB0aW5jaWR1bnQuIEFsaXF1ZXQgbmVjIHVsbGFtY29ycGVyIHNpdCBhbWV0IHJpc3VzLiBBbWV0IHBvcnR0aXRvciBlZ2V0IGRvbG9yIG1vcmJpIG5vbi4gVmVuZW5hdGlzIHVybmEgY3Vyc3VzIGVnZXQgbnVuYyBzY2VsZXJpc3F1ZSB2aXZlcnJhIG1hdXJpcyBpbi4KCkVsZWlmZW5kIGRvbmVjIHByZXRpdW0gdnVscHV0YXRlIHNhcGllbiBuZWMgc2FnaXR0aXMgYWxpcXVhbSBtYWxlc3VhZGEuIE51bGxhIHBoYXJldHJhIGRpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtLiBMYWN1cyBsdWN0dXMgYWNjdW1zYW4gdG9ydG9yIHBvc3VlcmUgYWMuIExlY3R1cyBwcm9pbiBuaWJoIG5pc2wgY29uZGltZW50dW0gaWQgdmVuZW5hdGlzIGEgY29uZGltZW50dW0uIEV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUgb2RpbyB1dCBlbmltLiBTYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVyIG1hbGVzdWFkYSBwcm9pbiBsaWJlcm8uIEV0IHRvcnRvciBjb25zZXF1YXQgaWQgcG9ydGEuIE1vbnRlcyBuYXNjZXR1ciByaWRpY3VsdXMgbXVzIG1hdXJpcy4gQW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyIHF1aXMgYXVjdG9yLiBBbWV0IHJpc3VzIG51bGxhbSBlZ2V0IGZlbGlzIGVnZXQgbnVuYyBsb2JvcnRpcyBtYXR0aXMuCg==