<?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>153292</bug_id>
          
          <creation_ts>2016-01-20 16:04:49 -0800</creation_ts>
          <short_desc>AX: [IOS] Implement next/previous text marker functions using TextIterator</short_desc>
          <delta_ts>2016-01-21 00:35:26 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=152728</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="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>n_wang</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1157094</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-01-20 16:04:49 -0800</bug_when>
    <thetext>Try to use TextIterator class to refactor the next/previous text marker functions on iOS. And also make text marker tests working on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157095</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-20 16:05:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/24268243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157144</commentid>
    <comment_count>2</comment_count>
      <attachid>269409</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-01-20 17:48:06 -0800</bug_when>
    <thetext>Created attachment 269409
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157149</commentid>
    <comment_count>3</comment_count>
      <attachid>269409</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-01-20 18:00:15 -0800</bug_when>
    <thetext>Comment on attachment 269409
patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Also, fixed an issue in AXObjectCache that creating a range with a replaced node

AXObjectCache that creating - &gt;AXObjectCache where creating

did you add a test case for this issue you fixed?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1551
&gt; +    

remove unused line

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1577
&gt; +    bool startNodeIsReplacedOrBR = AccessibilityObject::replacedNodeNeedsCharacter(startNode) || startNode-&gt;hasTagName(brTag);

can you put this code block in a helper method

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:2506
&gt; +    if (!start || !end)

can you make a helper method in WebAccessibilityTextMarker that takes a Range and returns an array of the WebAccessibilityTextMarker

&gt; Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:485
&gt; +    return 0;

return nullptr;

&gt; Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:490
&gt; +    return 0;

return nullptr;

&gt; Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:495
&gt; +    return 0;

return nullptr;

&gt; Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm:535
&gt; +    return 0;

return nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157152</commentid>
    <comment_count>4</comment_count>
      <attachid>269409</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-01-20 18:04:40 -0800</bug_when>
    <thetext>Comment on attachment 269409
patch

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

Will address these comments. Thanks.

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        Also, fixed an issue in AXObjectCache that creating a range with a replaced node
&gt; 
&gt; AXObjectCache that creating - &gt;AXObjectCache where creating
&gt; 
&gt; did you add a test case for this issue you fixed?

Yes, it&apos;s covered in the test when calling textMarkerRangeForMarkers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157158</commentid>
    <comment_count>5</comment_count>
      <attachid>269411</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-01-20 18:24:26 -0800</bug_when>
    <thetext>Created attachment 269411
patch

review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157238</commentid>
    <comment_count>6</comment_count>
      <attachid>269411</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-21 00:35:22 -0800</bug_when>
    <thetext>Comment on attachment 269411
patch

Clearing flags on attachment: 269411

Committed r195405: &lt;http://trac.webkit.org/changeset/195405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157239</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-21 00:35:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269409</attachid>
            <date>2016-01-20 17:48:06 -0800</date>
            <delta_ts>2016-01-20 18:24:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68457</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTAxLTIwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtJT1NdIEltcGxlbWVudCBuZXh0
