<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>171428</bug_id>
          
          <creation_ts>2017-04-28 05:51:01 -0700</creation_ts>
          <short_desc>[GTK] Add automation session API</short_desc>
          <delta_ts>2017-05-01 00:04:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166679</blocked>
    
    <blocked>171431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302547</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 05:51:01 -0700</bug_when>
    <thetext>Automation requires public API to ask the browser to create the web views, similar to the API for window.open(). I think it&apos;s also important that automation is disabled by default, so that applications have to enable it explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302548</commentid>
    <comment_count>1</comment_count>
      <attachid>308520</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:00:29 -0700</bug_when>
    <thetext>Created attachment 308520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302552</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:13:01 -0700</bug_when>
    <thetext>../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutomationSession.cpp
../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutomationSession.cpp: In lambda function:
../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutomationSession.cpp:67:83: error: no matching function for call to &apos;AutomationTest::setTarget(guint64&amp;, &lt;brace-enclosed initializer list&gt;)&apos;
                         test-&gt;setTarget(connectionID, { targetID, name, isPaired });
                                                                                   ^
../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutomationSession.cpp:67:83: note: candidate is:
../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutomatiFailed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--gtk&apos;, &apos;--update-gtk&apos;, &apos;--makeargs=&quot;-j48&quot;&apos;]&quot; exit_code: 1

I guess it&apos;s once again the GCC version or something because it builds locally, I&apos;ll try to work around it :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302553</commentid>
    <comment_count>3</comment_count>
      <attachid>308521</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:15:36 -0700</bug_when>
    <thetext>Created attachment 308521
Try to fix EWS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302556</commentid>
    <comment_count>4</comment_count>
      <attachid>308523</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:28:14 -0700</bug_when>
    <thetext>Created attachment 308523
Try to fix EWS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302558</commentid>
    <comment_count>5</comment_count>
      <attachid>308524</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:35:08 -0700</bug_when>
    <thetext>Created attachment 308524
Try to fix EWS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302559</commentid>
    <comment_count>6</comment_count>
      <attachid>308525</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:39:02 -0700</bug_when>
    <thetext>Created attachment 308525
Try to fix EWS build

I hate GCC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302561</commentid>
    <comment_count>7</comment_count>
      <attachid>308526</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:45:11 -0700</bug_when>
    <thetext>Created attachment 308526
Try to fix EWS build

Let&apos;s forget about the { } and go back to the old fashion way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302563</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:56:01 -0700</bug_when>
    <thetext>Now it complains about a different thing, and of course I have no idea what the problem is :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302564</commentid>
    <comment_count>9</comment_count>
      <attachid>308527</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 06:56:43 -0700</bug_when>
    <thetext>Created attachment 308527
Try to fix EWS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302568</commentid>
    <comment_count>10</comment_count>
      <attachid>308527</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-04-28 07:23:02 -0700</bug_when>
    <thetext>Comment on attachment 308527
Try to fix EWS build

