<?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>153560</bug_id>
          
          <creation_ts>2016-01-27 14:40:16 -0800</creation_ts>
          <short_desc>Cache results of data detection in the UI process when load completes</short_desc>
          <delta_ts>2016-01-27 17:36:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159442</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-01-27 14:40:16 -0800</bug_when>
    <thetext>It is necessary to cached the data detection results as soon as the detection has been performed.
We need to keep them around for the clients to be able to retrieve the full url for data detectors links.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159515</commentid>
    <comment_count>1</comment_count>
      <attachid>270061</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-01-27 16:37:55 -0800</bug_when>
    <thetext>Created attachment 270061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159521</commentid>
    <comment_count>2</comment_count>
      <attachid>270064</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-01-27 16:44:43 -0800</bug_when>
    <thetext>Created attachment 270064
Patch that can be applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159524</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-27 16:46:21 -0800</bug_when>
    <thetext>Attachment 270064 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebPageProxyCocoa.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/Shared/Cocoa/DataDetectionResult.mm:63:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/Cocoa/DataDetectionResult.mm:63:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159525</commentid>
    <comment_count>4</comment_count>
      <attachid>270064</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-27 16:52:00 -0800</bug_when>
    <thetext>Comment on attachment 270064
Patch that can be applied

View in context: https://bugs.webkit.org/attachment.cgi?id=270064&amp;action=review

&gt; Source/WebCore/loader/EmptyClients.h:272
&gt; +    virtual void dispatchDidFinishDataDetection(NSArray *) override { }

It&apos;s getting weirder and weirder that this is an NSArray instead of a Vector&lt;RetainPtr&lt;&gt;&gt;, but we&apos;ll fix it in a follow up?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2989
&gt; +    send(Messages::WebPageProxy::SetDataDetectionResult(dataDetectionResult));

Seems like this should have a trailing &apos;s&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159532</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-01-27 17:09:15 -0800</bug_when>
    <thetext>
