<?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>199764</bug_id>
          
          <creation_ts>2019-07-12 15:53:27 -0700</creation_ts>
          <short_desc>Make WKURLSchemeTask thread safe</short_desc>
          <delta_ts>2021-04-29 10:26:10 -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>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225195</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552578</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-07-12 15:53:27 -0700</bug_when>
    <thetext>Make WKURLSchemeTask thread safe

&lt;rdar://problem/50471863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552582</commentid>
    <comment_count>1</comment_count>
      <attachid>374047</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-07-12 15:58:33 -0700</bug_when>
    <thetext>Created attachment 374047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552583</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-12 16:00:31 -0700</bug_when>
    <thetext>Attachment 374047 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebURLSchemeTask.cpp:202:  Declaration has space between type name and * in NSURLRequest *WebURLSchemeTask  [whitespace/declaration] [3]
ERROR: Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:37:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 9 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>1552875</commentid>
    <comment_count>3</comment_count>
      <attachid>374047</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-15 10:23:52 -0700</bug_when>
    <thetext>Comment on attachment 374047
Patch

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

&gt; Source/WTF/wtf/MainThread.cpp:177
&gt; +enum class MainStyle {

There&apos;s no reason not to have : bool here.  I think it&apos;s good practice, even if we don&apos;t store this anywhere yet.

&gt; Source/WTF/wtf/MainThread.cpp:182
&gt; +static void callOnMainAndWait(WTF::Function&lt;void()&gt;&amp;&amp; function, MainStyle mainStyle)

WTF:: unnecessary many places in this patch.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:37
&gt; +static WebKit::WebURLSchemeTask::ExceptionType getExceptionTypeFromMainRunLoop(WTF::Function&lt;WebKit::WebURLSchemeTask::ExceptionType ()&gt;&amp;&amp; function)

Extra space, WTF:: unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552880</commentid>
    <comment_count>4</comment_count>
      <attachid>374047</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-07-15 10:39:10 -0700</bug_when>
    <thetext>Comment on attachment 374047
Patch

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

&gt; Source/WTF/wtf/MainThread.cpp:179
&gt; +    Thread,
&gt; +    RunLoop

I don&apos;t understand the distinction you&apos;re making between Thread and RunLoop here. There&apos;s one RunLoop per thread, so what is the actual difference here?

&gt; Source/WTF/wtf/MainThread.cpp:185
&gt;      if (isMainThread()) {
&gt;          function();

isMainThread() is true on the WebThread, even when isMainRunLoop() is false. This seems like a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552881</commentid>
    <comment_count>5</comment_count>
      <attachid>374047</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-15 10:40:58 -0700</bug_when>
    <thetext>Comment on attachment 374047
Patch

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

&gt;&gt; Source/WTF/wtf/MainThread.cpp:179
&gt;&gt; +    RunLoop
&gt; 
&gt; I don&apos;t understand the distinction you&apos;re making between Thread and RunLoop here. There&apos;s one RunLoop per thread, so what is the actual difference here?

This is to not cause problems with UIWebView web thread stuff.

&gt;&gt; Source/WTF/wtf/MainThread.cpp:185
&gt;&gt;          function();
&gt; 
&gt; isMainThread() is true on the WebThread, even when isMainRunLoop() is false. This seems like a bug.

You&apos;re right.  This should be isMainRunLoop when mainStyle is RunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552884</commentid>
    <comment_count>6</comment_count>
      <attachid>374047</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-07-15 10:50:35 -0700</bug_when>
    <thetext>Comment on attachment 374047
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/MainThread.cpp:179
&gt;&gt;&gt; +    RunLoop
&gt;&gt; 
&gt;&gt; I don&apos;t understand the distinction you&apos;re making between Thread and RunLoop here. There&apos;s one RunLoop per thread, so what is the actual difference here?
&gt; 
&gt; This is to not cause problems with UIWebView web thread stuff.

For legacy compatibility, callOnMainThread and isMainThread apply to either the main thread or the web thread.

In new code, we don&apos;t need to maintain that extremely confusing naming style.

I&apos;d suggest 

    Thread =&gt; MainThreadOrWebThread
    RunLoop =&gt; MainThread

Also, when practical, we should probably globally rename the older functions too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552932</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-07-15 13:15:49 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 374047 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374047&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MainThread.cpp:177
&gt; &gt; +enum class MainStyle {
&gt; 
&gt; There&apos;s no reason not to have : bool here.  I think it&apos;s good practice, even
&gt; if we don&apos;t store this anywhere yet.
&gt; 
&gt; &gt; Source/WTF/wtf/MainThread.cpp:182
&gt; &gt; +static void callOnMainAndWait(WTF::Function&lt;void()&gt;&amp;&amp; function, MainStyle mainStyle)
&gt; 
&gt; WTF:: unnecessary many places in this patch.

To not cause a style split inside MainThread.cpp, I intend to leave those.

Fixing others.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:37
&gt; &gt; +static WebKit::WebURLSchemeTask::ExceptionType getExceptionTypeFromMainRunLoop(WTF::Function&lt;WebKit::WebURLSchemeTask::ExceptionType ()&gt;&amp;&amp; function)
&gt; 
&gt; Extra space, WTF:: unnecessary

Style-bot says its an extra space because nobody has ever successfully taught style body our established lambda style.

This is our established lambda style.

---

I&apos;m definitely fixing the actual mainrunloop utility function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552934</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-07-15 13:19:41 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Comment on attachment 374047 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=374047&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WTF/wtf/MainThread.cpp:179
&gt; &gt;&gt;&gt; +    RunLoop
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t understand the distinction you&apos;re making between Thread and RunLoop here. There&apos;s one RunLoop per thread, so what is the actual difference here?
&gt; &gt; 
&gt; &gt; This is to not cause problems with UIWebView web thread stuff.
&gt; 
&gt; For legacy compatibility, callOnMainThread and isMainThread apply to either
&gt; the main thread or the web thread.
&gt; 
&gt; In new code, we don&apos;t need to maintain that extremely confusing naming style.
&gt; 
&gt; I&apos;d suggest 
&gt; 
&gt;     Thread =&gt; MainThreadOrWebThread
&gt;     RunLoop =&gt; MainThread
&gt; 
&gt; Also, when practical, we should probably globally rename the older functions
&gt; too.

I totally agree with this.

But I&apos;m not sure how I can partially rename things in this patch - before that global renaming - without significantly ADDING to the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552955</commentid>
    <comment_count>9</comment_count>
      <attachid>374145</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-07-15 13:54:11 -0700</bug_when>
    <thetext>Created attachment 374145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552956</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-15 13:56:38 -0700</bug_when>
    <thetext>Attachment 374145 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebURLSchemeTask.cpp:202:  Declaration has space between type name and * in NSURLRequest *WebURLSchemeTask  [whitespace/declaration] [3]
ERROR: Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:37:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 9 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>1553031</commentid>
    <comment_count>11</comment_count>
      <attachid>374145</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-15 16:45:14 -0700</bug_when>
    <thetext>Comment on attachment 374145
Patch

Clearing flags on attachment: 374145

Committed r247461: &lt;https://trac.webkit.org/changeset/247461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553032</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-15 16:45:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553118</commentid>
    <comment_count>13</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-07-15 21:37:24 -0700</bug_when>
    <thetext>Committed r247473: &lt;https://trac.webkit.org/changeset/247473&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374047</attachid>
            <date>2019-07-12 15:58:33 -0700</date>
            <delta_ts>2019-07-15 13:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199764-20190712155833.patch</filename>
            <type>text/plain</type>
            <size>17680</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxNTFiYTllODUwOTg4OGYxNTdlYjUx
ZTRmMGE4NTg2YTE3MTY5NzYuLmQxZWI0NTk4OTU4MzNlZmIxOGFiYjU1MTdiNDIzNTUyZjFmZDQ4
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV0tVUkxTY2hlbWVUYXNrIHRocmVhZCBzYWZl
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA0NzE4NjM+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChX
VEY6OmNhbGxPbk1haW5BbmRXYWl0KToKKyAgICAgICAgKFdURjo6Y2FsbE9uTWFpblJ1bkxvb3BB
bmRXYWl0KToKKyAgICAgICAgKFdURjo6Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQpOgorICAgICAg
ICAqIHd0Zi9NYWluVGhyZWFkLmg6CisKIDIwMTktMDctMTEgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgWW9yayBmb250IGVycm9uZW91c2x5
IGdldHMgc3ludGhldGljIGJvbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2Y4ZGU2Y2UyZmIyYjQ2ODJhYTQ0YjVi
MzRhY2RlZmFkZTcyNzg4My4uYTM0ZDcwODljMmNhNmFmOWE4YWVhYjcwYzIyN2Y0ZGY1ZjM4Nzk0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0wNy0xMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXS1VSTFNjaGVtZVRhc2sgdGhyZWFk
IHNhZmUuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDQ3MTg2Mz4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdW50IG1vc3Qgb2YgdGhlIFdLVVJMU2NoZW1l
VGFzayBvcGVyYXRpb25zIGJhY2sgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICBNYWtlIGFj
Y2Vzc2luZyB0aGUgTlNVUkxSZXF1ZXN0IGJlIHRocmVhZCBzYWZlIHdpdGggbG9jayBwcm90ZWN0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW06
CisgICAgICAgIChnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKToKKyAgICAgICAgKC1b
V0tVUkxTY2hlbWVUYXNrSW1wbCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFz
a0ltcGwgcmVxdWVzdF0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIF9yZXF1ZXN0
T25seUlmQ2FjaGVkXSk6CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgZGlkUmVjZWl2
ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVE
YXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAg
ICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjpuZXdSZXF1ZXN0
Ol0pOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6fldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpu
c1JlcXVlc3QgY29uc3QpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6aWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OnBhZ2VJRCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVUYXNrOjpwcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cmVxdWVzdCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTkt
MDctMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNz
aW9uKG1hY09TIENhdGFsaW5hKTogQ2Fubm90IHF1aWNrIGxvb2sgaHRtbCBkb2N1bWVudHMgaW4g
TWFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA5ZWRkOGVmMThkMGI1YmZjOTczYmIwMTFkMGRl
ZDMxYjVlYTIzN2Q5Li5mNzRkMjYyY2Y5NWNmMmNlZjFhMjU2ZjUyZTgzOTU3NzMyZThiZjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtMTc0LDcgKzE3NCwxMiBAQCBib29sIGlzTWFpblRocmVh
ZE9yR0NUaHJlYWQoKQogICAgIHJldHVybiBpc01haW5UaHJlYWQoKTsKIH0KIAotdm9pZCBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK2Vu
dW0gY2xhc3MgTWFpblN0eWxlIHsKKyAgICBUaHJlYWQsCisgICAgUnVuTG9vcAorfTsKKworc3Rh
dGljIHZvaWQgY2FsbE9uTWFpbkFuZFdhaXQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24sIE1haW5TdHlsZSBtYWluU3R5bGUpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAg
ICAgICAgIGZ1bmN0aW9uKCk7CkBAIC0xODYsMTMgKzE5MSwyMSBAQCB2b2lkIGNhbGxPbk1haW5U
aHJlYWRBbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogCiAgICAgYm9v
bCBpc0ZpbmlzaGVkID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CisgICAgYXV0byBmdW5jdGlvbkltcGwgPSBbJiwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogCiAgICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKICAgICAgICAgaXNGaW5pc2hl
ZCA9IHRydWU7CiAgICAgICAgIGNvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwotICAgIH0p
OworICAgIH07CisKKyAgICBzd2l0Y2ggKG1haW5TdHlsZSkgeworICAgIGNhc2UgTWFpblN0eWxl
OjpUaHJlYWQ6CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShmdW5jdGlvbkltcGwp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWluU3R5bGU6OlJ1bkxvb3A6CisgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb25JbXBsKSk7CisgICAgfTsKIAogICAg
IHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtdXRleCk7CiAgICAgY29uZGl0aW9uVmFyaWFi
bGUud2FpdChsb2NrLCBbJl0gewpAQCAtMjAwLDQgKzIxMywxNCBAQCB2b2lkIGNhbGxPbk1haW5U
aHJlYWRBbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwog
fQogCit2b2lkIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKK3sKKyAgICBjYWxsT25NYWluQW5kV2FpdChXVEZNb3ZlKGZ1bmN0aW9uKSwg
TWFpblN0eWxlOjpSdW5Mb29wKTsKK30KKwordm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBjYWxsT25NYWluQW5kV2Fp
dChXVEZNb3ZlKGZ1bmN0aW9uKSwgTWFpblN0eWxlOjpUaHJlYWQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRleCAwODM0MTMzNWQyYTcwZDZlODA1NjViODRkYTAz
NWI5MGE2NjRiOTQ5Li4xMmJmYWU0NDg2ZTIwYTVkZDg5ZTViZDMxNmViMDVmMWYxZjY0ZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oCkBAIC01OSw2ICs1OSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUaHJlYWQmKTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNNYWluUnVuTG9vcCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
Y2FsbE9uTWFpblJ1bkxvb3AoRnVuY3Rpb248dm9pZCgpPiYmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAj
aWYgVVNFKFdFQl9USFJFQUQpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dlYlRocmVhZCgp
OwpAQCAtOTIsNiArOTMsOCBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFp
blRocmVhZFBsYXRmb3JtKCk7CiAKIHVzaW5nIFdURjo6Y2FsbE9uTWFpblRocmVhZDsKIHVzaW5n
IFdURjo6Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQ7Cit1c2luZyBXVEY6OmNhbGxPbk1haW5SdW5M
b29wOwordXNpbmcgV1RGOjpjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQ7CiB1c2luZyBXVEY6OmNh
bkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFk
OwogdXNpbmcgV1RGOjppc01haW5UaHJlYWRPckdDVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KaW5kZXggM2RiMzJl
M2NhNWFlZDMwMDYxYzNlNTNhZDg0YTI1YjE1YzI2OWJjNS4uZmJhM2Y2YjI3NDA3MzczMGJjYWI4
OGUwNDk1NjQxMzI1NDU3M2ZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDIwIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK3N0YXRpYyBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4Y2VwdGlvblR5cGUgZ2V0RXhj
ZXB0aW9uVHlwZUZyb21NYWluUnVuTG9vcChXVEY6OkZ1bmN0aW9uPFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6RXhjZXB0aW9uVHlwZSAoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAoUnVuTG9v
cDo6aXNNYWluKCkpCisgICAgICAgIHJldHVybiBmdW5jdGlvbigpOworCisgICAgV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGU7CisgICAgY2FsbE9u
TWFpblJ1bkxvb3BBbmRXYWl0KFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCAmZXhjZXB0
aW9uVHlwZV0geworICAgICAgICBleGNlcHRpb25UeXBlID0gZnVuY3Rpb24oKTsKKyAgICB9KTsK
KworICAgIHJldHVybiBleGNlcHRpb25UeXBlOworfQogCiBzdGF0aWMgdm9pZCByYWlzZUV4Y2Vw
dGlvbklmTmVjZXNzYXJ5KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0aW9uVHlwZSBl
eGNlcHRpb25UeXBlKQogewpAQCAtNjAsNDggKzc0LDc1IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1VS
TFNjaGVtZVRhc2tJbXBsCiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF91cmxTY2hlbWVUYXNr
LT5BUEk6OlVSTFNjaGVtZVRhc2s6On5VUkxTY2hlbWVUYXNrKCk7CisgICAgYXV0byBmdW5jID0g
W3Rhc2sgPSBXVEZNb3ZlKF91cmxTY2hlbWVUYXNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRh
c2stPkFQSTo6VVJMU2NoZW1lVGFzazo6flVSTFNjaGVtZVRhc2soKTsKKyAgICB9OworCisgICAg
aWYgKFJ1bkxvb3A6OmlzTWFpbigpKQorICAgICAgICBmdW5jKCk7CisgICAgZWxzZQorICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChXVEZNb3ZlKGZ1bmMpKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfdXJsU2No
ZW1lVGFzay0+dGFzaygpLnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX3VybFNjaGVtZVRhc2st
PnRhc2soKS5uc1JlcXVlc3QoKTsKIH0KIAogLSAoQk9PTClfcmVxdWVzdE9ubHlJZkNhY2hlZAog
ewotICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygpLnJlcXVlc3QoKS5jYWNoZVBvbGlj
eSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURh
dGFEb250TG9hZDsKKyAgICByZXR1cm4gX3VybFNjaGVtZVRhc2stPnRhc2soKS5uc1JlcXVlc3Qo
KS5jYWNoZVBvbGljeSA9PSBOU1VSTFJlcXVlc3RSZXR1cm5DYWNoZURhdGFEb250TG9hZDsKIH0K
IAogLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQog
ewotICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZVRhc2stPnRhc2soKS5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOworICAgIGF1dG8gZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgc2VsZiwgcHJvdGVjdGVkUmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9u
c2UpLCByZXNwb25zZV0geworICAgICAgICByZXR1cm4gX3VybFNjaGVtZVRhc2stPnRhc2soKS5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9
IGdldEV4Y2VwdGlvblR5cGVGcm9tTWFpblJ1bkxvb3AoV1RGTW92ZShmdW5jdGlvbikpOwogICAg
IHJhaXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkocmVzdWx0KTsKIH0KIAogLSAodm9pZClkaWRSZWNl
aXZlRGF0YTooTlNEYXRhICopZGF0YQogewotICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZVRh
c2stPnRhc2soKS5kaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKSk7CisgICAgYXV0byBmdW5jdGlvbiA9IFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBzZWxmLCBwcm90ZWN0ZWREYXRhID0gcmV0YWluUHRyKGRhdGEpLCBkYXRhXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIH07CisKKyAgICBh
dXRvIHJlc3VsdCA9IGdldEV4Y2VwdGlvblR5cGVGcm9tTWFpblJ1bkxvb3AoV1RGTW92ZShmdW5j
dGlvbikpOwogICAgIHJhaXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkocmVzdWx0KTsKIH0KIAogLSAo
dm9pZClkaWRGaW5pc2gKIHsKLSAgICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVUYXNrLT50YXNr
KCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZiksIHNlbGZdIHsKKyAgICAgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNr
LT50YXNrKCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICB9OworCisgICAgYXV0byByZXN1bHQgPSBn
ZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBy
YWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7CiB9CiAKIC0gKHZvaWQpZGlkRmFpbFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1l
VGFzay0+dGFzaygpLmRpZENvbXBsZXRlKGVycm9yKTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3By
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGYsIHByb3RlY3RlZEVycm9yID0gcmV0
YWluUHRyKGVycm9yKSwgZXJyb3JdIHsKKyAgICAgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNrLT50
YXNrKCkuZGlkQ29tcGxldGUoZXJyb3IpOworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IGdl
dEV4Y2VwdGlvblR5cGVGcm9tTWFpblJ1bkxvb3AoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIHJh
aXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkocmVzdWx0KTsKIH0KIAogLSAodm9pZClfZGlkUGVyZm9y
bVJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdAogewotICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZVRhc2stPnRh
c2soKS5kaWRQZXJmb3JtUmVkaXJlY3Rpb24ocmVzcG9uc2UsIHJlcXVlc3QpOworICAgIGF1dG8g
ZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZiwgcHJvdGVj
dGVkUmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UpLCByZXNwb25zZSwgcHJvdGVjdGVkUmVx
dWVzdCA9IHJldGFpblB0cihyZXF1ZXN0KSwgcmVxdWVzdF0geworICAgICAgICByZXR1cm4gX3Vy
bFNjaGVtZVRhc2stPnRhc2soKS5kaWRQZXJmb3JtUmVkaXJlY3Rpb24ocmVzcG9uc2UsIHJlcXVl
c3QpOworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IGdldEV4Y2VwdGlvblR5cGVGcm9tTWFp
blJ1bkxvb3AoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nh
cnkocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCAyNDg2NmUxYzY0ZDk4OGVmZmMxNjkzZDgzMWU3ZmZkNDE4ZjcwZjQ5Li4w
MzYyMWMwYmIzN2UwMTMwZTU2NmUzNzIwOTE3NDY3NTI0OTliNWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTAsMTAgKzUwLDE4IEBAIFdl
YlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFu
ZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkK
ICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5k
bGVyKSkKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworfQorCitXZWJVUkxTY2hl
bWVUYXNrOjp+V2ViVVJMU2NoZW1lVGFzaygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIH0KIAogYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KSAtPiBFeGNlcHRpb25UeXBlCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKwogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CiAgICAgCkBAIC02OSw3ICs3NywxMSBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgIGlmIChpc1N5bmMoKSkKICAgICAgICAgbV9zeW5jUmVz
cG9uc2UgPSByZXNwb25zZTsKIAotICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgbV9yZXF1ZXN0
ID0gcmVxdWVzdDsKKyAgICB9CisKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5kbGVy
LT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwpAQCAtNzcsNiAr
ODksOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogCiBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4g
RXhjZXB0aW9uVHlwZQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBp
ZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlT
dG9wcGVkOwogCkBAIC05OSw2ICsxMTMsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogCiBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKwogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpU
YXNrQWxyZWFkeVN0b3BwZWQ7CiAKQEAgLTEyNCw2ICsxNDAsOCBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeQogCiBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKwogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CiAKQEAgLTE1NCwyMiArMTcyLDM4IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
IC0+IEV4Y2VwdGlvblR5cGUKIAogdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpwYWdlRGVzdHJveWVk
KCkKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChtX3BhZ2Up
OworCiAgICAgbV9wYWdlID0gbnVsbHB0cjsKICAgICBtX3Byb2Nlc3MgPSBudWxscHRyOwogICAg
IG1fc3RvcHBlZCA9IHRydWU7CiAgICAgCi0gICAgaWYgKGlzU3luYygpKQorICAgIGlmIChpc1N5
bmMoKSkgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKICAgICAg
ICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNM
b2FkKG1fcmVxdWVzdCksIHsgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6
OnN0b3AoKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFt
X3N0b3BwZWQpOworCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAotICAgIGlmIChpc1N5bmMoKSkK
KyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0
TG9jayk7CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3VzdG9t
UHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOworICAgIH0KK30KKworI2lmIFBMQVRG
T1JNKENPQ09BKQorTlNVUkxSZXF1ZXN0ICpXZWJVUkxTY2hlbWVUYXNrOjpuc1JlcXVlc3QoKSBj
b25zdAoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOworICAgIHJldHVy
biBtX3JlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpV
cGRhdGVIVFRQQm9keSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYWVjODY0NTU3YTQx
ZTg2ZTEzODlkOWQ2OTdlMGNiODY4NWFlOGM4NC4uNzAxMmI5OGY0MzllOWE2MTNjYWNiMGI2YTcx
N2EzYjZhYzMxZjE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaApAQCAtNTEsMTYgKzUxLDIxIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogdXNpbmcgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBWZWN0b3I8Y2hhcj4mKT47CiAKLWNsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJV
UkxTY2hlbWVUYXNrPiB7CitjbGFzcyBXZWJVUkxTY2hlbWVUYXNrIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFuY2VDb3VudGVkPFdl
YlVSTFNjaGVtZVRhc2s+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVU
YXNrKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShX
ZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQotICAgIFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQorICAgIH5XZWJV
UkxTY2hlbWVUYXNrKCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KKyAgICB1aW50NjRfdCBpZGVudGlm
aWVyKCkgY29uc3QgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQorCisgICAg
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyBy
ZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOU1VS
TFJlcXVlc3QgKm5zUmVxdWVzdCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBlbnVtIGNsYXNzIEV4
Y2VwdGlvblR5cGUgewogICAgICAgICBEYXRhQWxyZWFkeVNlbnQsCkBAIC04OSw2ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKKyAgICBtdXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKICAgICBib29sIG1f
c3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RhdGFTZW50IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MmViOGQ1YmViN2U5MjdjYWIzMmI1NGQ0Y2QzOWJk
YzU2N2VjNDAxLi5mYWFhM2UyMzU2MTM1MzhiYzFmOWU5MjI1YTY5MTg2MGU0MjJhY2Q5IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDctMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIE1ha2UgV0tVUkxTY2hlbWVUYXNrIHRocmVhZCBzYWZlLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTA0NzE4NjM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxl
ci0xLm1tOgorCiAyMDE5LTA3LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQmVnaW4gdW5pZnlpbmcgVGVzdFdlYktpdEFQSSBidWlsZApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggZjM0ZWIzYmQzMDc5NTE1MjkwOTVkNTZiY2Y5
ZjU0NjU5NGUxZGI4Ny4uYTY0ZTAwNzIxMmJiNWNkY2ZiZWU1NDc4ZWNjYmJiNDMyYmU5ZTgwNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0zNCw4ICszNCwxMSBAQAogI2ltcG9ydCA8
V2ViS2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjkyLDMgKzY5
NSw0MSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFhIUlBvc3QpCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBUaHJlYWRz
KQoreworICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBh
bGxvY10gaW5pdF07CisKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVt
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0aHJl
YWRzIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBzdGF0aWMgYm9vbCBkb25lOworICAgIHN0YXRp
YyBpZDxXS1VSTFNjaGVtZVRhc2s+IHRoZVRhc2s7CisgICAgc3RhdGljIFJlZlB0cjxUaHJlYWQ+
IHRoZVRocmVhZDsKKyAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4o
V0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICB0aGVUYXNr
ID0gdGFzazsKKyAgICAgICAgW3Rhc2sgcmV0YWluXTsKKyAgICAgICAgdGhlVGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoIkEiLCBbdGFza10geworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFk
b3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0pOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLmdldCgpXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGhyZWFkczovL21haW4uaHRtbCJdXV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworCisgICAgaGFuZGxlciA9IG5pbDsKKyAgICBjb25maWd1cmF0aW9uID0gbmlsOwor
ICAgIHdlYlZpZXcgPSBuaWw7CisgICAgdGhlVGhyZWFkID0gbnVsbHB0cjsKKyAgICBbcG9vbCBk
cmFpbl07CisKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiQiIsIFtdIHsKKyAgICAgICAgW3RoZVRhc2sg
cmVsZWFzZV07CisgICAgICAgIHRoZVRhc2sgPSBuaWw7CisgICAgfSktPndhaXRGb3JDb21wbGV0
aW9uKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374145</attachid>
            <date>2019-07-15 13:54:11 -0700</date>
            <delta_ts>2019-07-15 16:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199764-20190715135411.patch</filename>
            <type>text/plain</type>
            <size>17786</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxNTFiYTllODUwOTg4OGYxNTdlYjUx
ZTRmMGE4NTg2YTE3MTY5NzYuLmQxZWI0NTk4OTU4MzNlZmIxOGFiYjU1MTdiNDIzNTUyZjFmZDQ4
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV0tVUkxTY2hlbWVUYXNrIHRocmVhZCBzYWZl
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA0NzE4NjM+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChX
VEY6OmNhbGxPbk1haW5BbmRXYWl0KToKKyAgICAgICAgKFdURjo6Y2FsbE9uTWFpblJ1bkxvb3BB
bmRXYWl0KToKKyAgICAgICAgKFdURjo6Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQpOgorICAgICAg
ICAqIHd0Zi9NYWluVGhyZWFkLmg6CisKIDIwMTktMDctMTEgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgWW9yayBmb250IGVycm9uZW91c2x5
IGdldHMgc3ludGhldGljIGJvbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2Y4ZGU2Y2UyZmIyYjQ2ODJhYTQ0YjVi
MzRhY2RlZmFkZTcyNzg4My4uYTM0ZDcwODljMmNhNmFmOWE4YWVhYjcwYzIyN2Y0ZGY1ZjM4Nzk0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0wNy0xMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXS1VSTFNjaGVtZVRhc2sgdGhyZWFk
IHNhZmUuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDQ3MTg2Mz4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk3NjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdW50IG1vc3Qgb2YgdGhlIFdLVVJMU2NoZW1l
VGFzayBvcGVyYXRpb25zIGJhY2sgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICBNYWtlIGFj
Y2Vzc2luZyB0aGUgTlNVUkxSZXF1ZXN0IGJlIHRocmVhZCBzYWZlIHdpdGggbG9jayBwcm90ZWN0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW06
CisgICAgICAgIChnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKToKKyAgICAgICAgKC1b
V0tVUkxTY2hlbWVUYXNrSW1wbCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFz
a0ltcGwgcmVxdWVzdF0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIF9yZXF1ZXN0
T25seUlmQ2FjaGVkXSk6CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgZGlkUmVjZWl2
ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVE
YXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAg
ICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjpuZXdSZXF1ZXN0
Ol0pOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6fldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpu
c1JlcXVlc3QgY29uc3QpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6aWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OnBhZ2VJRCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVUYXNrOjpwcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cmVxdWVzdCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTkt
MDctMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNz
aW9uKG1hY09TIENhdGFsaW5hKTogQ2Fubm90IHF1aWNrIGxvb2sgaHRtbCBkb2N1bWVudHMgaW4g
TWFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA5ZWRkOGVmMThkMGI1YmZjOTczYmIwMTFkMGRl
ZDMxYjVlYTIzN2Q5Li5lMmFlMWQ0ZGZkYmY3YTg3ODhjODVjNWEzOWVkMjdmNjk4MTBjZDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtMTc0LDkgKzE3NCwxNSBAQCBib29sIGlzTWFpblRocmVh
ZE9yR0NUaHJlYWQoKQogICAgIHJldHVybiBpc01haW5UaHJlYWQoKTsKIH0KIAotdm9pZCBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK2Vu
dW0gY2xhc3MgTWFpblN0eWxlIDogYm9vbCB7CisgICAgVGhyZWFkLAorICAgIFJ1bkxvb3AKK307
CisKK3N0YXRpYyB2b2lkIGNhbGxPbk1haW5BbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uLCBNYWluU3R5bGUgbWFpblN0eWxlKQogewotICAgIGlmIChpc01haW5UaHJlYWQo
KSkgeworCisgICAgaWYgKG1haW5TdHlsZSA9PSBNYWluU3R5bGU6OlRocmVhZCA/IGlzTWFpblRo
cmVhZCgpIDogaXNNYWluUnVuTG9vcCgpKSB7CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xODYsMTMgKzE5MiwyMSBAQCB2b2lkIGNhbGxPbk1haW5UaHJl
YWRBbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogCiAgICAgYm9vbCBp
c0ZpbmlzaGVkID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXSB7CisgICAgYXV0byBmdW5jdGlvbkltcGwgPSBbJiwgZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogCiAgICAgICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKICAgICAgICAgaXNGaW5pc2hlZCA9
IHRydWU7CiAgICAgICAgIGNvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwotICAgIH0pOwor
ICAgIH07CisKKyAgICBzd2l0Y2ggKG1haW5TdHlsZSkgeworICAgIGNhc2UgTWFpblN0eWxlOjpU
aHJlYWQ6CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShmdW5jdGlvbkltcGwpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWluU3R5bGU6OlJ1bkxvb3A6CisgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb25JbXBsKSk7CisgICAgfTsKIAogICAgIHN0
ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtdXRleCk7CiAgICAgY29uZGl0aW9uVmFyaWFibGUu
d2FpdChsb2NrLCBbJl0gewpAQCAtMjAwLDQgKzIxNCwxNCBAQCB2b2lkIGNhbGxPbk1haW5UaHJl
YWRBbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQog
Cit2b2lkIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKK3sKKyAgICBjYWxsT25NYWluQW5kV2FpdChXVEZNb3ZlKGZ1bmN0aW9uKSwgTWFp
blN0eWxlOjpSdW5Mb29wKTsKK30KKwordm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBjYWxsT25NYWluQW5kV2FpdChX
VEZNb3ZlKGZ1bmN0aW9uKSwgTWFpblN0eWxlOjpUaHJlYWQpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9X
VEYvd3RmL01haW5UaHJlYWQuaAppbmRleCAwODM0MTMzNWQyYTcwZDZlODA1NjViODRkYTAzNWI5
MGE2NjRiOTQ5Li4xMmJmYWU0NDg2ZTIwYTVkZDg5ZTViZDMxNmViMDVmMWYxZjY0ZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5oCkBAIC01OSw2ICs1OSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNh
bkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUaHJlYWQmKTsKIAogV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNNYWluUnVuTG9vcCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2Fs
bE9uTWFpblJ1bkxvb3AoRnVuY3Rpb248dm9pZCgpPiYmKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAjaWYg
VVNFKFdFQl9USFJFQUQpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dlYlRocmVhZCgpOwpA
QCAtOTIsNiArOTMsOCBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRo
cmVhZFBsYXRmb3JtKCk7CiAKIHVzaW5nIFdURjo6Y2FsbE9uTWFpblRocmVhZDsKIHVzaW5nIFdU
Rjo6Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQ7Cit1c2luZyBXVEY6OmNhbGxPbk1haW5SdW5Mb29w
OwordXNpbmcgV1RGOjpjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQ7CiB1c2luZyBXVEY6OmNhbkFj
Y2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFkOwog
dXNpbmcgV1RGOjppc01haW5UaHJlYWRPckdDVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KaW5kZXggM2RiMzJlM2Nh
NWFlZDMwMDYxYzNlNTNhZDg0YTI1YjE1YzI2OWJjNS4uY2ViMTBjZTY5Nzk5MDk4ZTRjNTBhYWM3
ZTkxMjYyNDRhZTNiNjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDIwIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisK
K3N0YXRpYyBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4Y2VwdGlvblR5cGUgZ2V0RXhjZXB0
aW9uVHlwZUZyb21NYWluUnVuTG9vcChGdW5jdGlvbjxXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OkV4Y2VwdGlvblR5cGUgKCk+JiYgZnVuY3Rpb24pCit7CisgICAgaWYgKFJ1bkxvb3A6OmlzTWFp
bigpKQorICAgICAgICByZXR1cm4gZnVuY3Rpb24oKTsKKworICAgIFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6RXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlOworICAgIGNhbGxPbk1haW5SdW5M
b29wQW5kV2FpdChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgJmV4Y2VwdGlvblR5cGVd
IHsKKyAgICAgICAgZXhjZXB0aW9uVHlwZSA9IGZ1bmN0aW9uKCk7CisgICAgfSk7CisKKyAgICBy
ZXR1cm4gZXhjZXB0aW9uVHlwZTsKK30KIAogc3RhdGljIHZvaWQgcmFpc2VFeGNlcHRpb25JZk5l
Y2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4Y2VwdGlvblR5cGUgZXhjZXB0aW9u
VHlwZSkKIHsKQEAgLTYwLDQ4ICs3NCw3NSBAQCBAaW1wbGVtZW50YXRpb24gV0tVUkxTY2hlbWVU
YXNrSW1wbAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfdXJsU2NoZW1lVGFzay0+QVBJOjpV
UkxTY2hlbWVUYXNrOjp+VVJMU2NoZW1lVGFzaygpOworICAgIGF1dG8gZnVuYyA9IFt0YXNrID0g
V1RGTW92ZShfdXJsU2NoZW1lVGFzayldICgpIG11dGFibGUgeworICAgICAgICB0YXNrLT5BUEk6
OlVSTFNjaGVtZVRhc2s6On5VUkxTY2hlbWVUYXNrKCk7CisgICAgfTsKKworICAgIGlmIChSdW5M
b29wOjppc01haW4oKSkKKyAgICAgICAgZnVuYygpOworICAgIGVsc2UKKyAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoV1RGTW92ZShmdW5jKSk7CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
IC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX3VybFNjaGVtZVRhc2st
PnRhc2soKS5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNrLT50YXNrKCku
bnNSZXF1ZXN0KCk7CiB9CiAKIC0gKEJPT0wpX3JlcXVlc3RPbmx5SWZDYWNoZWQKIHsKLSAgICBy
ZXR1cm4gX3VybFNjaGVtZVRhc2stPnRhc2soKS5yZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA9PSBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQ7CisgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNrLT50YXNrKCkubnNSZXF1ZXN0KCkuY2FjaGVQ
b2xpY3kgPT0gTlNVUkxSZXF1ZXN0UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQ7CiB9CiAKIC0gKHZv
aWQpZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIHNlbGYsIHByb3RlY3RlZFJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKSwgcmVz
cG9uc2VdIHsKKyAgICAgICAgcmV0dXJuIF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICB9OworCisgICAgYXV0byByZXN1bHQgPSBnZXRFeGNl
cHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICByYWlzZUV4
Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7CiB9CiAKIC0gKHZvaWQpZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEKIHsKLSAgICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVUYXNrLT50YXNr
KCkuZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOwor
ICAgIGF1dG8gZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2Vs
ZiwgcHJvdGVjdGVkRGF0YSA9IHJldGFpblB0cihkYXRhKSwgZGF0YV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygpLmRpZFJlY2VpdmVEYXRhKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKKyAgICB9OworCisgICAgYXV0byByZXN1
bHQgPSBnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb24pKTsK
ICAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7CiB9CiAKIC0gKHZvaWQpZGlk
RmluaXNoCiB7Ci0gICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lVGFzay0+dGFzaygpLmRpZENv
bXBsZXRlKHsgfSk7CisgICAgYXV0byBmdW5jdGlvbiA9IFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBzZWxmXSB7CisgICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygp
LmRpZENvbXBsZXRlKHsgfSk7CisgICAgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gZ2V0RXhjZXB0
aW9uVHlwZUZyb21NYWluUnVuTG9vcChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgcmFpc2VFeGNl
cHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOwogfQogCiAtICh2b2lkKWRpZEZhaWxXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvcgogewotICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZVRhc2stPnRh
c2soKS5kaWRDb21wbGV0ZShlcnJvcik7CisgICAgYXV0byBmdW5jdGlvbiA9IFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmLCBwcm90ZWN0ZWRFcnJvciA9IHJldGFpblB0cihl
cnJvciksIGVycm9yXSB7CisgICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygpLmRp
ZENvbXBsZXRlKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byByZXN1bHQgPSBnZXRFeGNlcHRp
b25UeXBlRnJvbU1haW5SdW5Mb29wKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICByYWlzZUV4Y2Vw
dGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7CiB9CiAKIC0gKHZvaWQpX2RpZFBlcmZvcm1SZWRpcmVj
dGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKIHsKLSAgICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZGlk
UGVyZm9ybVJlZGlyZWN0aW9uKHJlc3BvbnNlLCByZXF1ZXN0KTsKKyAgICBhdXRvIGZ1bmN0aW9u
ID0gW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGYsIHByb3RlY3RlZFJlc3Bv
bnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKSwgcmVzcG9uc2UsIHByb3RlY3RlZFJlcXVlc3QgPSBy
ZXRhaW5QdHIocmVxdWVzdCksIHJlcXVlc3RdIHsKKyAgICAgICAgcmV0dXJuIF91cmxTY2hlbWVU
YXNrLT50YXNrKCkuZGlkUGVyZm9ybVJlZGlyZWN0aW9uKHJlc3BvbnNlLCByZXF1ZXN0KTsKKyAg
ICB9OworCisgICAgYXV0byByZXN1bHQgPSBnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29w
KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3Vs
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
aW5kZXggMjQ4NjZlMWM2NGQ5ODhlZmZjMTY5M2Q4MzFlN2ZmZDQxOGY3MGY0OS4uMDM2MjFjMGJi
MzdlMDEzMGU1NjZlMzcyMDkxNzQ2NzUyNDk5YjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUwLDEwICs1MCwxOCBAQCBXZWJVUkxTY2hl
bWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdl
YlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBt
X3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCiB7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKK30KKworV2ViVVJMU2NoZW1lVGFzazo6
fldlYlVSTFNjaGVtZVRhc2soKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9
CiAKIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkgLT4gRXhjZXB0aW9uVHlwZQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkOwogICAgIApAQCAtNjksNyArNzcsMTEgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnMKICAgICBpZiAoaXNTeW5jKCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0g
cmVzcG9uc2U7CiAKLSAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OworICAgIHsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0TG9jayk7CisgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVl
c3Q7CisgICAgfQorCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxT
Y2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKQEAgLTc3LDYgKzg5LDggQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKIAogYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEV4Y2VwdGlv
blR5cGUKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgaWYgKG1fc3Rv
cHBlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsK
IApAQCAtOTksNiArMTEzLDggQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKIAogYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHlwZQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKICAg
ICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6VGFza0FscmVh
ZHlTdG9wcGVkOwogCkBAIC0xMjQsNiArMTQwLDggQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkK
IAogYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkOwogCkBAIC0xNTQsMjIgKzE3MiwzOCBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNl
cHRpb25UeXBlCiAKIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCgpCiB7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKKwogICAg
IG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9wcm9jZXNzID0gbnVsbHB0cjsKICAgICBtX3N0b3Bw
ZWQgPSB0cnVlOwogICAgIAotICAgIGlmIChpc1N5bmMoKSkKKyAgICBpZiAoaXNTeW5jKCkpIHsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0TG9jayk7CiAgICAgICAgIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChtX3Jl
cXVlc3QpLCB7IH0pOworICAgIH0KIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpzdG9wKCkK
IHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9zdG9wcGVk
KTsKKwogICAgIG1fc3RvcHBlZCA9IHRydWU7CiAKLSAgICBpZiAoaXNTeW5jKCkpCisgICAgaWYg
KGlzU3luYygpKSB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOwog
ICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29s
U3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKKyAgICB9Cit9CisKKyNpZiBQTEFURk9STShDT0NP
QSkKK05TVVJMUmVxdWVzdCAqV2ViVVJMU2NoZW1lVGFzazo6bnNSZXF1ZXN0KCkgY29uc3QKK3sK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICByZXR1cm4gbV9yZXF1
ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRU
UEJvZHkpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGFlYzg2NDU1N2E0MWU4NmUxMzg5
ZDlkNjk3ZTBjYjg2ODVhZThjODQuLjcwMTJiOThmNDM5ZTlhNjEzY2FjYjBiNmE3MTdhM2I2YWMz
MWYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAg
LTUxLDE2ICs1MSwyMSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIHVzaW5nIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVmVj
dG9yPGNoYXI+Jik+OwogCi1jbGFzcyBXZWJVUkxTY2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1l
VGFzaz4geworY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJVUkxTY2hl
bWVUYXNrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lVGFzayk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2No
ZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25I
YW5kbGVyJiYpOwogCi0gICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQotICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KKyAgICB+V2ViVVJMU2NoZW1l
VGFzaygpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNv
bnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKworICAgIFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1f
cHJvY2Vzcy5nZXQoKTsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTlNVUkxSZXF1ZXN0
ICpuc1JlcXVlc3QoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBFeGNlcHRpb25U
eXBlIHsKICAgICAgICAgRGF0YUFscmVhZHlTZW50LApAQCAtODksNiArOTQsNyBAQCBwcml2YXRl
OgogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVl
c3Q7CisgICAgbXV0YWJsZSBMb2NrIG1fcmVxdWVzdExvY2s7CiAgICAgYm9vbCBtX3N0b3BwZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9kYXRhU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzJlYjhkNWJlYjdlOTI3Y2FiMzJiNTRkNGNkMzliZGM1NjdlYzQw
MS4uZmFhYTNlMjM1NjEzNTM4YmMxZjllOTIyNWE2OTE4NjBlNDIyYWNkOSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE5LTA3LTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIFdLVVJMU2NoZW1lVGFzayB0aHJlYWQgc2FmZS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzUwNDcxODYzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
OTc2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToK
KwogMjAxOS0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEJlZ2luIHVuaWZ5aW5nIFRlc3RXZWJLaXRBUEkgYnVpbGQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tCmluZGV4IGYzNGViM2JkMzA3OTUxNTI5MDk1ZDU2YmNmOWY1NDY1OTRl
MWRiODcuLmE2NGUwMDcyMTJiYjVjZGNmYmVlNTQ3OGVjY2JiYjQzMmJlOWU4MDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VS
TFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtMzQsOCArMzQsMTEgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY5MiwzICs2OTUsNDEgQEAg
VEVTVChVUkxTY2hlbWVIYW5kbGVyLCBYSFJQb3N0KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CiAKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgVGhyZWFkcykKK3sKKyAg
ICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGlu
aXRdOworCisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGhyZWFkcyJdOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgc3RhdGljIGJvb2wgZG9uZTsKKyAgICBzdGF0aWMgaWQ8V0tV
UkxTY2hlbWVUYXNrPiB0aGVUYXNrOworICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiB0aGVUaHJl
YWQ7CisgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmll
dyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgdGhlVGFzayA9IHRhc2s7
CisgICAgICAgIFt0YXNrIHJldGFpbl07CisgICAgICAgIHRoZVRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJBIiwgW3Rhc2tdIHsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpu
aWxdKTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQo
KV07CisgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0pOworICAgIH1dOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRocmVhZHM6
Ly9tYWluLmh0bWwiXV1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIGhhbmRsZXIgPSBuaWw7CisgICAgY29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICB3ZWJW
aWV3ID0gbmlsOworICAgIHRoZVRocmVhZCA9IG51bGxwdHI7CisgICAgW3Bvb2wgZHJhaW5dOwor
CisgICAgVGhyZWFkOjpjcmVhdGUoIkIiLCBbXSB7CisgICAgICAgIFt0aGVUYXNrIHJlbGVhc2Vd
OworICAgICAgICB0aGVUYXNrID0gbmlsOworICAgIH0pLT53YWl0Rm9yQ29tcGxldGlvbigpOwor
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>