I have tested it, the tests work fine for me. The code also looks good to me.
Another reviewer should also approve this before landing giving that this adds new API.
(Setting cq- due to that: needs second review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302614</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-28 09:37:30 -0700</bug_when>
    <thetext>I didn&apos;t look at the code, but the API seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302625</commentid>
    <comment_count>12</comment_count>
      <attachid>308527</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-04-28 10:00:02 -0700</bug_when>
    <thetext>Comment on attachment 308527
Try to fix EWS build

Looks awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303199</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-01 00:04:08 -0700</bug_when>
    <thetext>Committed r216006: &lt;http://trac.webkit.org/changeset/216006&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308520</attachid>
            <date>2017-04-28 06:00:29 -0700</date>
            <delta_ts>2017-04-28 06:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57323</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjUyNjJkMjljNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07CisgICAgICAgIENTdHJpbmcgbmFt
ZTsKKyAgICAgICAgYm9vbCBpc1BhaXJlZCB7IGZhbHNlIH07CisgICAgfTsKKworICAgIGNvbnN0
IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRhYmxlID0geworICAgICAgICAvLyBt
ZXRob2RfY2FsbAorICAgICAgICBbXShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IGdjaGFyKiBzZW5kZXIsIGNvbnN0IGdjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBnY2hhciogaW50
ZXJmYWNlTmFtZSwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXV0b21hdGlvblRlc3QqPih1
c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiU2V0VGFy
Z2V0TGlzdCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQ7CisgICAg
ICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHVmFyaWFudEl0ZXI+IGl0ZXI7CisgICAgICAgICAg
ICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHRhKHRzc3NiKSkiLCAmY29ubmVjdGlv
bklELCAmaXRlci5vdXRQdHIoKSk7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCB0YXJnZXRJRDsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlOworICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZHVtbXk7CisgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGdfdmFy
aWFudF9pdGVyX2xvb3AoaXRlci5nZXQoKSwgIih0JnMmcyZzYikiLCAmdGFyZ2V0SUQsICZ0eXBl
LCAmbmFtZSwgJmR1bW15LCAmaXNQYWlyZWQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHR5cGUsICJBdXRvbWF0aW9uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3QtPnNldFRhcmdldChjb25uZWN0aW9uSUQsIHsgdGFyZ2V0SUQsIG5hbWUsIGlzUGFpcmVk
IH0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZv
Y2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRyKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiU2VuZE1lc3NhZ2VUb0Zyb250ZW5kIikp
IHsKKyAgICAgICAgICAgICAgICBndWludDY0IGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQ7CisgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZTsKKyAgICAgICAgICAgICAgICBnX3Zhcmlh
bnRfZ2V0KHBhcmFtZXRlcnMsICIodHQmcykiLCAmY29ubmVjdGlvbklELCAmdGFyZ2V0SUQsICZt
ZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB0ZXN0LT5yZWNlaXZlZE1lc3NhZ2UoY29ubmVjdGlv
bklELCB0YXJnZXRJRCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9p
bnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgLy8gZ2V0X3Byb3BlcnR5CisgICAgICAgIG51bGxwdHIs
CisgICAgICAgIC8vIHNldF9wcm9wZXJ0eQorICAgICAgICBudWxscHRyLAorICAgICAgICAvLyBw
YWRkaW5nCisgICAgICAgIG51bGxwdHIKKyAgICB9OworCisgICAgdm9pZCByZWdpc3RlckRCdXNP
YmplY3QoKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhN
TFtdID0KKyAgICAgICAgICAgICI8bm9kZT4iCisgICAgICAgICAgICAiICA8aW50ZXJmYWNlIG5h
bWU9J29yZy53ZWJraXRndGsuUmVtb3RlSW5zcGVjdG9yQ2xpZW50Jz4iCisgICAgICAgICAgICAi
ICAgIDxtZXRob2QgbmFtZT0nU2V0VGFyZ2V0TGlzdCc+IgorICAgICAgICAgICAgIiAgICAgIDxh
cmcgdHlwZT0ndCcgbmFtZT0nY29ubmVjdGlvbklEJyBkaXJlY3Rpb249J2luJy8+IgorICAgICAg
ICAgICAgIiAgICAgIDxhcmcgdHlwZT0nYSh0c3NzYiknIG5hbWU9J2xpc3QnIGRpcmVjdGlvbj0n
aW4nLz4iCisgICAgICAgICAgICAiICAgIDwvbWV0aG9kPiIKKyAgICAgICAgICAgICIgICAgPG1l
dGhvZCBuYW1lPSdTZW5kTWVzc2FnZVRvRnJvbnRlbmQnPiIKKyAgICAgICAgICAgICIgICAgICA8
YXJnIHR5cGU9J3QnIG5hbWU9J2Nvbm5lY3Rpb25JRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAg
ICAgICAgICIgICAgICA8YXJnIHR5cGU9J3QnIG5hbWU9J3RhcmdldCcgZGlyZWN0aW9uPSdpbicv
PiIKKyAgICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J21lc3NhZ2UnIGRpcmVj
dGlvbj0naW4nLz4iCisgICAgICAgICAgICAiICAgIDwvbWV0aG9kPiIKKyAgICAgICAgICAgICIg
IDwvaW50ZXJmYWNlPiIKKyAgICAgICAgICAgICI8L25vZGU+IjsKKyAgICAgICAgc3RhdGljIEdE
QnVzTm9kZUluZm8qIGludHJvc3BlY3Rpb25EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFp
bnRyb3NwZWN0aW9uRGF0YSkKKyAgICAgICAgICAgIGludHJvc3BlY3Rpb25EYXRhID0gZ19kYnVz
X25vZGVfaW5mb19uZXdfZm9yX3htbChpbnRyb3NwZWN0aW9uWE1MLCBudWxscHRyKTsKKyAgICAg
ICAgZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KG1fY29ubmVjdGlvbi5nZXQoKSwg
Ii9vcmcvd2Via2l0Z3RrL1JlbW90ZUluc3BlY3RvckNsaWVudCIsIGludHJvc3BlY3Rpb25EYXRh
LT5pbnRlcmZhY2VzWzBdLCAmc19pbnRlcmZhY2VWVGFibGUsIHRoaXMsIG51bGxwdHIsIG51bGxw
dHIpOworICAgIH0KKworICAgIHZvaWQgc2V0Q29ubmVjdGlvbihHUmVmUHRyPEdEQnVzQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoR19JU19EQlVTX0NP
Tk5FQ1RJT04oY29ubmVjdGlvbi5nZXQoKSkpOworICAgICAgICBtX2Nvbm5lY3Rpb24gPSBXVEZN
b3ZlKGNvbm5lY3Rpb24pOworICAgICAgICByZWdpc3RlckRCdXNPYmplY3QoKTsKKyAgICAgICAg
Z19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dFRhcmdldChndWludDY0IGNvbm5lY3Rpb25JRCwgVGFyZ2V0JiYgdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgYm9vbCBuZXdDb25uZWN0aW9uID0gIW1fY29ubmVjdGlvbklEOworICAgICAgICBib29s
IHdhc1BhaXJlZCA9IG1fdGFyZ2V0LmlzUGFpcmVkOworICAgICAgICBtX2Nvbm5lY3Rpb25JRCA9
IGNvbm5lY3Rpb25JRDsKKyAgICAgICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CisgICAg
ICAgIGlmIChuZXdDb25uZWN0aW9uIHx8ICghd2FzUGFpcmVkICYmIG1fdGFyZ2V0LmlzUGFpcmVk
KSkKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAg
fQorCisgICAgdm9pZCByZWNlaXZlZE1lc3NhZ2UoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIGd1aW50
NjQgdGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBnX2Fzc2Vy
dChjb25uZWN0aW9uSUQgPT0gbV9jb25uZWN0aW9uSUQpOworICAgICAgICBnX2Fzc2VydCh0YXJn
ZXRJRCA9PSBtX3RhcmdldC5pZCk7CisgICAgICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CisgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZW5kQ29tbWFuZFRvQmFja2VuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmlu
ZyYgcGFyYW1ldGVycyA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgc3RhdGljIGxvbmcgc2Vx
dWVuY2VJRCA9IDA7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7CisgICAg
ICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIntcImlkXCI6Iik7CisgICAgICAgIG1l
c3NhZ2VCdWlsZGVyLmFwcGVuZE51bWJlcigrK3NlcXVlbmNlSUQpOworICAgICAgICBtZXNzYWdl
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIik7CisgICAg
ICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChjb21tYW5kKTsKKyAgICAgICAgbWVzc2FnZUJ1aWxk
ZXIuYXBwZW5kKCciJyk7CisgICAgICAgIGlmICghcGFyYW1ldGVycy5pc051bGwoKSkgeworICAg
ICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwicGFyYW1zXCI6Iik7Cisg
ICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQocGFyYW1ldGVycyk7CisgICAgICAgIH0K
KyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCd9Jyk7CisgICAgICAgIGdfZGJ1c19jb25u
ZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAiL29yZy93ZWJraXRndGsv
SW5zcGVjdG9yIiwgIm9yZy53ZWJraXRndGsuSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICJTZW5k
TWVzc2FnZVRvQmFja2VuZCIsIGdfdmFyaWFudF9uZXcoIih0dHMpIiwgbV9jb25uZWN0aW9uSUQs
IG1fdGFyZ2V0LmlkLCBtZXNzYWdlQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpLAor
ICAgICAgICAgICAgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19TVEFSVCwgLTEs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIH0KKworICAgIHN0YXRpYyBXZWJLaXRX
ZWJWaWV3KiBjcmVhdGVXZWJWaWV3Q2FsbGJhY2soV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNl
c3Npb24sIEF1dG9tYXRpb25UZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV9jcmVh
dGVXZWJWaWV3V2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRlc3QtPm1fd2ViVmll
d0ZvckF1dG9tYXRpb247CisgICAgfQorCisgICAgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZChXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICB7CisgICAgICAgIG1fc2Vzc2lvbiA9
IHNlc3Npb247CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QobV9zZXNzaW9uKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXV0b21hdGlv
blN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiwgQXV0b21hdGlvblRlc3QqIHRlc3QpCisgICAgeworICAg
ICAgICBnX2Fzc2VydCh3ZWJDb250ZXh0ID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7Cisg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOwor
ICAgICAgICB0ZXN0LT5hdXRvbWF0aW9uU3RhcnRlZChzZXNzaW9uKTsKKyAgICB9CisKKyAgICBX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogcmVxdWVzdFNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lv
bklEKQorICAgIHsKKyAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93
ZWJDb250ZXh0LmdldCgpLCAiYXV0b21hdGlvbi1zdGFydGVkIiwgR19DQUxMQkFDSyhhdXRvbWF0
aW9uU3RhcnRlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2Nh
bGwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAiL29yZy93ZWJraXRndGsvSW5zcGVjdG9y
IiwgIm9yZy53ZWJraXRndGsuSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICJTdGFydEF1dG9tYXRp
b25TZXNzaW9uIiwgZ192YXJpYW50X25ldygiKHMpIiwgc2Vzc2lvbklEKSwgbnVsbHB0ciwgR19E
QlVTX0NBTExfRkxBR1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIpOworICAgICAgICBhdXRvIHRpbWVvdXRJRCA9IGdfdGltZW91dF9hZGQoMTAwMCwgW10oZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1
aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpKTsKKyAgICAgICAgICAgIHJldHVy
biBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAgIH0sIG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAg
ICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgICAgIGlmICghbV9jb25u
ZWN0aW9uSUQpCisgICAgICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOworICAgICAgICBpZiAo
bV9zZXNzaW9uICYmIG1fY29ubmVjdGlvbklEKQorICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KHRpbWVvdXRJRCk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dlYkNv
bnRleHQuZ2V0KCksIHNpZ25hbElEKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vzc2lvbjsKKyAgICB9
CisKKyAgICB2b2lkIHNldHVwSWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fdGFyZ2V0
LmlzUGFpcmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBnX2Fzc2VydChtX3Rhcmdl
dC5pZCk7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgp
LCBudWxscHRyLCAiL29yZy93ZWJraXRndGsvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXRndGsuSW5z
cGVjdG9yIiwKKyAgICAgICAgICAgICJTZXR1cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nv
bm5lY3Rpb25JRCwgbV90YXJnZXQuaWQpLCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19B
VVRPX1NUQVJULCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIGdfbWFp
bl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnQobV90YXJnZXQu
aXNQYWlyZWQpOworICAgIH0KKworICAgIGJvb2wgY3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRl
eHQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICB7CisgICAgICAgIHNldHVwSWZOZWVkZWQo
KTsKKyAgICAgICAgbV93ZWJWaWV3Rm9yQXV0b21hdGlvbiA9IHdlYlZpZXc7CisgICAgICAgIG1f
Y3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IGZhbHNlOworICAgICAgICBtX21lc3NhZ2UgPSBDU3Ry
aW5nKCk7CisgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vzc2lv
biwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NhbGxiYWNrKSwg
dGhpcyk7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRl
eHQiKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CisgICAg
ICAgIGdfYXNzZXJ0KG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCk7CisgICAgICAgIGdfYXNzZXJ0
KCFtX21lc3NhZ2UuaXNOdWxsKCkpOworICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0aW9uID0g
bnVsbHB0cjsKKworICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJUaGUgcmVt
b3RlIHNlc3Npb24gZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBicm93c2luZyBjb250ZXh0IikpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzdHJzdHIobV9tZXNzYWdlLmRh
dGEoKSwgImhhbmRsZSIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKKyAg
ICBHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBtX3Nlc3Npb247CisgICAgZ3VpbnQ2NCBtX2Nvbm5lY3Rpb25JRCB7IDAg
fTsKKyAgICBUYXJnZXQgbV90YXJnZXQ7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXdG
b3JBdXRvbWF0aW9uIHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9jcmVhdGVXZWJWaWV3V2FzQ2Fs
bGVkIHsgZmFsc2UgfTsKKyAgICBDU3RyaW5nIG1fbWVzc2FnZTsKK307CisKK3N0YXRpYyB2b2lk
IHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQoreworICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisgICAgLy8gV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmF1dG9tYXRp
b24tc3RhcnRlZCBpcyBuZXZlciBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMgbm90IGVuYWJsZWQu
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQo
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgYXV0byogc2Vzc2lvbiA9IHRlc3QtPnJl
cXVlc3RTZXNzaW9uKHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKKyAgICBnX2Fzc2VydCghc2Vz
c2lvbik7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCh0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
Y29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgc2Vzc2lvbiA9IHRlc3QtPnJlcXVlc3RTZXNzaW9uKHNlc3Npb25JRC51dGY4KCkuZGF0
YSgpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRf
aWQoc2Vzc2lvbiksID09LCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh0ZXN0LT5tX3RhcmdldC5pZCwgPiwgMCk7CisgICAgQVNTRVJUX0NNUF9DU1RSSU5H
KHRlc3QtPm1fdGFyZ2V0Lm5hbWUsID09LCBzZXNzaW9uSUQudXRmOCgpKTsKKyAgICBnX2Fzc2Vy
dCghdGVzdC0+bV90YXJnZXQuaXNQYWlyZWQpOworCisgICAgLy8gV2lsbCBmYWlsIHRvIGNyZWF0
ZSBhIGJyb3dzaW5nIGNvbnRleHQgd2hlbiBub3QgY3JlYXRpbmcgYSB3ZWIgdmlldyAob3Igbm90
IGhhbmRsaW5nIHRoZSBzaWduYWwpLgorICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZl
bEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7CisKKyAgICAvLyBXaWxsIGFsc28gZmFpbCBpZiB0
aGUgd2ViIHZpZXcgaXMgbm90IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4KKyAgICBHUmVmUHRy
PFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3
X25ld193aXRoX2NvbnRleHQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldy5n
ZXQoKSkpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4
dCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICAvLyBBbmQgd2lsbCB3b3JrIHdpdGggYSBwcm9wZXIg
d2ViIHZpZXcuCisgICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1ZJRVcsICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQo
KSwgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsIG51bGxwdHIpKTsKKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZp
ZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29u
dGV4dCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9t
YXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIEZBTFNFKTsKK30KKwordm9p
ZCBiZWZvcmVBbGwoKQoreworICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIs
ICIxMjcuMC4wLjE6MjIyOSIsIFRSVUUpOworCisgICAgQXV0b21hdGlvblRlc3Q6OmFkZCgiV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24iLCAicmVxdWVzdC1zZXNzaW9uIiwgdGVzdEF1dG9tYXRpb25T
ZXNzaW9uUmVxdWVzdFNlc3Npb24pOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBnX3Vu
c2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308521</attachid>
            <date>2017-04-28 06:15:36 -0700</date>
            <delta_ts>2017-04-28 06:28:14 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57381</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjRlMjY4ODc4MGUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07CisgICAgICAgIENTdHJpbmcgbmFt
ZTsKKyAgICAgICAgYm9vbCBpc1BhaXJlZCB7IGZhbHNlIH07CisgICAgfTsKKworICAgIGNvbnN0
IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRhYmxlID0geworICAgICAgICAvLyBt
ZXRob2RfY2FsbAorICAgICAgICBbXShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IGdjaGFyKiBzZW5kZXIsIGNvbnN0IGdjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBnY2hhciogaW50
ZXJmYWNlTmFtZSwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXV0b21hdGlvblRlc3QqPih1
c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiU2V0VGFy
Z2V0TGlzdCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQ7CisgICAg
ICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHVmFyaWFudEl0ZXI+IGl0ZXI7CisgICAgICAgICAg
ICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHRhKHRzc3NiKSkiLCAmY29ubmVjdGlv
bklELCAmaXRlci5vdXRQdHIoKSk7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCB0YXJnZXRJRDsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlOworICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZHVtbXk7CisgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGdfdmFy
aWFudF9pdGVyX2xvb3AoaXRlci5nZXQoKSwgIih0JnMmcyZzYikiLCAmdGFyZ2V0SUQsICZ0eXBl
LCAmbmFtZSwgJmR1bW15LCAmaXNQYWlyZWQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHR5cGUsICJBdXRvbWF0aW9uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFRhcmdldCB0YXJnZXQgPSB7IHRhcmdldElELCBuYW1lLCBpc1BhaXJlZCB9OworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdC0+c2V0VGFyZ2V0KGNvbm5lY3Rpb25JRCwgV1RGTW92ZSh0YXJn
ZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52
b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlNlbmRNZXNzYWdlVG9Gcm9udGVuZCIp
KSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIHRhcmdldElEOworICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgZ192YXJp
YW50X2dldChwYXJhbWV0ZXJzLCAiKHR0JnMpIiwgJmNvbm5lY3Rpb25JRCwgJnRhcmdldElELCAm
bWVzc2FnZSk7CisgICAgICAgICAgICAgICAgdGVzdC0+cmVjZWl2ZWRNZXNzYWdlKGNvbm5lY3Rp
b25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIGdldF9wcm9wZXJ0eQorICAgICAgICBudWxscHRy
LAorICAgICAgICAvLyBzZXRfcHJvcGVydHkKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgLy8g
cGFkZGluZworICAgICAgICBudWxscHRyCisgICAgfTsKKworICAgIHZvaWQgcmVnaXN0ZXJEQnVz
T2JqZWN0KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25Y
TUxbXSA9CisgICAgICAgICAgICAiPG5vZGU+IgorICAgICAgICAgICAgIiAgPGludGVyZmFjZSBu
YW1lPSdvcmcud2Via2l0Z3RrLlJlbW90ZUluc3BlY3RvckNsaWVudCc+IgorICAgICAgICAgICAg
IiAgICA8bWV0aG9kIG5hbWU9J1NldFRhcmdldExpc3QnPiIKKyAgICAgICAgICAgICIgICAgICA8
YXJnIHR5cGU9J3QnIG5hbWU9J2Nvbm5lY3Rpb25JRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAg
ICAgICAgICIgICAgICA8YXJnIHR5cGU9J2EodHNzc2IpJyBuYW1lPSdsaXN0JyBkaXJlY3Rpb249
J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAgICAgICAgICAiICAgIDxt
ZXRob2QgbmFtZT0nU2VuZE1lc3NhZ2VUb0Zyb250ZW5kJz4iCisgICAgICAgICAgICAiICAgICAg
PGFyZyB0eXBlPSd0JyBuYW1lPSdjb25uZWN0aW9uSUQnIGRpcmVjdGlvbj0naW4nLz4iCisgICAg
ICAgICAgICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSd0YXJnZXQnIGRpcmVjdGlvbj0naW4n
Lz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdtZXNzYWdlJyBkaXJl
Y3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAgICAgICAgICAi
ICA8L2ludGVyZmFjZT4iCisgICAgICAgICAgICAiPC9ub2RlPiI7CisgICAgICAgIHN0YXRpYyBH
REJ1c05vZGVJbmZvKiBpbnRyb3NwZWN0aW9uRGF0YSA9IG51bGxwdHI7CisgICAgICAgIGlmICgh
aW50cm9zcGVjdGlvbkRhdGEpCisgICAgICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1
c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgbnVsbHB0cik7CisgICAg
ICAgIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdChtX2Nvbm5lY3Rpb24uZ2V0KCks
ICIvb3JnL3dlYmtpdGd0ay9SZW1vdGVJbnNwZWN0b3JDbGllbnQiLCBpbnRyb3NwZWN0aW9uRGF0
YS0+aW50ZXJmYWNlc1swXSwgJnNfaW50ZXJmYWNlVlRhYmxlLCB0aGlzLCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1c0Nvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KEdfSVNfREJVU19D
T05ORUNUSU9OKGNvbm5lY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uID0gV1RG
TW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgcmVnaXN0ZXJEQnVzT2JqZWN0KCk7CisgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRUYXJnZXQoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIFRhcmdldCYmIHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIGJvb2wgbmV3Q29ubmVjdGlvbiA9ICFtX2Nvbm5lY3Rpb25JRDsKKyAgICAgICAgYm9v
bCB3YXNQYWlyZWQgPSBtX3RhcmdldC5pc1BhaXJlZDsKKyAgICAgICAgbV9jb25uZWN0aW9uSUQg
PSBjb25uZWN0aW9uSUQ7CisgICAgICAgIG1fdGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOworICAg
ICAgICBpZiAobmV3Q29ubmVjdGlvbiB8fCAoIXdhc1BhaXJlZCAmJiBtX3RhcmdldC5pc1BhaXJl
ZCkpCisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOworICAg
IH0KKworICAgIHZvaWQgcmVjZWl2ZWRNZXNzYWdlKGd1aW50NjQgY29ubmVjdGlvbklELCBndWlu
dDY0IHRhcmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgZ19hc3Nl
cnQoY29ubmVjdGlvbklEID09IG1fY29ubmVjdGlvbklEKTsKKyAgICAgICAgZ19hc3NlcnQodGFy
Z2V0SUQgPT0gbV90YXJnZXQuaWQpOworICAgICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOworICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOworICAgIH0KKworICAgIHZv
aWQgc2VuZENvbW1hbmRUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJp
bmcmIHBhcmFtZXRlcnMgPSBTdHJpbmcoKSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBsb25nIHNl
cXVlbmNlSUQgPSAwOworICAgICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VCdWlsZGVyOworICAg
ICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7XCJpZFwiOiIpOworICAgICAgICBt
ZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytzZXF1ZW5jZUlEKTsKKyAgICAgICAgbWVzc2Fn
ZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9kXCI6XCJBdXRvbWF0aW9uLiIpOworICAg
ICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFuZCk7CisgICAgICAgIG1lc3NhZ2VCdWls
ZGVyLmFwcGVuZCgnIicpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcInBhcmFtc1wiOiIpOwor
ICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMpOworICAgICAgICB9
CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnfScpOworICAgICAgICBnX2RidXNfY29u
bmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3Rr
L0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQiLCBnX3ZhcmlhbnRfbmV3KCIodHRzKSIsIG1fY29ubmVjdGlvbklE
LCBtX3RhcmdldC5pZCwgbWVzc2FnZUJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKSwK
KyAgICAgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0x
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgV2ViS2l0
V2ViVmlldyogY3JlYXRlV2ViVmlld0NhbGxiYWNrKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBz
ZXNzaW9uLCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fY3Jl
YXRlV2ViVmlld1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiB0ZXN0LT5tX3dlYlZp
ZXdGb3JBdXRvbWF0aW9uOworICAgIH0KKworICAgIHZvaWQgYXV0b21hdGlvblN0YXJ0ZWQoV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCisgICAgeworICAgICAgICBtX3Nlc3Npb24g
PSBzZXNzaW9uOworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKG1fc2Vzc2lvbikpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGF1dG9tYXRp
b25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCwgV2ViS2l0QXV0
b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25UZXN0KiB0ZXN0KQorICAgIHsKKyAg
ICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pKTsK
KyAgICAgICAgdGVzdC0+YXV0b21hdGlvblN0YXJ0ZWQoc2Vzc2lvbik7CisgICAgfQorCisgICAg
V2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHJlcXVlc3RTZXNzaW9uKGNvbnN0IGNoYXIqIHNlc3Np
b25JRCkKKyAgICB7CisgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3RhcnRlZCIsIEdfQ0FMTEJBQ0soYXV0b21h
dGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9j
YWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3BlY3Rv
ciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRCksIG51bGxwdHIsIEdf
REJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICAgICAgYXV0byB0aW1lb3V0SUQgPSBnX3RpbWVvdXRfYWRkKDEwMDAsIFtdKGdw
b2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBnX21haW5fbG9vcF9x
dWl0KHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJEYXRhKSk7CisgICAgICAgICAgICByZXR1
cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9LCBtX21haW5Mb29wLmdldCgpKTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBpZiAoIW1fY29u
bmVjdGlvbklEKQorICAgICAgICAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYg
KG1fc2Vzc2lvbiAmJiBtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgICAgIGdfc291cmNlX3JlbW92
ZSh0aW1lb3V0SUQpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJD
b250ZXh0LmdldCgpLCBzaWduYWxJRCk7CisgICAgICAgIHJldHVybiBtX3Nlc3Npb247CisgICAg
fQorCisgICAgdm9pZCBzZXR1cElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Rhcmdl
dC5pc1BhaXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ19hc3NlcnQobV90YXJn
ZXQuaWQpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQo
KSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLklu
c3BlY3RvciIsCisgICAgICAgICAgICAiU2V0dXAiLCBnX3ZhcmlhbnRfbmV3KCIodHQpIiwgbV9j
b25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkKSwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9f
QVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0KG1fdGFyZ2V0
LmlzUGFpcmVkKTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250
ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICBzZXR1cElmTmVlZGVk
KCk7CisgICAgICAgIG1fd2ViVmlld0ZvckF1dG9tYXRpb24gPSB3ZWJWaWV3OworICAgICAgICBt
X2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9tZXNzYWdlID0gQ1N0
cmluZygpOworICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Np
b24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayks
IHRoaXMpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250
ZXh0Iik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKKyAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOworICAg
ICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAgICBnX2Fzc2Vy
dCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAgbV93ZWJWaWV3Rm9yQXV0b21hdGlvbiA9
IG51bGxwdHI7CisKKyAgICAgICAgaWYgKHN0cnN0cihtX21lc3NhZ2UuZGF0YSgpLCAiVGhlIHJl
bW90ZSBzZXNzaW9uIGZhaWxlZCB0byBjcmVhdGUgYSBuZXcgYnJvd3NpbmcgY29udGV4dCIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5k
YXRhKCksICJoYW5kbGUiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fbWFpbkxvb3A7Cisg
ICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogbV9zZXNzaW9uOworICAgIGd1aW50NjQgbV9jb25uZWN0aW9uSUQgeyAw
IH07CisgICAgVGFyZ2V0IG1fdGFyZ2V0OworCisgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3
Rm9yQXV0b21hdGlvbiB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fY3JlYXRlV2ViVmlld1dhc0Nh
bGxlZCB7IGZhbHNlIH07CisgICAgQ1N0cmluZyBtX21lc3NhZ2U7Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbihBdXRvbWF0aW9uVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBTdHJpbmcgc2Vzc2lvbklEID0gY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpOworICAgIC8vIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjphdXRvbWF0
aW9uLXN0YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBhdXRvbWF0aW9uIGlzIG5vdCBlbmFibGVk
LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2Vk
KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGF1dG8qIHNlc3Npb24gPSB0ZXN0LT5y
ZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnQoIXNl
c3Npb24pOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQo
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkp
OworICAgIHNlc3Npb24gPSB0ZXN0LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgpLmRh
dGEoKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0
X2lkKHNlc3Npb24pLCA9PSwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOworICAgIGdfYXNzZXJ0
X2NtcHVpbnQodGVzdC0+bV90YXJnZXQuaWQsID4sIDApOworICAgIEFTU0VSVF9DTVBfQ1NUUklO
Ryh0ZXN0LT5tX3RhcmdldC5uYW1lLCA9PSwgc2Vzc2lvbklELnV0ZjgoKSk7CisgICAgZ19hc3Nl
cnQoIXRlc3QtPm1fdGFyZ2V0LmlzUGFpcmVkKTsKKworICAgIC8vIFdpbGwgZmFpbCB0byBjcmVh
dGUgYSBicm93c2luZyBjb250ZXh0IHdoZW4gbm90IGNyZWF0aW5nIGEgd2ViIHZpZXcgKG9yIG5v
dCBoYW5kbGluZyB0aGUgc2lnbmFsKS4KKyAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2
ZWxCcm93c2luZ0NvbnRleHQobnVsbHB0cikpOworCisgICAgLy8gV2lsbCBhbHNvIGZhaWwgaWYg
dGhlIHdlYiB2aWV3IGlzIG5vdCBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uCisgICAgR1JlZlB0
cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmll
d19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRl
eHQod2ViVmlldy5nZXQoKSkpOworCisgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVy
IHdlYiB2aWV3LgorICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0
KCksICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRyKSk7CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJW
aWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0Nv
bnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRv
bWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBGQUxTRSk7Cit9CisKK3Zv
aWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIi
LCAiMTI3LjAuMC4xOjIyMjkiLCBUUlVFKTsKKworICAgIEF1dG9tYXRpb25UZXN0OjphZGQoIldl
YktpdEF1dG9tYXRpb25TZXNzaW9uIiwgInJlcXVlc3Qtc2Vzc2lvbiIsIHRlc3RBdXRvbWF0aW9u
U2Vzc2lvblJlcXVlc3RTZXNzaW9uKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAgZ191
bnNldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308523</attachid>
            <date>2017-04-28 06:28:14 -0700</date>
            <delta_ts>2017-04-28 06:35:08 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57390</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmYxMGNlNWNiODUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07CisgICAgICAgIENTdHJpbmcgbmFt
ZTsKKyAgICAgICAgYm9vbCBpc1BhaXJlZCB7IGZhbHNlIH07CisgICAgfTsKKworICAgIGNvbnN0
IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRhYmxlID0geworICAgICAgICAvLyBt
ZXRob2RfY2FsbAorICAgICAgICBbXShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IGdjaGFyKiBzZW5kZXIsIGNvbnN0IGdjaGFyKiBvYmplY3RQYXRoLCBjb25zdCBnY2hhciogaW50
ZXJmYWNlTmFtZSwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXV0b21hdGlvblRlc3QqPih1
c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiU2V0VGFy
Z2V0TGlzdCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQ7CisgICAg
ICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHVmFyaWFudEl0ZXI+IGl0ZXI7CisgICAgICAgICAg
ICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHRhKHRzc3NiKSkiLCAmY29ubmVjdGlv
bklELCAmaXRlci5vdXRQdHIoKSk7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCB0YXJnZXRJRDsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlOworICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZHVtbXk7CisgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGdfdmFy
aWFudF9pdGVyX2xvb3AoaXRlci5nZXQoKSwgIih0JnMmcyZzYikiLCAmdGFyZ2V0SUQsICZ0eXBl
LCAmbmFtZSwgJmR1bW15LCAmaXNQYWlyZWQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHR5cGUsICJBdXRvbWF0aW9uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFRhcmdldCB0YXJnZXQgPSB7IHRhcmdldElELCBDU3RyaW5nKG5hbWUpLCBpc1BhaXJlZCB9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+c2V0VGFyZ2V0KGNvbm5lY3Rpb25JRCwgV1RG
TW92ZSh0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdfZGJ1c19t
ZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlNlbmRNZXNzYWdlVG9G
cm9udGVuZCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIHRhcmdl
dElEOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2U7CisgICAgICAgICAgICAg
ICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHR0JnMpIiwgJmNvbm5lY3Rpb25JRCwgJnRh
cmdldElELCAmbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgdGVzdC0+cmVjZWl2ZWRNZXNzYWdl
KGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGdfZGJ1
c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIGdldF9wcm9wZXJ0eQorICAgICAg
ICBudWxscHRyLAorICAgICAgICAvLyBzZXRfcHJvcGVydHkKKyAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgLy8gcGFkZGluZworICAgICAgICBudWxscHRyCisgICAgfTsKKworICAgIHZvaWQgcmVn
aXN0ZXJEQnVzT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGludHJv
c3BlY3Rpb25YTUxbXSA9CisgICAgICAgICAgICAiPG5vZGU+IgorICAgICAgICAgICAgIiAgPGlu
dGVyZmFjZSBuYW1lPSdvcmcud2Via2l0Z3RrLlJlbW90ZUluc3BlY3RvckNsaWVudCc+IgorICAg
ICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9J1NldFRhcmdldExpc3QnPiIKKyAgICAgICAgICAg
ICIgICAgICA8YXJnIHR5cGU9J3QnIG5hbWU9J2Nvbm5lY3Rpb25JRCcgZGlyZWN0aW9uPSdpbicv
PiIKKyAgICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J2EodHNzc2IpJyBuYW1lPSdsaXN0JyBk
aXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAgICAgICAg
ICAiICAgIDxtZXRob2QgbmFtZT0nU2VuZE1lc3NhZ2VUb0Zyb250ZW5kJz4iCisgICAgICAgICAg
ICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdjb25uZWN0aW9uSUQnIGRpcmVjdGlvbj0naW4n
Lz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSd0YXJnZXQnIGRpcmVj
dGlvbj0naW4nLz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdtZXNz
YWdlJyBkaXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAg
ICAgICAgICAiICA8L2ludGVyZmFjZT4iCisgICAgICAgICAgICAiPC9ub2RlPiI7CisgICAgICAg
IHN0YXRpYyBHREJ1c05vZGVJbmZvKiBpbnRyb3NwZWN0aW9uRGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIGlmICghaW50cm9zcGVjdGlvbkRhdGEpCisgICAgICAgICAgICBpbnRyb3NwZWN0aW9uRGF0
YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgbnVsbHB0
cik7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdChtX2Nvbm5lY3Rp
b24uZ2V0KCksICIvb3JnL3dlYmtpdGd0ay9SZW1vdGVJbnNwZWN0b3JDbGllbnQiLCBpbnRyb3Nw
ZWN0aW9uRGF0YS0+aW50ZXJmYWNlc1swXSwgJnNfaW50ZXJmYWNlVlRhYmxlLCB0aGlzLCBudWxs
cHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbm5lY3Rpb24oR1JlZlB0cjxH
REJ1c0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KEdf
SVNfREJVU19DT05ORUNUSU9OKGNvbm5lY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgcmVnaXN0ZXJEQnVzT2JqZWN0KCk7
CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRUYXJnZXQoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIFRhcmdldCYmIHRhcmdldCkK
KyAgICB7CisgICAgICAgIGJvb2wgbmV3Q29ubmVjdGlvbiA9ICFtX2Nvbm5lY3Rpb25JRDsKKyAg
ICAgICAgYm9vbCB3YXNQYWlyZWQgPSBtX3RhcmdldC5pc1BhaXJlZDsKKyAgICAgICAgbV9jb25u
ZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CisgICAgICAgIG1fdGFyZ2V0ID0gV1RGTW92ZSh0YXJn
ZXQpOworICAgICAgICBpZiAobmV3Q29ubmVjdGlvbiB8fCAoIXdhc1BhaXJlZCAmJiBtX3Rhcmdl
dC5pc1BhaXJlZCkpCisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0
KCkpOworICAgIH0KKworICAgIHZvaWQgcmVjZWl2ZWRNZXNzYWdlKGd1aW50NjQgY29ubmVjdGlv
bklELCBndWludDY0IHRhcmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgZ19hc3NlcnQoY29ubmVjdGlvbklEID09IG1fY29ubmVjdGlvbklEKTsKKyAgICAgICAgZ19h
c3NlcnQodGFyZ2V0SUQgPT0gbV90YXJnZXQuaWQpOworICAgICAgICBtX21lc3NhZ2UgPSBtZXNz
YWdlOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOworICAgIH0K
KworICAgIHZvaWQgc2VuZENvbW1hbmRUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBj
b25zdCBTdHJpbmcmIHBhcmFtZXRlcnMgPSBTdHJpbmcoKSkKKyAgICB7CisgICAgICAgIHN0YXRp
YyBsb25nIHNlcXVlbmNlSUQgPSAwOworICAgICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VCdWls
ZGVyOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7XCJpZFwiOiIpOwor
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytzZXF1ZW5jZUlEKTsKKyAgICAg
ICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9kXCI6XCJBdXRvbWF0aW9u
LiIpOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFuZCk7CisgICAgICAgIG1l
c3NhZ2VCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcInBhcmFt
c1wiOiIpOworICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMpOwor
ICAgICAgICB9CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnfScpOworICAgICAgICBn
X2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcv
d2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAg
ICAgICAiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiLCBnX3ZhcmlhbnRfbmV3KCIodHRzKSIsIG1fY29u
bmVjdGlvbklELCBtX3RhcmdldC5pZCwgbWVzc2FnZUJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSwKKyAgICAgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9f
U1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgV2ViS2l0V2ViVmlldyogY3JlYXRlV2ViVmlld0NhbGxiYWNrKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uKiBzZXNzaW9uLCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRl
c3QtPm1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiB0ZXN0
LT5tX3dlYlZpZXdGb3JBdXRvbWF0aW9uOworICAgIH0KKworICAgIHZvaWQgYXV0b21hdGlvblN0
YXJ0ZWQoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCisgICAgeworICAgICAgICBt
X3Nlc3Npb24gPSBzZXNzaW9uOworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKG1fc2Vzc2lvbikpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCwg
V2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25UZXN0KiB0ZXN0KQor
ICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNl
c3Npb24pKTsKKyAgICAgICAgdGVzdC0+YXV0b21hdGlvblN0YXJ0ZWQoc2Vzc2lvbik7CisgICAg
fQorCisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHJlcXVlc3RTZXNzaW9uKGNvbnN0IGNo
YXIqIHNlc3Npb25JRCkKKyAgICB7CisgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3RhcnRlZCIsIEdfQ0FMTEJB
Q0soYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX2RidXNfY29u
bmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3Rr
L0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRCksIG51
bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyKTsKKyAgICAgICAgYXV0byB0aW1lb3V0SUQgPSBnX3RpbWVvdXRfYWRkKDEw
MDAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJEYXRhKSk7CisgICAgICAg
ICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9LCBtX21haW5Mb29wLmdldCgp
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBp
ZiAoIW1fY29ubmVjdGlvbklEKQorICAgICAgICAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKG1fc2Vzc2lvbiAmJiBtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgICAgIGdfc291
cmNlX3JlbW92ZSh0aW1lb3V0SUQpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QobV93ZWJDb250ZXh0LmdldCgpLCBzaWduYWxJRCk7CisgICAgICAgIHJldHVybiBtX3Nlc3Np
b247CisgICAgfQorCisgICAgdm9pZCBzZXR1cElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlm
IChtX3RhcmdldC5pc1BhaXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ19hc3Nl
cnQobV90YXJnZXQuaWQpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVj
dGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Vi
a2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU2V0dXAiLCBnX3ZhcmlhbnRfbmV3KCIo
dHQpIiwgbV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkKSwgbnVsbHB0ciwgR19EQlVTX0NBTExf
RkxBR1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAg
ICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
KG1fdGFyZ2V0LmlzUGFpcmVkKTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0ZVRvcExldmVsQnJv
d3NpbmdDb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICBzZXR1
cElmTmVlZGVkKCk7CisgICAgICAgIG1fd2ViVmlld0ZvckF1dG9tYXRpb24gPSB3ZWJWaWV3Owor
ICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9tZXNz
YWdlID0gQ1N0cmluZygpOworICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVj
dChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdD
YWxsYmFjayksIHRoaXMpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJv
d3NpbmdDb250ZXh0Iik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgp
KTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFs
SUQpOworICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAg
ICBnX2Fzc2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAgbV93ZWJWaWV3Rm9yQXV0
b21hdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKHN0cnN0cihtX21lc3NhZ2UuZGF0YSgp
LCAiVGhlIHJlbW90ZSBzZXNzaW9uIGZhaWxlZCB0byBjcmVhdGUgYSBuZXcgYnJvd3NpbmcgY29u
dGV4dCIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3Ryc3RyKG1f
bWVzc2FnZS5kYXRhKCksICJoYW5kbGUiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fbWFp
bkxvb3A7CisgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogbV9zZXNzaW9uOworICAgIGd1aW50NjQgbV9jb25uZWN0
aW9uSUQgeyAwIH07CisgICAgVGFyZ2V0IG1fdGFyZ2V0OworCisgICAgV2ViS2l0V2ViVmlldyog
bV93ZWJWaWV3Rm9yQXV0b21hdGlvbiB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fY3JlYXRlV2Vi
Vmlld1dhc0NhbGxlZCB7IGZhbHNlIH07CisgICAgQ1N0cmluZyBtX21lc3NhZ2U7Cit9OworCitz
dGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbihBdXRvbWF0aW9u
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBTdHJpbmcgc2Vzc2lvbklEID0gY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIC8vIFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
OjphdXRvbWF0aW9uLXN0YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBhdXRvbWF0aW9uIGlzIG5v
dCBlbmFibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlv
bl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGF1dG8qIHNlc3Npb24g
PSB0ZXN0LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19h
c3NlcnQoIXNlc3Npb24pOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9u
X2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3
ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4
dC5nZXQoKSkpOworICAgIHNlc3Npb24gPSB0ZXN0LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQu
dXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fZ2V0X2lkKHNlc3Npb24pLCA9PSwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV90YXJnZXQuaWQsID4sIDApOworICAgIEFTU0VSVF9D
TVBfQ1NUUklORyh0ZXN0LT5tX3RhcmdldC5uYW1lLCA9PSwgc2Vzc2lvbklELnV0ZjgoKSk7Cisg
ICAgZ19hc3NlcnQoIXRlc3QtPm1fdGFyZ2V0LmlzUGFpcmVkKTsKKworICAgIC8vIFdpbGwgZmFp
bCB0byBjcmVhdGUgYSBicm93c2luZyBjb250ZXh0IHdoZW4gbm90IGNyZWF0aW5nIGEgd2ViIHZp
ZXcgKG9yIG5vdCBoYW5kbGluZyB0aGUgc2lnbmFsKS4KKyAgICBnX2Fzc2VydCghdGVzdC0+Y3Jl
YXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQobnVsbHB0cikpOworCisgICAgLy8gV2lsbCBhbHNv
IGZhaWwgaWYgdGhlIHdlYiB2aWV3IGlzIG5vdCBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uCisg
ICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93
c2luZ0NvbnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgLy8gQW5kIHdpbGwgd29yayB3aXRo
IGEgcHJvcGVyIHdlYiB2aWV3LgorICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNv
bnRleHQuZ2V0KCksICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21h
dGlvbih3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y3JlYXRlVG9wTGV2ZWxC
cm93c2luZ0NvbnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBGQUxTRSk7
Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigiV0VCS0lUX0lOU1BFQ1RP
Ul9TRVJWRVIiLCAiMTI3LjAuMC4xOjIyMjkiLCBUUlVFKTsKKworICAgIEF1dG9tYXRpb25UZXN0
OjphZGQoIldlYktpdEF1dG9tYXRpb25TZXNzaW9uIiwgInJlcXVlc3Qtc2Vzc2lvbiIsIHRlc3RB
dXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7
CisgICAgZ191bnNldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308524</attachid>
            <date>2017-04-28 06:35:08 -0700</date>
            <delta_ts>2017-04-28 06:39:02 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57327</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjliNzJiNzY4N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07CisgICAgICAgIENTdHJpbmcgbmFt
ZTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBj
b25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2ludGVyZmFjZVZUYWJsZSA9IHsKKyAgICAgICAg
Ly8gbWV0aG9kX2NhbGwKKyAgICAgICAgW10oR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBj
b25zdCBnY2hhciogc2VuZGVyLCBjb25zdCBnY2hhciogb2JqZWN0UGF0aCwgY29uc3QgZ2NoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGdjaGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1l
dGVycywgR0RCdXNNZXRob2RJbnZvY2F0aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0
YSkgeworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PEF1dG9tYXRpb25UZXN0
Kj4odXNlckRhdGEpOworICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlNl
dFRhcmdldExpc3QiKSkgeworICAgICAgICAgICAgICAgIGd1aW50NjQgY29ubmVjdGlvbklEOwor
ICAgICAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R1ZhcmlhbnRJdGVyPiBpdGVyOworICAgICAg
ICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIih0YSh0c3NzYikpIiwgJmNvbm5l
Y3Rpb25JRCwgJml0ZXIub3V0UHRyKCkpOworICAgICAgICAgICAgICAgIGd1aW50NjQgdGFyZ2V0
SUQ7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZTsKKyAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBuYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGR1bW15OworICAg
ICAgICAgICAgICAgIGdib29sZWFuIGlzUGFpcmVkOworICAgICAgICAgICAgICAgIHdoaWxlIChn
X3ZhcmlhbnRfaXRlcl9sb29wKGl0ZXIuZ2V0KCksICIodCZzJnMmc2IpIiwgJnRhcmdldElELCAm
dHlwZSwgJm5hbWUsICZkdW1teSwgJmlzUGFpcmVkKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWdfc3RyY21wMCh0eXBlLCAiQXV0b21hdGlvbiIpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0LT5zZXRUYXJnZXQoY29ubmVjdGlvbklELCB7IHRhcmdldElELCBuYW1lLCBpc1Bh
aXJlZCB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlNlbmRNZXNzYWdlVG9Gcm9udGVu
ZCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIHRhcmdldElEOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgZ192
YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHR0JnMpIiwgJmNvbm5lY3Rpb25JRCwgJnRhcmdldElE
LCAmbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgdGVzdC0+cmVjZWl2ZWRNZXNzYWdlKGNvbm5l
Y3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGdfZGJ1c19tZXRo
b2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIGdldF9wcm9wZXJ0eQorICAgICAgICBudWxs
cHRyLAorICAgICAgICAvLyBzZXRfcHJvcGVydHkKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
Ly8gcGFkZGluZworICAgICAgICBudWxscHRyCisgICAgfTsKKworICAgIHZvaWQgcmVnaXN0ZXJE
QnVzT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rp
b25YTUxbXSA9CisgICAgICAgICAgICAiPG5vZGU+IgorICAgICAgICAgICAgIiAgPGludGVyZmFj
ZSBuYW1lPSdvcmcud2Via2l0Z3RrLlJlbW90ZUluc3BlY3RvckNsaWVudCc+IgorICAgICAgICAg
ICAgIiAgICA8bWV0aG9kIG5hbWU9J1NldFRhcmdldExpc3QnPiIKKyAgICAgICAgICAgICIgICAg
ICA8YXJnIHR5cGU9J3QnIG5hbWU9J2Nvbm5lY3Rpb25JRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAg
ICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J2EodHNzc2IpJyBuYW1lPSdsaXN0JyBkaXJlY3Rp
b249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAgICAgICAgICAiICAg
IDxtZXRob2QgbmFtZT0nU2VuZE1lc3NhZ2VUb0Zyb250ZW5kJz4iCisgICAgICAgICAgICAiICAg
ICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdjb25uZWN0aW9uSUQnIGRpcmVjdGlvbj0naW4nLz4iCisg
ICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSd0YXJnZXQnIGRpcmVjdGlvbj0n
aW4nLz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdtZXNzYWdlJyBk
aXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhvZD4iCisgICAgICAgICAg
ICAiICA8L2ludGVyZmFjZT4iCisgICAgICAgICAgICAiPC9ub2RlPiI7CisgICAgICAgIHN0YXRp
YyBHREJ1c05vZGVJbmZvKiBpbnRyb3NwZWN0aW9uRGF0YSA9IG51bGxwdHI7CisgICAgICAgIGlm
ICghaW50cm9zcGVjdGlvbkRhdGEpCisgICAgICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdf
ZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgbnVsbHB0cik7Cisg
ICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdChtX2Nvbm5lY3Rpb24uZ2V0
KCksICIvb3JnL3dlYmtpdGd0ay9SZW1vdGVJbnNwZWN0b3JDbGllbnQiLCBpbnRyb3NwZWN0aW9u
RGF0YS0+aW50ZXJmYWNlc1swXSwgJnNfaW50ZXJmYWNlVlRhYmxlLCB0aGlzLCBudWxscHRyLCBu
dWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1c0Nv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KEdfSVNfREJV
U19DT05ORUNUSU9OKGNvbm5lY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uID0g
V1RGTW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgcmVnaXN0ZXJEQnVzT2JqZWN0KCk7CisgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRUYXJnZXQoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIFRhcmdldCYmIHRhcmdldCkKKyAgICB7
CisgICAgICAgIGJvb2wgbmV3Q29ubmVjdGlvbiA9ICFtX2Nvbm5lY3Rpb25JRDsKKyAgICAgICAg
Ym9vbCB3YXNQYWlyZWQgPSBtX3RhcmdldC5pc1BhaXJlZDsKKyAgICAgICAgbV9jb25uZWN0aW9u
SUQgPSBjb25uZWN0aW9uSUQ7CisgICAgICAgIG1fdGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwor
ICAgICAgICBpZiAobmV3Q29ubmVjdGlvbiB8fCAoIXdhc1BhaXJlZCAmJiBtX3RhcmdldC5pc1Bh
aXJlZCkpCisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOwor
ICAgIH0KKworICAgIHZvaWQgcmVjZWl2ZWRNZXNzYWdlKGd1aW50NjQgY29ubmVjdGlvbklELCBn
dWludDY0IHRhcmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgZ19h
c3NlcnQoY29ubmVjdGlvbklEID09IG1fY29ubmVjdGlvbklEKTsKKyAgICAgICAgZ19hc3NlcnQo
dGFyZ2V0SUQgPT0gbV90YXJnZXQuaWQpOworICAgICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwor
ICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOworICAgIH0KKworICAg
IHZvaWQgc2VuZENvbW1hbmRUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBT
dHJpbmcmIHBhcmFtZXRlcnMgPSBTdHJpbmcoKSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBsb25n
IHNlcXVlbmNlSUQgPSAwOworICAgICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VCdWlsZGVyOwor
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7XCJpZFwiOiIpOworICAgICAg
ICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytzZXF1ZW5jZUlEKTsKKyAgICAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9kXCI6XCJBdXRvbWF0aW9uLiIpOwor
ICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFuZCk7CisgICAgICAgIG1lc3NhZ2VC
dWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcInBhcmFtc1wiOiIp
OworICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMpOworICAgICAg
ICB9CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnfScpOworICAgICAgICBnX2RidXNf
Y29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0
Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAi
U2VuZE1lc3NhZ2VUb0JhY2tlbmQiLCBnX3ZhcmlhbnRfbmV3KCIodHRzKSIsIG1fY29ubmVjdGlv
bklELCBtX3RhcmdldC5pZCwgbWVzc2FnZUJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSwKKyAgICAgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQs
IC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgV2Vi
S2l0V2ViVmlldyogY3JlYXRlV2ViVmlld0NhbGxiYWNrKFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
KiBzZXNzaW9uLCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1f
Y3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiB0ZXN0LT5tX3dl
YlZpZXdGb3JBdXRvbWF0aW9uOworICAgIH0KKworICAgIHZvaWQgYXV0b21hdGlvblN0YXJ0ZWQo
V2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCisgICAgeworICAgICAgICBtX3Nlc3Np
b24gPSBzZXNzaW9uOworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKG1fc2Vzc2lvbikpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGF1dG9t
YXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCwgV2ViS2l0
QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25UZXN0KiB0ZXN0KQorICAgIHsK
KyAgICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkp
OworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24p
KTsKKyAgICAgICAgdGVzdC0+YXV0b21hdGlvblN0YXJ0ZWQoc2Vzc2lvbik7CisgICAgfQorCisg
ICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHJlcXVlc3RTZXNzaW9uKGNvbnN0IGNoYXIqIHNl
c3Npb25JRCkKKyAgICB7CisgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0
KG1fd2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3RhcnRlZCIsIEdfQ0FMTEJBQ0soYXV0
b21hdGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX2RidXNfY29ubmVjdGlv
bl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3Bl
Y3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU3RhcnRBdXRv
bWF0aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRCksIG51bGxwdHIs
IEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKKyAgICAgICAgYXV0byB0aW1lb3V0SUQgPSBnX3RpbWVvdXRfYWRkKDEwMDAsIFtd
KGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBnX21haW5fbG9v
cF9xdWl0KHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJEYXRhKSk7CisgICAgICAgICAgICBy
ZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9LCBtX21haW5Mb29wLmdldCgpKTsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBpZiAoIW1f
Y29ubmVjdGlvbklEKQorICAgICAgICAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKG1fc2Vzc2lvbiAmJiBtX2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgICAgIGdfc291cmNlX3Jl
bW92ZSh0aW1lb3V0SUQpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93
ZWJDb250ZXh0LmdldCgpLCBzaWduYWxJRCk7CisgICAgICAgIHJldHVybiBtX3Nlc3Npb247Cisg
ICAgfQorCisgICAgdm9pZCBzZXR1cElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Rh
cmdldC5pc1BhaXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ19hc3NlcnQobV90
YXJnZXQuaWQpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5n
ZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3Rr
Lkluc3BlY3RvciIsCisgICAgICAgICAgICAiU2V0dXAiLCBnX3ZhcmlhbnRfbmV3KCIodHQpIiwg
bV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkKSwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1Nf
Tk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBn
X21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0KG1fdGFy
Z2V0LmlzUGFpcmVkKTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0ZVRvcExldmVsQnJvd3NpbmdD
b250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICBzZXR1cElmTmVl
ZGVkKCk7CisgICAgICAgIG1fd2ViVmlld0ZvckF1dG9tYXRpb24gPSB3ZWJWaWV3OworICAgICAg
ICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9tZXNzYWdlID0g
Q1N0cmluZygpOworICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nl
c3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFj
ayksIHRoaXMpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdD
b250ZXh0Iik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKKyAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwor
ICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAgICBnX2Fz
c2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAgbV93ZWJWaWV3Rm9yQXV0b21hdGlv
biA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKHN0cnN0cihtX21lc3NhZ2UuZGF0YSgpLCAiVGhl
IHJlbW90ZSBzZXNzaW9uIGZhaWxlZCB0byBjcmVhdGUgYSBuZXcgYnJvd3NpbmcgY29udGV4dCIp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2Fn
ZS5kYXRhKCksICJoYW5kbGUiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fbWFpbkxvb3A7
CisgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiogbV9zZXNzaW9uOworICAgIGd1aW50NjQgbV9jb25uZWN0aW9uSUQg
eyAwIH07CisgICAgVGFyZ2V0IG1fdGFyZ2V0OworCisgICAgV2ViS2l0V2ViVmlldyogbV93ZWJW
aWV3Rm9yQXV0b21hdGlvbiB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fY3JlYXRlV2ViVmlld1dh
c0NhbGxlZCB7IGZhbHNlIH07CisgICAgQ1N0cmluZyBtX21lc3NhZ2U7Cit9OworCitzdGF0aWMg
dm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbihBdXRvbWF0aW9uVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBTdHJpbmcgc2Vzc2lvbklEID0gY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpOworICAgIC8vIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjphdXRv
bWF0aW9uLXN0YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBhdXRvbWF0aW9uIGlzIG5vdCBlbmFi
bGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxv
d2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGF1dG8qIHNlc3Npb24gPSB0ZXN0
LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnQo
IXNlc3Npb24pOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93
ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQo
KSkpOworICAgIHNlc3Npb24gPSB0ZXN0LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgp
LmRhdGEoKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
Z2V0X2lkKHNlc3Npb24pLCA9PSwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGVzdC0+bV90YXJnZXQuaWQsID4sIDApOworICAgIEFTU0VSVF9DTVBfQ1NU
UklORyh0ZXN0LT5tX3RhcmdldC5uYW1lLCA9PSwgc2Vzc2lvbklELnV0ZjgoKSk7CisgICAgZ19h
c3NlcnQoIXRlc3QtPm1fdGFyZ2V0LmlzUGFpcmVkKTsKKworICAgIC8vIFdpbGwgZmFpbCB0byBj
cmVhdGUgYSBicm93c2luZyBjb250ZXh0IHdoZW4gbm90IGNyZWF0aW5nIGEgd2ViIHZpZXcgKG9y
IG5vdCBoYW5kbGluZyB0aGUgc2lnbmFsKS4KKyAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9w
TGV2ZWxCcm93c2luZ0NvbnRleHQobnVsbHB0cikpOworCisgICAgLy8gV2lsbCBhbHNvIGZhaWwg
aWYgdGhlIHdlYiB2aWV3IGlzIG5vdCBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uCisgICAgR1Jl
ZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdf
YXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZp
ZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0Nv
bnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJv
cGVyIHdlYiB2aWV3LgorICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCksICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRyKSk7Cisg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3
ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2lu
Z0NvbnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9h
dXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBGQUxTRSk7Cit9CisK
K3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJW
RVIiLCAiMTI3LjAuMC4xOjIyMjkiLCBUUlVFKTsKKworICAgIEF1dG9tYXRpb25UZXN0OjphZGQo
IldlYktpdEF1dG9tYXRpb25TZXNzaW9uIiwgInJlcXVlc3Qtc2Vzc2lvbiIsIHRlc3RBdXRvbWF0
aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAg
Z191bnNldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308525</attachid>
            <date>2017-04-28 06:39:02 -0700</date>
            <delta_ts>2017-04-28 06:45:11 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57385</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjBiMGNlYWE3NTk1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07CisgICAgICAgIENTdHJpbmcgbmFt
ZTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQgeyBmYWxzZSB9OworICAgIH07CisKKyAgICBj
b25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2ludGVyZmFjZVZUYWJsZSA9IHsKKyAgICAgICAg
Ly8gbWV0aG9kX2NhbGwKKyAgICAgICAgW10oR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBj
b25zdCBnY2hhciogc2VuZGVyLCBjb25zdCBnY2hhciogb2JqZWN0UGF0aCwgY29uc3QgZ2NoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGdjaGFyKiBtZXRob2ROYW1lLCBHVmFyaWFudCogcGFyYW1l
dGVycywgR0RCdXNNZXRob2RJbnZvY2F0aW9uKiBpbnZvY2F0aW9uLCBncG9pbnRlciB1c2VyRGF0
YSkgeworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PEF1dG9tYXRpb25UZXN0
Kj4odXNlckRhdGEpOworICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlNl
dFRhcmdldExpc3QiKSkgeworICAgICAgICAgICAgICAgIGd1aW50NjQgY29ubmVjdGlvbklEOwor
ICAgICAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R1ZhcmlhbnRJdGVyPiBpdGVyOworICAgICAg
ICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIih0YSh0c3NzYikpIiwgJmNvbm5l
Y3Rpb25JRCwgJml0ZXIub3V0UHRyKCkpOworICAgICAgICAgICAgICAgIGd1aW50NjQgdGFyZ2V0
SUQ7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZTsKKyAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBuYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGR1bW15OworICAg
ICAgICAgICAgICAgIGdib29sZWFuIGlzUGFpcmVkOworICAgICAgICAgICAgICAgIHdoaWxlIChn
X3ZhcmlhbnRfaXRlcl9sb29wKGl0ZXIuZ2V0KCksICIodCZzJnMmc2IpIiwgJnRhcmdldElELCAm
dHlwZSwgJm5hbWUsICZkdW1teSwgJmlzUGFpcmVkKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWdfc3RyY21wMCh0eXBlLCAiQXV0b21hdGlvbiIpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBUYXJnZXQgdGFyZ2V0ID0geyB0YXJnZXRJRCwgbmFtZSwgaXNQYWlyZWQgfTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3QtPnNldFRhcmdldChjb25uZWN0aW9uSUQsIFdURk1vdmUo
dGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnX2RidXNfbWV0aG9k
X2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIG51bGxwdHIpOworICAgICAgICAg
ICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJTZW5kTWVzc2FnZVRvRnJvbnRl
bmQiKSkgeworICAgICAgICAgICAgICAgIGd1aW50NjQgY29ubmVjdGlvbklELCB0YXJnZXRJRDsK
KyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlOworICAgICAgICAgICAgICAgIGdf
dmFyaWFudF9nZXQocGFyYW1ldGVycywgIih0dCZzKSIsICZjb25uZWN0aW9uSUQsICZ0YXJnZXRJ
RCwgJm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3QtPnJlY2VpdmVkTWVzc2FnZShjb25u
ZWN0aW9uSUQsIHRhcmdldElELCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBnX2RidXNfbWV0
aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIG51bGxwdHIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAvLyBnZXRfcHJvcGVydHkKKyAgICAgICAgbnVs
bHB0ciwKKyAgICAgICAgLy8gc2V0X3Byb3BlcnR5CisgICAgICAgIG51bGxwdHIsCisgICAgICAg
IC8vIHBhZGRpbmcKKyAgICAgICAgbnVsbHB0cgorICAgIH07CisKKyAgICB2b2lkIHJlZ2lzdGVy
REJ1c09iamVjdCgpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0
aW9uWE1MW10gPQorICAgICAgICAgICAgIjxub2RlPiIKKyAgICAgICAgICAgICIgIDxpbnRlcmZh
Y2UgbmFtZT0nb3JnLndlYmtpdGd0ay5SZW1vdGVJbnNwZWN0b3JDbGllbnQnPiIKKyAgICAgICAg
ICAgICIgICAgPG1ldGhvZCBuYW1lPSdTZXRUYXJnZXRMaXN0Jz4iCisgICAgICAgICAgICAiICAg
ICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdjb25uZWN0aW9uSUQnIGRpcmVjdGlvbj0naW4nLz4iCisg
ICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSdhKHRzc3NiKScgbmFtZT0nbGlzdCcgZGlyZWN0
aW9uPSdpbicvPiIKKyAgICAgICAgICAgICIgICAgPC9tZXRob2Q+IgorICAgICAgICAgICAgIiAg
ICA8bWV0aG9kIG5hbWU9J1NlbmRNZXNzYWdlVG9Gcm9udGVuZCc+IgorICAgICAgICAgICAgIiAg
ICAgIDxhcmcgdHlwZT0ndCcgbmFtZT0nY29ubmVjdGlvbklEJyBkaXJlY3Rpb249J2luJy8+Igor
ICAgICAgICAgICAgIiAgICAgIDxhcmcgdHlwZT0ndCcgbmFtZT0ndGFyZ2V0JyBkaXJlY3Rpb249
J2luJy8+IgorICAgICAgICAgICAgIiAgICAgIDxhcmcgdHlwZT0ncycgbmFtZT0nbWVzc2FnZScg
ZGlyZWN0aW9uPSdpbicvPiIKKyAgICAgICAgICAgICIgICAgPC9tZXRob2Q+IgorICAgICAgICAg
ICAgIiAgPC9pbnRlcmZhY2U+IgorICAgICAgICAgICAgIjwvbm9kZT4iOworICAgICAgICBzdGF0
aWMgR0RCdXNOb2RlSW5mbyogaW50cm9zcGVjdGlvbkRhdGEgPSBudWxscHRyOworICAgICAgICBp
ZiAoIWludHJvc3BlY3Rpb25EYXRhKQorICAgICAgICAgICAgaW50cm9zcGVjdGlvbkRhdGEgPSBn
X2RidXNfbm9kZV9pbmZvX25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25YTUwsIG51bGxwdHIpOwor
ICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QobV9jb25uZWN0aW9uLmdl
dCgpLCAiL29yZy93ZWJraXRndGsvUmVtb3RlSW5zcGVjdG9yQ2xpZW50IiwgaW50cm9zcGVjdGlv
bkRhdGEtPmludGVyZmFjZXNbMF0sICZzX2ludGVyZmFjZVZUYWJsZSwgdGhpcywgbnVsbHB0ciwg
bnVsbHB0cik7CisgICAgfQorCisgICAgdm9pZCBzZXRDb25uZWN0aW9uKEdSZWZQdHI8R0RCdXND
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgeworICAgICAgICBnX2Fzc2VydChHX0lTX0RC
VVNfQ09OTkVDVElPTihjb25uZWN0aW9uLmdldCgpKSk7CisgICAgICAgIG1fY29ubmVjdGlvbiA9
IFdURk1vdmUoY29ubmVjdGlvbik7CisgICAgICAgIHJlZ2lzdGVyREJ1c09iamVjdCgpOworICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOworICAgIH0KKworICAgIHZv
aWQgc2V0VGFyZ2V0KGd1aW50NjQgY29ubmVjdGlvbklELCBUYXJnZXQmJiB0YXJnZXQpCisgICAg
eworICAgICAgICBib29sIG5ld0Nvbm5lY3Rpb24gPSAhbV9jb25uZWN0aW9uSUQ7CisgICAgICAg
IGJvb2wgd2FzUGFpcmVkID0gbV90YXJnZXQuaXNQYWlyZWQ7CisgICAgICAgIG1fY29ubmVjdGlv
bklEID0gY29ubmVjdGlvbklEOworICAgICAgICBtX3RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsK
KyAgICAgICAgaWYgKG5ld0Nvbm5lY3Rpb24gfHwgKCF3YXNQYWlyZWQgJiYgbV90YXJnZXQuaXNQ
YWlyZWQpKQorICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsK
KyAgICB9CisKKyAgICB2b2lkIHJlY2VpdmVkTWVzc2FnZShndWludDY0IGNvbm5lY3Rpb25JRCwg
Z3VpbnQ2NCB0YXJnZXRJRCwgY29uc3QgY2hhciogbWVzc2FnZSkKKyAgICB7CisgICAgICAgIGdf
YXNzZXJ0KGNvbm5lY3Rpb25JRCA9PSBtX2Nvbm5lY3Rpb25JRCk7CisgICAgICAgIGdfYXNzZXJ0
KHRhcmdldElEID09IG1fdGFyZ2V0LmlkKTsKKyAgICAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsK
KyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNlbmRDb21tYW5kVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3Qg
U3RyaW5nJiBwYXJhbWV0ZXJzID0gU3RyaW5nKCkpCisgICAgeworICAgICAgICBzdGF0aWMgbG9u
ZyBzZXF1ZW5jZUlEID0gMDsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlQnVpbGRlcjsK
KyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie1wiaWRcIjoiKTsKKyAgICAg
ICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKCsrc2VxdWVuY2VJRCk7CisgICAgICAgIG1l
c3NhZ2VCdWlsZGVyLmFwcGVuZExpdGVyYWwoIixcIm1ldGhvZFwiOlwiQXV0b21hdGlvbi4iKTsK
KyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQpOworICAgICAgICBtZXNzYWdl
QnVpbGRlci5hcHBlbmQoJyInKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsXCJwYXJhbXNcIjoi
KTsKKyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzKTsKKyAgICAg
ICAgfQorICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoJ30nKTsKKyAgICAgICAgZ19kYnVz
X2Nvbm5lY3Rpb25fY2FsbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsICIvb3JnL3dlYmtp
dGd0ay9JbnNwZWN0b3IiLCAib3JnLndlYmtpdGd0ay5JbnNwZWN0b3IiLAorICAgICAgICAgICAg
IlNlbmRNZXNzYWdlVG9CYWNrZW5kIiwgZ192YXJpYW50X25ldygiKHR0cykiLCBtX2Nvbm5lY3Rp
b25JRCwgbV90YXJnZXQuaWQsIG1lc3NhZ2VCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSksCisgICAgICAgICAgICBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJU
LCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgfQorCisgICAgc3RhdGljIFdl
YktpdFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdDYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
biogc2Vzc2lvbiwgQXV0b21hdGlvblRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5t
X2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gdGVzdC0+bV93
ZWJWaWV3Rm9yQXV0b21hdGlvbjsKKyAgICB9CisKKyAgICB2b2lkIGF1dG9tYXRpb25TdGFydGVk
KFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQorICAgIHsKKyAgICAgICAgbV9zZXNz
aW9uID0gc2Vzc2lvbjsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChtX3Nlc3Npb24pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhdXRv
bWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uLCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKKyAgICB7
CisgICAgICAgIGdfYXNzZXJ0KHdlYkNvbnRleHQgPT0gdGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTihzZXNzaW9u
KSk7CisgICAgICAgIHRlc3QtPmF1dG9tYXRpb25TdGFydGVkKHNlc3Npb24pOworICAgIH0KKwor
ICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiByZXF1ZXN0U2Vzc2lvbihjb25zdCBjaGFyKiBz
ZXNzaW9uSUQpCisgICAgeworICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVj
dChtX3dlYkNvbnRleHQuZ2V0KCksICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1
dG9tYXRpb25TdGFydGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19kYnVzX2Nvbm5lY3Rp
b25fY2FsbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsICIvb3JnL3dlYmtpdGd0ay9JbnNw
ZWN0b3IiLCAib3JnLndlYmtpdGd0ay5JbnNwZWN0b3IiLAorICAgICAgICAgICAgIlN0YXJ0QXV0
b21hdGlvblNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIocykiLCBzZXNzaW9uSUQpLCBudWxscHRy
LCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0cik7CisgICAgICAgIGF1dG8gdGltZW91dElEID0gZ190aW1lb3V0X2FkZCgxMDAwLCBb
XShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICAgICAgZ19tYWluX2xv
b3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxvb3AqPih1c2VyRGF0YSkpOworICAgICAgICAgICAg
cmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgICAgICAgfSwgbV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgaWYgKCFt
X2Nvbm5lY3Rpb25JRCkKKyAgICAgICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CisgICAgICAg
IGlmIChtX3Nlc3Npb24gJiYgbV9jb25uZWN0aW9uSUQpCisgICAgICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUodGltZW91dElEKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
d2ViQ29udGV4dC5nZXQoKSwgc2lnbmFsSUQpOworICAgICAgICByZXR1cm4gbV9zZXNzaW9uOwor
ICAgIH0KKworICAgIHZvaWQgc2V0dXBJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAobV90
YXJnZXQuaXNQYWlyZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdfYXNzZXJ0KG1f
dGFyZ2V0LmlkKTsKKyAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2Nvbm5lY3Rpb24u
Z2V0KCksIG51bGxwdHIsICIvb3JnL3dlYmtpdGd0ay9JbnNwZWN0b3IiLCAib3JnLndlYmtpdGd0
ay5JbnNwZWN0b3IiLAorICAgICAgICAgICAgIlNldHVwIiwgZ192YXJpYW50X25ldygiKHR0KSIs
IG1fY29ubmVjdGlvbklELCBtX3RhcmdldC5pZCksIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdT
X05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydChtX3Rh
cmdldC5pc1BhaXJlZCk7CisgICAgfQorCisgICAgYm9vbCBjcmVhdGVUb3BMZXZlbEJyb3dzaW5n
Q29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgc2V0dXBJZk5l
ZWRlZCgpOworICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0aW9uID0gd2ViVmlldzsKKyAgICAg
ICAgbV9jcmVhdGVXZWJWaWV3V2FzQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIG1fbWVzc2FnZSA9
IENTdHJpbmcoKTsKKyAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9z
ZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Q2FsbGJh
Y2spLCB0aGlzKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5n
Q29udGV4dCIpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsK
KyAgICAgICAgZ19hc3NlcnQobV9jcmVhdGVXZWJWaWV3V2FzQ2FsbGVkKTsKKyAgICAgICAgZ19h
c3NlcnQoIW1fbWVzc2FnZS5pc051bGwoKSk7CisgICAgICAgIG1fd2ViVmlld0ZvckF1dG9tYXRp
b24gPSBudWxscHRyOworCisgICAgICAgIGlmIChzdHJzdHIobV9tZXNzYWdlLmRhdGEoKSwgIlRo
ZSByZW1vdGUgc2Vzc2lvbiBmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQi
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN0cnN0cihtX21lc3Nh
Z2UuZGF0YSgpLCAiaGFuZGxlIikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdSZWZQdHI8R01haW5Mb29wPiBtX21haW5Mb29w
OworICAgIEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgV2ViS2l0
QXV0b21hdGlvblNlc3Npb24qIG1fc2Vzc2lvbjsKKyAgICBndWludDY0IG1fY29ubmVjdGlvbklE
IHsgMCB9OworICAgIFRhcmdldCBtX3RhcmdldDsKKworICAgIFdlYktpdFdlYlZpZXcqIG1fd2Vi
Vmlld0ZvckF1dG9tYXRpb24geyBudWxscHRyIH07CisgICAgYm9vbCBtX2NyZWF0ZVdlYlZpZXdX
YXNDYWxsZWQgeyBmYWxzZSB9OworICAgIENTdHJpbmcgbV9tZXNzYWdlOworfTsKKworc3RhdGlj
IHZvaWQgdGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNlc3Npb24oQXV0b21hdGlvblRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgU3RyaW5nIHNlc3Npb25JRCA9IGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAvLyBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6YXV0
b21hdGlvbi1zdGFydGVkIGlzIG5ldmVyIGVtaXR0ZWQgaWYgYXV0b21hdGlvbiBpcyBub3QgZW5h
YmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxs
b3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gdGVz
dC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOworICAgIGdfYXNzZXJ0
KCFzZXNzaW9uKTsKKworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxv
d2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0
KCkpKTsKKyAgICBzZXNzaW9uID0gdGVzdC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lvbklELnV0Zjgo
KS5kYXRhKCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9pZChzZXNzaW9uKSwgPT0sIHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPm1fdGFyZ2V0LmlkLCA+LCAwKTsKKyAgICBBU1NFUlRfQ01QX0NT
VFJJTkcodGVzdC0+bV90YXJnZXQubmFtZSwgPT0sIHNlc3Npb25JRC51dGY4KCkpOworICAgIGdf
YXNzZXJ0KCF0ZXN0LT5tX3RhcmdldC5pc1BhaXJlZCk7CisKKyAgICAvLyBXaWxsIGZhaWwgdG8g
Y3JlYXRlIGEgYnJvd3NpbmcgY29udGV4dCB3aGVuIG5vdCBjcmVhdGluZyBhIHdlYiB2aWV3IChv
ciBub3QgaGFuZGxpbmcgdGhlIHNpZ25hbCkuCisgICAgZ19hc3NlcnQoIXRlc3QtPmNyZWF0ZVRv
cExldmVsQnJvd3NpbmdDb250ZXh0KG51bGxwdHIpKTsKKworICAgIC8vIFdpbGwgYWxzbyBmYWls
IGlmIHRoZSB3ZWIgdmlldyBpcyBub3QgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uLgorICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfY29udGV4dCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJW
aWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQoIXRlc3QtPmNyZWF0ZVRvcExldmVsQnJvd3NpbmdD
b250ZXh0KHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIEFuZCB3aWxsIHdvcmsgd2l0aCBhIHBy
b3BlciB3ZWIgdmlldy4KKyAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJDb250ZXh0
LmdldCgpLCAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwgbnVsbHB0cikpOwor
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24o
d2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHRlc3QtPmNyZWF0ZVRvcExldmVsQnJvd3Np
bmdDb250ZXh0KHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
YXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgRkFMU0UpOworfQor
Cit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAgZ19zZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VS
VkVSIiwgIjEyNy4wLjAuMToyMjI5IiwgVFJVRSk7CisKKyAgICBBdXRvbWF0aW9uVGVzdDo6YWRk
KCJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiIsICJyZXF1ZXN0LXNlc3Npb24iLCB0ZXN0QXV0b21h
dGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbik7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworICAg
IGdfdW5zZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VSVkVSIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308526</attachid>
            <date>2017-04-28 06:45:11 -0700</date>
            <delta_ts>2017-04-28 06:56:43 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57519</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjkwZTg4ZjdlOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIFRhcmdldCgpID0gZGVmYXVsdDsKKyAgICAgICAgVGFyZ2V0KGd1
aW50NjQgaWQsIENTdHJpbmcgbmFtZSwgYm9vbCBpc1BhaXJlZCkKKyAgICAgICAgICAgIDogaWQo
aWQpCisgICAgICAgICAgICAsIG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgaXNQYWlyZWQoaXNQ
YWlyZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07
CisgICAgICAgIENTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCBpc1BhaXJlZCB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRh
YmxlID0geworICAgICAgICAvLyBtZXRob2RfY2FsbAorICAgICAgICBbXShHREJ1c0Nvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IGdjaGFyKiBzZW5kZXIsIGNvbnN0IGdjaGFyKiBvYmplY3RQ
YXRoLCBjb25zdCBnY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUs
IEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24s
IGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nh
c3Q8QXV0b21hdGlvblRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21w
MChtZXRob2ROYW1lLCAiU2V0VGFyZ2V0TGlzdCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2
NCBjb25uZWN0aW9uSUQ7CisgICAgICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHVmFyaWFudEl0
ZXI+IGl0ZXI7CisgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHRh
KHRzc3NiKSkiLCAmY29ubmVjdGlvbklELCAmaXRlci5vdXRQdHIoKSk7CisgICAgICAgICAgICAg
ICAgZ3VpbnQ2NCB0YXJnZXRJRDsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZHVtbXk7CisgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQ7CisgICAgICAg
ICAgICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoaXRlci5nZXQoKSwgIih0JnMmcyZz
YikiLCAmdGFyZ2V0SUQsICZ0eXBlLCAmbmFtZSwgJmR1bW15LCAmaXNQYWlyZWQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghZ19zdHJjbXAwKHR5cGUsICJBdXRvbWF0aW9uIikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3QtPnNldFRhcmdldChjb25uZWN0aW9uSUQsIFRhcmdl
dCh0YXJnZXRJRCwgbmFtZSwgaXNQYWlyZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwg
bnVsbHB0cik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwg
IlNlbmRNZXNzYWdlVG9Gcm9udGVuZCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25u
ZWN0aW9uSUQsIHRhcmdldElEOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2U7
CisgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHR0JnMpIiwgJmNv
bm5lY3Rpb25JRCwgJnRhcmdldElELCAmbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgdGVzdC0+
cmVjZWl2ZWRNZXNzYWdlKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworICAgICAg
ICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlv
biwgbnVsbHB0cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIGdldF9w
cm9wZXJ0eQorICAgICAgICBudWxscHRyLAorICAgICAgICAvLyBzZXRfcHJvcGVydHkKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgLy8gcGFkZGluZworICAgICAgICBudWxscHRyCisgICAgfTsK
KworICAgIHZvaWQgcmVnaXN0ZXJEQnVzT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CisgICAgICAgICAgICAiPG5vZGU+IgorICAg
ICAgICAgICAgIiAgPGludGVyZmFjZSBuYW1lPSdvcmcud2Via2l0Z3RrLlJlbW90ZUluc3BlY3Rv
ckNsaWVudCc+IgorICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9J1NldFRhcmdldExpc3Qn
PiIKKyAgICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J3QnIG5hbWU9J2Nvbm5lY3Rpb25JRCcg
ZGlyZWN0aW9uPSdpbicvPiIKKyAgICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J2EodHNzc2Ip
JyBuYW1lPSdsaXN0JyBkaXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8L21ldGhv
ZD4iCisgICAgICAgICAgICAiICAgIDxtZXRob2QgbmFtZT0nU2VuZE1lc3NhZ2VUb0Zyb250ZW5k
Jz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdjb25uZWN0aW9uSUQn
IGRpcmVjdGlvbj0naW4nLz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBlPSd0JyBuYW1l
PSd0YXJnZXQnIGRpcmVjdGlvbj0naW4nLz4iCisgICAgICAgICAgICAiICAgICAgPGFyZyB0eXBl
PSdzJyBuYW1lPSdtZXNzYWdlJyBkaXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICA8
L21ldGhvZD4iCisgICAgICAgICAgICAiICA8L2ludGVyZmFjZT4iCisgICAgICAgICAgICAiPC9u
b2RlPiI7CisgICAgICAgIHN0YXRpYyBHREJ1c05vZGVJbmZvKiBpbnRyb3NwZWN0aW9uRGF0YSA9
IG51bGxwdHI7CisgICAgICAgIGlmICghaW50cm9zcGVjdGlvbkRhdGEpCisgICAgICAgICAgICBp
bnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVj
dGlvblhNTCwgbnVsbHB0cik7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29i
amVjdChtX2Nvbm5lY3Rpb24uZ2V0KCksICIvb3JnL3dlYmtpdGd0ay9SZW1vdGVJbnNwZWN0b3JD
bGllbnQiLCBpbnRyb3NwZWN0aW9uRGF0YS0+aW50ZXJmYWNlc1swXSwgJnNfaW50ZXJmYWNlVlRh
YmxlLCB0aGlzLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbm5l
Y3Rpb24oR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICB7CisgICAg
ICAgIGdfYXNzZXJ0KEdfSVNfREJVU19DT05ORUNUSU9OKGNvbm5lY3Rpb24uZ2V0KCkpKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgcmVnaXN0
ZXJEQnVzT2JqZWN0KCk7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQo
KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRUYXJnZXQoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIFRh
cmdldCYmIHRhcmdldCkKKyAgICB7CisgICAgICAgIGJvb2wgbmV3Q29ubmVjdGlvbiA9ICFtX2Nv
bm5lY3Rpb25JRDsKKyAgICAgICAgYm9vbCB3YXNQYWlyZWQgPSBtX3RhcmdldC5pc1BhaXJlZDsK
KyAgICAgICAgbV9jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CisgICAgICAgIG1fdGFyZ2V0
ID0gV1RGTW92ZSh0YXJnZXQpOworICAgICAgICBpZiAobmV3Q29ubmVjdGlvbiB8fCAoIXdhc1Bh
aXJlZCAmJiBtX3RhcmdldC5pc1BhaXJlZCkpCisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0
KG1fbWFpbkxvb3AuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgcmVjZWl2ZWRNZXNzYWdlKGd1
aW50NjQgY29ubmVjdGlvbklELCBndWludDY0IHRhcmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoY29ubmVjdGlvbklEID09IG1fY29ubmVjdGlvbklE
KTsKKyAgICAgICAgZ19hc3NlcnQodGFyZ2V0SUQgPT0gbV90YXJnZXQuaWQpOworICAgICAgICBt
X21lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3Au
Z2V0KCkpOworICAgIH0KKworICAgIHZvaWQgc2VuZENvbW1hbmRUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHBhcmFtZXRlcnMgPSBTdHJpbmcoKSkKKyAgICB7
CisgICAgICAgIHN0YXRpYyBsb25nIHNlcXVlbmNlSUQgPSAwOworICAgICAgICBTdHJpbmdCdWls
ZGVyIG1lc3NhZ2VCdWlsZGVyOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJ7XCJpZFwiOiIpOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmROdW1iZXIoKytzZXF1
ZW5jZUlEKTsKKyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwibWV0aG9k
XCI6XCJBdXRvbWF0aW9uLiIpOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBlbmQoY29tbWFu
ZCk7CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgnIicpOworICAgICAgICBpZiAoIXBh
cmFtZXRlcnMuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIixcInBhcmFtc1wiOiIpOworICAgICAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5k
KHBhcmFtZXRlcnMpOworICAgICAgICB9CisgICAgICAgIG1lc3NhZ2VCdWlsZGVyLmFwcGVuZCgn
fScpOworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwg
bnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3Bl
Y3RvciIsCisgICAgICAgICAgICAiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiLCBnX3ZhcmlhbnRfbmV3
KCIodHRzKSIsIG1fY29ubmVjdGlvbklELCBtX3RhcmdldC5pZCwgbWVzc2FnZUJ1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxM
X0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogY3JlYXRlV2ViVmlld0NhbGxiYWNrKFdl
YktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uLCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKKyAg
ICB7CisgICAgICAgIHRlc3QtPm1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IHRydWU7CisgICAg
ICAgIHJldHVybiB0ZXN0LT5tX3dlYlZpZXdGb3JBdXRvbWF0aW9uOworICAgIH0KKworICAgIHZv
aWQgYXV0b21hdGlvblN0YXJ0ZWQoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCisg
ICAgeworICAgICAgICBtX3Nlc3Npb24gPSBzZXNzaW9uOworICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fc2Vzc2lvbikpOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4
dCogd2ViQ29udGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRp
b25UZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0
LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKHNlc3Npb24pKTsKKyAgICAgICAgdGVzdC0+YXV0b21hdGlvblN0YXJ0ZWQo
c2Vzc2lvbik7CisgICAgfQorCisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHJlcXVlc3RT
ZXNzaW9uKGNvbnN0IGNoYXIqIHNlc3Npb25JRCkKKyAgICB7CisgICAgICAgIGF1dG8gc2lnbmFs
SUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3Rh
cnRlZCIsIEdfQ0FMTEJBQ0soYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOworICAg
ICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwg
Ii9vcmcvd2Via2l0Z3RrL0luc3BlY3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisg
ICAgICAgICAgICAiU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIs
IHNlc3Npb25JRCksIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0x
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgYXV0byB0aW1lb3V0SUQgPSBn
X3RpbWVvdXRfYWRkKDEwMDAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7Cisg
ICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJE
YXRhKSk7CisgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9LCBt
X21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0
KCkpOworICAgICAgICBpZiAoIW1fY29ubmVjdGlvbklEKQorICAgICAgICAgICAgbV9zZXNzaW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fc2Vzc2lvbiAmJiBtX2Nvbm5lY3Rpb25JRCkKKyAg
ICAgICAgICAgIGdfc291cmNlX3JlbW92ZSh0aW1lb3V0SUQpOworICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCBzaWduYWxJRCk7CisgICAgICAg
IHJldHVybiBtX3Nlc3Npb247CisgICAgfQorCisgICAgdm9pZCBzZXR1cElmTmVlZGVkKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX3RhcmdldC5pc1BhaXJlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaWQpOworICAgICAgICBnX2RidXNfY29ubmVjdGlv
bl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0Z3RrL0luc3Bl
Y3RvciIsICJvcmcud2Via2l0Z3RrLkluc3BlY3RvciIsCisgICAgICAgICAgICAiU2V0dXAiLCBn
X3ZhcmlhbnRfbmV3KCIodHQpIiwgbV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0LmlkKSwgbnVsbHB0
ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgICAgIGdfYXNzZXJ0KG1fdGFyZ2V0LmlzUGFpcmVkKTsKKyAgICB9CisKKyAgICBib29sIGNy
ZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAg
eworICAgICAgICBzZXR1cElmTmVlZGVkKCk7CisgICAgICAgIG1fd2ViVmlld0ZvckF1dG9tYXRp
b24gPSB3ZWJWaWV3OworICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsK
KyAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmluZygpOworICAgICAgICBhdXRvIHNpZ25hbElEID0g
Z19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNL
KGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFj
a2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
c2Vzc2lvbiwgc2lnbmFsSUQpOworICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXND
YWxsZWQpOworICAgICAgICBnX2Fzc2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAg
bV93ZWJWaWV3Rm9yQXV0b21hdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKHN0cnN0ciht
X21lc3NhZ2UuZGF0YSgpLCAiVGhlIHJlbW90ZSBzZXNzaW9uIGZhaWxlZCB0byBjcmVhdGUgYSBu
ZXcgYnJvd3NpbmcgY29udGV4dCIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJoYW5kbGUiKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR1JlZlB0cjxH
TWFpbkxvb3A+IG1fbWFpbkxvb3A7CisgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogbV9zZXNzaW9uOworICAgIGd1
aW50NjQgbV9jb25uZWN0aW9uSUQgeyAwIH07CisgICAgVGFyZ2V0IG1fdGFyZ2V0OworCisgICAg
V2ViS2l0V2ViVmlldyogbV93ZWJWaWV3Rm9yQXV0b21hdGlvbiB7IG51bGxwdHIgfTsKKyAgICBi
b29sIG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCB7IGZhbHNlIH07CisgICAgQ1N0cmluZyBtX21l
c3NhZ2U7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vz
c2lvbihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBTdHJpbmcg
c2Vzc2lvbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIC8vIFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uOjphdXRvbWF0aW9uLXN0YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBh
dXRvbWF0aW9uIGlzIG5vdCBlbmFibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRl
eHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAg
IGF1dG8qIHNlc3Npb24gPSB0ZXN0LT5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uSUQudXRmOCgpLmRh
dGEoKSk7CisgICAgZ19hc3NlcnQoIXNlc3Npb24pOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVFKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRl
c3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIHNlc3Npb24gPSB0ZXN0LT5yZXF1ZXN0U2Vz
c2lvbihzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lkKHNlc3Npb24pLCA9PSwgc2Vzc2lvbklELnV0Zjgo
KS5kYXRhKCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV90YXJnZXQuaWQsID4sIDAp
OworICAgIEFTU0VSVF9DTVBfQ1NUUklORyh0ZXN0LT5tX3RhcmdldC5uYW1lLCA9PSwgc2Vzc2lv
bklELnV0ZjgoKSk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1fdGFyZ2V0LmlzUGFpcmVkKTsKKwor
ICAgIC8vIFdpbGwgZmFpbCB0byBjcmVhdGUgYSBicm93c2luZyBjb250ZXh0IHdoZW4gbm90IGNy
ZWF0aW5nIGEgd2ViIHZpZXcgKG9yIG5vdCBoYW5kbGluZyB0aGUgc2lnbmFsKS4KKyAgICBnX2Fz
c2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQobnVsbHB0cikpOworCisg
ICAgLy8gV2lsbCBhbHNvIGZhaWwgaWYgdGhlIHdlYiB2aWV3IGlzIG5vdCBjb250cm9sbGVkIGJ5
IGF1dG9tYXRpb24uCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29u
dGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxl
ZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+Y3Jl
YXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgLy8gQW5k
IHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2aWV3LgorICAgIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQi
LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24i
LCBUUlVFLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQodGVzdC0+
Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2ViVmlldy5nZXQoKSkpOworCisgICAgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0
LmdldCgpLCBGQUxTRSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NldGVudigi
V0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiLCAiMTI3LjAuMC4xOjIyMjkiLCBUUlVFKTsKKworICAg
IEF1dG9tYXRpb25UZXN0OjphZGQoIldlYktpdEF1dG9tYXRpb25TZXNzaW9uIiwgInJlcXVlc3Qt
c2Vzc2lvbiIsIHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKTsKK30KKwordm9p
ZCBhZnRlckFsbCgpCit7CisgICAgZ191bnNldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIi
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308527</attachid>
            <date>2017-04-28 06:56:43 -0700</date>
            <delta_ts>2017-04-28 07:23:02 -0700</delta_ts>
            <desc>Try to fix EWS build</desc>
            <filename>wk2-automation-api.diff</filename>
            <type>text/plain</type>
            <size>57482</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDk3ODk0NDdmOTQ3
Li45NTRmZWFkM2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0
MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwLgorCiAyMDE3LTA0LTI1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViS2l0SW5zcGVjdG9yV2luZG93IHRvIGNyZWF0ZSBpbnNwZWN0b3Igd2luZG93
cyBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggOTAwNmY2ZmYzOGYuLmZmYjI1YmVjMzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCkBAIC03LDYgKzcsNyBA
QCBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkVycm9yc0d0ay5jcHAKIC4uLy4uLy4uL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViRXJyb3JzU291
cC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCisuLi8uLi8uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWNkYmI1MTMxYzcu
LmFhYThhZTA2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDQtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBhbGxvdyBXZWJLaXRHVEsrIHRvIGJl
IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4gQnkgZGVmYXVsdCBpdCdzIGRpc2FibGVkLCBhcHBs
aWNhdGlvbnMgaGF2ZSB0bworICAgICAgICBleHBsaWNpdGx5IGNhbGwgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoKSB0byBlbmFibGVkIGl0LiBXaGVuIGEgbmV3IGF1
dG9tYXRpb24gc2Vzc2lvbiBpcworICAgICAgICByZXF1ZXN0ZWQsIHRoZSBzaWduYWwgV2ViS2l0
V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQKKyAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHNpbWlsYXIgdG8gaG93IFdl
YktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQgd29ya3MuIFRoZSB1c2VyIHNob3VsZCBj
b25uZWN0IHRvIGl0CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiBhbmQgY29ubmVjdCBpdCBpdHMgc2lnbmFscy4gV2hlbiBhIG5ldyB3ZWIgdmlldyBp
cyByZXF1ZXN0ZWQgdG8gYmUKKyAgICAgICAgY3JlYXRlZCBpbiBhIFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB0aGUgc2lnbmFsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZp
ZXcgaXMgZW1pdHRlZC4gVGhlIHVzZXIKKyAgICAgICAgc2hvdWxkIGNvbm5lY3QgdG8gaXQgYW5k
IHJldHVybiBhIFdlYktpdFdlYlZpZXcuIFRoZSB3ZWIgdmlld3MgdXNlZCBmb3IgYXV0b21hdGlv
biBhcmUgc3BlY2lhbCBvbmVzIGFuZCBuZWVkIHRvCisgICAgICAgIGJlIGNyZWF0ZWQgd2l0aCB0
aGUgbmV3IFdlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIGNvbnN0cnVj
dCBwcm9wZXJ0eSBlbmFibGVkLCBvdGhlcndpc2Ugd2Ugd2lsbAorICAgICAgICByZWZ1c2UgdG8g
Y3JlYXRlIHRoZSByZXF1ZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNz
aW9uX2dldF9pZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0
cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxNy0wNC0yOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggV2ViUHJvY2Vzc1Bvb2wgdG8g
dHJhY2sgYSBtYXAgb2YgU2Vzc2lvbklEcyB0byBXZWJQYWdlUHJveHlzIHRvIG1hbmFnZSB0aGVp
ciBsaWZldGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYmIxNjYxNzkzYy4uYjA4
MDVkMDk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjQsNiArMTI0LDkgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNTMzLDYgKzUzNiw3IEBAIHNldChXZWJL
aXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisgICAgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhYmRiM2NlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
CisjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEF1dG9t
YXRpb24gU2Vzc2lvbgorICogQFRpdGxlOiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYW4gYXV0b21hdGlvbiBzZXNzaW9u
IG9mIGEgV2ViS2l0V2ViQ29udGV4dC4KKyAqIFdoZW4gYSBuZXcgc2Vzc2lvbiBpcyByZXF1ZXN0
ZWQsIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gaXMgY3JlYXRlZCBhbmQgdGhlIHNpZ25hbAor
ICogV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIGlzIGVtaXR0ZWQgd2l0aCB0
aGUgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gYXMKKyAqIGFyZ3VtZW50LiBUaGVuLCB0aGUgYXV0
b21hdGlvbiBjbGllbnQgY2FuIHJlcXVlc3QgdGhlIHNlc3Npb24gdG8gY3JlYXRlIGEgbmV3Cisg
KiAjV2ViS2l0V2ViVmlldyB0byBpbnRlcmFjdCB3aXRoIGl0LiBXaGVuIHRoaXMgaGFwcGVucyB0
aGUgc2lnbmFsICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbjo6Y3JlYXRlLXdlYi12aWV3CisgKiBp
cyBlbWl0dGVkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KKworZW51bSB7CisgICAgUFJPUF8w
LAorCisgICAgUFJPUF9JRAorfTsKKworZW51bSB7CisgICAgQ1JFQVRFX1dFQl9WSUVXLAorCisg
ICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2
YXRlIHsKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgQ1N0
cmluZyBpZDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQorCitjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKKyAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtX3Nl
c3Npb24tPnByaXYtPmlkLmRhdGEoKSk7CisgICAgfQorCisgICAgV2ViUGFnZVByb3h5KiBkaWRS
ZXF1ZXN0TmV3V2luZG93KFdlYkF1dG9tYXRpb25TZXNzaW9uJikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBudWxscHRyOworICAgICAgICBnX3NpZ25h
bF9lbWl0KG1fc2Vzc2lvbiwgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddLCAwLCAmd2ViVmlldyk7
CisgICAgICAgIGlmICghd2ViVmlldyB8fCAhd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRf
YnlfYXV0b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIH0KKworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBtX3Nl
c3Npb247Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24g
PSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JRDoKKyAgICAgICAgc2Vz
c2lvbi0+cHJpdi0+aWQgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiA9IFdFQktJVF9BVVRPTUFUSU9OX1NF
U1NJT04ob2JqZWN0KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7Cisg
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpm
cm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKKyAgICBzZXNzaW9uLT5wcml2LT5z
ZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2NsYXNzX2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lv
bkNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0QXV0b21hdGlvblNlc3Npb246aWQ6CisgICAgICoKKyAgICAgKiBUaGUg
c2Vzc2lvbiB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0lELAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KAorICAgICAgICAgICAgImlkIiwKKyAgICAgICAgICAgIF8oIklkZW50aWZpZXIiKSwKKyAgICAg
ICAgICAgIF8oIlRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaWRlbnRpZmllciIpLAorICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICog
QHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCisgICAgICoKKyAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9tYXRpb24gY2xpZW50IHJlcXVlc3RzIGEg
bmV3CisgICAgICogYnJvd3NpbmcgY29udGV4dCB0byBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgY2Fs
bGJhY2sgaGFuZGxlciBzaG91bGQKKyAgICAgKiByZXR1cm4gYSAjV2ViS2l0V2ViVmlldyBjcmVh
dGVkIHdpdGggI1dlYktpdFdlYlZpZXc6aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uCisgICAg
ICogY29uc3RydWN0IHByb3BlcnR5IGVuYWJsZWQuIFRoZSByZXR1cm5lZCAjV2ViS2l0V2ViVmll
dyBjb3VsZCBiZSBhbiBleGlzdGluZworICAgICAqIHdlYiB2aWV3IG9yIGEgbmV3IG9uZSBjcmVh
dGVkIGFuZCBhZGRlZCB0byBhIG5ldyB0YWIgb3Igd2luZG93LgorICAgICAqCisgICAgICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRXZWJWaWV3IHdpZGdldC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Moc2Vzc2lvbkNsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCwKKyAg
ICAgICAgR19UWVBFX05PTkUpOworfQorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0
QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKQoreworICAgIHJl
dHVybiBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04sICJpZCIsIHNlc3Npb25JRCwgbnVsbHB0cikpOworfQorCitXZWJB
dXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiAqc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbjsKK30KKworLyoqCisgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZDoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0
aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisg
KiBSZXR1cm5zOiB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgQHNlc3Npb24KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsK
KyAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwOGYxZjY1ZTk2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BVVRPTUFUSU9O
X1NFU1NJT04gICAgICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VT
U0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24pKQorI2RlZmluZSBXRUJLSVRfSVNfQVVUT01B
VElPTl9TRVNTSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0FVVE9NQVRJT05fU0VTU0lPTikpCisjZGVmaW5lIFdFQktJVF9BVVRP
TUFUSU9OX1NFU1NJT05fQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OLCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbkNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9B
VVRPTUFUSU9OX1NFU1NJT04pKQorI2RlZmluZSBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0FVVE9NQVRJT05fU0VTU0lPTiwgV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAgICAgICAgV2ViS2l0QXV0
b21hdGlvblNlc3Npb247Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25D
bGFzcyAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0QXV0b21hdGlvblNlc3Npb25faCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNTUyNTc4M2VmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Vi
a2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKK1dlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lv
bihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAxZWQyYzY1OTQ2MS4u
MWFhNDFmZmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKQEAgLTI3LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCkBAIC01MSw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRh
dGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEwLDYgKzExNCw3
IEBAIGVudW0gewogICAgIERPV05MT0FEX1NUQVJURUQsCiAgICAgSU5JVElBTElaRV9XRUJfRVhU
RU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKKyAgICBB
VVRPTUFUSU9OX1NUQVJURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE1MCw2ICsxNTUs
OCBAQCBwcml2YXRlOgogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiA+IFVSSVNjaGVtZVJlcXVlc3RN
YXA7CiAKK2NsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQ7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogICAgIFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2w7
CiAgICAgYm9vbCBjbGllbnRzRGV0YWNoZWQ7CkBAIC0xODAsMTEgKzE4Nyw0MyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBDU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPiByZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+IGF1dG9t
YXRpb25DbGllbnQ7CisgICAgR1JlZlB0cjxXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbj4gYXV0b21h
dGlvblNlc3Npb247CisgICAgYm9vbCBhdXRvbWF0aW9uQWxsb3dlZDsKICNlbmRpZgogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCitjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldFJlbW90ZUluc3BlY3RvckNsaWVudCh0aGlz
KTsKKyAgICB9CisKKyAgICB+V2ViS2l0QXV0b21hdGlvbkNsaWVudCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KG51bGxwdHIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJDb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQWxsb3dlZDsgfQorCisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbik7Cisg
ICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBhZG9wdEdSZWYo
d2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRv
bWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwgMCwgbV93ZWJD
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtp
dF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCkKQEAgLTI5NCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAg
LTQyMyw2ICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2lu
aXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkNvbnRleHQ6OmF1dG9tYXRpb24tc3RhcnRlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNX
ZWJLaXRXZWJDb250ZXh0CisgICAgICogQHNlc3Npb246IHRoZSAjV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHJlcXVlc3QgaXMgbWFkZS4KKyAg
ICAgKiBOb3RlIHRoYXQgaXQgd2lsbCBuZXZlciBiZSBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMg
bm90IGVuYWJsZWQgaW4gQGNvbnRleHQsCisgICAgICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjE4CisgICAgICovCisgICAgc2lnbmFsc1tBVVRPTUFUSU9OX1NUQVJURURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRvbWF0aW9uLXN0YXJ0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkNvbnRleHRDbGFz
cywgYXV0b21hdGlvbl9zdGFydGVkKSwKKyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAg
R19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJ
T04pOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50
ZXIpCkBAIC01MzAsNiArNTkxLDQ5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19l
cGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2Vi
S2l0V2ViQ29udGV4dAorICoKKyAqIEdldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMgYWxsb3dlZCBp
biBAY29udGV4dC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlv
bl9hbGxvd2VkKCkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgYXV0b21hdGlvbiBpcyBhbGxv
d2VkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPmF1
dG9tYXRpb25BbGxvd2VkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICog
QGFsbG93ZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIFNldCB3aGV0aGVyIGF1dG9tYXRpb24gaXMg
YWxsb3dlZCBpbiBAY29udGV4dC4gV2hlbiBhdXRvbWF0aW9uIGlzIGVuYWJsZWQgdGhlIGJyb3dz
ZXIgY291bGQKKyAqIGJlIGNvbnRyb2xsZWQgYnkgYW5vdGhlciBwcm9jZXNzIGJ5IHJlcXVlc3Rp
bmcgYW4gYXV0b21hdGlvbiBzZXNzaW9uLiBXaGVuIGEgbmV3IGF1dG9tYXRpb24KKyAqIHNlc3Np
b24gaXMgcmVxdWVzdGVkIHRoZSBzaWduYWwgI1dlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRpb24t
c3RhcnRlZCBpcyBlbWl0dGVkLgorICogQXV0b21hdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LCBzbyB5b3UgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgdGhpcyBtZXRob2QgcGFzc2luZyAlVFJV
RQorICogdG8gZW5hYmxlIGl0LgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkFsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25BbGxvd2VkID0gYWxsb3dlZDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKworLyoqCiAgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29u
dGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVsCkBAIC0xNTAxLDYgKzE2
MDUsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0aW5nc0dldFByZWZlcmVuY2VzKHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Mod2ViVmlldykpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UocmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0
VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRl
bnRNYW5hZ2VyKSA6IG51bGxwdHIpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRp
b24od2ViVmlldykpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
d2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcih3ZWJWaWV3KTsKICAgICBpZiAoIW1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggNWFlMTY2NjU1M2IuLjMxNDlhMzI5YzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtMTQ1LDE2ICsxNDYsMTcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0g
ICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGlu
aXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29u
dGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykg
KFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTE3OCw2ICsxODAsMTIgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlciAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
CiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRp
b25fYWxsb3dlZCAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0
aW9uX2FsbG93ZWQgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQpOwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDYWNoZU1vZGVsICAg
ICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjMzIwNWVlMzE1Mi4uMjQ3YmEzMmI2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JU19MT0FESU5H
LAogICAgIFBST1BfSVNfUExBWUlOR19BVURJTywKICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAg
ICBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTiwKICAgICBQUk9QX0VESVRBQkxFCiB9
OwogCkBAIC0xODAsNiArMTgxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBhY3RpdmVVUkk7CiAgICAgYm9vbCBpc0xvYWRpbmc7CiAgICAgYm9vbCBpc0Vw
aGVtZXJhbDsKKyAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IGxvYWRPYnNlcnZlcjsKIApAQCAtNjY3
LDYgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKHByaXYtPnJlbGF0ZWRWaWV3KSB7CiAgICAgICAgIHByaXYtPmNv
bnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQocHJpdi0+cmVsYXRlZFZpZXcpOwog
ICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgICAgICBwcml2LT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHByaXYtPnJl
bGF0ZWRWaWV3KTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2
LT5jb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CiAgICAgZWxzZSBp
ZiAoIXByaXYtPmlzRXBoZW1lcmFsKQpAQCAtNzM5LDYgKzc0Miw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+aXNFcGhlbWVyYWwgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0lTX0NPTlRST0xMRURfQllfQVVUT01BVElPTjoKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FRElUQUJMRToK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSh3ZWJWaWV3LCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg1LDYgKzc5MSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JU19DT05UUk9MTEVE
X0JZX0FVVE9NQVRJT046CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTA0OCw2ICsxMDU3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzppcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb246CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRo
ZSAjV2ViS2l0V2ViVmlldyBpcyBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uIFRoaXMgc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuCisgICAgICogY3JlYXRpbmcgYSBuZXcgI1dlYktpdFdlYlZpZXcg
YXMgYSByZXNwb25zZSB0byAjV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmNyZWF0ZS13ZWItdmll
dworICAgICAqIHNpZ25hbCByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTgKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSVNfQ09OVFJPTExFRF9CWV9BVVRPTUFUSU9OLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLAorICAgICAgICAgICAgIklzIENvbnRyb2xsZWQgQnkgQXV0b21hdGlvbiIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBjcm9udHJvbGxlZCBieSBh
dXRvbWF0aW9uIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAg
ICoKICAgICAgKiBXaGV0aGVyIHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3
IGFyZSBlZGl0YWJsZS4gRm9yIG1vcmUKQEAgLTIzMTcsNiArMjM0NSwyNSBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB3aGV0aGVyIGEgI1dlYktp
dFdlYlZpZXcgd2FzIGNyZWF0ZWQgd2l0aCAjV2ViS2l0V2ViVmlldzppcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24KKyAqIHByb3BlcnR5IGVuYWJsZWQuIE9ubHkgI1dlYktpdFdlYlZpZXc8IS0t
IC0tPnMgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uIGNhbiBiZSB1c2VkIGluIGFuCisgKiBhdXRv
bWF0aW9uIHNlc3Npb24uCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHdlYl92aWV3IGlzIGNv
bnRyb2xsZWQgYnkgYXV0b21hdGlvbiwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBTaW5j
ZTogMi4xOAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9h
dXRvbWF0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTBiN2JkZWY5Y2MuLjRjM2JjNmE3Y2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
NzcsNiArMjc3LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24gICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2Li44
YmJhNGNjODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTMzLDYg
KzMzLDggQEAgd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAord2Via2l0X3dlYl9jb250ZXh0X2lz
X2F1dG9tYXRpb25fYWxsb3dlZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2Fs
bG93ZWQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2Fj
aGVfbW9kZWwKQEAgLTE2MSw2ICsxNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAord2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbgogd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCkBAIC0x
MzA4LDYgKzEzMTEsMjUgQEAgV0VCS0lUX1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJ
TkdTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QXV0b21hdGlvblNlc3Np
b248L0ZJTEU+CitXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgord2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9nZXRfaWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZQord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MKK1dFQktJVF9UWVBF
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0lT
X0FVVE9NQVRJT05fU0VTU0lPTgorV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VC
S0lUX0lTX0FVVE9NQVRJT05fU0VTU0lPTl9DTEFTUworV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lP
Tl9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJFeHRl
bnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRp
YWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggNDAzMDUxYWU3ZDAuLjlkZmRl
Mjc1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTM1LDMgKzM1LDQgQEAgd2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQog
d2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfZ2V0X3R5cGUKIHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF90eXBlCit3ZWJr
aXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA4
NTBkN2RiMGJhNi4uNWY5M2Q5NTcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNTYsNiAr
NTYsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5n
cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24ueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTExOCw1ICsxMTksMTAg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMTYueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5k
ZXgtMi0xOCIgcm9sZT0iMi4xOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGlu
IDIuMTg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4xOC54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgICA8L2luZGV4PgorCiAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5LnhtbCI+PHhpOmZhbGxiYWNrIC8+
PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDYzZGQxZDViZTcxLi4yMjk4MjJjZjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBfX1dFQktJVDJfSF9JTlNJREVfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzY0ZmVkNmY2NjUuLjQ0ZTM3ZjRkN2NlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTctMDQtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhdXRvbWF0aW9uIHNlc3Npb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE0MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXV0b21hdGlvbiBtb2Rl
IHRvIE1pbmlCcm93c2VyIHVzaW5nIHRoZSBuZXcgQVBJIGFuZCBhZGQgYSB1bml0IHRlc3QgdG9v
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHdlYlZpZXdUaXRsZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6Cisg
ICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6Cisg
ICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
aW5pdCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93
c2VyVGFiKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNl
c3Npb24pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAx
Ny0wNC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBVVUlEIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSB0byBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGI4MDE1N2ZhMjhkLi4zZDI0NjUwMzE4ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBjb25zdCBnZG91YmxlIG1pbmltdW1ab29tTGV2ZWwgPSAwLjU7CiBzdGF0aWMgY29uc3QgZ2Rv
dWJsZSBtYXhpbXVtWm9vbUxldmVsID0gMzsKIHN0YXRpYyBjb25zdCBnZG91YmxlIGRlZmF1bHRa
b29tTGV2ZWwgPSAxOwogc3RhdGljIGNvbnN0IGdkb3VibGUgem9vbVN0ZXAgPSAxLjI7Ci1zdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CitzdGF0aWMgR0xpc3QgKndpbmRvd0xpc3Q7CiAKIEdf
REVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywgYnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRP
VykKIApAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzCiAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgdGl0bGUgPSBkZWZhdWx0V2luZG93VGl0bGU7CiAgICAgY2hhciAq
cHJpdmF0ZVRpdGxlID0gTlVMTDsKLSAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bCh3ZWJWaWV3KSkKKyAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0
b21hdGlvbih3ZWJWaWV3KSkKKyAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBfcHJpbnRm
KCJbQXV0b21hdGlvbl0gJXMiLCB0aXRsZSk7CisgICAgZWxzZSBpZiAod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3KSkKICAgICAgICAgcHJpdmF0ZVRpdGxlID0gZ19zdHJkdXBf
cHJpbnRmKCJbUHJpdmF0ZV0gJXMiLCB0aXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyh3aW5kb3cpLCBwcml2YXRlVGl0bGUgPyBwcml2YXRlVGl0bGUgOiB0aXRsZSk7
CiAgICAgZ19mcmVlKHByaXZhdGVUaXRsZSk7CkBAIC0zNTUsNiArMzU3LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAg
ICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRy
b2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNDk2LDYgKzQ5OSw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgIndl
Yi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpLAogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShH
VEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KQEAgLTUxMyw2ICs1MTcsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3
X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwog
ICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRf
dmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBuZXdXZWJWaWV3KTsKQEAgLTY2Miw5ICs2
NjcsMTEgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmpl
Y3QpCiAKICAgICBnX2ZyZWUod2luZG93LT5zZXNzaW9uRmlsZSk7CiAKKyAgICB3aW5kb3dMaXN0
ID0gZ19saXN0X3JlbW92ZSh3aW5kb3dMaXN0LCB3aW5kb3cpOworCiAgICAgR19PQkpFQ1RfQ0xB
U1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7CiAKLSAg
ICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291bnQpKQorICAgIGlmICgh
d2luZG93TGlzdCkKICAgICAgICAgZ3RrX21haW5fcXVpdCgpOwogfQogCkBAIC04NjIsNyArODY5
LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1vdmVkKEd0a05vdGVi
b29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKIAogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5k
b3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgZ19hdG9taWNfaW50X2luYygm
d2luZG93Q291bnQpOworICAgIHdpbmRvd0xpc3QgPSBnX2xpc3RfYXBwZW5kKHdpbmRvd0xpc3Qs
IHdpbmRvdyk7CiAKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyks
IGRlZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtMTE1NywzICsxMTY0LDIzIEBAIHZvaWQg
YnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93
LCBHZGtSR0JBICpyZ2JhKQogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yKHdlYlZpZXcsIHJnYmEpOwogfQorCitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCit7CisgICAgaWYgKCF3
aW5kb3dMaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IChCcm93c2VyV2luZG93ICopd2luZG93TGlzdC0+ZGF0YTsKKyAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFi
KTsKKyAgICBpZiAoZ3RrX25vdGVib29rX2dldF9uX3BhZ2VzKEdUS19OT1RFQk9PSyh3aW5kb3ct
Pm5vdGVib29rKSkgPT0gMSAmJiAhd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwor
ICAgICAgICByZXR1cm4gd2ViVmlldzsKKworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldyks
CisgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCisgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgYnJvd3Nlcl93aW5kb3df
YXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1YWJkMDYxMjk1Li4x
MmJjNDE3Y2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC01MSw2
ICs1MSw3IEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyos
IFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3Nlcldp
bmRvdyosIGNvbnN0IGNoYXIgKnVyaSk7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xvYWRfc2Vzc2lv
bihCcm93c2VyV2luZG93ICosIGNvbnN0IGNoYXIgKnNlc3Npb25GaWxlKTsKIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyosIEdka1JHQkEqKTsK
K1dlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9y
X2F1dG9tYXRpb24odm9pZCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IGU1ZTU2MThjZDE4Li41NzA1NTQwNTZhMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00Miw2ICs0
Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBlZGl0b3JNb2RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnNl
c3Npb25GaWxlOwogc3RhdGljIGNoYXIgKmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZh
dGVNb2RlOworc3RhdGljIGdib29sZWFuIGF1dG9tYXRpb25Nb2RlOwogCiB0eXBlZGVmIGVudW0g
ewogICAgIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgKQEAgLTY3LDYgKzY4
LDcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJv
d3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRv
bWF0aW9uTW9kZSwKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC05
NSw2ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInNlc3Npb24tZmlsZSIsICdzJywgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmc2Vzc2lvbkZpbGUsICJTZXNzaW9uIGZpbGUiLCAiRklMRSIgfSwKICAgICB7ICJnZW9tZXRy
eSIsICdnJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmdlb21ldHJ5LCAiU2V0IHRoZSBzaXpl
IGFuZCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IChXSURUSHhIRUlHSFQrWCtZKSIsICJHRU9NRVRS
WSIgfSwKICAgICB7ICJwcml2YXRlIiwgJ3AnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaXZh
dGVNb2RlLCAiUnVuIGluIHByaXZhdGUgYnJvd3NpbmcgbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJh
dXRvbWF0aW9uIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZhdXRvbWF0aW9uTW9kZSwgIlJ1
biBpbiBhdXRvbWF0aW9uIG1vZGUiLCBOVUxMIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcs
IDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltV
UkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9CiB9OwpAQCAtNDQ4LDYgKzQ1
MSwxNiBAQCBzdGF0aWMgdm9pZCBhYm91dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaQogICAgIH0KIH0KIAorc3RhdGljIEd0a1dp
ZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRv
d19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKCkpOworfQorCitzdGF0aWMg
dm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5VTEwpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CkBAIC00NzYsNyAr
NDg5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAgICAgZ19v
cHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBwcml2YXRlTW9kZSA/IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKyAgICBXZWJLaXRXZWJDb250
ZXh0ICp3ZWJDb250ZXh0ID0gKHByaXZhdGVNb2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKTsKIAogICAgIGNvbnN0IGdjaGFyICpzaW5nbGVwcm9jZXNzID0gZ19nZXRlbnYoIk1J
TklCUk9XU0VSX1NJTkdMRVBST0NFU1MiKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2ViQ29udGV4dCwgKHNpbmdsZXByb2Nlc3MgJiYgKnNpbmdsZXByb2Nlc3Mp
ID8KQEAgLTQ5MSw2ICs1MDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9o
YW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0
RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCB3ZWJDb250ZXh0KTsKIAorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHdlYkNvbnRleHQsIGF1dG9tYXRpb25Nb2RlKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYkNvbnRleHQsICJhdXRvbWF0aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25T
dGFydGVkQ2FsbGJhY2spLCBOVUxMKTsKKwogICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOwog
ICAgIGlmIChnZW9tZXRyeSkKICAgICAgICAgZ3RrX3dpbmRvd19wYXJzZV9nZW9tZXRyeShHVEtf
V0lORE9XKG1haW5XaW5kb3cpLCBnZW9tZXRyeSk7CkBAIC01MTcsNyArNTMzLDcgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgaWYgKCFlZGl0b3JNb2RlKSB7CiAg
ICAgICAgICAgICBpZiAoc2Vzc2lvbkZpbGUpCiAgICAgICAgICAgICAgICAgYnJvd3Nlcl93aW5k
b3dfbG9hZF9zZXNzaW9uKG1haW5XaW5kb3csIHNlc3Npb25GaWxlKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgQlJPV1NFUl9ERUZBVUxUX1VSTCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNGMxODY4NzJhYTAuLjYzNzY3M2UyYjllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0
cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CkBAIC05Nyw2ICs5Nyw3IEBAIEFERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlBy
b2Nlc3NUZXN0IEF1dG9jbGVhbnVwc1Rlc3QuY3BwIERPTUNsaWVudFJlY3RUZXN0CiAKIEFERF9X
SzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQorQURE
X1dLMl9URVNUKFRlc3RBdXRvbWF0aW9uU2Vzc2lvbiBUZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RBdXRvY2xlYW51cHMgVGVzdEF1dG9jbGVhbnVwcy5jcHApCiBB
RERfV0syX1RFU1QoVGVzdEJhY2tGb3J3YXJkTGlzdCBUZXN0QmFja0ZvcndhcmRMaXN0LmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0Q29udGV4dE1lbnUgVGVzdENvbnRleHRNZW51LmNwcCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjQ2YTc2ZTdkOWIwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CitjbGFzcyBBdXRvbWF0aW9uVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0Vf
R0xJQl9URVNUX0ZJWFRVUkUoQXV0b21hdGlvblRlc3QpOworCisgICAgQXV0b21hdGlvblRlc3Qo
KQorICAgICAgICA6IG1fbWFpbkxvb3AoYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRy
LCBUUlVFKSkpCisgICAgeworICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3MoInRjcDpob3N0PTEyNy4wLjAuMSxwb3J0PTIyMjkiLAorICAgICAgICAgICAgR19EQlVTX0NP
Tk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLCBb
XShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX2ZpbmlzaChyZXN1bHQsIG51
bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVz
ZXJEYXRhKS0+c2V0Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Cisg
ICAgfQorCisgICAgfkF1dG9tYXRpb25UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgc3RydWN0
IFRhcmdldCB7CisgICAgICAgIFRhcmdldCgpID0gZGVmYXVsdDsKKyAgICAgICAgVGFyZ2V0KGd1
aW50NjQgaWQsIENTdHJpbmcgbmFtZSwgYm9vbCBpc1BhaXJlZCkKKyAgICAgICAgICAgIDogaWQo
aWQpCisgICAgICAgICAgICAsIG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgaXNQYWlyZWQoaXNQ
YWlyZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGd1aW50NjQgaWQgeyAwIH07
CisgICAgICAgIENTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCBpc1BhaXJlZCB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRh
YmxlID0geworICAgICAgICAvLyBtZXRob2RfY2FsbAorICAgICAgICBbXShHREJ1c0Nvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IGdjaGFyKiBzZW5kZXIsIGNvbnN0IGdjaGFyKiBvYmplY3RQ
YXRoLCBjb25zdCBnY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUs
IEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24s
IGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nh
c3Q8QXV0b21hdGlvblRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21w
MChtZXRob2ROYW1lLCAiU2V0VGFyZ2V0TGlzdCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2
NCBjb25uZWN0aW9uSUQ7CisgICAgICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHVmFyaWFudEl0
ZXI+IGl0ZXI7CisgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHRh
KHRzc3NiKSkiLCAmY29ubmVjdGlvbklELCAmaXRlci5vdXRQdHIoKSk7CisgICAgICAgICAgICAg
ICAgZ3VpbnQ2NCB0YXJnZXRJRDsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZHVtbXk7CisgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaXNQYWlyZWQ7CisgICAgICAg
ICAgICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoaXRlci5nZXQoKSwgIih0JnMmcyZz
YikiLCAmdGFyZ2V0SUQsICZ0eXBlLCAmbmFtZSwgJmR1bW15LCAmaXNQYWlyZWQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghZ19zdHJjbXAwKHR5cGUsICJBdXRvbWF0aW9uIikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3QtPnNldFRhcmdldChjb25uZWN0aW9uSUQsIFRhcmdl
dCh0YXJnZXRJRCwgbmFtZSwgaXNQYWlyZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwg
bnVsbHB0cik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwg
IlNlbmRNZXNzYWdlVG9Gcm9udGVuZCIpKSB7CisgICAgICAgICAgICAgICAgZ3VpbnQ2NCBjb25u
ZWN0aW9uSUQsIHRhcmdldElEOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2U7
CisgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHR0JnMpIiwgJmNv
bm5lY3Rpb25JRCwgJnRhcmdldElELCAmbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgdGVzdC0+
cmVjZWl2ZWRNZXNzYWdlKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworICAgICAg
ICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlv
biwgbnVsbHB0cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIGdldF9w
cm9wZXJ0eQorICAgICAgICBudWxscHRyLAorICAgICAgICAvLyBzZXRfcHJvcGVydHkKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICB9OworCisgICAgdm9pZCByZWdpc3RlckRCdXNPYmplY3QoKQorICAg
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KKyAgICAg
ICAgICAgICI8bm9kZT4iCisgICAgICAgICAgICAiICA8aW50ZXJmYWNlIG5hbWU9J29yZy53ZWJr
aXRndGsuUmVtb3RlSW5zcGVjdG9yQ2xpZW50Jz4iCisgICAgICAgICAgICAiICAgIDxtZXRob2Qg
bmFtZT0nU2V0VGFyZ2V0TGlzdCc+IgorICAgICAgICAgICAgIiAgICAgIDxhcmcgdHlwZT0ndCcg
bmFtZT0nY29ubmVjdGlvbklEJyBkaXJlY3Rpb249J2luJy8+IgorICAgICAgICAgICAgIiAgICAg
IDxhcmcgdHlwZT0nYSh0c3NzYiknIG5hbWU9J2xpc3QnIGRpcmVjdGlvbj0naW4nLz4iCisgICAg
ICAgICAgICAiICAgIDwvbWV0aG9kPiIKKyAgICAgICAgICAgICIgICAgPG1ldGhvZCBuYW1lPSdT
ZW5kTWVzc2FnZVRvRnJvbnRlbmQnPiIKKyAgICAgICAgICAgICIgICAgICA8YXJnIHR5cGU9J3Qn
IG5hbWU9J2Nvbm5lY3Rpb25JRCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAgICAgICAgICIgICAg
ICA8YXJnIHR5cGU9J3QnIG5hbWU9J3RhcmdldCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAgICAg
ICAgICIgICAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J21lc3NhZ2UnIGRpcmVjdGlvbj0naW4nLz4i
CisgICAgICAgICAgICAiICAgIDwvbWV0aG9kPiIKKyAgICAgICAgICAgICIgIDwvaW50ZXJmYWNl
PiIKKyAgICAgICAgICAgICI8L25vZGU+IjsKKyAgICAgICAgc3RhdGljIEdEQnVzTm9kZUluZm8q
IGludHJvc3BlY3Rpb25EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpbnRyb3NwZWN0aW9u
RGF0YSkKKyAgICAgICAgICAgIGludHJvc3BlY3Rpb25EYXRhID0gZ19kYnVzX25vZGVfaW5mb19u
ZXdfZm9yX3htbChpbnRyb3NwZWN0aW9uWE1MLCBudWxscHRyKTsKKyAgICAgICAgZ19kYnVzX2Nv
bm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KG1fY29ubmVjdGlvbi5nZXQoKSwgIi9vcmcvd2Via2l0
Z3RrL1JlbW90ZUluc3BlY3RvckNsaWVudCIsIGludHJvc3BlY3Rpb25EYXRhLT5pbnRlcmZhY2Vz
WzBdLCAmc19pbnRlcmZhY2VWVGFibGUsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIpOworICAgIH0K
KworICAgIHZvaWQgc2V0Q29ubmVjdGlvbihHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoR19JU19EQlVTX0NPTk5FQ1RJT04oY29u
bmVjdGlvbi5nZXQoKSkpOworICAgICAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rp
b24pOworICAgICAgICByZWdpc3RlckRCdXNPYmplY3QoKTsKKyAgICAgICAgZ19tYWluX2xvb3Bf
cXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRhcmdldChndWlu
dDY0IGNvbm5lY3Rpb25JRCwgVGFyZ2V0JiYgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgYm9vbCBu
ZXdDb25uZWN0aW9uID0gIW1fY29ubmVjdGlvbklEOworICAgICAgICBib29sIHdhc1BhaXJlZCA9
IG1fdGFyZ2V0LmlzUGFpcmVkOworICAgICAgICBtX2Nvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25J
RDsKKyAgICAgICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CisgICAgICAgIGlmIChuZXdD
b25uZWN0aW9uIHx8ICghd2FzUGFpcmVkICYmIG1fdGFyZ2V0LmlzUGFpcmVkKSkKKyAgICAgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisgICAgdm9p
ZCByZWNlaXZlZE1lc3NhZ2UoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIGd1aW50NjQgdGFyZ2V0SUQs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBnX2Fzc2VydChjb25uZWN0aW9u
SUQgPT0gbV9jb25uZWN0aW9uSUQpOworICAgICAgICBnX2Fzc2VydCh0YXJnZXRJRCA9PSBtX3Rh
cmdldC5pZCk7CisgICAgICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBzZW5kQ29tbWFu
ZFRvQmFja2VuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgcGFyYW1ldGVy
cyA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgc3RhdGljIGxvbmcgc2VxdWVuY2VJRCA9IDA7
CisgICAgICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZUJ1aWxkZXI7CisgICAgICAgIG1lc3NhZ2VC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIntcImlkXCI6Iik7CisgICAgICAgIG1lc3NhZ2VCdWlsZGVy
LmFwcGVuZE51bWJlcigrK3NlcXVlbmNlSUQpOworICAgICAgICBtZXNzYWdlQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsXCJtZXRob2RcIjpcIkF1dG9tYXRpb24uIik7CisgICAgICAgIG1lc3NhZ2VC
dWlsZGVyLmFwcGVuZChjb21tYW5kKTsKKyAgICAgICAgbWVzc2FnZUJ1aWxkZXIuYXBwZW5kKCci
Jyk7CisgICAgICAgIGlmICghcGFyYW1ldGVycy5pc051bGwoKSkgeworICAgICAgICAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLFwicGFyYW1zXCI6Iik7CisgICAgICAgICAgICBt
ZXNzYWdlQnVpbGRlci5hcHBlbmQocGFyYW1ldGVycyk7CisgICAgICAgIH0KKyAgICAgICAgbWVz
c2FnZUJ1aWxkZXIuYXBwZW5kKCd9Jyk7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwo
bV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAiL29yZy93ZWJraXRndGsvSW5zcGVjdG9yIiwg
Im9yZy53ZWJraXRndGsuSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICJTZW5kTWVzc2FnZVRvQmFj
a2VuZCIsIGdfdmFyaWFudF9uZXcoIih0dHMpIiwgbV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0Lmlk
LCBtZXNzYWdlQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAg
bnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIpOworICAgIH0KKworICAgIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVh
dGVXZWJWaWV3Q2FsbGJhY2soV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9t
YXRpb25UZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV9jcmVhdGVXZWJWaWV3V2Fz
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRlc3QtPm1fd2ViVmlld0ZvckF1dG9tYXRp
b247CisgICAgfQorCisgICAgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZChXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKKyAgICB7CisgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247Cisg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV9z
ZXNzaW9uKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXV0b21hdGlvblN0YXJ0ZWRDYWxs
YmFjayhXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
biogc2Vzc2lvbiwgQXV0b21hdGlvblRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fzc2Vy
dCh3ZWJDb250ZXh0ID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOworICAgICAgICB0ZXN0
LT5hdXRvbWF0aW9uU3RhcnRlZChzZXNzaW9uKTsKKyAgICB9CisKKyAgICBXZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbiogcmVxdWVzdFNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklEKQorICAgIHsK
KyAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0Lmdl
dCgpLCAiYXV0b21hdGlvbi1zdGFydGVkIiwgR19DQUxMQkFDSyhhdXRvbWF0aW9uU3RhcnRlZENh
bGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0
aW9uLmdldCgpLCBudWxscHRyLCAiL29yZy93ZWJraXRndGsvSW5zcGVjdG9yIiwgIm9yZy53ZWJr
aXRndGsuSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICJTdGFydEF1dG9tYXRpb25TZXNzaW9uIiwg
Z192YXJpYW50X25ldygiKHMpIiwgc2Vzc2lvbklEKSwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxB
R1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAg
ICBhdXRvIHRpbWVvdXRJRCA9IGdfdGltZW91dF9hZGQoMTAwMCwgW10oZ3BvaW50ZXIgdXNlckRh
dGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nh
c3Q8R01haW5Mb29wKj4odXNlckRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9S
RU1PVkU7CisgICAgICAgIH0sIG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgICAgIGlmICghbV9jb25uZWN0aW9uSUQpCisg
ICAgICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOworICAgICAgICBpZiAobV9zZXNzaW9uICYm
IG1fY29ubmVjdGlvbklEKQorICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHRpbWVvdXRJRCk7
CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dlYkNvbnRleHQuZ2V0KCks
IHNpZ25hbElEKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vzc2lvbjsKKyAgICB9CisKKyAgICB2b2lk
IHNldHVwSWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fdGFyZ2V0LmlzUGFpcmVkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBnX2Fzc2VydChtX3RhcmdldC5pZCk7CisgICAg
ICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAi
L29yZy93ZWJraXRndGsvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXRndGsuSW5zcGVjdG9yIiwKKyAg
ICAgICAgICAgICJTZXR1cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nvbm5lY3Rpb25JRCwg
bV90YXJnZXQuaWQpLCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAt
MSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaXNQYWlyZWQpOwor
ICAgIH0KKworICAgIGJvb2wgY3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKKyAgICB7CisgICAgICAgIHNldHVwSWZOZWVkZWQoKTsKKyAgICAgICAg
bV93ZWJWaWV3Rm9yQXV0b21hdGlvbiA9IHdlYlZpZXc7CisgICAgICAgIG1fY3JlYXRlV2ViVmll
d1dhc0NhbGxlZCA9IGZhbHNlOworICAgICAgICBtX21lc3NhZ2UgPSBDU3RyaW5nKCk7CisgICAg
ICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13
ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NhbGxiYWNrKSwgdGhpcyk7CisgICAg
ICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiKTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOworICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CisgICAgICAgIGdfYXNzZXJ0
KG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCk7CisgICAgICAgIGdfYXNzZXJ0KCFtX21lc3NhZ2Uu
aXNOdWxsKCkpOworICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0aW9uID0gbnVsbHB0cjsKKwor
ICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJUaGUgcmVtb3RlIHNlc3Npb24g
ZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBicm93c2luZyBjb250ZXh0IikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzdHJzdHIobV9tZXNzYWdlLmRhdGEoKSwgImhhbmRs
ZSIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKKyAgICBHUmVmUHRyPEdE
QnVzQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
KiBtX3Nlc3Npb247CisgICAgZ3VpbnQ2NCBtX2Nvbm5lY3Rpb25JRCB7IDAgfTsKKyAgICBUYXJn
ZXQgbV90YXJnZXQ7CisKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXdGb3JBdXRvbWF0aW9u
IHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9jcmVhdGVXZWJWaWV3V2FzQ2FsbGVkIHsgZmFsc2Ug
fTsKKyAgICBDU3RyaW5nIG1fbWVzc2FnZTsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RBdXRvbWF0
aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisgICAgLy8gV2ViS2l0QXV0b21hdGlvblNlc3Npb246OmF1dG9tYXRpb24tc3RhcnRlZCBp
cyBuZXZlciBlbWl0dGVkIGlmIGF1dG9tYXRpb24gaXMgbm90IGVuYWJsZWQuCisgICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJD
b250ZXh0LmdldCgpKSk7CisgICAgYXV0byogc2Vzc2lvbiA9IHRlc3QtPnJlcXVlc3RTZXNzaW9u
KHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKKyAgICBnX2Fzc2VydCghc2Vzc2lvbik7CisKKyAg
ICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNv
bnRleHQuZ2V0KCksIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9pc19h
dXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgc2Vzc2lv
biA9IHRlc3QtPnJlcXVlc3RTZXNzaW9uKHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfaWQoc2Vzc2lvbiks
ID09LCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0
LT5tX3RhcmdldC5pZCwgPiwgMCk7CisgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHRlc3QtPm1fdGFy
Z2V0Lm5hbWUsID09LCBzZXNzaW9uSUQudXRmOCgpKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV90
YXJnZXQuaXNQYWlyZWQpOworCisgICAgLy8gV2lsbCBmYWlsIHRvIGNyZWF0ZSBhIGJyb3dzaW5n
IGNvbnRleHQgd2hlbiBub3QgY3JlYXRpbmcgYSB3ZWIgdmlldyAob3Igbm90IGhhbmRsaW5nIHRo
ZSBzaWduYWwpLgorICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29u
dGV4dChudWxscHRyKSk7CisKKyAgICAvLyBXaWxsIGFsc28gZmFpbCBpZiB0aGUgd2ViIHZpZXcg
aXMgbm90IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4KKyAgICBHUmVmUHRyPFdlYktpdFdlYlZp
ZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2Nv
bnRleHQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldy5nZXQoKSkpOworICAg
IGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3Lmdl
dCgpKSk7CisKKyAgICAvLyBBbmQgd2lsbCB3b3JrIHdpdGggYSBwcm9wZXIgd2ViIHZpZXcuCisg
ICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X1ZJRVcsICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgImlzLWNvbnRy
b2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3
LmdldCgpKSk7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dl
ZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIEZBTFNFKTsKK30KKwordm9pZCBiZWZvcmVBbGwo
KQoreworICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIsICIxMjcuMC4wLjE6
MjIyOSIsIFRSVUUpOworCisgICAgQXV0b21hdGlvblRlc3Q6OmFkZCgiV2ViS2l0QXV0b21hdGlv
blNlc3Npb24iLCAicmVxdWVzdC1zZXNzaW9uIiwgdGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVz
dFNlc3Npb24pOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBnX3Vuc2V0ZW52KCJXRUJL
SVRfSU5TUEVDVE9SX1NFUlZFUiIpOworfQo=
</data>
<flag name="review"
          id="329677"
          type_id="1"
          status="+"
          setter="clopez"
    />
    <flag name="commit-queue"
          id="329679"
          type_id="3"
          status="-"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>