(In reply to comment #4)
&gt; Comment on attachment 270064 [details]
&gt; Patch that can be applied
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270064&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/EmptyClients.h:272
&gt; &gt; +    virtual void dispatchDidFinishDataDetection(NSArray *) override { }
&gt; 
&gt; It&apos;s getting weirder and weirder that this is an NSArray instead of a
&gt; Vector&lt;RetainPtr&lt;&gt;&gt;, but we&apos;ll fix it in a follow up?
&gt; 
I keep it as an NSArray because this is how DD returns ii and how it is consumed in the UI process. Using a Vector would require an unnecessary copy.
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2989
&gt; &gt; +    send(Messages::WebPageProxy::SetDataDetectionResult(dataDetectionResult));
&gt; 
&gt; Seems like this should have a trailing &apos;s&apos;
I&apos;ve used the singular when I&apos;m passing the struct that contains results (plural).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159543</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-01-27 17:36:43 -0800</bug_when>
    <thetext>Committed revision 195722.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270061</attachid>
            <date>2016-01-27 16:37:55 -0800</date>
            <delta_ts>2016-01-27 16:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>ddwk2-part4.txt</filename>
            <type>text/plain</type>
            <size>28318</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAxLTI3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVzdWx0cyBvZiBk
YXRhIGRldGVjdGlvbiBpbiB0aGUgVUkgcHJvY2VzcyB3aGVuIGxvYWQgY29tcGxldGVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIG5ldyBG
cmFtZUxvYWRlckNsaWVudCBtZXRob2QgdG8gbm90aWZ5IHRoYXQgZGF0YQorICAgICAgICBkZXRl
Y3Rpb24gaXMgY29tcGxldGUgYW5kIHByb3ZpZGUgdGhlIHJlc3VsdHMuCisKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTYtMDEt
MjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgRGF0YURldGVjdG9ycyBpbiBXSyAoaU9TKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDE5NTU3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nKSBvdmVycmlkZSB7IH0KKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopIG92
ZXJyaWRlIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTU1NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjg0LDYgKzIyODQsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoCiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5kYXRhRGV0ZWN0
b3JUeXBlcygpICE9IERhdGFEZXRlY3RvclR5cGVOb25lKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gZG9jdW1lbnRSYW5nZSA9IG1ha2VSYW5nZShmaXJzdFBvc2l0aW9uSW5O
b2RlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpLCBsYXN0UG9zaXRpb25J
bk5vZGUobV9mcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwogICAgICAgICAg
ICAgICAgICAgICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRlY3Rpb246
OmRldGVjdENvbnRlbnRJblJhbmdlKGRvY3VtZW50UmFuZ2UsIG1fZnJhbWUuc2V0dGluZ3MoKS5k
YXRhRGV0ZWN0b3JUeXBlcygpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLmlz
TWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERp
ZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFtZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAg
ICAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRj
aERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAxOTU1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCB0eXBlZGVm
IHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogdHlwZWRlZiBjbGFzcyBfam9iamVjdCogam9iamVj
dDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFT
UyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZW5kaWYKQEAgLTE3
Myw2ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpID0gMDsKKyNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERhdGFE
ZXRlY3Rpb24oTlNBcnJheSAqZGV0ZWN0aW9uUmVzdWx0cykgPSAwOworI2VuZGlmCiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE5NTU3NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTAxLTI3ICBFbnJpY2EgQ2FzdWNjaSAgPGVu
cmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVzdWx0cyBvZiBkYXRhIGRldGVjdGlv
biBpbiB0aGUgVUkgcHJvY2VzcyB3aGVuIGxvYWQgY29tcGxldGVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHdoZW4g
dGhlIHJlc3VsdHMgb2YgZGF0YSBkZXRlY3Rpb25zIGFyZSBzZW50IHRvIHRoZQorICAgICAgICBV
SVByb2Nlc3MuIEJlZm9yZSB0aGlzIGNoYW5nZSwgdGhleSB3ZXJlIG9ubHkgcHJvdmlkZWQgYXMg
cGFydCBvZgorICAgICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiwgd2hpY2gg
aXMgcG9wdWxhdGVkIHdoZW4gbG9uZyBwcmVzcworICAgICAgICBnZXN0dXJlIGlzIHRyaWdnZXJl
ZC4KKyAgICAgICAgV2UgbmVlZCB0byBoYXZlIHRoZSByZXN1bHRzIGF2YWlsYWJsZSBpZiB0aGUg
Y2xpZW50IHdhbnRzIHRvIGFsbG93IG5hdmlnYXRpb24KKyAgICAgICAgdG8gYSBkYXRhIGRldGVj
dG9yIGxpbmssIGluIG9yZGVyIHRvIGFsbG93IHRoZW0gdG8gcmV0cmlldmUgdGhlIGZ1bGwgdXJs
LgorICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBub3cgc2VuZCB0aGUgcmVzdWx0cyBhcyBz
b29uIGFzIHRoZXkgYXJlIGNvbXB1dGVkCisgICAgICAgIGFuZCBrZWVwIHRoZW0gaW4gdGhlIFdl
YlBhZ2VQcm94eSBvYmplY3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBmZXRjaGVkIHdoZW4KKyAgICAg
ICAgbmVjZXNzYXJ5IGZyb20gYSBXS1dlYlZpZXcgcHJpdmF0ZSBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RMYXllckNvbnRl
bnRzRm9yQmFja0ZvcndhcmRMaXN0SXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kYXRh
RGV0ZWN0aW9uUmVzdWx0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJv
Y2Vzc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREYXRhRGV0ZWN0aW9uUmVzdWx0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojp3ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
RGV0ZWN0aW9uUmVzdWx0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25J
c1VwVG9EYXRlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kYXRhRGV0ZWN0aW9uUmVz
dWx0c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxk
QmVnaW46XSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dERhdGFEZXRlY3Rpb25SZXN1bHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbENv
bW1pdExheWVyVHJlZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvbik6CisKIDIwMTYtMDEtMjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRGF0YURldGVjdG9ycyBpbiBXSyAo
aU9TKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0RhdGFEZXRl
Y3Rpb25SZXN1bHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRGF0YURldGVjdGlvblJlc3VsdF9oCisjZGVmaW5lIERhdGFE
ZXRlY3Rpb25SZXN1bHRfaAorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCisjaW1wb3J0
ICJBcmd1bWVudENvZGVycy5oIgorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdCB7CisgICAgUmV0YWlu
UHRyPE5TQXJyYXk+IHJlc3VsdHM7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYsIERhdGFEZXRlY3Rpb25SZXN1bHQmKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShE
QVRBX0RFVEVDVElPTikKKworI2VuZGlmIC8vIERhdGFEZXRlY3Rpb25SZXN1bHRfaApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQu
bW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisK
KyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50cy5oIgorI2lt
cG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRl
Y3RvcnNDb3JlU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisKK1NPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzQ29yZSkKK1NPRlRfTElOS19DTEFT
UyhEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyUmVzdWx0KQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKwordm9pZCBEYXRhRGV0ZWN0aW9uUmVz
dWx0OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBh
bGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJs
ZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFthcmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGlu
ZzpZRVNdOworICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6cmVzdWx0cy5nZXQoKSBmb3JLZXk6
QCJkYXRhRGV0ZWN0b3JSZXN1bHRzIl07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsK
KyAgICAKKyAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJl
Zj4oZGF0YS5nZXQoKSkpOyAgICAgICAgCit9CisKK2Jvb2wgRGF0YURldGVjdGlvblJlc3VsdDo6
ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBEYXRhRGV0ZWN0aW9uUmVzdWx0
JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKKyAgICBpZiAoIUlQ
Qzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilk
YXRhLmdldCgpXSk7CisgICAgW3VuYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVT
XTsKKyAgICBAdHJ5IHsKKyAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFzc10s
IGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVzdWx0
cyJdOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2NhblJlc3VsdDogJUAiLCBl
eGNlcHRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIFt1bmFy
Y2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAx
OTU1NzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5Miw2ICsyOTIsMTAgQEAgcHVibGljOgogCiAgICAgV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZTsgfQog
CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25S
ZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQorI2VuZGlm
CisgICAgICAgIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5nZXQoKTsgfQogI2VuZGlmCkBAIC01
MTMsNyArNTE3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29udGVudFNpemVDYXRlZ29yeURpZENo
YW5nZShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpOwogICAgIHZvaWQgZ2V0TG9v
a3VwQ29udGV4dEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICNlbmRpZgotCisj
aWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3Vs
dChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik7CisjZW5kaWYKICAgICB2b2lkIGRpZENvbW1p
dExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAK
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQpAQCAtMTQwNCw2ICsx
NDEwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
KyAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKKyNlbmRpZgor
CiAgICAgdm9pZCBjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKIAogICAgIHZvaWQgcGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBXZWJDb3JlOjpE
cmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAxOTU1NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDkgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNE
dXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgRGlkRmluaXNoRHJh
d2luZ1BhZ2VzVG9QREYoSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgU2V0RGF0YURldGVjdGlvblJlc3VsdChzdHJ1Y3Qg
V2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0IGRhdGFEZXRlY3Rpb25SZXN1bHQpCisjZW5kaWYK
ICNpZiBQTEFURk9STShHVEspCiAgICAgUHJpbnRGaW5pc2hlZENhbGxiYWNrKFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxOTU1NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzExMiw2ICszMTEyLDEwIEBAIC0gKGlkKV9zbmFw
c2hvdExheWVyQ29udGVudHNGb3JCYWNrRm9yd2EKICAgICByZXR1cm4gbmlsOwogfQogCistIChO
U0FycmF5ICopX2RhdGFEZXRlY3Rpb25SZXN1bHRzCit7CisgICAgcmV0dXJuIFtfY29udGVudFZp
ZXcgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXTsKK30KICNlbmRpZgogCiAtICh2b2lkKV9kaWRSZWxh
dW5jaFByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTU1NzMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0lt
bWVkaWF0ZUEKIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVzcG9uZGVyV2l0aFNlbGVjdGlvbk1vdmlu
Z0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVZB
SUxBQkxFKE5BLCA5XzApOwogCiAtIChpZClfc25hcHNob3RMYXllckNvbnRlbnRzRm9yQmFja0Zv
cndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbSBXS19BVkFJTEFCTEUo
TkEsIDlfMCk7CistIChOU0FycmF5ICopX2RhdGFEZXRlY3Rpb25SZXN1bHRzOwogCiAjZWxzZQog
QHByb3BlcnR5IChyZWFkb25seSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDE5NTU3MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEg
KzI2LDIwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogCisjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisKICNpbXBvcnQgPFdlYkNvcmUv
U2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZXREYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3Rpb25S
ZXN1bHQmIGRhdGFEZXRlY3Rpb25SZXN1bHQpCit7CisgICAgbV9kYXRhRGV0ZWN0aW9uUmVzdWx0
cyA9IGRhdGFEZXRlY3Rpb25SZXN1bHQucmVzdWx0czsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIGlmICghbmFt
ZSkgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCShyZXZpc2lvbiAxOTU1NzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNiArMjA5LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0g
KHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoOwogLSAodm9pZClfYmVjb21lRmlyc3RS
ZXNwb25kZXJXaXRoU2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJk
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVy
KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxl
ZDooQk9PTCllbmFibGVkOworLSAoTlNBcnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKIEBl
bmQKIAogI2lmIEhBVkUoTElOS19QUkVWSUVXKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlz
aW9uIDE5NTU3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkwLDYgKzEwOTAsMTMgQEAgLSAo
dm9pZCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRAogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShEQVRBX0RFVEVDVElPTikKKy0gKE5TQXJyYXkgKilfZGF0YURldGVjdGlvblJlc3VsdHMK
K3sKKyAgICByZXR1cm4gX3BhZ2UtPmRhdGFEZXRlY3Rpb25SZXN1bHRzKCk7Cit9CisjZW5kaWYK
KwogLSAoQk9PTClnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBDR1BvaW50IHBvaW50ID0gW2dlc3R1cmVS
ZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZdOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk1NTc0KQor
KysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjkxLDYgKzE2OTEsOCBAQAogCQlDNTQyNTZCQTE4QkVDMThDMDBERTQx
NzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QjQxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVj
dENvbnRyb2wuaCAqLzsgfTsKIAkJQzU1Q0I1QjcxOEMyNjlDRjAwQ0E4MUUxIC8qIFdLRm9ybVNl
bGVjdFBvcG92ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNTcxOTNCQTE4QzE0OUQwMDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSAq
LzsgfTsKIAkJQzU1Q0I1QjgxOEMyQTVENjAwQ0E4MUUxIC8qIFdLRm9ybVNlbGVjdFBpY2tlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NzE5M0I5
MThDMTQ5RDAwMDJEMEYxMiAvKiBXS0Zvcm1TZWxlY3RQaWNrZXIubW0gKi87IH07CisJCUM1NUY5
MTcwMUM1OTVGNjMwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1RjkxNkQxQzU5NUU0NDAwMjlF
OTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi87IH07CisJCUM1NUY5MTcxMUM1OTY3NkUw
MDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVGOTE2QzFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURl
dGVjdGlvblJlc3VsdC5oICovOyB9OwogCQlDNTcxOTNCRTE4QzE0QTQ0MDAyRDBGMTIgLyogV0tG
b3JtU2VsZWN0Q29udHJvbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1NzE5M0JEMThDMTRBNDMwMDJEMEYxMiAvKiBXS0Zvcm1TZWxlY3RDb250cm9s
Lm1tICovOyB9OwogCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NTRG
RkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovOyB9OwogCQlDNTc0
QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU3RjEyRTY2NjgxMDAyREZFOTgg
LyogUGFzdGVib2FyZFR5cGVzLmggKi87IH07CkBAIC0zOTMzLDYgKzM5MzUsOCBAQAogCQlDNTQy
NTZCMzE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRm9ybVBvcG92ZXIubW07IHBhdGggPSBpb3MvZm9y
bXMvV0tGb3JtUG9wb3Zlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2
QjQxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtU2VsZWN0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU1NEZGQTIxMkU0RThFQTAwMkYyMkMwIC8qIFdlYkRyYWdDbGllbnRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEcmFnQ2xpZW50TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTVGOTE2QzFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0
YURldGVjdGlvblJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
RGV0ZWN0aW9uUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NUY5MTZE
MUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdGlvblJlc3VsdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MTkzQjkxOEMxNDlEMDAwMkQwRjEyIC8qIFdLRm9y
bVNlbGVjdFBpY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLRm9ybVNlbGVjdFBpY2tlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNr
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzE5M0JBMThDMTQ5RDAwMDJE
MEYxMiAvKiBXS0Zvcm1TZWxlY3RQb3BvdmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tGb3JtU2VsZWN0UG9wb3Zlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9X
S0Zvcm1TZWxlY3RQb3BvdmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcx
OTNCRDE4QzE0QTQzMDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRm9ybVNlbGVjdENvbnRyb2wubW07IHBh
dGggPSBpb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU0MjYsNiArNTQzMCw4IEBACiAJCQkJMzc4RTFBM0IxODFFRDZGRjAwMzEw
MDdBIC8qIEFQSU9iamVjdC5tbSAqLywKIAkJCQkzN0JFQzRERjE5NDkxNDg2MDA4QjQyODYgLyog
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oICovLAogCQkJCTM3QkVDNERFMTk0OTE0ODYw
MDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLAorCQkJCUM1NUY5
MTZDMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggKi8sCisJCQkJQzU1
RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCiAJCQkJ
MzdDNEMwOTIxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5oICovLAogCQkJCTM3QzRDMDkx
MTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gKi8sCiAJCQkJMzczQ0VBRDQxODU0MTdB
RTAwOEMzNjNEIC8qIFdLTlNEYXRhLmggKi8sCkBAIC04MTA2LDYgKzgxMTIsNyBAQAogCQkJCUJD
NTc0NEYwMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUQzQjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNTc0RTYzMTI2N0QwODAwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRl
Y3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc1MDk3MTI2OEYzQzYwMDZGMEYx
MiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk3RkYx
MTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05NjQxLDYgKzk2NDgsNyBAQAogCQkJCTM3NzE2QTVBMTk1QjkxMDUw
MEVFOEIxQiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Rjk1
MzY0MThGRjU4M0MwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5NUU2OEMxQkYyQzM1MjAwRjQ5QkNFIC8qIF9XS1ByZXZpZXdFbGVtZW50SW5m
by5tbSBpbiBTb3VyY2VzICovLAorCQkJCUM1NUY5MTcwMUM1OTVGNjMwMDI5RTkyRCAvKiBEYXRh
RGV0ZWN0aW9uUmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMTE3RjYxMURCQjMwOTAw
OTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIx
RDExMkY1RkU2MDAzMzdCQUIgLyogUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZFNjdBMjYxOTEwQjlEOTAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2
aXNpb24gMTk1NTczKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYs
MTYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGhGb3JSZXNvdXJjZSh3ZWJQYWdlLCBtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhTGVuZ3Ro
KTsKIH0KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRlY3Rpb25S
ZXN1bHRzKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
aWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgd2ViUGFnZS0+c2V0RGF0YURldGVj
dGlvblJlc3VsdHMoZGV0ZWN0aW9uUmVzdWx0cyk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biAxOTU1NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDkgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQg
bGVuZ3RoKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRlY3Rpb25S
ZXN1bHRzKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAxOTU1NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTAgQEAKICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAor
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0
LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShNSFRNTCkKICNpbmNsdWRlIDxXZWJDb3JlL01IVE1M
QXJjaGl2ZS5oPgogI2VuZGlmCkBAIC0yOTY4LDYgKzI5NzIsMTUgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCit2b2lkIFdlYlBhZ2U6OnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKE5TQXJyYXkg
KmRldGVjdGlvblJlc3VsdHMpCit7CisgICAgRGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0
aW9uUmVzdWx0OworICAgIGRhdGFEZXRlY3Rpb25SZXN1bHQucmVzdWx0cyA9IGRldGVjdGlvblJl
c3VsdHM7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXREYXRhRGV0ZWN0aW9u
UmVzdWx0KGRhdGFEZXRlY3Rpb25SZXN1bHQpKTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24mIGxheWVyVHJhbnNhY3Rpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5NTU3MykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2Niw2ICs4NjYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcGx1Z0luSXNQcmltYXJ5U2l6ZShX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5JbWFnZUVsZW1lbnQsIHVuc2ln
bmVkICZwbHVnaW5BcmVhKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQor
ICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqKTsKKyNlbmRpZgorCiAg
ICAgdW5zaWduZWQgZXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigpOwogICAg
IHZvaWQgc3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24odW5zaWdu
ZWQgdG9rZW4pOwogICAgIGJvb2wgc2hvdWxkRXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBw
cmVzc2lvbigpIHsgcmV0dXJuICFtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zLmlz
RW1wdHkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1NjkzKQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTYtMDEtMjcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAg
ICBDYWNoZSByZXN1bHRzIG9mIGRhdGEgZGV0ZWN0aW9uIGluIHRoZSBVSSBwcm9jZXNzIHdoZW4g
bG9hZCBjb21wbGV0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRpbmcgZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIFdLMS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKToKKwogMjAxNi0wMS0yNyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5B
QkxFX0NVUlJFTlRTUkMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTk1NTczKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBp
bnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllcikgb3ZlcnJpZGU7CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqZGV0ZWN0aW9uUmVz
dWx0cykgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSop
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE5NTU3MykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNiArNTI4LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICB9CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopCit7Cit9CisK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270064</attachid>
            <date>2016-01-27 16:44:43 -0800</date>
            <delta_ts>2016-01-27 16:52:00 -0800</delta_ts>
            <desc>Patch that can be applied</desc>
            <filename>ddwk2-part4.txt</filename>
            <type>text/plain</type>
            <size>28431</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTcxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAxLTI3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVzdWx0cyBvZiBk
YXRhIGRldGVjdGlvbiBpbiB0aGUgVUkgcHJvY2VzcyB3aGVuIGxvYWQgY29tcGxldGVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIG5ldyBG
cmFtZUxvYWRlckNsaWVudCBtZXRob2QgdG8gbm90aWZ5IHRoYXQgZGF0YQorICAgICAgICBkZXRl
Y3Rpb24gaXMgY29tcGxldGUgYW5kIHByb3ZpZGUgdGhlIHJlc3VsdHMuCisKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTYtMDEt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJ
REI6IEluY29ycmVjdCBoYW5kbGluZyBvZiBpdGVyYXRpbmcgY3Vyc29ycyB0byB0aGVpciBlbmQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxOTU3MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2OCw2ICsyNjgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgaW50
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgb3ZlcnJpZGUgeyB9CisjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERhdGFE
ZXRlY3Rpb24oTlNBcnJheSAqKSBvdmVycmlkZSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gMTk1NzEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4Myw2ICsyMjgzLDggQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1l
LnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSAhPSBEYXRhRGV0ZWN0b3JUeXBlTm9uZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGRvY3VtZW50UmFuZ2UgPSBtYWtl
UmFuZ2UoZmlyc3RQb3NpdGlvbkluTm9kZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpKSwgbGFzdFBvc2l0aW9uSW5Ob2RlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRF
bGVtZW50KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9u
UmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdl
LCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKG1fZnJhbWUuZGF0YURl
dGVjdGlvblJlc3VsdHMoKSk7CiAgICAgICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTk1NzEwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDcgQEAgdHlwZWRlZiB2b2lkKiBSZW1vdGVBWE9iamVjdFJlZjsKIHR5cGVkZWYg
Y2xhc3MgX2pvYmplY3QqIGpvYmplY3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xB
U1MgTlNBcnJheTsKIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1Mg
TlNWaWV3OwogI2VuZGlmCkBAIC0xNzMsNiArMTc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVu
dExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQo
KSA9IDA7CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMp
ID0gMDsKKyNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dCgp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0
b25lcykgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTU3MTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAxNi0wMS0y
NyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlIHJl
c3VsdHMgb2YgZGF0YSBkZXRlY3Rpb24gaW4gdGhlIFVJIHByb2Nlc3Mgd2hlbiBsb2FkIGNvbXBs
ZXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzU2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggY2hhbmdlcyB3aGVuIHRoZSByZXN1bHRzIG9mIGRhdGEgZGV0ZWN0aW9ucyBhcmUg
c2VudCB0byB0aGUKKyAgICAgICAgVUlQcm9jZXNzLiBCZWZvcmUgdGhpcyBjaGFuZ2UsIHRoZXkg
d2VyZSBvbmx5IHByb3ZpZGVkIGFzIHBhcnQgb2YKKyAgICAgICAgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24sIHdoaWNoIGlzIHBvcHVsYXRlZCB3aGVuIGxvbmcgcHJlc3MKKyAgICAg
ICAgZ2VzdHVyZSBpcyB0cmlnZ2VyZWQuCisgICAgICAgIFdlIG5lZWQgdG8gaGF2ZSB0aGUgcmVz
dWx0cyBhdmFpbGFibGUgaWYgdGhlIGNsaWVudCB3YW50cyB0byBhbGxvdyBuYXZpZ2F0aW9uCisg
ICAgICAgIHRvIGEgZGF0YSBkZXRlY3RvciBsaW5rLCBpbiBvcmRlciB0byBhbGxvdyB0aGVtIHRv
IHJldHJpZXZlIHRoZSBmdWxsIHVybC4KKyAgICAgICAgV2l0aCB0aGlzIGNoYW5nZSwgd2Ugbm93
IHNlbmQgdGhlIHJlc3VsdHMgYXMgc29vbiBhcyB0aGV5IGFyZSBjb21wdXRlZAorICAgICAgICBh
bmQga2VlcCB0aGVtIGluIHRoZSBXZWJQYWdlUHJveHkgb2JqZWN0IHNvIHRoYXQgdGhleSBjYW4g
YmUgZmV0Y2hlZCB3aGVuCisgICAgICAgIG5lY2Vzc2FyeSBmcm9tIGEgV0tXZWJWaWV3IHByaXZh
dGUgaW50ZXJmYWNlLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1
bHQuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NuYXBzaG90TGF5ZXJDb250ZW50c0ZvckJhY2tGb3J3YXJkTGlzdEl0ZW06XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZGF0YURldGVjdGlvblJlc3VsdHNdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RGF0YURl
dGVjdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2Vu
dFNlYXJjaGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGF0YURldGVjdGlvblJlc3VsdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBlbnN1
cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGF0YURldGVjdGlvblJlc3VsdHNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBn
ZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luOl0pOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZEV4
dGVuZEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24pOgorCiAyMDE2LTAxLTI3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdlYktpdEFk
ZGl0aW9ucyBleHRlbnNpb24gcG9pbnRzIHRvIFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0TGVn
YWN5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3Vs
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0
aW9uUmVzdWx0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIERhdGFEZXRlY3Rpb25SZXN1bHRfaAorI2RlZmluZSBEYXRhRGV0
ZWN0aW9uUmVzdWx0X2gKKworI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKworI2ltcG9ydCAi
QXJndW1lbnRDb2RlcnMuaCIKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQgeworICAgIFJldGFpblB0
cjxOU0FycmF5PiByZXN1bHRzOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29k
ZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXIm
LCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCisKKyNlbmRpZiAvLyBEYXRhRGV0ZWN0aW9uUmVzdWx0X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdC5oIgorCisj
aW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJBcmd1bWVudHMuaCIKKyNpbXBv
cnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0
b3JzQ29yZVNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUksoRGF0YURldGVjdG9yc0NvcmUpCitTT0ZUX0xJTktfQ0xBU1Mo
RGF0YURldGVjdG9yc0NvcmUsIEREU2Nhbm5lclJlc3VsdCkKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK3ZvaWQgRGF0YURldGVjdGlvblJlc3Vs
dDo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFJl
dGFpblB0cjxOU011dGFibGVEYXRhPiBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxs
b2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNLZXllZEFyY2hpdmVyPiBhcmNoaXZlciA9IGFk
b3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JXcml0aW5nV2l0aE11dGFibGVE
YXRhOmRhdGEuZ2V0KCldKTsKKyAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6
WUVTXTsKKyAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAi
ZGF0YURldGVjdG9yUmVzdWx0cyJdOworICAgIFthcmNoaXZlciBmaW5pc2hFbmNvZGluZ107Cisg
ICAgCisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+
KGRhdGEuZ2V0KCkpKTsgICAgICAgIAorfQorCitib29sIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgRGF0YURldGVjdGlvblJlc3VsdCYg
cmVzdWx0KQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYgKCFJUEM6
OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tl
eWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0
YS5nZXQoKV0pOworICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107
CisgICAgQHRyeSB7CisgICAgICAgIHJlc3VsdC5yZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3NdLCBn
ZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpXSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3VsdHMi
XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBkZWNvZGUgTlNBcnJheSBvZiBERFNjYW5SZXN1bHQ6ICVAIiwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTk1
NzEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTYsNiArMjk2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmU7IH0KIAor
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyAgICBOU0FycmF5ICpkYXRhRGV0ZWN0aW9uUmVz
dWx0cygpIHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJlc3VsdHMuZ2V0KCk7IH0KKyNlbmRpZgor
ICAgICAgICAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNTE3
LDcgKzUyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFu
Z2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKICAgICB2b2lkIGdldExvb2t1
cENvbnRleHRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAjZW5kaWYKLQorI2lm
IEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyAgICB2b2lkIHNldERhdGFEZXRlY3Rpb25SZXN1bHQo
Y29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpOworI2VuZGlmCiAgICAgdm9pZCBkaWRDb21taXRM
YXllclRyZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpOwogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKQEAgLTE0MDgsNiArMTQx
NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsK
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CisjZW5kaWYKKwog
ICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CiAKICAgICB2b2lkIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJh
Z0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTk1NzEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTg2LDYgKzE4Niw5IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVy
aW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQogICAgIERpZEZpbmlzaERyYXdp
bmdQYWdlc1RvUERGKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhKQogI2VuZGlmCisjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQorICAgIFNldERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdl
YktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0KQorI2VuZGlmCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNp
b24gMTk1NzEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMjIsNiArMzEyMiwxMCBAQCAtIChpZClfc25hcHNo
b3RMYXllckNvbnRlbnRzRm9yQmFja0ZvcndhCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNB
cnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0cworeworICAgIHJldHVybiBbX2NvbnRlbnRWaWV3
IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c107Cit9CiAjZW5kaWYKIAogLSAodm9pZClfZGlkUmVsYXVu
Y2hQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTk1NzEwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCw2ICsxNzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1l
ZGlhdGVBCiAtICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRlcldpdGhTZWxlY3Rpb25Nb3ZpbmdG
b3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FWQUlM
QUJMRShOQSwgOV8wKTsKIAogLSAoaWQpX3NuYXBzaG90TGF5ZXJDb250ZW50c0ZvckJhY2tGb3J3
YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0gV0tfQVZBSUxBQkxFKE5B
LCA5XzApOworLSAoTlNBcnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKIAogI2Vsc2UKIEBw
cm9wZXJ0eSAocmVhZG9ubHkpIE5TQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCShyZXZpc2lvbiAxOTU3MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsy
NiwyMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
IAorI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3VsdC5oIgorCiAjaW1wb3J0IDxXZWJDb3JlL1Nl
YXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0RGF0YURldGVjdGlvblJlc3VsdChjb25zdCBEYXRhRGV0ZWN0aW9uUmVz
dWx0JiBkYXRhRGV0ZWN0aW9uUmVzdWx0KQoreworICAgIG1fZGF0YURldGVjdGlvblJlc3VsdHMg
PSBkYXRhRGV0ZWN0aW9uUmVzdWx0LnJlc3VsdHM7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdl
UHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAoIW5hbWUp
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkocmV2aXNpb24gMTk1NzEwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjExLDYgKzIxMSw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAtICh2
b2lkKV9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaDsKIC0gKHZvaWQpX2JlY29tZUZpcnN0UmVz
cG9uZGVyV2l0aFNlbGVjdGlvbk1vdmluZ0ZvcndhcmQ6KEJPT0wpc2VsZWN0aW5nRm9yd2FyZCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcikp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9zZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZDsKKy0gKE5TQXJyYXkgKilfZGF0YURldGVjdGlvblJlc3VsdHM7CiBAZW5k
CiAKICNpZiBIQVZFKExJTktfUFJFVklFVykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lv
biAxOTU3MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEwMCw2ICsxMTAwLDEzIEBAIC0gKHZv
aWQpZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0QKICAgICB9CiB9CiAKKyNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCistIChOU0FycmF5ICopX2RhdGFEZXRlY3Rpb25SZXN1bHRzCit7
CisgICAgcmV0dXJuIF9wYWdlLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOworfQorI2VuZGlmCisK
IC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjooVUlHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJlUmVj
b2duaXplciBsb2NhdGlvbkluVmlldzpzZWxmXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NTcxMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5Miw2ICsxNjkyLDggQEAKIAkJQzU0MjU2QkExOEJFQzE4QzAwREU0MTc5
IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1NDI1NkI0MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RD
b250cm9sLmggKi87IH07CiAJCUM1NUNCNUI3MThDMjY5Q0YwMENBODFFMSAvKiBXS0Zvcm1TZWxl
Y3RQb3BvdmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzU3MTkzQkExOEMxNDlEMDAwMkQwRjEyIC8qIFdLRm9ybVNlbGVjdFBvcG92ZXIubW0gKi87
IH07CiAJCUM1NUNCNUI4MThDMkE1RDYwMENBODFFMSAvKiBXS0Zvcm1TZWxlY3RQaWNrZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTcxOTNCOTE4
QzE0OUQwMDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0UGlja2VyLm1tICovOyB9OworCQlDNTVGOTE3
MDFDNTk1RjYzMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUY5MTZEMUM1OTVFNDQwMDI5RTky
RCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovOyB9OworCQlDNTVGOTE3MTFDNTk2NzZFMDAy
OUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRl
Y3Rpb25SZXN1bHQuaCAqLzsgfTsKIAkJQzU3MTkzQkUxOEMxNEE0NDAwMkQwRjEyIC8qIFdLRm9y
bVNlbGVjdENvbnRyb2wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTcxOTNCRDE4QzE0QTQzMDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5t
bSAqLzsgfTsKIAkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTU0RkZB
MjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1hYy5tbSAqLzsgfTsKIAkJQzU3NEE1
ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1N0YxMkU2NjY4MTAwMkRGRTk4IC8q
IFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwpAQCAtMzkzNSw2ICszOTM3LDggQEAKIAkJQzU0MjU2
QjMxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVyLm1tOyBwYXRoID0gaW9zL2Zvcm1z
L1dLRm9ybVBvcG92ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkI0
MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybVNlbGVjdENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
NTRGRkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRHJhZ0NsaWVudE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFE
ZXRlY3Rpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURl
dGVjdGlvblJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTVGOTE2RDFD
NTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRlY3Rpb25SZXN1bHQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzE5M0I5MThDMTQ5RDAwMDJEMEYxMiAvKiBXS0Zvcm1T
ZWxlY3RQaWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S0Zvcm1TZWxlY3RQaWNrZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2Vy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcxOTNCQTE4QzE0OUQwMDAyRDBG
MTIgLyogV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLRm9ybVNlbGVjdFBvcG92ZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tG
b3JtU2VsZWN0UG9wb3Zlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU3MTkz
QkQxOEMxNEE0MzAwMkQwRjEyIC8qIFdLRm9ybVNlbGVjdENvbnRyb2wubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1TZWxlY3RDb250cm9sLm1tOyBwYXRo
ID0gaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01NDE4LDYgKzU0MjIsOCBAQAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYwMDMxMDA3
QSAvKiBBUElPYmplY3QubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4
QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKKwkJCQlDNTVGOTE2
QzFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oICovLAorCQkJCUM1NUY5
MTZEMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAogCQkJCTFB
NzgxQUU1MUM1NzE0REEwMEZCOTZERCAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJMzdD
NEMwOTIxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5oICovLAogCQkJCTM3QzRDMDkxMTgx
NEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gKi8sCkBAIC04MTAxLDYgKzgxMDcsNyBAQAog
CQkJCUJDNTc0NEYwMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQzQjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNTc0RTYzMTI2N0QwODAwMDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlFOTJEIC8qIERh
dGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc1MDk3MTI2OEYzQzYw
MDZGMEYxMiAvKiBXZWJQb3B1cE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
NTk3RkYxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Qzg1RkQ3QzE5MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjM3LDYgKzk2NDQsNyBAQAogCQkJCTM3NzE2QTVBMTk1
QjkxMDUwMEVFOEIxQiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2Rjk1MzY0MThGRjU4M0MwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5NUU2OEMxQkYyQzM1MjAwRjQ5QkNFIC8qIF9XS1ByZXZpZXdFbGVt
ZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAorCQkJCUM1NUY5MTcwMUM1OTVGNjMwMDI5RTkyRCAv
KiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMTE3RjYxMURC
QjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzExMUIxRDExMkY1RkU2MDAzMzdCQUIgLyogUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFNjdBMjYxOTEwQjlEOTAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkocmV2aXNpb24gMTk1NzEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2
ICsyMzYsMTYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGhGb3JSZXNvdXJjZSh3ZWJQYWdlLCBtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRh
TGVuZ3RoKTsKIH0KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRl
Y3Rpb25SZXN1bHRzKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgd2ViUGFnZS0+c2V0RGF0
YURldGVjdGlvblJlc3VsdHMoZGV0ZWN0aW9uUmVzdWx0cyk7Cit9CisjZW5kaWYKKwogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAxOTU3MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDkg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRl
Y3Rpb25SZXN1bHRzKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAxOTU3MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2Uu
aD4KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyNpbmNsdWRlICJEYXRhRGV0ZWN0aW9u
UmVzdWx0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShNSFRNTCkKICNpbmNsdWRlIDxXZWJDb3Jl
L01IVE1MQXJjaGl2ZS5oPgogI2VuZGlmCkBAIC0yOTc3LDYgKzI5ODEsMTUgQEAgdm9pZCBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCit2b2lkIFdlYlBhZ2U6OnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKE5T
QXJyYXkgKmRldGVjdGlvblJlc3VsdHMpCit7CisgICAgRGF0YURldGVjdGlvblJlc3VsdCBkYXRh
RGV0ZWN0aW9uUmVzdWx0OworICAgIGRhdGFEZXRlY3Rpb25SZXN1bHQucmVzdWx0cyA9IGRldGVj
dGlvblJlc3VsdHM7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXREYXRhRGV0
ZWN0aW9uUmVzdWx0KGRhdGFEZXRlY3Rpb25SZXN1bHQpKTsKK30KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24mIGxheWVyVHJhbnNhY3Rpb24pCiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5NTcxMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg2Niw2ICs4NjYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcGx1Z0luSXNQcmltYXJ5
U2l6ZShXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5JbWFnZUVsZW1lbnQs
IHVuc2lnbmVkICZwbHVnaW5BcmVhKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQorICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqKTsKKyNlbmRp
ZgorCiAgICAgdW5zaWduZWQgZXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigp
OwogICAgIHZvaWQgc3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24o
dW5zaWduZWQgdG9rZW4pOwogICAgIGJvb2wgc2hvdWxkRXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvbigpIHsgcmV0dXJuICFtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9r
ZW5zLmlzRW1wdHkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1NzEwKQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTYtMDEtMjcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDYWNoZSByZXN1bHRzIG9mIGRhdGEgZGV0ZWN0aW9uIGluIHRoZSBVSSBwcm9jZXNz
IHdoZW4gbG9hZCBjb21wbGV0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpbmcgZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIFdLMS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKToKKwogMjAxNi0w
MS0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBXZWJLaXRBZGRpdGlvbnMgZXh0ZW5zaW9uIHBvaW50cyB0byBXZWJDb3JlLCBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTU3MTApCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRlY3Rpb25SZXN1
bHRzKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikg
Y29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTk1NzEwKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOCw2ICs1MjgsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIH0KIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikKK3sKK30KKwog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
</data>
<flag name="review"
          id="294926"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>