L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzI5MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjQyNjgyNDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHJlZmFjdG9yZWQgbmV4
dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgb24gaU9TLiBBbmQgCisgICAgICAgIG1h
ZGUgdGV4dCBtYXJrZXIgdGVzdHMgd29ya2luZyBvbiBpT1MuCisgICAgICAgIEFsc28sIGZpeGVk
IGFuIGlzc3VlIGluIEFYT2JqZWN0Q2FjaGUgdGhhdCBjcmVhdGluZyBhIHJhbmdlIHdpdGggYSBy
ZXBsYWNlZCBub2RlCisgICAgICAgIGF0IHRoZSBzdGFydCBvciBlbmQgbWlnaHQgZXhjbHVkZSB0
aGF0IG5vZGUuCisKKyAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4
dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2hhcmFjdGVyT2Zmc2V0c0luT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXROb2Rl
QW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAg
ICgrW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0
aW9uOmNhY2hlOl0pOgorICAgICAgICAoK1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0
TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjYWNoZTpdKToKKyAgICAgICAgKCtbV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTppc1N0YXJ0OmNh
Y2hlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBkYXRhUmVwcmVz
ZW50YXRpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdmlzaWJs
ZVBvc2l0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNoYXJh
Y3Rlck9mZnNldF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBpc0ln
bm9yZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWNjZXNzaWJp
bGl0eU9iamVjdF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBkZXNj
cmlwdGlvbl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdHJp
bmdGb3JUZXh0TWFya2VyczpdKToKKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZV0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5T2JqZWN0
Rm9yVGV4dE1hcmtlcjpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgbmV4dE1hcmtlckZvck1hcmtlcjpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgcHJldmlvdXNNYXJrZXJGb3JNYXJrZXI6XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JQb2ludDpdKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgbmV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcHJldmlv
dXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIHJhbmdlRm9yVGV4dE1hcmtlcnM6XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGxlbmd0aEZvclRleHRNYXJrZXJzOl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdGFydE9yRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJzOmlzU3RhcnQ6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJZGVudGlmaWVyXSk6CisKIDIw
MTYtMDEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBmaXggdHlwbyBpbiBjb21tZW50IGFkZGVkIGluIHIxOTUxNTcuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9u
IDE5NTI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDUsNiArMTU0NSwxOSBAQCBzdGF0aWMgYm9vbCBjaGFy
YWN0ZXJPZmZzZXRzSW5PcmRlcihjb25zCiAgICAgcmV0dXJuIHJhbmdlMS0+Y29tcGFyZUJvdW5k
YXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgcmFuZ2UyLmdldCgpLCBJR05PUkVfRVhD
RVBUSU9OKSA8PSAwOwogfQogCitzdGF0aWMgTm9kZSogcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVw
bGFjZWROb2RlKE5vZGUqIHJlcGxhY2VkTm9kZSwgaW50JiBvZmZzZXQsIGludCBjaGFyYWN0ZXJD
b3VudCkKK3sKKyAgICAvLyBVc2UgdGhpcyBmdW5jdGlvbiB0byBpbmNsdWRlIHRoZSByZXBsYWNl
ZCBub2RlIGl0c2VsZiBpbiB0aGUgcmFuZ2Ugd2UgYXJlIGNyZWF0aW5nLgorICAgIAorICAgIGlm
ICghcmVwbGFjZWROb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBSZWZQ
dHI8UmFuZ2U+IG5vZGVSYW5nZSA9IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRz
KHJlcGxhY2VkTm9kZSk7CisgICAgaW50IG5vZGVMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSk7CisgICAgb2Zmc2V0ID0gY2hhcmFjdGVyQ291bnQgPD0g
bm9kZUxlbmd0aCA/IHJlcGxhY2VkTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpIDogcmVwbGFjZWRO
b2RlLT5jb21wdXRlTm9kZUluZGV4KCkgKyAxOworICAgIHJldHVybiByZXBsYWNlZE5vZGUtPnBh
cmVudE5vZGUoKTsKK30KKwogUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVu
b3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDIpCiB7CiAgICAg
aWYgKGNoYXJhY3Rlck9mZnNldDEuaXNOdWxsKCkgfHwgY2hhcmFjdGVyT2Zmc2V0Mi5pc051bGwo
KSkKQEAgLTE1NTQsMzAgKzE1NjcsMzQgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpy
YW5nZUZvclVubwogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9mZnNldCA9IGFs
cmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MSA6IGNoYXJhY3Rlck9mZnNldDI7CiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9mZnNldCA9IGFscmVhZHlJbk9yZGVyID8gY2hh
cmFjdGVyT2Zmc2V0MiA6IGNoYXJhY3Rlck9mZnNldDE7CiAgICAgCi0gICAgaW50IGVuZE9mZnNl
dCA9IGVuZENoYXJhY3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAgCi0gICAgLy8gZW5kT2Zmc2V0IGNh
biBiZSBvdXQgb2YgYm91bmRzIHNvbWV0aW1lcyBpZiB0aGUgbm9kZSBpcyBhIHJlcGxhY2VkIG5v
ZGUgb3IgaGFzIGJyVGFnLgotICAgIGlmIChzdGFydENoYXJhY3Rlck9mZnNldC5ub2RlID09IGVu
ZENoYXJhY3Rlck9mZnNldC5ub2RlKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdl
ID0gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JOb2RlQ29udGVudHMoc3RhcnRDaGFyYWN0ZXJPZmZz
ZXQubm9kZSk7Ci0gICAgICAgIGludCBub2RlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChub2RlUmFuZ2UuZ2V0KCkpOwotICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gbm9kZUxlbmd0
aCkKLSAgICAgICAgICAgIGVuZE9mZnNldCA9IG5vZGVMZW5ndGg7Ci0gICAgfQotICAgIAogICAg
IGludCBzdGFydE9mZnNldCA9IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXggKyBzdGFy
dENoYXJhY3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAgZW5kT2Zmc2V0ID0gZW5kQ2hhcmFjdGVyT2Zm
c2V0LnN0YXJ0SW5kZXggKyBlbmRPZmZzZXQ7Ci0gICAgCi0gICAgLy8gSWYgc3RhcnQgbm9kZSBp
cyBhIHJlcGxhY2VkIG5vZGUgYW5kIGl0IGhhcyBjaGlsZHJlbiwgd2Ugd2FudCB0byBpbmNsdWRl
IHRoZSByZXBsYWNlZCBub2RlIGl0c2VsZiBpbiB0aGUgcmFuZ2UuCisgICAgaW50IGVuZE9mZnNl
dCA9IGVuZENoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4ICsgZW5kQ2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldDsKICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydENoYXJhY3Rlck9mZnNldC5ub2RlOwot
ICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihz
dGFydE5vZGUpICYmIChzdGFydE5vZGUtPmhhc0NoaWxkTm9kZXMoKSB8fCBzdGFydE5vZGUgIT0g
ZW5kQ2hhcmFjdGVyT2Zmc2V0Lm5vZGUpKSB7Ci0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gc3RhcnRO
b2RlLT5jb21wdXRlTm9kZUluZGV4KCk7Ci0gICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+
cGFyZW50Tm9kZSgpOworICAgIE5vZGUqIGVuZE5vZGUgPSBlbmRDaGFyYWN0ZXJPZmZzZXQubm9k
ZTsKKyAgICAKKyAgICAKKyAgICAvLyBDb25zaWRlciB0aGUgY2FzZSB3aGVuIHRoZSByZXBsYWNl
ZCBub2RlIGlzIGF0IHRoZSBzdGFydC9lbmQgb2YgdGhlIHJhbmdlLgorICAgIGJvb2wgc3RhcnRO
b2RlSXNSZXBsYWNlZE9yQlIgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVk
c0NoYXJhY3RlcihzdGFydE5vZGUpIHx8IHN0YXJ0Tm9kZS0+aGFzVGFnTmFtZShiclRhZyk7Cisg
ICAgYm9vbCBlbmROb2RlSXNSZXBsYWNlZE9yQlIgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBs
YWNlZE5vZGVOZWVkc0NoYXJhY3RlcihlbmROb2RlKSB8fCBlbmROb2RlLT5oYXNUYWdOYW1lKGJy
VGFnKTsKKyAgICBpZiAoc3RhcnROb2RlSXNSZXBsYWNlZE9yQlIgfHwgZW5kTm9kZUlzUmVwbGFj
ZWRPckJSKSB7CisgICAgICAgIC8vIGVuZE9mZnNldCBjYW4gYmUgb3V0IG9mIGJvdW5kcyBzb21l
dGltZXMgaWYgdGhlIG5vZGUgaXMgYSByZXBsYWNlZCBub2RlIG9yIGhhcyBiclRhZyBhbmQgaXQg
aGFzIG5vIGNoaWxkcmVuLgorICAgICAgICBpZiAoc3RhcnROb2RlID09IGVuZE5vZGUgJiYgIXN0
YXJ0Tm9kZS0+aGFzQ2hpbGROb2RlcygpKSB7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG5v
ZGVSYW5nZSA9IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKHN0YXJ0Tm9kZSk7
CisgICAgICAgICAgICBpbnQgbm9kZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
bm9kZVJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChlbmRDaGFyYWN0ZXJPZmZzZXQub2Zm
c2V0ID4gbm9kZUxlbmd0aCkKKyAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSBlbmRDaGFyYWN0
ZXJPZmZzZXQuc3RhcnRJbmRleCArIG5vZGVMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAoc3RhcnROb2RlSXNSZXBsYWNlZE9yQlIpCisgICAgICAgICAgICAgICAgc3Rh
cnROb2RlID0gcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKHN0YXJ0Tm9kZSwgc3Rh
cnRPZmZzZXQsIHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgICAgICAgICBpZiAo
ZW5kTm9kZUlzUmVwbGFjZWRPckJSKQorICAgICAgICAgICAgICAgIGVuZE5vZGUgPSByZXNldE5v
ZGVBbmRPZmZzZXRGb3JSZXBsYWNlZE5vZGUoc3RhcnROb2RlLCBlbmRPZmZzZXQsIHN0YXJ0Q2hh
cmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgUmVmUHRy
PFJhbmdlPiByZXN1bHQgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWNTdGFydCA9IDAsIGVjRW5kID0gMDsKICAgICByZXN1bHQtPnNldFN0YXJ0KHN0YXJ0
Tm9kZSwgc3RhcnRPZmZzZXQsIGVjU3RhcnQpOwotICAgIHJlc3VsdC0+c2V0RW5kKGVuZENoYXJh
Y3Rlck9mZnNldC5ub2RlLCBlbmRPZmZzZXQsIGVjRW5kKTsKKyAgICByZXN1bHQtPnNldEVuZChl
bmROb2RlLCBlbmRPZmZzZXQsIGVjRW5kKTsKICAgICBpZiAoZWNTdGFydCB8fCBlY0VuZCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkocmV2aXNpb24gMTk1Mjk0KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzNCw2ICsxMzQsOCBAQCBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIDogCiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1h
cmtlcldpdGhWaXNpYmxlUG9zaXRpb246KFZpc2libGVQb3NpdGlvbiYpdmlzaWJsZVBvcyBjYWNo
ZTooQVhPYmplY3RDYWNoZSopY2FjaGU7CisrIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAq
KXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rl
ck9mZnNldCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGU7CisrIChXZWJBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNvbnN0IFJlZlB0cjxS
YW5nZT4pcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKilj
YWNoZTsKIAogQGVuZAogCkBAIC0xNzgsNiArMTgwLDMzIEBAICsgKFdlYkFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyICopdGV4dE1hcmsKICAgICByZXR1cm4gW1tbV2ViQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2Fj
aGVdIGF1dG9yZWxlYXNlXTsKIH0KIAorKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0
ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJP
ZmZzZXQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCit7CisgICAgaWYgKCFjYWNoZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhOworICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0
LCBmYWxzZSk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYmICF0ZXh0TWFya2VyRGF0
YS5pZ25vcmVkKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbW1tXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0
YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNvbnN0IFJlZlB0cjxSYW5n
ZT4pcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNo
ZQoreworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVGV4
dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CisgICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFy
a2VyRGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCByYW5nZSwgaXNTdGFydCk7CisgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBb
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworfQorCiAtIChOU0RhdGEg
KilkYXRhUmVwcmVzZW50YXRpb24KIHsKICAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OiZfdGV4dE1hcmtlckRhdGEgbGVuZ3RoOnNpemVvZihUZXh0TWFya2VyRGF0YSldOwpAQCAtMTg4
LDYgKzIxNywyNSBAQCAtIChWaXNpYmxlUG9zaXRpb24pdmlzaWJsZVBvc2l0aW9uCiAgICAgcmV0
dXJuIF9jYWNoZS0+dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoX3RleHRNYXJrZXJE
YXRhKTsKIH0KIAorLSAoQ2hhcmFjdGVyT2Zmc2V0KWNoYXJhY3Rlck9mZnNldAoreworICAgIGlm
IChfdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKyAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNl
dCgpOworICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoX3RleHRNYXJrZXJEYXRhLm5vZGUsIF90
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBfdGV4dE1hcmtlckRhdGEuY2hhcmFj
dGVyT2Zmc2V0KTsKK30KKworLSAoQk9PTClpc0lnbm9yZWQKK3sKKyAgICByZXR1cm4gX3RleHRN
YXJrZXJEYXRhLmlnbm9yZWQ7Cit9CisKKy0gKEFjY2Vzc2liaWxpdHlPYmplY3QqKWFjY2Vzc2li
aWxpdHlPYmplY3QKK3sKKyAgICBpZiAoX3RleHRNYXJrZXJEYXRhLmlnbm9yZWQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBfY2FjaGUtPmFjY2Vzc2liaWxpdHlPYmplY3RG
b3JUZXh0TWFya2VyRGF0YShfdGV4dE1hcmtlckRhdGEpOworfQorCiAtIChOU1N0cmluZyAqKWRl
c2NyaXB0aW9uCiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiW0FY
VGV4dE1hcmtlciAlcF0gPSBub2RlOiAlcCBvZmZzZXQ6ICVkIiwgc2VsZiwgX3RleHRNYXJrZXJE
YXRhLm5vZGUsIF90ZXh0TWFya2VyRGF0YS5vZmZzZXRdOwpAQCAtMTgzMSwyNSArMTg3OSwxMSBA
QCAtIChOU1N0cmluZyAqKXN0cmluZ0ZvclRleHRNYXJrZXJzOihOU0FyCiAgICAgaWYgKCFbc2Vs
ZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAK
LSAgICBpZiAoW21hcmtlcnMgY291bnRdICE9IDIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyID0gW21hcmtlcnMg
b2JqZWN0QXRJbmRleDowXTsKLSAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFy
a2VyID0gW21hcmtlcnMgb2JqZWN0QXRJbmRleDoxXTsKLSAgICBpZiAoIVtzdGFydE1hcmtlciBp
c0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11dIHx8ICFbZW5k
TWFya2VyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gZXh0cmFjdCB0aGUgc3RhcnQgYW5k
IGVuZCBWaXNpYmxlUG9zaXRpb24KLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRWaXNpYmxlUG9z
aXRpb24gPSBbc3RhcnRNYXJrZXIgdmlzaWJsZVBvc2l0aW9uXTsKLSAgICBpZiAoc3RhcnRWaXNp
YmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFtzZWxmIHJh
bmdlRm9yVGV4dE1hcmtlcnM6bWFya2Vyc107CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0g
W2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dOwotICAgIGlmIChlbmRWaXNpYmxlUG9zaXRpb24u
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zUmFuZ2UgPSBWaXNpYmxlUG9zaXRpb25SYW5nZShzdGFydFZpc2libGVQb3Np
dGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKTsKLSAgICByZXR1cm4gbV9vYmplY3QtPnN0cmluZ0Zv
clZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7CisgICAgcmV0dXJuIG1fb2Jq
ZWN0LT5zdHJpbmdGb3JSYW5nZShyYW5nZSk7CiB9CiAKIHN0YXRpYyBpbnQgYmxvY2txdW90ZUxl
dmVsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0yMTI0LDEyICsyMTU4LDE0IEBAIC0gKE5T
QXJyYXkgKil0ZXh0TWFya2VyUmFuZ2UKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJp
bGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHJhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlKCk7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSByYW5nZS5zdGFydDsKLSAgICBWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb24gPSByYW5nZS5lbmQ7Ci0gICAgV2ViQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHN0YXJ0ID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJXaXRo
VmlzaWJsZVBvc2l0aW9uOnN0YXJ0UG9zaXRpb24gY2FjaGU6bV9vYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKV07Ci0gICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZCA9IFtXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjplbmRQb3NpdGlv
biBjYWNoZTptX29iamVjdC0+YXhPYmplY3RDYWNoZSgpXTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gbV9vYmplY3QtPmVsZW1lbnRSYW5nZSgpOworICAgIGlmICghcmFuZ2UpCisgICAgICAg
IHJldHVybiBuaWw7CiAgICAgCisgICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0
ID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFu
Z2U6cmFuZ2UgaXNTdGFydDpZRVMgY2FjaGU6bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07Cisg
ICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZCA9IFtXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOnJhbmdlIGlzU3RhcnQ6Tk8gY2Fj
aGU6bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CisgICAgaWYgKCFzdGFydCB8fCAhZW5kKQor
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OnN0YXJ0LCBlbmQsIG5pbF07CiB9CiAKQEAgLTIxNjAsOCArMjE5Niw3IEBAIC0gKEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyICopYWNjZXNzaWIKICAgICBpZiAoIW1hcmtlcikKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0g
W21hcmtlciB2aXNpYmxlUG9zaXRpb25dOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9zaXRpb24odmlzaWJsZVBvc2l0aW9u
KTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBbbWFya2VyIGFjY2Vzc2liaWxpdHlP
YmplY3RdOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApAQCAtMjM1
NCwxNCArMjM4OSwxMCBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKW5leHRNYXJr
CiAgICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgVmlzaWJs
ZVBvc2l0aW9uIHN0YXJ0ID0gW21hcmtlciB2aXNpYmxlUG9zaXRpb25dOwotICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0TWFya2VyID0gbV9vYmplY3QtPm5leHRWaXNpYmxlUG9zaXRpb24oc3RhcnQp
OwotICAgIAotICAgIHJldHVybiBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtl
cldpdGhWaXNpYmxlUG9zaXRpb246bmV4dE1hcmtlciBjYWNoZTptX29iamVjdC0+YXhPYmplY3RD
YWNoZSgpXTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBbbWFya2VyIGNoYXJhY3Rlck9m
ZnNldF07CisgICAgcmV0dXJuIFtzZWxmIG5leHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6c3Rh
cnRdOwogfQogCi0vLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byByZXR1cm4gdGhlIG1hcmtl
ciBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgc3RhcnRpbmcgYXQKLS8vIHRoZSBtYXJrZXIgdGhh
dCBpcyBwYXNzZWQgaW50byB0aGUgbWV0aG9kLgogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgKilwcmV2aW91c01hcmtlckZvck1hcmtlcjooV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
KiltYXJrZXIKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQpA
QCAtMjM3MCwxMCArMjQwMSw4IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJl
dmlvdXMKICAgICBpZiAoIW1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnQgPSBbbWFya2VyIHZpc2libGVQb3NpdGlvbl07Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzTWFya2VyID0gbV9vYmplY3QtPnByZXZpb3VzVmlzaWJsZVBv
c2l0aW9uKHN0YXJ0KTsKLSAgICAKLSAgICByZXR1cm4gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0aW9uOnByZXZpb3VzTWFya2VyIGNhY2hlOm1f
b2JqZWN0LT5heE9iamVjdENhY2hlKCldOworICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IFtt
YXJrZXIgY2hhcmFjdGVyT2Zmc2V0XTsKKyAgICByZXR1cm4gW3NlbGYgcHJldmlvdXNNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQ6c3RhcnRdOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRl
ZCB0byByZXR1cm4gdGhlIGJvdW5kcyBvZiBhIHRleHQgbWFya2VyIHJhbmdlIGluIHNjcmVlbiBj
b29yZGluYXRlcy4KQEAgLTI0MDMsNiArMjQzMiw4MyBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXRleHRNYXJrCiAgICAgcmV0dXJuIFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciB0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjpwb3MgY2FjaGU6bV9vYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKV07CiB9CiAKKy0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopbmV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQK
K3sKKyAgICBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCAr
IDE7CisgICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKnRleHRNYXJrZXIgPSBbV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtlcldpdGhDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFj
dGVyT2Zmc2V0IGNhY2hlOm1fb2JqZWN0LT5heE9iamVjdENhY2hlKCldOworICAgIGlmICh0ZXh0
TWFya2VyICYmIHRleHRNYXJrZXIuaXNJZ25vcmVkKQorICAgICAgICB0ZXh0TWFya2VyID0gW3Nl
bGYgbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOworICAgIHJl
dHVybiB0ZXh0TWFya2VyOworfQorCistIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXBy
ZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rl
ck9mZnNldAoreworICAgIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQu
b2Zmc2V0IC0gMTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqdGV4dE1hcmtlciA9
IFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNl
dDpjaGFyYWN0ZXJPZmZzZXQgY2FjaGU6bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CisgICAg
aWYgKHRleHRNYXJrZXIgJiYgdGV4dE1hcmtlci5pc0lnbm9yZWQpCisgICAgICAgIHRleHRNYXJr
ZXIgPSBbc2VsZiBwcmV2aW91c01hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZz
ZXRdOworICAgIHJldHVybiB0ZXh0TWFya2VyOworfQorCistIChSZWZQdHI8UmFuZ2U+KXJhbmdl
Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VycworeworICAgIGlmIChbdGV4dE1h
cmtlcnMgY291bnRdICE9IDIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIFdl
YkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICpzdGFydE1hcmtlciA9IFt0ZXh0TWFya2VycyBvYmpl
Y3RBdEluZGV4OjBdOworICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICplbmRNYXJrZXIg
PSBbdGV4dE1hcmtlcnMgb2JqZWN0QXRJbmRleDoxXTsKKyAgICAKKyAgICBpZiAoIVtzdGFydE1h
cmtlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11dIHx8
ICFbZW5kTWFya2VyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNs
YXNzXV0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFy
YWN0ZXJPZmZzZXQgPSBbc3RhcnRNYXJrZXIgY2hhcmFjdGVyT2Zmc2V0XTsKKyAgICBDaGFyYWN0
ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0ID0gW2VuZE1hcmtlciBjaGFyYWN0ZXJPZmZzZXRd
OworICAgIHJldHVybiBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0
YXJ0Q2hhcmFjdGVyT2Zmc2V0LCBlbmRDaGFyYWN0ZXJPZmZzZXQpOworfQorCistIChOU0ludGVn
ZXIpbGVuZ3RoRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VycworeworICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBbc2VsZiByYW5nZUZvclRleHRNYXJrZXJz
OnRleHRNYXJrZXJzXTsKKyAgICBpbnQgbGVuZ3RoID0gQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9y
UmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIHJldHVybiBsZW5ndGggPCAwID8gMCA6IGxlbmd0aDsK
K30KKworLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMgaXNTdGFydDooQk9PTClpc1N0
YXJ0Cit7CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gW3NlbGYgcmFu
Z2VGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6cmFuZ2UgaXNTdGFydDppc1N0YXJ0IGNhY2hl
Om1fb2JqZWN0LT5heE9iamVjdENhY2hlKCldOworfQorCistIChOU0FycmF5ICopdGV4dE1hcmtl
clJhbmdlRm9yTWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCit7CisgICAgaWYgKCFbc2Vs
ZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gW3NlbGYgcmFuZ2VGb3JUZXh0TWFya2Vyczp0ZXh0
TWFya2Vyc107CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnQgPSBbV2ViQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0YXJ0OllFUyBj
YWNoZTptX29iamVjdC0+YXhPYmplY3RDYWNoZSgpXTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogZW5kID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0T3JFbmRUZXh0
TWFya2VyRm9yUmFuZ2U6cmFuZ2UgaXNTdGFydDpOTyBjYWNoZTptX29iamVjdC0+YXhPYmplY3RD
YWNoZSgpXTsKKyAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnQsIGVuZCwgbmlsXTsKKyAg
ICAKK30KKwogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5SWRlbnRpZmllcgogewogICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTUzOTIpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAxNi0wMS0y
MCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBbSU9TXSBJbXBs
ZW1lbnQgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMy
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MjY4MjQzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgdGV4dCBtYXJrZXIgdGVzdHMgYXZh
aWxhYmxlIG9uIGlPUy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW06IEFkZGVkLgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmlzRXF1YWwpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OnBsYXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwpOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9u
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlckZvckJvdW5kcyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFy
dFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0
VGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZCk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0
UmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9u
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKwogMjAxNi0wMS0yMCAg
SmFzb24gTWFyY2VsbCAgPGptYXJjZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBj
b21wYXJlSXRlcmF0aW9ucyB0byByZW1vdmUgZHVwbGljYXRlIGNvZGUuCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDE5
NTI5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0UmVmLmg+CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCiAjZGVmaW5lIFNVUFBPUlRTX0FY
X1RFWFRNQVJLRVJTIDEKICNlbHNlCiAjZGVmaW5lIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTIDAK
QEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlND
bGFzc1JlZiBnZXRKU0NsYXNzKCk7Ci0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKyNpZiBT
VVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFBs
YXRmb3JtVGV4dE1hcmtlcj4gbV90ZXh0TWFya2VyOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRN
YXJrZXIgbV90ZXh0TWFya2VyOwpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKLSNpZiBTVVBQT1JUU19B
WF9URVhUTUFSS0VSUworI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1B
QykKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJh
bmdlOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRNYXJrZXJSYW5n
ZTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk1Mjk0KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQAogCQlBOEI5MUFEQzBDRjNCMzJG
MDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVt
cFJlbmRlclRyZWVXaW5kb3cubW0gKi87IH07CiAJCUE4QjkxQkZEMENGNTIyQjQwMDhGOTFGRiAv
KiBDaGVja2VkTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QjkxQkY3MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmNwcCAq
LzsgfTsKIAkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURy
YWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dp
bmdTb3VyY2UubSAqLzsgfTsKKwkJQTlCQjdDNUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTlCQjdDNUIxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VySU9TLm1tICovOyB9OwogCQlBQTVBMTVFRjE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBQTVBMTVFRDE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJJT1MubW0gKi87IH07CiAJCUFBNUExNUYwMTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUE1QTE1RUUxNkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0gKi87IH07CiAJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0
UnVubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDEzMUQ4MEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCAqLzsgfTsKQEAgLTMw
OSw2ICszMTAsNyBAQAogCQlBOEI5MUJGOTBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxv
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDaGVja2VkTWFsbG9jLmg7IHBh
dGggPSBtYWMvQ2hlY2tlZE1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEQ3OUNFODBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtcFJlbmRlclRyZWVGaWxl
RHJhZ2dpbmdTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThENzlDRTkw
RkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IER1bXBSZW5kZXJUcmVlRmlsZURyYWdn
aW5nU291cmNlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5QkI3QzVCMUM1MDUy
NzgwMDJDNTI1QiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1t
OyBwYXRoID0gaW9zL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQTVBMTVFRDE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE1QTE1RUUx
NkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tOyBwYXRoID0gaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19fXy5U
VEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRGIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OSw2ICs1MDEsNyBAQAogCQkJCTgwMDQ1QUVD
MTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAq
LywKIAkJCQkyOUNGQkEwRjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIuY3BwICovLAogCQkJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oICovLAorCQkJCUE5QkI3QzVCMUM1MDUyNzgwMDJDNTI1QiAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLywKIAkJCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCiAJCQkJQkMwRTI0REYwRTJEOTQ1
MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAogCQkJCUJDMEUyNERF
MEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8sCkBAIC05NzQs
NiArOTc3LDcgQEAKIAkJCQlCQ0ExOEM0NzBDOUI1Qjk0MDAxMTQzNjkgLyogRHVtcFJlbmRlclRy
ZWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk5ODMwRjMxRjE1QzgxMTgxMDA1QUIyMDYgLyogRHVt
cFJlbmRlclRyZWVDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCN0IwQzlCMDhG
MTAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQTlCQjdDNUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1
bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5
MUFEQTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gaW4gU291
cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVX
aW5kb3cubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0JKHJldmlzaW9uIDApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmgiCisKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCisKKyNp
ZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShJT1MpCisKKy8vIE1BUks6IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyCisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorICAgIDogbV90ZXh0
TWFya2VyKG1hcmtlcikKK3sKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCisg
ICAgOiBtX3RleHRNYXJrZXIobWFya2VyLnBsYXRmb3JtVGV4dE1hcmtlcigpKQoreworfQorCitB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCkKK3sKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogb3RoZXIpCit7CisgICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkg
aXNFcXVhbDooaWQpb3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKK30KKworUGxhdGZvcm1U
ZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpwbGF0Zm9ybVRleHRNYXJrZXIoKSBj
b25zdCAKK3sgCisgICAgcmV0dXJuIG1fdGV4dE1hcmtlcjsKK30KKworLy8gTUFSSzogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtl
clJhbmdlKQorICAgIDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpCit7Cit9CisKK0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uo
Y29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFya2VyUmFuZ2UpCisgICAgOiBt
X3RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpKQor
eworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSgpCit7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6
aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKK3sKKyAgICByZXR1
cm4gWyhpZClwbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpXTsKK30KKworUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25z
dAoreworICAgIHJldHVybiBtX3RleHRNYXJrZXJSYW5nZTsKK30KKworI2VuZGlmIC8vIFNVUFBP
UlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKElPUykKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZp
c2lvbiAxOTUyOTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTYgQEAgLSAoTlNVSW50
ZWdlcilhY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4OwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmls
aXR5QVJJQUNvbHVtbkluZGV4OwogLSAoVUlBY2Nlc3NpYmlsaXR5VHJhaXRzKV9heENvbnRhaW5l
ZEJ5RmllbGRzZXRUcmFpdDsKIC0gKGlkKV9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3RvcjsK
KworLy8gVGV4dE1hcmtlciByZWxhdGVkCistIChOU0FycmF5ICopdGV4dE1hcmtlclJhbmdlOwor
LSAoTlNJbnRlZ2VyKWxlbmd0aEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnM7
CistIChOU1N0cmluZyAqKXN0cmluZ0ZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VyczsK
Ky0gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkqKXRleHRN
YXJrZXJzIGlzU3RhcnQ6KEJPT0wpaXNTdGFydDsKKy0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnM7CistIChpZCluZXh0TWFya2VyRm9y
TWFya2VyOihpZCltYXJrZXI7CistIChpZClwcmV2aW91c01hcmtlckZvck1hcmtlcjooaWQpbWFy
a2VyOworLSAoaWQpYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXI6KGlkKW1hcmtlcjsK
IEBlbmQKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJQcml2YXRlKQpAQCAtNDExLDYgKzQyMSwxMzcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cGF0aAogICAgIHJldHVybiBbcmVzdWx0IGNyZWF0ZUpTU3RyaW5nUmVmXTsK
IH0KIAorI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKElPUykKKworLy8g
VGV4dCBtYXJrZXJzCisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZCB0ZXh0
TWFya2VyUmFuZ2UgPSBbZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSB0ZXh0TWFya2VyUmFu
Z2VdOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQoreworICAgIHJldHVybiBudWxscHRy
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UoKQoreworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAg
IGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOwor
ICAgIHJldHVybiBbbV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsK
K30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFy
dE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK3sKKyAgICBOU0Fy
cmF5ICp0ZXh0TWFya2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFy
a2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFy
a2VyKCksIG5pbF07CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOworfQorCitBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgaWQg
dGV4dE1hcmtlcnMgPSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAg
aWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2Vyczp0ZXh0TWFya2VycyBpc1N0YXJ0OllFU107CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKHRleHRNYXJrZXIpOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIGlkIHRleHRNYXJrZXJzID0g
KGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXIg
PSBbbV9lbGVtZW50IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtl
cnMgaXNTdGFydDpOT107CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRN
YXJrZXIpOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciogbWFya2VyKQoreworICAgIGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9i
amVjdEZvclRleHRNYXJrZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAg
IGlmIChvYmopCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5k
cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIGlkIHBy
ZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5l
eHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobmV4dE1hcmtlcik7Cit9CisKK0pT
U3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAgICBpZCB0
ZXh0TWFya2VycyA9IChpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsK
KyAgICBpZiAoIXRleHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpbTlNB
cnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAwKTsKKyAgICByZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4
dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1
dGUoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0dXJuIC0xOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChp
bnQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVuZFRleHRNYXJrZXIoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZiAv
LyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShJT1MpCisKICNwcmFnbWEgbWFy
ayBVbnVzZWQKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVsZW1l
bnRzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudFZlY3RvcikKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJNYWMubW0JKHJldmlzaW9uIDE5NTI5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkR1
bXBSZW5kZXJUcmVlLmgiCiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUworI2lmIFNVUFBP
UlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKIAogLy8gTUFSSzogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIKIApAQCAtODIsNCArODIsNCBAQCBQbGF0Zm9ybVRleHRNYXJrZXJSYW5n
ZSBBY2Nlc3NpYmlsaXR5VGV4CiAgICAgcmV0dXJuIG1fdGV4dE1hcmtlclJhbmdlLmdldCgpOwog
fQogCi0jZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKyNlbmRpZiAvLyBTVVBQT1JU
U19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNp
b24gMTk1Mjk0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWMKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiB9CiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUworI2lmIFNVUFBPUlRTX0FYX1RFWFRN
QVJLRVJTICYmIFBMQVRGT1JNKE1BQykKIAogLy8gVGV4dCBtYXJrZXJzCiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQpAQCAt
MTg0Niw3ICsxODQ2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3Rl
ZAogICAgIHJldHVybiB0cnVlOwogfQogCi0jZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktF
UlMKKyNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCiAK
IEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMoKQog
ewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZp
c2lvbiAxOTUyOTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3
MSwxNiBAQCAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBUklBUm93SW5kZXg7CiAtIChOU1VJ
bnRlZ2VyKWFjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXg7CiAtIChVSUFjY2Vzc2liaWxpdHlU
cmFpdHMpX2F4Q29udGFpbmVkQnlGaWVsZHNldFRyYWl0OwogLSAoaWQpX2FjY2Vzc2liaWxpdHlG
aWVsZHNldEFuY2VzdG9yOworCisvLyBUZXh0TWFya2VyIHJlbGF0ZWQKKy0gKE5TQXJyYXkgKil0
ZXh0TWFya2VyUmFuZ2U7CistIChOU0ludGVnZXIpbGVuZ3RoRm9yVGV4dE1hcmtlcnM6KE5TQXJy
YXkgKil0ZXh0TWFya2VyczsKKy0gKE5TU3RyaW5nICopc3RyaW5nRm9yVGV4dE1hcmtlcnM6KE5T
QXJyYXkgKiltYXJrZXJzOworLSAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
czooTlNBcnJheSopdGV4dE1hcmtlcnMgaXNTdGFydDooQk9PTClpc1N0YXJ0OworLSAoTlNBcnJh
eSAqKXRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VyczsKKy0g
KGlkKW5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKW1hcmtlcjsKKy0gKGlkKXByZXZpb3VzTWFya2Vy
Rm9yTWFya2VyOihpZCltYXJrZXI7CistIChpZClhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1h
cmtlcjooaWQpbWFya2VyOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlclByaXZhdGUpCkBAIC05ODIsNDIgKzk5Miw1NSBAQCBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJl
dHVybiAwOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtlbGVtZW50LT5wbGF0Zm9ybVVJRWxl
bWVudCgpIHRleHRNYXJrZXJSYW5nZV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQogCiBpbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqIHJhbmdlKQogewotICAgIHJldHVybiAwOworICAgIGlkIHRleHRNYXJrZXJzID0gKGlk
KXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOyAgICAKKyAgICByZXR1cm4gW21fZWxl
bWVudCBsZW5ndGhGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CiB9CiAKIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKIHsKLSAgICBy
ZXR1cm4gMDsKKyAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQgcHJldmlvdXNNYXJr
ZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91c01hcmtlcik7CiB9
CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQogewotICAgIHJldHVybiAwOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVtZW50IG5leHRN
YXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0TWFya2VyKTsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJS
YW5nZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChpZCltYXJrZXJS
YW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZiAoIXRleHRNYXJrZXJzIHx8
ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICByZXR1cm4gW1tt
X2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5n
UmVmXTsKIH0KIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1h
cmtlcikKIHsKLSAgICByZXR1cm4gMDsKKyAgICBOU0FycmF5ICp0ZXh0TWFya2VycyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07CisgICAgaWQgdGV4
dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOnRleHRN
YXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRl
KHRleHRNYXJrZXJSYW5nZSk7CiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICByZXR1cm4g
MDsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKIH0KIAogUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBy
YW5nZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+
cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVu
dCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6
Tk9dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJr
ZXIpOwogfQogCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMTAzNyw3ICsxMDYwLDEwIEBAIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAgICByZXR1cm4gMDsK
KyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2Vy
OihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZiAob2JqKQorICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG9iaik7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTUyOTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNSBAQAorMjAxNi0wMS0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBbSU9TXSBJbXBsZW1lbnQgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBm
dW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MjY4
MjQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0
LW1hcmtlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL3RleHQt
bWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25l
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlcjogQWRk
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90
ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVj
dC1ub25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRv
ci9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOgorCiAyMDE2LTAxLTE5ICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF1bY3NzLWFsaWduXSBqdXN0aWZ5LXNlbGYgc3RyZXRj
aCBpcyBub3QgYXBwbGllZCBmb3IgaW1nIGVsZW1lbnRzCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9wcmV2aW91cy1uZXh0LXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9wcmV2aW91cy1uZXh0LXRl
eHQtbWFya2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk1Mjk0KQorKysgTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1j
YW4ndCBzZWxlY3QKLVRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVu
Y3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNT
IGVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6ICcKLVBBU1MgZWxlbWVudC5zdHJpbmdW
YWx1ZSBpcyAnQVhWYWx1ZTogdGV4dDEnCi1QQVNTIGVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FY
VmFsdWU6ICcKLVBBU1MgZWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogdGV4dCcKLVBB
U1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKLU9i
amVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1BWFZhbHVlOiBjIAotQVhW
YWx1ZTogYyAKLUFYVmFsdWU6IAotQVhWYWx1ZTogIGQKLUFYVmFsdWU6IAotQVhWYWx1ZTogYyAK
LUFYVmFsdWU6IGMgCi1BWFZhbHVlOiB0ZXh0MQotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlz
IHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3ByZXZpb3VzLW5leHQt
dGV4dC1tYXJrZXIuaHRtbAkocmV2aXNpb24gMTk1Mjk0KQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEzNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08c3R5bGU+Ci0udXNlcnNlbGVjdCB7
IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9Ci08L3N0eWxl
PgotPGJvZHkgaWQ9ImJvZHkiPgotCi08ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwv
ZGl2PgotPGJyPgotdGV4dDEKLQotPGRpdiBpZD0idGV4dDIiPgotYyA8aW1nIHNyYz0iIyIgYXJp
YS1sYWJlbD0iYmxhaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNhYWFhYWE7IHdpZHRoOiAx
MDBweDsgaGVpZ2h0OiAxMDBweDsiPiBkCi08L2Rpdj4KLQotPGlucHV0IHR5cGU9InBhc3N3b3Jk
IiBpZD0icHN3Ij4KLQotPGRpdiBjbGFzcz0idXNlcnNlbGVjdCIgaWQ9InRleHQzIj5jYW4ndCBz
ZWxlY3Q8L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KLQotPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBu
ZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVj
dGx5LiIpOwotICAgIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
LSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRl
eHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAK
LSAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZv
ciB0aGlzIHJhbmdlLgotICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7Ci0gICAgICAgIAotICAgICAg
ICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJr
ZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hh
cmFjdGVycywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQotICAgICAgICB2YXIgY3VycmVudE1hcmtl
ciA9IHN0YXJ0TWFya2VyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgewot
ICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1h
cmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUo
ImVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6ICciKTsKLSAgICAgICAgCi0gICAgICAg
IC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAi
dGV4dDEiLgotICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKLSAgICAgICAgZWxlbWVudCA9IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogdGV4dDEnIik7Ci0gICAgICAgIAotICAgICAgICAvLyBD
aGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFj
dGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgZWxlbWVudCA9IHRl
eHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogJyIpOwotICAg
ICAgICAKLSAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3Rlciwg
aXQgd2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCi0gICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAg
ICAgICAgZWxlbWVudCA9IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdp
dGggcmVwbGFjZWQgbm9kZQotICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7Ci0gICAgICAgIHZhciB0ZXh0TWFy
a2VyUmFuZ2UyID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Mik7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
MikiLCAiNSIpOwotICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzMiks
ICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVjdCBzdHJpbmcgZm9yIHJhbmdl
OiAiICsgc3RyKTsKLSAgICAgICAgCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFy
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7Ci0gICAgICAg
IC8vIEFkdmFuY2UgNCBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgZmlyc3QgY2hhcmFjdGVy
IG9mICIgZCIuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7
Ci0gICAgICAgICAgICBlbGVtZW50ID0gdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgZGVidWcoZWxlbWVudC5zdHJpbmdW
YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJk
cyA0IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRl
eHQxIi4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7
Ci0gICAgICAgICAgICBlbGVtZW50ID0gdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgZGVidWcoZWxlbWVudC5zdHJpbmdW
YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdp
dGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJrZXIvcHJldmlvdXNUZXh0TWFya2VyIHNo
b3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7Ci0gICAgICAgIHRleHQzID0gdGV4
dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAvLyBBZHZhbmNlIHRvIGxhbmQgYXQgdXNlci1z
ZWxlY3Q6bm9uZSBub2RlLgotICAgICAgICB2YXIgbWFya2VyMSwgbWFya2VyMjsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxNzsgaSsrKSB7Ci0gICAgICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dDMubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICAvLyBp
ID09IDEzLCBpdCBzaG91bGQgbGFuZCBvbiAiZSIsIGFuZCBpID09IDE2LCBpdCBzaG91bGQgbGFu
ZCBvbiAidCIKLSAgICAgICAgICAgIGlmIChpID09IDEzKSB7Ci0gICAgICAgICAgICAgICAgbWFy
a2VyMSA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
bWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgIHZhciBtYXJrZXJSYW5nZSA9IHRleHQz
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidl
Y3QnIik7Ci0gICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2VyIGZv
ciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
bWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCci
KTsKLQotICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgotICAg
ICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJwc3ciKTsKLSAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudChwc3cpOwotICAgICAgICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwotICAgICAgICBzaG91
bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIp
OwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBj
YWxsIHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAotICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRl
eHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywgaXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3Jk
IGZpZWxkIGFuZCBsYW5kIG9uIHRleHQzLgotICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9Ci0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7Ci0gICAgICAgIC8vIENoZWNrIHBy
ZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCi0gICAgICAg
IGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOwot
ICAgICAgICAKLSAgICB9Ci0KLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci13aXRoLXVzZXIt
c2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTUyOTQpCisrKyBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICswLDAgQEAKLWhlbGxvIHRlc3Qgd29y
bGQgdGVzdCBoZWxsbwotbGluayB0byBoZXJlCi10ZXN0Ci1UaGlzIHRlc3RzIHRoYXQgYWNjZXNz
aWJpbGl0eSB0ZXh0IG1hcmtlcnMgc3RpbGwgd29yayBldmVuIHdoZW4gdXNlci1zZWxlY3Q6bm9u
ZSBpcyBzZXQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHRFbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlzIDQ1Ci1QQVNTIHRl
eHQgaXMgImhlbGxvIHRlc3Qgd29ybGQgdGVzdCBoZWxsb1xubGluayB0byBoZXJlXG50ZXN0Igot
UEFTUyB0ZXh0IGlzICdoJwotUEFTUyBlbGVtZW50LmlzRXF1YWwodGV4dEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApKSBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1t
YXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0
bWwJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Rl
eHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KLQotPGRpdiBpZD0i
dGV4dCIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSI+Ci0KLWhlbGxvIHRlc3QgPGI+
d29ybGQ8L2I+IHRlc3QgaGVsbG88YnI+Ci08YSBocmVmPSIjIj5saW5rPC9hPiB0byA8YSBocmVm
PSIjIj5oZXJlPC9hPjxicj4KLXRlc3QKLQotPC9kaXY+Ci0KLQotCi08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotCi0gICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhY2Nlc3NpYmlsaXR5IHRleHQgbWFya2VycyBzdGls
bCB3b3JrIGV2ZW4gd2hlbiB1c2VyLXNlbGVjdDpub25lIGlzIHNldC4iKTsKLQotICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLQotICAgICAgICAgIHZhciB0ZXh0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4
dCIpOwotICAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxlbWVudC50ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KHRleHRFbGVtZW50KTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4
dEVsZW1lbnQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNDUiKTsK
LQotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHRFbGVtZW50LnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgIHZhciBlbmRN
YXJrZXIgPSB0ZXh0RWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRN
YXJrZXJSYW5nZSk7Ci0gICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dEVsZW1lbnQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAgICAg
ICB2YXIgdGV4dCA9IHRleHRFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpOwotICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dCIsICJoZWxs
byB0ZXN0IHdvcmxkIHRlc3QgaGVsbG9cbmxpbmsgdG8gaGVyZVxudGVzdCIpOwotCi0gICAgICAg
ICAgdmFyIG5leHRNYXJrZXIgPSB0ZXh0RWxlbWVudC5uZXh0VGV4dE1hcmtlcihzdGFydE1hcmtl
cik7Ci0gICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dEVsZW1lbnQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgbmV4dE1hcmtlcik7Ci0gICAgICAgICAgdGV4dCA9
IHRleHRFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwot
ICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0IiwgIidoJyIpOwotICAgICAgICAgIHZhciBlbGVtZW50
ID0gdGV4dEVsZW1lbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG5leHRNYXJr
ZXIpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZWxlbWVudC5pc0VxdWFsKHRleHRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKSkiKTsKLSAgICB9Ci0KLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACit0ZXh0CisK
K3RleHQxCitjICBkCisKK2Nhbid0IHNlbGVjdAorVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91
cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgodGV4dE1hcmtlclJhbmdlKSBpcyA0CitQQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKK1BBU1MgdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRl
eHQpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIGlzICcnCitQQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAndCcKK1BBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICcnCitQQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAndCcKK1BBU1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIp
IGlzIDUKK09iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCitQQVNTIHRl
eHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCitQQVNTIHRl
eHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCitQQVNTIHRl
eHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKK1BBU1Mg
dGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJworUEFT
UyAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQor
UEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtl
cikuaXNFcXVhbCh0ZXh0MykgaXMgdHJ1ZQorUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgo
MikpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQt
bWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1t
YXJrZXItcHJldmlvdXMtbmV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8c3R5bGU+CisudXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBub25l
OyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9Cis8L3N0eWxlPgorPGJvZHkgaWQ9ImJvZHki
PgorCis8ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGJyPgordGV4dDEK
KworPGRpdiBpZD0idGV4dDIiPgorYyA8aW1nIHNyYz0iIyIgYXJpYS1sYWJlbD0iYmxhaCIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6ICNhYWFhYWE7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBw
eDsiPiBkCis8L2Rpdj4KKworPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0icHN3Ij4KKworPGRp
diBjbGFzcz0idXNlcnNlbGVjdCIgaWQ9InRleHQzIj5jYW4ndCBzZWxlY3Q8L2Rpdj4KKworPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQg
bWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIpOworICAgIAorICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAg
IHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0Iik7CisgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KKyAgICAgICAg
dGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgorICAg
ICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHRleHQpOworICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIAorICAgICAgICB2YXIgc3RhcnRNYXJrZXIg
PSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
OworICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCki
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAgCisgICAgICAgIC8v
IENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBs
YW5kIGF0IDxicj4uKQorICAgICAgICB2YXIgY3VycmVudE1hcmtlciA9IHN0YXJ0TWFya2VyOwor
ICAgICAgICB2YXIgcHJldmlvdXNNYXJrZXIsIG1hcmtlclJhbmdlOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJy
ZW50TWFya2VyOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIp
OworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIicnIik7CisgICAgICAgIAorICAgICAgICAvLyBBZHZhbmNlIG9uZSBtb3JlIGNo
YXJhY3RlciwgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4KKyAgICAgICAgcHJldmlv
dXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5u
ZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIp
OworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIid0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4
dCBtYXJrZXIuIChUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5k
IGF0IDxicj4uKQorICAgICAgICBwcmV2aW91c01hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFy
a2VyKHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlv
dXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7
CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJyciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBv
bmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2Yg
InRleHQiLgorICAgICAgICBwcmV2aW91c01hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2Vy
KHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Cisg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ3QnIik7CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJl
cGxhY2VkIG5vZGUKKyAgICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOworICAgICAgICB2YXIgdGV4dE1hcmtlclJh
bmdlMiA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDIpOworICAgICAgICBz
aG91bGRCZSgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwg
IjUiKTsKKyAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FU
VEFDSE1FTlRdIik7CisgICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogIiAr
IHN0cik7CisgICAgICAgIAorICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOworICAgICAgICAvLyBB
ZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJkIi4KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3Vy
cmVudE1hcmtlcjsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1h
cmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICBtYXJrZXJSYW5nZSA9IHRl
eHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpOworICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICInZCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3
YXJkcyA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2Yg
InRleHQxIi4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAg
ICAgIHByZXZpb3VzTWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFy
a2VyKTsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJr
ZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
KTsKKyAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJzEnIik7CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3
aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1hcmtlciBz
aG91bGQgc3RpbGwgd29yay4KKyAgICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOworICAgICAgICB0ZXh0MyA9IHRl
eHQzLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0IHVzZXIt
c2VsZWN0Om5vbmUgbm9kZS4KKyAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTc7IGkrKykgeworICAgICAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQzLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICAgICAgLy8g
aSA9PSAxMywgaXQgc2hvdWxkIGxhbmQgb24gImUiLCBhbmQgaSA9PSAxNiwgaXQgc2hvdWxkIGxh
bmQgb24gInQiCisgICAgICAgICAgICBpZiAoaSA9PSAxMykgeworICAgICAgICAgICAgICAgIG1h
cmtlcjEgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOworICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7CisgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidlY3Qn
Iik7CisgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2VyIGZvciA2
IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0My5w
cmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgbWFy
a2VyMiA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKKyAgICAgICAgc2hvdWxkQmUo
InRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsK
KworICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgorICAgICAg
ICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJwc3ciKTsKKyAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChwc3cpOworICAgICAgICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOworICAgICAgICBzaG91bGRC
ZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIpOwor
ICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBjYWxs
IHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAorICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRleHQy
IGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywgaXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3JkIGZp
ZWxkIGFuZCBsYW5kIG9uIHRleHQzLgorICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7CisgICAgICAgIC8vIENoZWNrIHByZXZp
b3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCisgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOworICAg
ICAgICAKKyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1h
cmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJr
ZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0aC11c2Vy
LXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBA
CitoZWxsbyB0ZXN0IHdvcmxkIHRlc3QgaGVsbG8KK2xpbmsgdG8gaGVyZQordGVzdAorVGhpcyB0
ZXN0cyB0aGF0IGFjY2Vzc2liaWxpdHkgdGV4dCBtYXJrZXJzIHN0aWxsIHdvcmsgZXZlbiB3aGVu
IHVzZXItc2VsZWN0Om5vbmUgaXMgc2V0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
KSBpcyA0NQorUEFTUyB0ZXh0IGlzICJoZWxsbyB0ZXN0IHdvcmxkIHRlc3QgaGVsbG9cbmxpbmsg
dG8gaGVyZVxudGVzdCIKK1BBU1MgdGV4dCBpcyAnaCcKK1BBU1MgZWxlbWVudC5pc0VxdWFsKHRl
eHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKSkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNl
bGVjdC1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJ0ZXh0IiBzdHlsZT0iLXdlYmtpdC11
c2VyLXNlbGVjdDpub25lIj4KKworaGVsbG8gdGVzdCA8Yj53b3JsZDwvYj4gdGVzdCBoZWxsbzxi
cj4KKzxhIGhyZWY9IiMiPmxpbms8L2E+IHRvIDxhIGhyZWY9IiMiPmhlcmU8L2E+PGJyPgordGVz
dAorCis8L2Rpdj4KKworCisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IGFjY2Vzc2liaWxpdHkgdGV4dCBtYXJrZXJzIHN0aWxsIHdvcmsgZXZlbiB3aGVuIHVzZXIt
c2VsZWN0Om5vbmUgaXMgc2V0LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgeworCisgICAgICAgICAgdmFyIHRleHRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgICAgICAgdmFyIHRl
eHRNYXJrZXJSYW5nZSA9IHRleHRFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4
dEVsZW1lbnQpOworICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFu
Z2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0NSIpOworCisgICAgICAgICAgdmFyIHN0YXJ0
TWFya2VyID0gdGV4dEVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHRFbGVtZW50LmVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKKyAgICAgICAg
ICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOworICAgICAgICAgIHZhciB0ZXh0ID0gdGV4dEVsZW1l
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgImhlbGxvIHRlc3Qgd29ybGQgdGVzdCBoZWxs
b1xubGluayB0byBoZXJlXG50ZXN0Iik7CisKKyAgICAgICAgICB2YXIgbmV4dE1hcmtlciA9IHRl
eHRFbGVtZW50Lm5leHRUZXh0TWFya2VyKHN0YXJ0TWFya2VyKTsKKyAgICAgICAgICB0ZXh0TWFy
a2VyUmFuZ2UgPSB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFy
a2VyLCBuZXh0TWFya2VyKTsKKyAgICAgICAgICB0ZXh0ID0gdGV4dEVsZW1lbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAgc2hvdWxkQmUoInRl
eHQiLCAiJ2gnIik7CisgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0ZXh0RWxlbWVudC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobmV4dE1hcmtlcik7CisgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJlbGVtZW50LmlzRXF1YWwodGV4dEVsZW1lbnQuY2hpbGRBdEluZGV4KDApKSIpOwor
ICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMTk1Mjk0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTIzNDYsNiArMjM0Niw5IEBAIGFjY2Vzc2liaWxp
dHkvY29udGVudC1lZGl0YWJsZS1hcy10ZXh0YXIKIHdlYmtpdC5vcmcvYi8xNDY4ODcgYWNjZXNz
aWJpbGl0eS9hcmlhLXJvbGVkZXNjcmlwdGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTQ2ODg3IGFjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbCBbIEZhaWx1cmUgXQog
CisjIFRleHQgbWFya2VyIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkCit3ZWJraXQub3JnL2IvMTUz
MjkyIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIgWyBTa2lwIF0KKwogIyBUaGlzIHRlc3QgaGFy
ZGNvZGVzIHRoZSByZXN1bHQgb2YgYSBwbGF0Zm9ybS1kZXBlbmRlbnQgZm9udCBsb29rdXAgYWxn
b3JpdGhtLgogZmFzdC90ZXh0L2ZhbGxiYWNrLWxhbmd1YWdlLWhhbi5odG1sIFsgU2tpcCBdCiBm
YXN0L3RleHQvZmFsbGJhY2stbGFuZ3VhZ2UtaGFuLTIuaHRtbCBbIFNraXAgXQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NTI5NCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNv
cHkpCkBAIC02MDksNiArNjA5LDkgQEAgd2Via2l0Lm9yZy9iLzE0OTAxNiBhY2Nlc3NpYmlsaXR5
L2FyaWEtYwogIyBBUklBIDEuMSB0YWJsZSByZWxhdGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBw
b3J0ZWQKIHdlYmtpdC5vcmcvYi8xNDg5NjcgYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJp
YnV0ZXMuaHRtbCBbIFNraXAgXQogCisjIFRleHQgbWFya2VyIHRlc3RzIGFyZSBub3Qgc3VwcG9y
dGVkCit3ZWJraXQub3JnL2IvMTUzMjkyIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIgWyBTa2lw
IF0KKwogIyBXZWJLaXRHVEsrIG5lZWRzIFdPRkYyIHN1cHBvcnQuCiB3ZWJraXQub3JnL2IvMTUy
NjE2IGZhc3QvdGV4dC93b2ZmMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3IvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjc2NCw2ICsyNzY0LDkgQEAg
d2Via2l0Lm9yZy9iLzE0OTI5NyBhY2Nlc3NpYmlsaXR5L2FyaWEtYwogIyBFbmFibGUgImFyaWEt
dGFibGUtYXR0cmlidXRlcyIgdGVzdCBmb3IgaU9TCiB3ZWJraXQub3JnL2IvMTUwMzY2IGFjY2Vz
c2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwgWyBQYXNzIF0KIAorIyBFbmFibGUg
VGV4dCBtYXJrZXIgdGVzdHMgZm9yIGlPUword2Via2l0Lm9yZy9iLzE1MzI5MiBhY2Nlc3NpYmls
aXR5L3RleHQtbWFya2VyIFsgUGFzcyBdCisKICMgTW9yZSBmbGFreSB0ZXN0cyAoU2VwdCAxOCwg
MjAxNSkKIAogZmFzdC9mb3Jtcy9zZWxlY3QtZWxlbWVudC1mb2N1cy1yaW5nLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xNzE4LDYgKzE3MTgsOSBAQCB3ZWJraXQub3Jn
L2IvMTQ2OTAzIGFjY2Vzc2liaWxpdHkvcm9sZXMtCiB3ZWJraXQub3JnL2IvMTM4NTY2IGFjY2Vz
c2liaWxpdHkvYXJpYS1tb2RhbC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTM4NTY2IGFj
Y2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLmh0bWwgWyBTa2lwIF0KIAor
IyBUZXh0IG1hcmtlciB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZAord2Via2l0Lm9yZy9iLzE1MzI5
MiBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyIFsgU2tpcCBdCisKICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIEVuZCBBY2Nlc3NpYmlsaXR5IElzc3Vl
cyAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269411</attachid>
            <date>2016-01-20 18:24:26 -0800</date>
            <delta_ts>2016-01-21 00:35:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68355</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTAxLTIwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtJT1NdIEltcGxlbWVudCBuZXh0
L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzI5MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjQyNjgyNDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHJlZmFjdG9yZWQgbmV4
dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgb24gaU9TLiBBbmQgCisgICAgICAgIG1h
ZGUgdGV4dCBtYXJrZXIgdGVzdHMgd29ya2luZyBvbiBpT1MuCisgICAgICAgIEFsc28sIGZpeGVk
IGFuIGlzc3VlIGluIEFYT2JqZWN0Q2FjaGUgd2hlcmUgY3JlYXRpbmcgYSByYW5nZSB3aXRoIGEg
cmVwbGFjZWQgbm9kZQorICAgICAgICBhdCB0aGUgc3RhcnQgb3IgZW5kIG1pZ2h0IGV4Y2x1ZGUg
dGhhdCBub2RlLgorCisgICAgICAgIFRlc3RzOiBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAorICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0
eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRtbAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoYXJhY3Rlck9mZnNldHNJbk9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0Tm9k
ZUFuZE9mZnNldEZvclJlcGxhY2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAg
ICAoK1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aFZpc2libGVQb3Np
dGlvbjpjYWNoZTpdKToKKyAgICAgICAgKCtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4
dE1hcmtlcldpdGhDaGFyYWN0ZXJPZmZzZXQ6Y2FjaGU6XSk6CisgICAgICAgICgrW1dlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6aXNTdGFydDpj
YWNoZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZGF0YVJlcHJl
c2VudGF0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHZpc2li
bGVQb3NpdGlvbl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjaGFy
YWN0ZXJPZmZzZXRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgaXNJ
Z25vcmVkXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFjY2Vzc2li
aWxpdHlPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZGVz
Y3JpcHRpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Ry
aW5nRm9yVGV4dE1hcmtlcnM6XSk6CisgICAgICAgIChibG9ja3F1b3RlTGV2ZWwpOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VdKToKKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU9iamVj
dEZvclRleHRNYXJrZXI6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIG5leHRNYXJrZXJGb3JNYXJrZXI6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHByZXZpb3VzTWFya2VyRm9yTWFya2VyOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyRm9yUG9pbnQ6XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG5leHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQ6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHByZXZp
b3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciByYW5nZUZvclRleHRNYXJrZXJzOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBsZW5ndGhGb3JUZXh0TWFya2VyczpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2Vyczppc1N0YXJ0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SWRlbnRpZmllcl0pOgorCiAy
MDE2LTAxLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgZml4IHR5cG8gaW4gY29tbWVudCBhZGRlZCBpbiByMTk1MTU3LgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lv
biAxOTUyOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ1LDYgKzE1NDUsMjMgQEAgc3RhdGljIGJvb2wgY2hh
cmFjdGVyT2Zmc2V0c0luT3JkZXIoY29ucwogICAgIHJldHVybiByYW5nZTEtPmNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRfVE9fU1RBUlQsIHJhbmdlMi5nZXQoKSwgSUdOT1JFX0VY
Q0VQVElPTikgPD0gMDsKIH0KIAorc3RhdGljIE5vZGUqIHJlc2V0Tm9kZUFuZE9mZnNldEZvclJl
cGxhY2VkTm9kZShOb2RlKiByZXBsYWNlZE5vZGUsIGludCYgb2Zmc2V0LCBpbnQgY2hhcmFjdGVy
Q291bnQpCit7CisgICAgLy8gVXNlIHRoaXMgZnVuY3Rpb24gdG8gaW5jbHVkZSB0aGUgcmVwbGFj
ZWQgbm9kZSBpdHNlbGYgaW4gdGhlIHJhbmdlIHdlIGFyZSBjcmVhdGluZy4KKyAgICBpZiAoIXJl
cGxhY2VkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgUmVmUHRyPFJh
bmdlPiBub2RlUmFuZ2UgPSBBWE9iamVjdENhY2hlOjpyYW5nZUZvck5vZGVDb250ZW50cyhyZXBs
YWNlZE5vZGUpOworICAgIGludCBub2RlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChub2RlUmFuZ2UuZ2V0KCkpOworICAgIG9mZnNldCA9IGNoYXJhY3RlckNvdW50IDw9IG5vZGVM
ZW5ndGggPyByZXBsYWNlZE5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IHJlcGxhY2VkTm9kZS0+
Y29tcHV0ZU5vZGVJbmRleCgpICsgMTsKKyAgICByZXR1cm4gcmVwbGFjZWROb2RlLT5wYXJlbnRO
b2RlKCk7Cit9CisKK3N0YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJh
Y3Rlcihub2RlKSB8fCBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKTsKK30KKwogUmVmUHRyPFJhbmdl
PiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
IGNoYXJhY3Rlck9mZnNldDIpCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldDEuaXNOdWxsKCkg
fHwgY2hhcmFjdGVyT2Zmc2V0Mi5pc051bGwoKSkKQEAgLTE1NTQsMzAgKzE1NzEsMzMgQEAgUmVm
UHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVubwogICAgIENoYXJhY3Rlck9mZnNl
dCBzdGFydENoYXJhY3Rlck9mZnNldCA9IGFscmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0
MSA6IGNoYXJhY3Rlck9mZnNldDI7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9m
ZnNldCA9IGFscmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MiA6IGNoYXJhY3Rlck9mZnNl
dDE7CiAgICAgCi0gICAgaW50IGVuZE9mZnNldCA9IGVuZENoYXJhY3Rlck9mZnNldC5vZmZzZXQ7
Ci0gICAgCi0gICAgLy8gZW5kT2Zmc2V0IGNhbiBiZSBvdXQgb2YgYm91bmRzIHNvbWV0aW1lcyBp
ZiB0aGUgbm9kZSBpcyBhIHJlcGxhY2VkIG5vZGUgb3IgaGFzIGJyVGFnLgotICAgIGlmIChzdGFy
dENoYXJhY3Rlck9mZnNldC5ub2RlID09IGVuZENoYXJhY3Rlck9mZnNldC5ub2RlKSB7Ci0gICAg
ICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JOb2Rl
Q29udGVudHMoc3RhcnRDaGFyYWN0ZXJPZmZzZXQubm9kZSk7Ci0gICAgICAgIGludCBub2RlTGVu
Z3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UuZ2V0KCkpOwotICAgICAg
ICBpZiAoZW5kT2Zmc2V0ID4gbm9kZUxlbmd0aCkKLSAgICAgICAgICAgIGVuZE9mZnNldCA9IG5v
ZGVMZW5ndGg7Ci0gICAgfQotICAgIAogICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0Q2hhcmFj
dGVyT2Zmc2V0LnN0YXJ0SW5kZXggKyBzdGFydENoYXJhY3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAg
ZW5kT2Zmc2V0ID0gZW5kQ2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXggKyBlbmRPZmZzZXQ7Ci0g
ICAgCi0gICAgLy8gSWYgc3RhcnQgbm9kZSBpcyBhIHJlcGxhY2VkIG5vZGUgYW5kIGl0IGhhcyBj
aGlsZHJlbiwgd2Ugd2FudCB0byBpbmNsdWRlIHRoZSByZXBsYWNlZCBub2RlIGl0c2VsZiBpbiB0
aGUgcmFuZ2UuCisgICAgaW50IGVuZE9mZnNldCA9IGVuZENoYXJhY3Rlck9mZnNldC5zdGFydElu
ZGV4ICsgZW5kQ2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICBOb2RlKiBzdGFydE5vZGUgPSBz
dGFydENoYXJhY3Rlck9mZnNldC5ub2RlOwotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpy
ZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihzdGFydE5vZGUpICYmIChzdGFydE5vZGUtPmhhc0No
aWxkTm9kZXMoKSB8fCBzdGFydE5vZGUgIT0gZW5kQ2hhcmFjdGVyT2Zmc2V0Lm5vZGUpKSB7Ci0g
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gc3RhcnROb2RlLT5jb21wdXRlTm9kZUluZGV4KCk7Ci0gICAg
ICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50Tm9kZSgpOworICAgIE5vZGUqIGVuZE5v
ZGUgPSBlbmRDaGFyYWN0ZXJPZmZzZXQubm9kZTsKKyAgICAKKyAgICAvLyBDb25zaWRlciB0aGUg
Y2FzZSB3aGVuIHRoZSByZXBsYWNlZCBub2RlIGlzIGF0IHRoZSBzdGFydC9lbmQgb2YgdGhlIHJh
bmdlLgorICAgIGJvb2wgc3RhcnROb2RlSXNSZXBsYWNlZE9yQlIgPSBpc1JlcGxhY2VkTm9kZU9y
QlIoc3RhcnROb2RlKTsKKyAgICBib29sIGVuZE5vZGVJc1JlcGxhY2VkT3JCUiA9IGlzUmVwbGFj
ZWROb2RlT3JCUihlbmROb2RlKTsKKyAgICBpZiAoc3RhcnROb2RlSXNSZXBsYWNlZE9yQlIgfHwg
ZW5kTm9kZUlzUmVwbGFjZWRPckJSKSB7CisgICAgICAgIC8vIGVuZE9mZnNldCBjYW4gYmUgb3V0
IG9mIGJvdW5kcyBzb21ldGltZXMgaWYgdGhlIG5vZGUgaXMgYSByZXBsYWNlZCBub2RlIG9yIGhh
cyBiclRhZyBhbmQgaXQgaGFzIG5vIGNoaWxkcmVuLgorICAgICAgICBpZiAoc3RhcnROb2RlID09
IGVuZE5vZGUgJiYgIXN0YXJ0Tm9kZS0+aGFzQ2hpbGROb2RlcygpKSB7CisgICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IG5vZGVSYW5nZSA9IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRl
bnRzKHN0YXJ0Tm9kZSk7CisgICAgICAgICAgICBpbnQgbm9kZUxlbmd0aCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChlbmRDaGFy
YWN0ZXJPZmZzZXQub2Zmc2V0ID4gbm9kZUxlbmd0aCkKKyAgICAgICAgICAgICAgICBlbmRPZmZz
ZXQgPSBlbmRDaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCArIG5vZGVMZW5ndGg7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RhcnROb2RlSXNSZXBsYWNlZE9yQlIpCisgICAg
ICAgICAgICAgICAgc3RhcnROb2RlID0gcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2Rl
KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQsIHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoZW5kTm9kZUlzUmVwbGFjZWRPckJSKQorICAgICAgICAgICAgICAgIGVu
ZE5vZGUgPSByZXNldE5vZGVBbmRPZmZzZXRGb3JSZXBsYWNlZE5vZGUoc3RhcnROb2RlLCBlbmRP
ZmZzZXQsIHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHQgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWNTdGFydCA9IDAsIGVjRW5kID0gMDsKICAgICByZXN1bHQt
PnNldFN0YXJ0KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQsIGVjU3RhcnQpOwotICAgIHJlc3VsdC0+
c2V0RW5kKGVuZENoYXJhY3Rlck9mZnNldC5ub2RlLCBlbmRPZmZzZXQsIGVjRW5kKTsKKyAgICBy
ZXN1bHQtPnNldEVuZChlbmROb2RlLCBlbmRPZmZzZXQsIGVjRW5kKTsKICAgICBpZiAoZWNTdGFy
dCB8fCBlY0VuZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNpb24gMTk1Mjk0KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsOCBAQCBAaW50ZXJmYWNlIFdl
YkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIDogCiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyICopdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246KFZpc2libGVQb3NpdGlvbiYp
dmlzaWJsZVBvcyBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGU7CisrIChXZWJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJP
ZmZzZXQmKWNoYXJhY3Rlck9mZnNldCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGU7CisrIChX
ZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6
KGNvbnN0IFJlZlB0cjxSYW5nZT4pcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihB
WE9iamVjdENhY2hlKiljYWNoZTsKIAogQGVuZAogCkBAIC0xNzgsNiArMTgwLDMzIEBAICsgKFdl
YkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmsKICAgICByZXR1cm4gW1tbV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtl
ckRhdGEgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKIH0KIAorKyAoV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zm
c2V0JiljaGFyYWN0ZXJPZmZzZXQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCit7CisgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZiAoY2hhcmFjdGVy
T2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOworICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBjaGFyYWN0
ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYm
ICF0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biBbW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2Vy
OiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNv
bnN0IFJlZlB0cjxSYW5nZT4pcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9i
amVjdENhY2hlKiljYWNoZQoreworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7CisgICAgY2FjaGUtPnN0
YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCByYW5nZSwgaXNT
dGFydCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorICAgICAgICByZXR1cm4gbmls
OworICAgIHJldHVybiBbW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOwor
fQorCiAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb24KIHsKICAgICByZXR1cm4gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiZfdGV4dE1hcmtlckRhdGEgbGVuZ3RoOnNpemVvZihUZXh0TWFya2Vy
RGF0YSldOwpAQCAtMTg4LDYgKzIxNywyNSBAQCAtIChWaXNpYmxlUG9zaXRpb24pdmlzaWJsZVBv
c2l0aW9uCiAgICAgcmV0dXJuIF9jYWNoZS0+dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRh
dGEoX3RleHRNYXJrZXJEYXRhKTsKIH0KIAorLSAoQ2hhcmFjdGVyT2Zmc2V0KWNoYXJhY3Rlck9m
ZnNldAoreworICAgIGlmIChfdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKyAgICAgICAgcmV0dXJu
IENoYXJhY3Rlck9mZnNldCgpOworICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoX3RleHRNYXJr
ZXJEYXRhLm5vZGUsIF90ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBfdGV4dE1h
cmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKK30KKworLSAoQk9PTClpc0lnbm9yZWQKK3sKKyAg
ICByZXR1cm4gX3RleHRNYXJrZXJEYXRhLmlnbm9yZWQ7Cit9CisKKy0gKEFjY2Vzc2liaWxpdHlP
YmplY3QqKWFjY2Vzc2liaWxpdHlPYmplY3QKK3sKKyAgICBpZiAoX3RleHRNYXJrZXJEYXRhLmln
bm9yZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBfY2FjaGUtPmFjY2Vz
c2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShfdGV4dE1hcmtlckRhdGEpOworfQorCiAt
IChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiW0FYVGV4dE1hcmtlciAlcF0gPSBub2RlOiAlcCBvZmZzZXQ6ICVkIiwgc2Vs
ZiwgX3RleHRNYXJrZXJEYXRhLm5vZGUsIF90ZXh0TWFya2VyRGF0YS5vZmZzZXRdOwpAQCAtMTgz
MSwyNSArMTg3OSwxMSBAQCAtIChOU1N0cmluZyAqKXN0cmluZ0ZvclRleHRNYXJrZXJzOihOU0Fy
CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKLSAgICBpZiAoW21hcmtlcnMgY291bnRdICE9IDIpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFy
a2VyID0gW21hcmtlcnMgb2JqZWN0QXRJbmRleDowXTsKLSAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciogZW5kTWFya2VyID0gW21hcmtlcnMgb2JqZWN0QXRJbmRleDoxXTsKLSAgICBpZiAo
IVtzdGFydE1hcmtlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBj
bGFzc11dIHx8ICFbZW5kTWFya2VyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gZXh0cmFj
dCB0aGUgc3RhcnQgYW5kIGVuZCBWaXNpYmxlUG9zaXRpb24KLSAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRWaXNpYmxlUG9zaXRpb24gPSBbc3RhcnRNYXJrZXIgdmlzaWJsZVBvc2l0aW9uXTsKLSAg
ICBpZiAoc3RhcnRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlcnM6bWFya2Vyc107CisgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlz
aWJsZVBvc2l0aW9uID0gW2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dOwotICAgIGlmIChlbmRW
aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBWaXNpYmxlUG9zaXRpb25SYW5nZShz
dGFydFZpc2libGVQb3NpdGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKTsKLSAgICByZXR1cm4gbV9v
YmplY3QtPnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7Cisg
ICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdGb3JSYW5nZShyYW5nZSk7CiB9CiAKIHN0YXRpYyBp
bnQgYmxvY2txdW90ZUxldmVsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0yMTI0LDEzICsy
MTU4LDggQEAgLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5nZQogICAgIGlmICghW3NlbGYgX3By
ZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmFuZ2UgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uUmFu
Z2UoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHJhbmdlLnN0YXJ0Owot
ICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IHJhbmdlLmVuZDsKLSAgICBXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnQgPSBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
dGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246c3RhcnRQb3NpdGlvbiBjYWNoZTptX29iamVj
dC0+YXhPYmplY3RDYWNoZSgpXTsKLSAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5k
ID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0
aW9uOmVuZFBvc2l0aW9uIGNhY2hlOm1fb2JqZWN0LT5heE9iamVjdENhY2hlKCldOwotICAgIAot
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnN0YXJ0LCBlbmQsIG5pbF07Cisg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1fb2JqZWN0LT5lbGVtZW50UmFuZ2UoKTsKKyAgICBy
ZXR1cm4gW3NlbGYgdGV4dE1hcmtlcnNGb3JSYW5nZTpyYW5nZV07CiB9CiAKIC8vIEEgbWV0aG9k
IHRvIGdldCB0aGUgbm9ybWFsaXplZCB0ZXh0IGN1cnNvciByYW5nZSBvZiBhbiBlbGVtZW50LiBV
c2VkIGluIER1bXBSZW5kZXJUcmVlLgpAQCAtMjE2MCw4ICsyMTg5LDcgQEAgLSAoQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKilhY2Nlc3NpYgogICAgIGlmICghbWFya2VyKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24gPSBb
bWFya2VyIHZpc2libGVQb3NpdGlvbl07Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0g
bV9vYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24p
OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IFttYXJrZXIgYWNjZXNzaWJpbGl0eU9i
amVjdF07CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0yMzU0
LDE0ICsyMzgyLDEwIEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmsK
ICAgICBpZiAoIW1hcmtlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQgPSBbbWFya2VyIHZpc2libGVQb3NpdGlvbl07Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIG5leHRNYXJrZXIgPSBtX29iamVjdC0+bmV4dFZpc2libGVQb3NpdGlvbihzdGFydCk7
Ci0gICAgCi0gICAgcmV0dXJuIFtXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2Vy
V2l0aFZpc2libGVQb3NpdGlvbjpuZXh0TWFya2VyIGNhY2hlOm1fb2JqZWN0LT5heE9iamVjdENh
Y2hlKCldOworICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IFttYXJrZXIgY2hhcmFjdGVyT2Zm
c2V0XTsKKyAgICByZXR1cm4gW3NlbGYgbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpzdGFy
dF07CiB9CiAKLS8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHJldHVybiB0aGUgbWFya2Vy
IGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBzdGFydGluZyBhdAotLy8gdGhlIG1hcmtlciB0aGF0
IGlzIHBhc3NlZCBpbnRvIHRoZSBtZXRob2QuCiAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciAqKXByZXZpb3VzTWFya2VyRm9yTWFya2VyOihXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAq
KW1hcmtlcgogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkBA
IC0yMzcwLDEwICsyMzk0LDggQEAgLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2
aW91cwogICAgIGlmICghbWFya2VyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIFZp
c2libGVQb3NpdGlvbiBzdGFydCA9IFttYXJrZXIgdmlzaWJsZVBvc2l0aW9uXTsKLSAgICBWaXNp
YmxlUG9zaXRpb24gcHJldmlvdXNNYXJrZXIgPSBtX29iamVjdC0+cHJldmlvdXNWaXNpYmxlUG9z
aXRpb24oc3RhcnQpOwotICAgIAotICAgIHJldHVybiBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246cHJldmlvdXNNYXJrZXIgY2FjaGU6bV9v
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CisgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0ID0gW21h
cmtlciBjaGFyYWN0ZXJPZmZzZXRdOworICAgIHJldHVybiBbc2VsZiBwcmV2aW91c01hcmtlckZv
ckNoYXJhY3Rlck9mZnNldDpzdGFydF07CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVk
IHRvIHJldHVybiB0aGUgYm91bmRzIG9mIGEgdGV4dCBtYXJrZXIgcmFuZ2UgaW4gc2NyZWVuIGNv
b3JkaW5hdGVzLgpAQCAtMjQwMyw2ICsyNDI1LDg3IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyICopdGV4dE1hcmsKICAgICByZXR1cm4gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IHRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0aW9uOnBvcyBjYWNoZTptX29iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpXTsKIH0KIAorLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKiluZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAor
eworICAgIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0ICsg
MTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqdGV4dE1hcmtlciA9IFtXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjaGFyYWN0
ZXJPZmZzZXQgY2FjaGU6bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07CisgICAgaWYgKHRleHRN
YXJrZXIgJiYgdGV4dE1hcmtlci5pc0lnbm9yZWQpCisgICAgICAgIHRleHRNYXJrZXIgPSBbc2Vs
ZiBuZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07CisgICAgcmV0
dXJuIHRleHRNYXJrZXI7Cit9CisKKy0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJl
dmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVy
T2Zmc2V0Cit7CisgICAgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5v
ZmZzZXQgLSAxOworICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICp0ZXh0TWFya2VyID0g
W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0
OmNoYXJhY3Rlck9mZnNldCBjYWNoZTptX29iamVjdC0+YXhPYmplY3RDYWNoZSgpXTsKKyAgICBp
ZiAodGV4dE1hcmtlciAmJiB0ZXh0TWFya2VyLmlzSWdub3JlZCkKKyAgICAgICAgdGV4dE1hcmtl
ciA9IFtzZWxmIHByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNl
dF07CisgICAgcmV0dXJuIHRleHRNYXJrZXI7Cit9CisKKy0gKFJlZlB0cjxSYW5nZT4pcmFuZ2VG
b3JUZXh0TWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCit7CisgICAgaWYgKFt0ZXh0TWFy
a2VycyBjb3VudF0gIT0gMikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKnN0YXJ0TWFya2VyID0gW3RleHRNYXJrZXJzIG9iamVj
dEF0SW5kZXg6MF07CisgICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKmVuZE1hcmtlciA9
IFt0ZXh0TWFya2VycyBvYmplY3RBdEluZGV4OjFdOworICAgIAorICAgIGlmICghW3N0YXJ0TWFy
a2VyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNsYXNzXV0gfHwg
IVtlbmRNYXJrZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgY2xh
c3NdXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJh
Y3Rlck9mZnNldCA9IFtzdGFydE1hcmtlciBjaGFyYWN0ZXJPZmZzZXRdOworICAgIENoYXJhY3Rl
ck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBbZW5kTWFya2VyIGNoYXJhY3Rlck9mZnNldF07
CisgICAgcmV0dXJuIGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoc3Rh
cnRDaGFyYWN0ZXJPZmZzZXQsIGVuZENoYXJhY3Rlck9mZnNldCk7Cit9CisKKy0gKE5TSW50ZWdl
cilsZW5ndGhGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCit7CisgICAgaWYg
KCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlcnM6
dGV4dE1hcmtlcnNdOworICAgIGludCBsZW5ndGggPSBBWE9iamVjdENhY2hlOjpsZW5ndGhGb3JS
YW5nZShyYW5nZS5nZXQoKSk7CisgICAgcmV0dXJuIGxlbmd0aCA8IDAgPyAwIDogbGVuZ3RoOwor
fQorCistIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VycyBpc1N0YXJ0OihCT09MKWlzU3Rh
cnQKK3sKKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBbc2VsZiByYW5n
ZUZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
c3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0YXJ0OmlzU3RhcnQgY2FjaGU6
bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKV07Cit9CisKKy0gKE5TQXJyYXkgKil0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMKK3sKKyAgICBpZiAoIVtzZWxm
IF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBbc2VsZiByYW5nZUZvclRleHRNYXJrZXJzOnRleHRN
YXJrZXJzXTsKKyAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlcnNGb3JSYW5nZTpyYW5nZV07Cit9
CisKKy0gKE5TQXJyYXkgKil0ZXh0TWFya2Vyc0ZvclJhbmdlOihSZWZQdHI8UmFuZ2U+KXJhbmdl
Cit7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnQgPSBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTpyYW5nZSBpc1N0YXJ0OllFUyBjYWNoZTpt
X29iamVjdC0+YXhPYmplY3RDYWNoZSgpXTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogZW5kID0gW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2U6cmFuZ2UgaXNTdGFydDpOTyBjYWNoZTptX29iamVjdC0+YXhPYmplY3RDYWNoZSgp
XTsKKyAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6c3RhcnQsIGVuZCwgbmlsXTsKK30KKwogLSAo
TlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5SWRlbnRpZmllcgogewogICAgIGlmICghW3NlbGYgX3By
ZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTUzOTIpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAxNi0wMS0yMCAgTmFuIFdhbmcg
IDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBbSU9TXSBJbXBsZW1lbnQgbmV4dC9w
cmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyOTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI0MjY4MjQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hZGUgdGV4dCBtYXJrZXIgdGVzdHMgYXZhaWxhYmxlIG9uIGlP
Uy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJJT1MubW06IEFkZGVkLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6
OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI6OmlzRXF1YWwpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OnBs
YXRmb3JtVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6On5BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmlzRXF1YWwpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJv
dW5kcyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JCb3VuZHMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
clBvaW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1h
cmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RhcnRUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVuZFRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldExpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6OnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UpOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKwogMjAxNi0wMS0yMCAgSmFzb24gTWFyY2Vs
bCAgPGptYXJjZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBjb21wYXJlSXRlcmF0
aW9ucyB0byByZW1vdmUgZHVwbGljYXRlIGNvZGUuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHJldmlzaW9uIDE5NTI5NCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0
UmVmLmg+CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpCiAjZGVmaW5lIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJT
IDEKICNlbHNlCiAjZGVmaW5lIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTIDAKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRK
U0NsYXNzKCk7Ci0jaWYgU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKyNpZiBTVVBQT1JUU19BWF9U
RVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1h
cmtlcj4gbV90ZXh0TWFya2VyOwogI2Vsc2UKICAgICBQbGF0Zm9ybVRleHRNYXJrZXIgbV90ZXh0
TWFya2VyOwpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIHN0
YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VS
UworI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKICAgICBSZXRh
aW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyUmFuZ2U+IG1fdGV4dE1hcmtlclJhbmdlOwogI2Vsc2UK
ICAgICBQbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSBtX3RleHRNYXJrZXJSYW5nZTsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk1Mjk0KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQAogCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYgLyog
RHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVX
aW5kb3cubW0gKi87IH07CiAJCUE4QjkxQkZEMENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFs
bG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QjkxQkY3MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmNwcCAqLzsgfTsKIAkJQThE
NzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNl
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ3OUNF
OTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAq
LzsgfTsKKwkJQTlCQjdDNUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTlCQjdDNUIxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1t
ICovOyB9OwogCQlBQTVBMTVFRjE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQTVBMTVFRDE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1Mu
bW0gKi87IH07CiAJCUFBNUExNUYwMTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUE1QTE1RUUxNkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW0gKi87IH07CiAJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDEzMUQ4MEM5
NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCAqLzsgfTsKQEAgLTMwOSw2ICszMTAsNyBA
QAogCQlBOEI5MUJGOTBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDaGVja2VkTWFsbG9jLmg7IHBhdGggPSBtYWMvQ2hl
Y2tlZE1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEQ3OUNFODBGQzI4
QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThENzlDRTkwRkMyOEIyQzAwNEFD
OEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5QkI3QzVCMUM1MDUyNzgwMDJDNTI1QiAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBwYXRoID0gaW9z
L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBQTVBMTVFRDE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE1QTE1RUUxNkUxNUNEMDAwRjdD
NTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBwYXRoID0g
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19fXy5UVEYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gIkFI
RU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRGIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQ5OSw2ICs1MDEsNyBAQAogCQkJCTgwMDQ1QUVDMTQ3NzE4RTcwMDgy
OTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLywKIAkJCQkyOUNG
QkEwRjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAog
CQkJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5o
ICovLAorCQkJCUE5QkI3QzVCMUM1MDUyNzgwMDJDNTI1QiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcklPUy5tbSAqLywKIAkJCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCiAJCQkJQkMwRTI0REYwRTJEOTQ1MTAwMUI2QkMyIC8q
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICovLAogCQkJCUJDMEUyNERFMEUyRDk0NTEwMDFC
NkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggKi8sCkBAIC05NzQsNiArOTc3LDcgQEAK
IAkJCQlCQ0ExOEM0NzBDOUI1Qjk0MDAxMTQzNjkgLyogRHVtcFJlbmRlclRyZWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5ODMwRjMxRjE1QzgxMTgxMDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVD
b21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCN0IwQzlCMDhGMTAwMTE0MzY5IC8q
IER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTlCQjdD
NUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VySU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVl
RmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQTBDRjNCMzJG
MDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gaW4gU291cmNlcyAqLywKIAkJ
CQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmgiCisKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCisKKyNpZiBTVVBQT1JUU19B
WF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShJT1MpCisKKy8vIE1BUks6IEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyCisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcihQbGF0Zm9ybVRleHRNYXJrZXIgbWFya2VyKQorICAgIDogbV90ZXh0TWFya2VyKG1hcmtl
cikKK3sKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyJiBtYXJrZXIpCisgICAgOiBtX3RleHRN
YXJrZXIobWFya2VyLnBsYXRmb3JtVGV4dE1hcmtlcigpKQoreworfQorCitBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcjo6fkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKCkKK3sKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogb3Ro
ZXIpCit7CisgICAgcmV0dXJuIFsoaWQpcGxhdGZvcm1UZXh0TWFya2VyKCkgaXNFcXVhbDooaWQp
b3RoZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKK30KKworUGxhdGZvcm1UZXh0TWFya2VyIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyOjpwbGF0Zm9ybVRleHRNYXJrZXIoKSBjb25zdCAKK3sgCisg
ICAgcmV0dXJuIG1fdGV4dE1hcmtlcjsKK30KKworLy8gTUFSSzogQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjpBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKFBsYXRmb3JtVGV4dE1hcmtlclJhbmdlIG1hcmtlclJhbmdlKQorICAg
IDogbV90ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U6OkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoY29uc3QgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSYgbWFya2VyUmFuZ2UpCisgICAgOiBtX3RleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZS5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpKQoreworfQorCitBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlOjp+QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSgp
Cit7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBvdGhlcikKK3sKKyAgICByZXR1cm4gWyhpZClwbGF0
Zm9ybVRleHRNYXJrZXJSYW5nZSgpIGlzRXF1YWw6KGlkKW90aGVyLT5wbGF0Zm9ybVRleHRNYXJr
ZXJSYW5nZSgpXTsKK30KKworUGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3RleHRNYXJrZXJSYW5nZTsKK30KKworI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RFWFRN
QVJLRVJTICYmIFBMQVRGT1JNKElPUykKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAxOTUyOTQp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTYgQEAgLSAoTlNVSW50ZWdlcilhY2Nlc3Np
YmlsaXR5QVJJQVJvd0luZGV4OwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QVJJQUNvbHVt
bkluZGV4OwogLSAoVUlBY2Nlc3NpYmlsaXR5VHJhaXRzKV9heENvbnRhaW5lZEJ5RmllbGRzZXRU
cmFpdDsKIC0gKGlkKV9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3RvcjsKKworLy8gVGV4dE1h
cmtlciByZWxhdGVkCistIChOU0FycmF5ICopdGV4dE1hcmtlclJhbmdlOworLSAoTlNJbnRlZ2Vy
KWxlbmd0aEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnM7CistIChOU1N0cmlu
ZyAqKXN0cmluZ0ZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VyczsKKy0gKGlkKXN0YXJ0
T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkqKXRleHRNYXJrZXJzIGlzU3Rh
cnQ6KEJPT0wpaXNTdGFydDsKKy0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
OihOU0FycmF5ICopdGV4dE1hcmtlcnM7CistIChpZCluZXh0TWFya2VyRm9yTWFya2VyOihpZClt
YXJrZXI7CistIChpZClwcmV2aW91c01hcmtlckZvck1hcmtlcjooaWQpbWFya2VyOworLSAoaWQp
YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXI6KGlkKW1hcmtlcjsKIEBlbmQKIAogQGlu
dGVyZmFjZSBOU09iamVjdCAoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJQcml2YXRlKQpA
QCAtNDExLDYgKzQyMSwxMzcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGF0aAogICAgIHJldHVybiBbcmVzdWx0IGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAorI2lmIFNV
UFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKElPUykKKworLy8gVGV4dCBtYXJrZXJz
CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2Ug
PSBbZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSB0ZXh0TWFya2VyUmFuZ2VdOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Cit9CisK
K0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQor
eworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIGlkIHRleHRNYXJr
ZXJzID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIHJldHVybiBb
bV9lbGVtZW50IGxlbmd0aEZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXTsKK30KKworQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK3sKKyAgICBOU0FycmF5ICp0ZXh0TWFy
a2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07
CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgaWQgdGV4dE1hcmtlcnMg
PSAoaWQpcmFuZ2UtPnBsYXRmb3JtVGV4dE1hcmtlclJhbmdlKCk7CisgICAgaWQgdGV4dE1hcmtl
ciA9IFttX2VsZW1lbnQgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vyczp0ZXh0TWFy
a2VycyBpc1N0YXJ0OllFU107CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIGlkIHRleHRNYXJrZXJzID0gKGlkKXJhbmdlLT5w
bGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50
IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnMgaXNTdGFydDpO
T107CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKHRleHRNYXJrZXIpOworfQor
CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2Vy
KQoreworICAgIGlkIG9iaiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRN
YXJrZXI6KGlkKW1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIGlmIChvYmopCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iaik7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlv
dXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAg
IGlkIHByZXZpb3VzTWFya2VyID0gW21fZWxlbWVudCBwcmV2aW91c01hcmtlckZvck1hcmtlcjoo
aWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9lbGVt
ZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIobmV4dE1hcmtlcik7Cit9
CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAg
ICBpZCB0ZXh0TWFya2VycyA9IChpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFu
Z2UoKTsKKyAgICBpZiAoIXRleHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKyAgICByZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtl
cnM6dGV4dE1hcmtlcnNdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNB
dHRyaWJ1dGUoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0dXJuIC0x
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJ
bmRleChpbnQpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCit7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQoreworICAgIHJldHVybiBudWxscHRyOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKKyNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShJT1MpCisK
ICNwcmFnbWEgbWFyayBVbnVzZWQKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRM
aW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudFZl
Y3RvcikKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJNYWMubW0JKHJldmlzaW9uIDE5NTI5NCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCIK
ICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VS
UworI2lmIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKIAogLy8gTUFS
SzogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIKIApAQCAtODIsNCArODIsNCBAQCBQbGF0Zm9ybVRl
eHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VGV4CiAgICAgcmV0dXJuIG1fdGV4dE1hcmtlclJh
bmdlLmdldCgpOwogfQogCi0jZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKyNlbmRp
ZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFURk9STShNQUMpCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQkocmV2aXNpb24gMTk1Mjk0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MTIsNyArMTYxMiw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWMKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50CiB9CiAKLSNpZiBTVVBQT1JUU19BWF9URVhUTUFSS0VSUworI2lmIFNVUFBP
UlRTX0FYX1RFWFRNQVJLRVJTICYmIFBMQVRGT1JNKE1BQykKIAogLy8gVGV4dCBtYXJrZXJzCiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0
TWFya2VyKQpAQCAtMTg0Niw3ICsxODQ2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZXRTZWxlY3RlZAogICAgIHJldHVybiB0cnVlOwogfQogCi0jZW5kaWYgLy8gU1VQUE9SVFNf
QVhfVEVYVE1BUktFUlMKKyNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFU
Rk9STShNQUMpCiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRl
ZEFjdGlvbnMoKQogewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tCShyZXZpc2lvbiAxOTUyOTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw2ICs3MSwxNiBAQCAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBUklBUm93SW5k
ZXg7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXg7CiAtIChVSUFj
Y2Vzc2liaWxpdHlUcmFpdHMpX2F4Q29udGFpbmVkQnlGaWVsZHNldFRyYWl0OwogLSAoaWQpX2Fj
Y2Vzc2liaWxpdHlGaWVsZHNldEFuY2VzdG9yOworCisvLyBUZXh0TWFya2VyIHJlbGF0ZWQKKy0g
KE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2U7CistIChOU0ludGVnZXIpbGVuZ3RoRm9yVGV4dE1h
cmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VyczsKKy0gKE5TU3RyaW5nICopc3RyaW5nRm9yVGV4
dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzOworLSAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyczooTlNBcnJheSopdGV4dE1hcmtlcnMgaXNTdGFydDooQk9PTClpc1N0YXJ0
OworLSAoTlNBcnJheSAqKXRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0
TWFya2VyczsKKy0gKGlkKW5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKW1hcmtlcjsKKy0gKGlkKXBy
ZXZpb3VzTWFya2VyRm9yTWFya2VyOihpZCltYXJrZXI7CistIChpZClhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yVGV4dE1hcmtlcjooaWQpbWFya2VyOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TT2JqZWN0
IChXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlclByaXZhdGUpCkBAIC05ODIsNDIgKzk5Miw1
NSBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+CiAKIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50
KQogewotICAgIHJldHVybiAwOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtlbGVtZW50LT5w
bGF0Zm9ybVVJRWxlbWVudCgpIHRleHRNYXJrZXJSYW5nZV07CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogfQogCiBpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewotICAgIHJldHVybiAwOworICAgIGlkIHRleHRN
YXJrZXJzID0gKGlkKXJhbmdlLT5wbGF0Zm9ybVRleHRNYXJrZXJSYW5nZSgpOyAgICAKKyAgICBy
ZXR1cm4gW21fZWxlbWVudCBsZW5ndGhGb3JUZXh0TWFya2Vyczp0ZXh0TWFya2Vyc107CiB9CiAK
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZCBwcmV2aW91c01hcmtlciA9IFttX2VsZW1lbnQg
cHJldmlvdXNNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtl
cigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShwcmV2aW91
c01hcmtlcik7CiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQogewotICAgIHJldHVybiAwOworICAgIGlkIG5leHRNYXJrZXIgPSBbbV9l
bGVtZW50IG5leHRNYXJrZXJGb3JNYXJrZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0
TWFya2VyKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiBtYXJrZXJSYW5nZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZCB0ZXh0TWFya2VycyA9
IChpZCltYXJrZXJSYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZiAoIXRl
eHRNYXJrZXJzIHx8ICFbdGV4dE1hcmtlcnMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAg
ICByZXR1cm4gW1ttX2VsZW1lbnQgc3RyaW5nRm9yVGV4dE1hcmtlcnM6dGV4dE1hcmtlcnNdIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIGVuZE1hcmtlcikKIHsKLSAgICByZXR1cm4gMDsKKyAgICBOU0FycmF5ICp0ZXh0TWFy
a2VycyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6KGlkKXN0YXJ0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKSwgKGlkKWVuZE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCksIG5pbF07
CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzOnRleHRNYXJrZXJzXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsK
LSAgICByZXR1cm4gMDsKKyAgICBpZCB0ZXh0TWFya2VycyA9IChpZClyYW5nZS0+cGxhdGZvcm1U
ZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBzdGFydE9y
RW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzIGlzU3RhcnQ6WUVTXTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZSh0ZXh0TWFya2VyKTsKIH0K
IAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZCB0ZXh0TWFya2VycyA9
IChpZClyYW5nZS0+cGxhdGZvcm1UZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBpZCB0ZXh0TWFya2Vy
ID0gW21fZWxlbWVudCBzdGFydE9yRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJzOnRleHRNYXJr
ZXJzIGlzU3RhcnQ6Tk9dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3Jl
YXRlKHRleHRNYXJrZXIpOwogfQogCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMTAzNyw3ICsxMDYwLDEwIEBAIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKIAogUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKIHsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZCBvYmogPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlPYmplY3RG
b3JUZXh0TWFya2VyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICBpZiAo
b2JqKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG9iaik7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTUyOTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wMS0yMCAgTmFuIFdhbmcgIDxuX3dhbmdA
YXBwbGUuY29tPgorCisgICAgICAgIEFYOiBbSU9TXSBJbXBsZW1lbnQgbmV4dC9wcmV2aW91cyB0
ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyOTIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0MjY4MjQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlv
dXMtbmV4dC10ZXh0LW1hcmtlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2Vy
LXNlbGVjdC1ub25lLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlcjogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0
aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTAxLTE5ICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5h
bmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF1bY3NzLWFsaWduXSBqdXN0aWZ5
LXNlbGYgc3RyZXRjaCBpcyBub3QgYXBwbGllZCBmb3IgaW1nIGVsZW1lbnRzCkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9wcmV2aW91cy1uZXh0LXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9wcmV2
aW91cy1uZXh0LXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk1Mjk0KQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotdGV4dAotCi10ZXh0
MQotYyAgZAotCi1jYW4ndCBzZWxlY3QKLVRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4
dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRl
eHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBp
cyB0cnVlCi1QQVNTIGVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6ICcKLVBBU1MgZWxl
bWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogdGV4dDEnCi1QQVNTIGVsZW1lbnQuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6ICcKLVBBU1MgZWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogdGV4dCcKLVBBU1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZTIpIGlzIDUKLU9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1BWFZh
bHVlOiBjIAotQVhWYWx1ZTogYyAKLUFYVmFsdWU6IAotQVhWYWx1ZTogIGQKLUFYVmFsdWU6IAot
QVhWYWx1ZTogYyAKLUFYVmFsdWU6IGMgCi1BWFZhbHVlOiB0ZXh0MQotUEFTUyB0ZXh0My5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQzLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5h
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4
dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1
YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0
cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1h
cmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3By
ZXZpb3VzLW5leHQtdGV4dC1tYXJrZXIuaHRtbAkocmV2aXNpb24gMTk1Mjk0KQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcHJldmlvdXMtbmV4dC10ZXh0LW1hcmtlci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEzNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08c3R5bGU+Ci0u
dXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OyB9Ci08L3N0eWxlPgotPGJvZHkgaWQ9ImJvZHkiPgotCi08ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRl
eD0iMCI+dGV4dDwvZGl2PgotPGJyPgotdGV4dDEKLQotPGRpdiBpZD0idGV4dDIiPgotYyA8aW1n
IHNyYz0iIyIgYXJpYS1sYWJlbD0iYmxhaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNhYWFh
YWE7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPiBkCi08L2Rpdj4KLQotPGlucHV0IHR5
cGU9InBhc3N3b3JkIiBpZD0icHN3Ij4KLQotPGRpdiBjbGFzcz0idXNlcnNlbGVjdCIgaWQ9InRl
eHQzIj5jYW4ndCBzZWxlY3Q8L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLQotPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVt
ZW50ZWQgY29ycmVjdGx5LiIpOwotICAgIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0
aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDAp
OwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9l
bmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7Ci0gICAg
ICAgIAotICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICB2YXIgZW5kTWFya2VyID0g
dGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0
ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwo
dGV4dCkiKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChB
ZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQotICAgICAgICB2YXIg
Y3VycmVudE1hcmtlciA9IHN0YXJ0TWFya2VyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDU7IGkrKykgewotICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0ZXh0
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6ICciKTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmRl
IGF0ICJ0IiBpbiAidGV4dDEiLgotICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgZWxlbWVudCA9IHRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRC
ZSgiZWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogdGV4dDEnIik7Ci0gICAgICAgIAot
ICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJhY2t3YXJk
cyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCi0gICAgICAgIGN1cnJlbnRN
YXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAg
ZWxlbWVudCA9IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogJyIpOwotICAgICAgICAKLSAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3Jl
IGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIu
Ci0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKTsKLSAgICAgICAgZWxlbWVudCA9IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNr
IHRoZSBjYXNlIHdpdGggcmVwbGFjZWQgbm9kZQotICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7Ci0gICAgICAg
IHZhciB0ZXh0TWFya2VyUmFuZ2UyID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0
ZXh0Mik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlMikiLCAiNSIpOwotICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFy
Q29kZSg2NTUzMiksICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVjdCBzdHJp
bmcgZm9yIHJhbmdlOiAiICsgc3RyKTsKLSAgICAgICAgCi0gICAgICAgIGN1cnJlbnRNYXJrZXIg
PSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdl
Mik7Ci0gICAgICAgIC8vIEFkdmFuY2UgNCBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgZmly
c3QgY2hhcmFjdGVyIG9mICIgZCIuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsr
KSB7Ci0gICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7Ci0gICAgICAgICAgICBlbGVtZW50ID0gdGV4dDIuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgZGVidWcoZWxl
bWVudC5zdHJpbmdWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFRyYXZl
cnNlIGJhY2t3YXJkcyA0IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFy
YWN0ZXIgb2YgInRleHQxIi4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsK
LSAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7Ci0gICAgICAgICAgICBlbGVtZW50ID0gdGV4dDIuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgZGVidWcoZWxl
bWVudC5zdHJpbmdWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNr
IHRoZSBjYXNlIHdpdGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJrZXIvcHJldmlvdXNU
ZXh0TWFya2VyIHNob3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7Ci0gICAgICAg
IHRleHQzID0gdGV4dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAvLyBBZHZhbmNlIHRvIGxh
bmQgYXQgdXNlci1zZWxlY3Q6bm9uZSBub2RlLgotICAgICAgICB2YXIgbWFya2VyMSwgbWFya2Vy
MjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNzsgaSsrKSB7Ci0gICAgICAgICAgICBj
dXJyZW50TWFya2VyID0gdGV4dDMubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgICAgICAvLyBpID09IDEzLCBpdCBzaG91bGQgbGFuZCBvbiAiZSIsIGFuZCBpID09IDE2LCBp
dCBzaG91bGQgbGFuZCBvbiAidCIKLSAgICAgICAgICAgIGlmIChpID09IDEzKSB7Ci0gICAgICAg
ICAgICAgICAgbWFya2VyMSA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgIHZhciBtYXJrZXJS
YW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIidlY3QnIik7Ci0gICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNv
bmQgbWFya2VyIGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ3NlbCciKTsKLQotICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3Jk
IGZpZWxkLgotICAgICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJwc3ciKTsKLSAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBw
c3cudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChwc3cpOwotICAgICAgICB2YXIgc3RhcnQgPSBw
c3cuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwot
ICAgICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKHN0YXJ0KSIpOwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgbmV4dC9wcmV2aW91cyB0
ZXh0IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAotICAgICAgICAvLyBXZSBz
dGFydCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywgaXQgc2hvdWxkIHNraXAg
dGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9uIHRleHQzLgotICAgICAgICBjdXJyZW50TWFy
a2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZTIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwot
ICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7Ci0gICAgICAg
IC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5v
ZGUuCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdElu
ZGV4KDIpKSIpOwotICAgICAgICAKLSAgICB9Ci0KLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtl
ci13aXRoLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTUyOTQpCisr
KyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci13aXRoLXVzZXItc2Vs
ZWN0LW5vbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICswLDAgQEAKLWhl
bGxvIHRlc3Qgd29ybGQgdGVzdCBoZWxsbwotbGluayB0byBoZXJlCi10ZXN0Ci1UaGlzIHRlc3Rz
IHRoYXQgYWNjZXNzaWJpbGl0eSB0ZXh0IG1hcmtlcnMgc3RpbGwgd29yayBldmVuIHdoZW4gdXNl
ci1zZWxlY3Q6bm9uZSBpcyBzZXQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIHRleHRFbGVtZW50LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlz
IDQ1Ci1QQVNTIHRleHQgaXMgImhlbGxvIHRlc3Qgd29ybGQgdGVzdCBoZWxsb1xubGluayB0byBo
ZXJlXG50ZXN0IgotUEFTUyB0ZXh0IGlzICdoJwotUEFTUyBlbGVtZW50LmlzRXF1YWwodGV4dEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApKSBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNl
bGVjdC1ub25lLmh0bWwJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4K
LQotPGRpdiBpZD0idGV4dCIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSI+Ci0KLWhl
bGxvIHRlc3QgPGI+d29ybGQ8L2I+IHRlc3QgaGVsbG88YnI+Ci08YSBocmVmPSIjIj5saW5rPC9h
PiB0byA8YSBocmVmPSIjIj5oZXJlPC9hPjxicj4KLXRlc3QKLQotPC9kaXY+Ci0KLQotCi08cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0
PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhY2Nlc3NpYmlsaXR5IHRleHQg
bWFya2VycyBzdGlsbCB3b3JrIGV2ZW4gd2hlbiB1c2VyLXNlbGVjdDpub25lIGlzIHNldC4iKTsK
LQotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLQotICAgICAgICAg
IHZhciB0ZXh0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgidGV4dCIpOwotICAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxl
bWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHRFbGVtZW50KTsKLSAgICAgICAgICBz
aG91bGRCZSgidGV4dEVsZW1lbnQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZSkiLCAiNDUiKTsKLQotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHRFbGVtZW50LnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAg
ICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0RWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4
dEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2Vy
KTsKLSAgICAgICAgICB2YXIgdGV4dCA9IHRleHRFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
dGV4dCIsICJoZWxsbyB0ZXN0IHdvcmxkIHRlc3QgaGVsbG9cbmxpbmsgdG8gaGVyZVxudGVzdCIp
OwotCi0gICAgICAgICAgdmFyIG5leHRNYXJrZXIgPSB0ZXh0RWxlbWVudC5uZXh0VGV4dE1hcmtl
cihzdGFydE1hcmtlcik7Ci0gICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dEVsZW1lbnQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgbmV4dE1hcmtlcik7Ci0gICAg
ICAgICAgdGV4dCA9IHRleHRFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpOwotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0IiwgIidoJyIpOwotICAgICAgICAg
IHZhciBlbGVtZW50ID0gdGV4dEVsZW1lbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKG5leHRNYXJrZXIpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZWxlbWVudC5pc0VxdWFs
KHRleHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKSkiKTsKLSAgICB9Ci0KLTwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtl
ci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMx
IEBACit0ZXh0CisKK3RleHQxCitjICBkCisKK2Nhbid0IHNlbGVjdAorVGhpcyB0ZXN0cyB0aGUg
bmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJl
Y3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyA0CitQQVNTIHRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRy
dWUKK1BBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2Vy
KS5pc0VxdWFsKHRleHQpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIGlzICcnCitQQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAndCcKK1BBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICcnCitQQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSBpcyAndCcKK1BBU1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRN
YXJrZXJSYW5nZTIpIGlzIDUKK09iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5U
XSBkCitQQVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2QnCitQQVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
JzEnCitQQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2VjdCcKK1BBU1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAnc2VsJworUEFTUyAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dCkgaXMgdHJ1ZQorUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgaXMgdHJ1ZQorUEFTUyB0ZXh0Mi5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5j
aGlsZEF0SW5kZXgoMikpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQt
bWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5l
eHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8c3R5bGU+CisudXNlcnNlbGVjdCB7IHVzZXIt
c2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9Cis8L3N0eWxlPgorPGJv
ZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2Pgor
PGJyPgordGV4dDEKKworPGRpdiBpZD0idGV4dDIiPgorYyA8aW1nIHNyYz0iIyIgYXJpYS1sYWJl
bD0iYmxhaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNhYWFhYWE7IHdpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsiPiBkCis8L2Rpdj4KKworPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0i
cHN3Ij4KKworPGRpdiBjbGFzcz0idXNlcnNlbGVjdCIgaWQ9InRleHQzIj5jYW4ndCBzZWxlY3Q8
L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3By
ZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIp
OworICAgIAorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAg
ICAgCisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9k
ZS4KKyAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOworICAgICAgICAKKyAgICAg
ICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlz
IHJhbmdlLgorICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFu
Z2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIAorICAgICAgICB2YXIg
c3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOworICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlz
RXF1YWwodGV4dCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAg
CisgICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hhcmFjdGVy
cywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQorICAgICAgICB2YXIgY3VycmVudE1hcmtlciA9IHN0
YXJ0TWFya2VyOworICAgICAgICB2YXIgcHJldmlvdXNNYXJrZXIsIG1hcmtlclJhbmdlOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNN
YXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQu
bmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgbWFya2Vy
UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIpOworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIicnIik7CisgICAgICAgIAorICAgICAgICAvLyBBZHZhbmNl
IG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4KKyAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICBjdXJyZW50TWFy
a2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgbWFya2Vy
UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIpOworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sg
cHJldmlvdXMgdGV4dCBtYXJrZXIuIChUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIGNoYXJhY3Rlciwg
aXQgd2lsbCBsYW5kIGF0IDxicj4uKQorICAgICAgICBwcmV2aW91c01hcmtlciA9IHRleHQucHJl
dmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9
IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlcik7CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJyciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRyYXZlcnNl
IGJhY2t3YXJkcyBvbmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBj
aGFyYWN0ZXIgb2YgInRleHQiLgorICAgICAgICBwcmV2aW91c01hcmtlciA9IHRleHQucHJldmlv
dXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHRl
eHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB0aGUg
Y2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKKyAgICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOworICAgICAgICB2YXIg
dGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDIp
OworICAgICAgICBzaG91bGRCZSgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJr
ZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUo
NjU1MzIpLCAiW0FUVEFDSE1FTlRdIik7CisgICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZv
ciByYW5nZTogIiArIHN0cik7CisgICAgICAgIAorICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwor
ICAgICAgICAvLyBBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJkIi4KKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
Mi5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICBtYXJr
ZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIpOworICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRy
YXZlcnNlIGJhY2t3YXJkcyA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBj
aGFyYWN0ZXIgb2YgInRleHQxIi4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKysp
IHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2Vy
KHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2
aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgbWFya2Vy
UmFuZ2UgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyKTsKKyAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CisgICAgICAgIAorICAgICAgICAvLyBDaGVj
ayB0aGUgY2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3Vz
VGV4dE1hcmtlciBzaG91bGQgc3RpbGwgd29yay4KKyAgICAgICAgdmFyIHRleHQzID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOworICAgICAg
ICB0ZXh0MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byBs
YW5kIGF0IHVzZXItc2VsZWN0Om5vbmUgbm9kZS4KKyAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtl
cjI7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTc7IGkrKykgeworICAgICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQzLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAg
ICAgICAgICAgLy8gaSA9PSAxMywgaXQgc2hvdWxkIGxhbmQgb24gImUiLCBhbmQgaSA9PSAxNiwg
aXQgc2hvdWxkIGxhbmQgb24gInQiCisgICAgICAgICAgICBpZiAoaSA9PSAxMykgeworICAgICAg
ICAgICAgICAgIG1hcmtlcjEgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOworICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Cisg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidlY3QnIik7CisgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQg
bWFya2VyIGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0K
KyAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKKyAgICAg
ICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ3NlbCciKTsKKworICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZp
ZWxkLgorICAgICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJwc3ciKTsKKyAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cu
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChwc3cpOworICAgICAgICB2YXIgc3RhcnQgPSBwc3cu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOworICAg
ICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KSIpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgbmV4dC9wcmV2aW91cyB0ZXh0
IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAorICAgICAgICAvLyBXZSBzdGFy
dCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywgaXQgc2hvdWxkIHNraXAgdGhl
IHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9uIHRleHQzLgorICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZTIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAg
ICAgICB9CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7CisgICAgICAgIC8v
IENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUu
CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVu
dE1hcmtlcik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4
KDIpKSIpOworICAgICAgICAKKyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJr
ZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE2IEBACitoZWxsbyB0ZXN0IHdvcmxkIHRlc3QgaGVsbG8KK2xpbmsgdG8gaGVyZQor
dGVzdAorVGhpcyB0ZXN0cyB0aGF0IGFjY2Vzc2liaWxpdHkgdGV4dCBtYXJrZXJzIHN0aWxsIHdv
cmsgZXZlbiB3aGVuIHVzZXItc2VsZWN0Om5vbmUgaXMgc2V0LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlKSBpcyA0NQorUEFTUyB0ZXh0IGlzICJoZWxsbyB0ZXN0IHdvcmxkIHRlc3Qg
aGVsbG9cbmxpbmsgdG8gaGVyZVxudGVzdCIKK1BBU1MgdGV4dCBpcyAnaCcKK1BBU1MgZWxlbWVu
dC5pc0VxdWFsKHRleHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKSkgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVj
dC1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXIt
d2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJ0ZXh0IiBzdHls
ZT0iLXdlYmtpdC11c2VyLXNlbGVjdDpub25lIj4KKworaGVsbG8gdGVzdCA8Yj53b3JsZDwvYj4g
dGVzdCBoZWxsbzxicj4KKzxhIGhyZWY9IiMiPmxpbms8L2E+IHRvIDxhIGhyZWY9IiMiPmhlcmU8
L2E+PGJyPgordGVzdAorCis8L2Rpdj4KKworCisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGFjY2Vzc2liaWxpdHkgdGV4dCBtYXJrZXJzIHN0aWxsIHdvcmsgZXZl
biB3aGVuIHVzZXItc2VsZWN0Om5vbmUgaXMgc2V0LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgdmFyIHRleHRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAg
ICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHRFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQodGV4dEVsZW1lbnQpOworICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0RWxlbWVudC50
ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0NSIpOworCisgICAgICAg
ICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dEVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRl
eHRFbGVtZW50LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdl
KTsKKyAgICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOworICAgICAgICAgIHZhciB0ZXh0
ID0gdGV4dEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
CisgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgImhlbGxvIHRlc3Qgd29y
bGQgdGVzdCBoZWxsb1xubGluayB0byBoZXJlXG50ZXN0Iik7CisKKyAgICAgICAgICB2YXIgbmV4
dE1hcmtlciA9IHRleHRFbGVtZW50Lm5leHRUZXh0TWFya2VyKHN0YXJ0TWFya2VyKTsKKyAgICAg
ICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHN0YXJ0TWFya2VyLCBuZXh0TWFya2VyKTsKKyAgICAgICAgICB0ZXh0ID0gdGV4dEVsZW1l
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAg
c2hvdWxkQmUoInRleHQiLCAiJ2gnIik7CisgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0ZXh0RWxl
bWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobmV4dE1hcmtlcik7CisgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJlbGVtZW50LmlzRXF1YWwodGV4dEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApKSIpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTk1Mjk0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTIzNDYsNiArMjM0Niw5IEBA
IGFjY2Vzc2liaWxpdHkvY29udGVudC1lZGl0YWJsZS1hcy10ZXh0YXIKIHdlYmtpdC5vcmcvYi8x
NDY4ODcgYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVkZXNjcmlwdGlvbi5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTQ2ODg3IGFjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbCBb
IEZhaWx1cmUgXQogCisjIFRleHQgbWFya2VyIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkCit3ZWJr
aXQub3JnL2IvMTUzMjkyIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIgWyBTa2lwIF0KKwogIyBU
aGlzIHRlc3QgaGFyZGNvZGVzIHRoZSByZXN1bHQgb2YgYSBwbGF0Zm9ybS1kZXBlbmRlbnQgZm9u
dCBsb29rdXAgYWxnb3JpdGhtLgogZmFzdC90ZXh0L2ZhbGxiYWNrLWxhbmd1YWdlLWhhbi5odG1s
IFsgU2tpcCBdCiBmYXN0L3RleHQvZmFsbGJhY2stbGFuZ3VhZ2UtaGFuLTIuaHRtbCBbIFNraXAg
XQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlz
aW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDkgQEAgd2Via2l0Lm9yZy9iLzE0OTAxNiBh
Y2Nlc3NpYmlsaXR5L2FyaWEtYwogIyBBUklBIDEuMSB0YWJsZSByZWxhdGVkIGF0dHJpYnV0ZXMg
YXJlIG5vdCBzdXBwb3J0ZWQKIHdlYmtpdC5vcmcvYi8xNDg5NjcgYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYmxlLWF0dHJpYnV0ZXMuaHRtbCBbIFNraXAgXQogCisjIFRleHQgbWFya2VyIHRlc3RzIGFy
ZSBub3Qgc3VwcG9ydGVkCit3ZWJraXQub3JnL2IvMTUzMjkyIGFjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIgWyBTa2lwIF0KKwogIyBXZWJLaXRHVEsrIG5lZWRzIFdPRkYyIHN1cHBvcnQuCiB3ZWJr
aXQub3JnL2IvMTUyNjE2IGZhc3QvdGV4dC93b2ZmMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjc2NCw2
ICsyNzY0LDkgQEAgd2Via2l0Lm9yZy9iLzE0OTI5NyBhY2Nlc3NpYmlsaXR5L2FyaWEtYwogIyBF
bmFibGUgImFyaWEtdGFibGUtYXR0cmlidXRlcyIgdGVzdCBmb3IgaU9TCiB3ZWJraXQub3JnL2Iv
MTUwMzY2IGFjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwgWyBQYXNzIF0K
IAorIyBFbmFibGUgVGV4dCBtYXJrZXIgdGVzdHMgZm9yIGlPUword2Via2l0Lm9yZy9iLzE1MzI5
MiBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyIFsgUGFzcyBdCisKICMgTW9yZSBmbGFreSB0ZXN0
cyAoU2VwdCAxOCwgMjAxNSkKIAogZmFzdC9mb3Jtcy9zZWxlY3QtZWxlbWVudC1mb2N1cy1yaW5n
Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NTI5NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xNzE4LDYgKzE3MTgsOSBA
QCB3ZWJraXQub3JnL2IvMTQ2OTAzIGFjY2Vzc2liaWxpdHkvcm9sZXMtCiB3ZWJraXQub3JnL2Iv
MTM4NTY2IGFjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTM4NTY2IGFjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLmh0bWwg
WyBTa2lwIF0KIAorIyBUZXh0IG1hcmtlciB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZAord2Via2l0
Lm9yZy9iLzE1MzI5MiBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyIFsgU2tpcCBdCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIEVuZCBBY2Nlc3Np
YmlsaXR5IElzc3VlcyAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMK
</data>

          </attachment>
      

    </bug>

</bugzilla>