<?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>143183</bug_id>
          
          <creation_ts>2015-03-28 02:32:54 -0700</creation_ts>
          <short_desc>[ES6] Implement tagged templates</short_desc>
          <delta_ts>2015-05-21 02:13:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142691</dependson>
    
    <dependson>144330</dependson>
    
    <dependson>145013</dependson>
    
    <dependson>145019</dependson>
    
    <dependson>145248</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080930</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-28 02:32:54 -0700</bug_when>
    <thetext>Implement tagged templates, like

String.raw`Hello ${world}`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093393</commentid>
    <comment_count>1</comment_count>
      <attachid>252767</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-08 21:22:07 -0700</bug_when>
    <thetext>Created attachment 252767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094615</commentid>
    <comment_count>2</comment_count>
      <attachid>252767</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-05-13 15:27:15 -0700</bug_when>
    <thetext>Comment on attachment 252767
Patch

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

r-, but literally just for the tweaks mentioned above.

&gt; Source/JavaScriptCore/parser/Parser.h:781
&gt; +    template &lt;class TreeBuilder&gt; NEVER_INLINE typename TreeBuilder::TemplateLiteral parseTemplateLiteral(TreeBuilder&amp;, bool shouldBuildRawStrings);

Can you replace this bool with a clearly named enum? In general we&apos;ve shied away from opaque bool parameters as you can&apos;t necessarily tells what&apos;s going on -- especially in the earlier call &apos;parseTemplateLiteral(context, false)

Overall it looks good though.

&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:85
&gt; +        TemplateStringResult, TemplateStringListResult, TemplateExpressionListResult, TemplateExpr, TaggedTemplateExpr

i&apos;d split the line at this point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094774</commentid>
    <comment_count>3</comment_count>
      <attachid>253114</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 01:48:10 -0700</bug_when>
    <thetext>Created attachment 253114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094775</commentid>
    <comment_count>4</comment_count>
      <attachid>252767</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 01:53:23 -0700</bug_when>
    <thetext>Comment on attachment 252767
Patch

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

Thank you for your review :D

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:781
&gt;&gt; +    template &lt;class TreeBuilder&gt; NEVER_INLINE typename TreeBuilder::TemplateLiteral parseTemplateLiteral(TreeBuilder&amp;, bool shouldBuildRawStrings);
&gt; 
&gt; Can you replace this bool with a clearly named enum? In general we&apos;ve shied away from opaque bool parameters as you can&apos;t necessarily tells what&apos;s going on -- especially in the earlier call &apos;parseTemplateLiteral(context, false)
&gt; 
&gt; Overall it looks good though.

Make sense! OK, I&apos;ve introduced enum class RawStringsBuildMode { BuildRawStrings, DontBuildRawStrings }.

&gt;&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:85
&gt;&gt; +        TemplateStringResult, TemplateStringListResult, TemplateExpressionListResult, TemplateExpr, TaggedTemplateExpr
&gt; 
&gt; i&apos;d split the line at this point

Splitted into 

TemplateStringResult, TemplateStringListResult,
TemplateExpressionListResult, TemplateExpr,
TaggedTemplateExpr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094816</commentid>
    <comment_count>5</comment_count>
      <attachid>253114</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-14 09:09:23 -0700</bug_when>
    <thetext>Comment on attachment 253114
Patch

Clearing flags on attachment: 253114

Committed r184337: &lt;http://trac.webkit.org/changeset/184337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094817</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-14 09:09:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094856</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-14 11:45:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 253114 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 253114
&gt; 
&gt; Committed r184337: &lt;http://trac.webkit.org/changeset/184337&gt;

It caused zillion failures on the debug bots. Don&apos;t 
you watch the bots after landing patches? You should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094857</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 11:46:47 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 253114 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 253114
&gt; &gt; 
&gt; &gt; Committed r184337: &lt;http://trac.webkit.org/changeset/184337&gt;
&gt; 
&gt; It caused zillion failures on the debug bots. Don&apos;t 
&gt; you watch the bots after landing patches? You should.

Ah, currently investigating...... Sorry for troubling you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094861</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 12:01:08 -0700</bug_when>
    <thetext>Opened https://bugs.webkit.org/show_bug.cgi?id=145013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094892</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 13:44:45 -0700</bug_when>
    <thetext>debug builds become green.
Now investigating EFL builld failures in ARM builds.
https://build.webkit.org/builders/EFL%20Linux%20ARMv7%20Thumb2%20Release?numbuilds=25</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094898</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 14:03:30 -0700</bug_when>
    <thetext>Opened for EFL ARM build failures. https://bugs.webkit.org/show_bug.cgi?id=145019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094964</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-14 16:53:42 -0700</bug_when>
    <thetext>Green comes back.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252767</attachid>
            <date>2015-05-08 21:22:07 -0700</date>
            <delta_ts>2015-05-14 01:48:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143183-20150509132048.patch</filename>
            <type>text/plain</type>
            <size>87178</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDk1OTBhYzI2ZjUzM2UwYTYxNTQxNDc3MTMxYzZiYzFjODQ1YzUwLi4xYzkzODg1ODA2NzU4ZDIy
ZGU4MDkwNjg0M2ZiNWIyNDhkMmE0YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDUtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IHRhZ2dlZCB0ZW1wbGF0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBFUzYgdGFnZ2VkIHRlbXBsYXRlcy4KKyAgICAgICAgSW4gdGFnZ2VkIHRlbXBsYXRl
cywgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSB0ZW1wbGF0ZSBvYmplY3QuCisKKyAgICAgICAgVGhl
IHRlbXBsYXRlIG9iamVjdCBjb250YWlucyB0aGUgcmF3IGFuZCBjb29rZWQgdGVtcGxhdGUgc3Ry
aW5ncywKKyAgICAgICAgc28gd2hlbiBwYXJzaW5nIHRoZSB0YWdnZWQgdGVtcGxhdGVzLCB3ZSBu
ZWVkIHRvIHRva2VuaXplIHRoZSByYXcgYW5kIGNvb2tlZCBzdHJpbmdzLgorICAgICAgICBXaGls
ZSB0YWdnZWQgdGVtcGxhdGVzIHJlcXVpcmUgdGhlIGJvdGggc3RyaW5ncywgdGhlIHRlbXBsYXRl
IGxpdGVyYWwgb25seSByZXF1aXJlcworICAgICAgICB0aGUgY29va2VkIHN0cmluZ3MuIFNvIHdo
ZW4gdG9rZW5pemluZyB1bmRlciB0aGUgdGVtcGxhdGUgbGl0ZXJhbCBjb250ZXh0LAorICAgICAg
ICB3ZSBvbmx5IGJ1aWxkcyB0aGUgY29va2VkIHN0cmluZ3MuCisKKyAgICAgICAgQXMgcGVyIEVT
NiBzcGVjLCB0aGUgdGVtcGxhdGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgcmF3IHN0cmluZ3MgYXJl
IHNoYXJlZCBpbiB0aGUgc2FtZSByZWFsbS4KKyAgICAgICAgVGhlIHRlbXBsYXRlIG9iamVjdHMg
aXMgY2FjaGVkLiBBbmQgZXZlcnkgdGltZSB3ZSBldmFsdWF0ZSB0aGUgc2FtZSB0YWdnZWQgdGVt
cGxhdGVzLAorICAgICAgICB0aGUgc2FtZSAoY2FjaGVkKSB0ZW1wbGF0ZSBvYmplY3RzIGFyZSB1
c2VkLgorICAgICAgICBTaW5jZSB0aGUgc3BlYyBmcmVlemVzIHRoaXMgdGVtcGxhdGUgb2JqZWN0
cyBjb21wbGV0ZWx5LAorICAgICAgICB3ZSBjYW5ub3QgYXR0YWNoIHNvbWUgcHJvcGVydGllcyB0
byBpdC4KKyAgICAgICAgU28gd2UgY2FuIHNheSB0aGF0IGl0IGJlaGF2ZXMgYXMgaWYgdGhlIHRl
bXBsYXRlIG9iamVjdHMgYXJlIHRoZSBwcmltaXRpdmUgdmFsdWVzIChsaWtlIEpTU3RyaW5nKS4K
KyAgICAgICAgU2luY2Ugd2UgY2Fubm90IGF0dGFjaCBwcm9wZXJ0aWVzLCB0aGUgb25seSB3YXkg
dG8gdGVzdCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRlbXBsYXRlIG9iamVjdCBpcyBjb21wYXJpbmcu
ICg9PT0pCisgICAgICAgIEFzIHRoZSByZXN1bHQsIHdoZW4gdGhlcmUgaXMgbm8gcmVmZXJlbmNl
IHRvIHRoZSB0ZW1wbGF0ZSBvYmplY3QsIHdlIGNhbiBnYXJiYWdlIGNvbGxlY3QgaXQKKyAgICAg
ICAgYmVjYXVzZSB0aGUgdXNlciBoYXMgbm8gd2F5IHRvIHRlc3QgdGhhdCB0aGUgbmV3bHkgY3Jl
YXRlZCB0ZW1wbGF0ZSBvYmplY3QgZG9lcyBub3QgZXF1YWwKKyAgICAgICAgdG8gdGhlIGFscmVh
ZHkgY29sbGVjdGVkIHRlbXBsYXRlIG9iamVjdC4KKworICAgICAgICBTbywgdG8gaW1wbGVtZW50
IHRhZ2dlZCB0ZW1wbGF0ZXMsIHdlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMu
CisKKyAgICAgICAgMS4gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5CisgICAgICAgIEl0IGhvbGRzIHRo
ZSB0ZW1wbGF0ZSByZWdpc3RyeSBrZXkgYW5kIGl0IGRvZXMgbm90IGV4cG9zZWQgdG8gdXNlcnMu
CisgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkgaG9sZHMgdGhlIHZlY3RvciBvZiByYXcgYW5k
IGNvb2tlZCBzdHJpbmdzIHdpdGggdGhlIHByZS1jb21wdXRlZCBoYXNoIHZhbHVlLgorICAgICAg
ICBXaGVuIG9idGFpbmluZyB0aGUgdGVtcGxhdGUgb2JqZWN0IGZvciB0aGUgKHN0YXRpY2FsbHks
IGEuay5hLiBhdCB0aGUgcGFyc2luZyB0aW1lKSBnaXZlbiByYXcgc3RyaW5nIHZlY3RvcnMsCisg
ICAgICAgIHdlIHVzZSB0aGlzIEpTVGVtcGxhdGVSZWdpc3RyeUtleSBhcyBhIGtleSB0byB0aGUg
bWFwIGFuZCBsb29rIHVwIHRoZSB0ZW1wbGF0ZSBvYmplY3QgZnJvbQorICAgICAgICBUZW1wbGF0
ZVJlZ2lzdHJ5LgorICAgICAgICBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgaXMgY3JlYXRlZCBhdCB0
aGUgYnl0ZWNvZGUgY29tcGlsaW5nIHRpbWUgYW5kCisgICAgICAgIHN0b3JlZCBpbiB0aGUgQ29k
ZUJsb2NrIGFzIGxpa2UgYXMgSlNTdHJpbmcgY29udGVudCB2YWx1ZXMuCisKKyAgICAgICAgMi4g
VGVtcGxhdGVSZWdpc3RyeQorICAgICAgICBUaGlzIG1hbmFnZXMgdGhlIGNhY2hlZCB0ZW1wbGF0
ZSBvYmplY3RzLgorICAgICAgICBJdCBob2xkcyB0aGUgd2VhayBtYXAgKEpTVGVtcGxhdGVSZWdp
c3RyeUtleSAtPiB0aGUgdGVtcGxhdGUgb2JqZWN0KS4KKyAgICAgICAgVGhlIHRlbXBsYXRlIG9i
amVjdCBpcyB3ZWFrbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgU28gaWYgdGhlcmUgaXMgbm8gcmVm
ZXJlbmNlIHRvIHRoIHRlbXBsYXRlIG9iamVjdCwKKyAgICAgICAgdGhlIHRlbXBsYXRlIG9iamVj
dCBpcyBhdXRvbWF0aWNhbGx5IEdDLWVkLgorICAgICAgICBXaGVuIGxvb2tpbmcgdXAgdGhlIHRl
bXBsYXRlIG9iamVjdCwgaXQgc2VhcmNoZXMgdGhlIGNhY2hlZCB0ZW1wbGF0ZSBvYmplY3QuCisg
ICAgICAgIElmIGl0IGlzIGZvdW5kLCBpdCBpcyByZXR1cm5lZCB0byB0aGUgdXNlcnMuCisgICAg
ICAgIElmIHRoZXJlIGlzIG5vIGNhY2hlZCB0ZW1wbGF0ZSBvYmplY3RzLCBpdCBjcmVhdGVzIHRo
ZSBuZXcgdGVtcGxhdGUgb2JqZWN0IGFuZAorICAgICAgICBzdG9yZXMgaXQgd2l0aCB0aGUgZ2l2
ZW4gdGVtcGxhdGUgcmVnaXN0cnkga2V5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0VGVtcGxhdGVPYmpl
Y3QpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUYWdnZWRU
ZW1wbGF0ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlTGl0ZXJh
bE5vZGU6OmVtaXRCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGFnZ2VkVGVtcGxhdGUpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVUZW1wbGF0ZUxpdGVyYWwpOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpz
ZXRDb2RlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpz
Y2FuVHJhaWxpbmdUZW1wbGF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpjbGVh
cik6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpt
YWtlRW1wdHlJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
OgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OlRhZ2dlZFRlbXBsYXRlTm9kZSk6
CisgICAgICAgIChKU0M6OlRlbXBsYXRlTGl0ZXJhbE5vZGU6OlRlbXBsYXRlTGl0ZXJhbE5vZGUp
OiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpUZW1w
bGF0ZUxpdGVyYWxOb2RlOjp0ZW1wbGF0ZVN0cmluZ3MpOgorICAgICAgICAoSlNDOjpUZW1wbGF0
ZUxpdGVyYWxOb2RlOjp0ZW1wbGF0ZUV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6VGFnZ2Vk
VGVtcGxhdGVOb2RlOjp0ZW1wbGF0ZUxpdGVyYWwpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUZW1wbGF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRlbXBsYXRlTGl0ZXJh
bCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
c2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXJBcmVuYS5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VFbXB0eUlkZW50
aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRhZ2dlZFRlbXBsYXRlKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlVGVtcGxhdGVMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldFRlbXBsYXRlT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRlbXBsYXRlUmVnaXN0cnkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkpTVGVtcGxhdGVSZWdpc3RyeUtleTo6SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KToKKyAgICAgICAg
KEpTQzo6SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Rl
bXBsYXRlUmVnaXN0cnlLZXk6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAg
ICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxh
dGVSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5OjpU
ZW1wbGF0ZVJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeTo6Z2V0VGVt
cGxhdGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAg
KEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6
VGVtcGxhdGVSZWdpc3RyeUtleTo6aGFzaCk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlUmVnaXN0
cnlLZXk6OnJhd1N0cmluZ3MpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojpj
b29rZWRTdHJpbmdzKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6Om9wZXJhdG9yIT0pOgor
ICAgICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpIYXNoZXI6Omhhc2gpOgorICAgICAg
ICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpIYXNoZXI6OmVxdWFsKToKKyAgICAgICAgKEpT
Qzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6VGVtcGxhdGVSZWdpc3RyeUtleSk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLWlkZW50aXR5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
dGFnZ2VkLXRlbXBsYXRlcy1yYXctc3RyaW5ncy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICh0YWcpOgorICAgICAgICAodGVzdEV2YWwpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXN5bnRheC5qczogQWRkZWQuCisgICAgICAgICh0YWcp
OgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXRlbXBsYXRlLW9iamVjdC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0YWcpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGFnKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFnZ2VkLXRl
bXBsYXRlcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChyYXcpOgor
ICAgICAgICAoY29va2VkKToKKyAgICAgICAgKENvdW50ZXIpOgorCiAyMDE1LTA1LTA4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFwRGF0YUltcGw6OmFkZCgp
IHNob3VsZG4ndCBkbyB0aGUgc2FtZSBoYXNoIGxvb2t1cCB0d2ljZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OGM5OTdiZWM2OWY1YTM2ZGUzNzU1MTdjNzIyYjIwMWY3
MTQ1YzAzLi42NGJkNjVmN2NmM2M3Y2I5Y2JlZTE2ZmFjZWQxMDQzNzE0YzM5ZDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MTEsNiArNTExLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5j
cHAKICAgICBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAogICAgIHJ1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAKICAg
ICBydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKICAgICBydW50aW1lL0pTVHlw
ZWRBcnJheVByb3RvdHlwZXMuY3BwCiAgICAgcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcApAQCAt
NTc4LDYgKzU3OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBy
dW50aW1lL1N5bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3Ry
eS5jcHAKICAgICBydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBydW50aW1lL1R5cGVM
b2NhdGlvbkNhY2hlLmNwcAogICAgIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYTU1NWFlOTVhM2VkYjg4YmIxNjRjNjBj
NDQ3YjNiNzVkYjViZjUxNy4uY2ZjZTVhMTc4OTllNGQ1NjU0ZThmZjcwOThmYjdlMmE0MWUwMGQy
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03NzAsNiArNzcw
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRv
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSm9p
bmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
VGVtcGxhdGVSZWdpc3RyeUtleS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1R5cGVkQXJyYXlzLmNwcCIgLz4KQEAgLTgz
OCw2ICs4MzksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xQ
cm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1i
b2xUYWJsZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFRlbXBs
YXRlUmVnaXN0cnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxU
ZXN0UnVubmVyVXRpbHMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxUeXBlZEFycmF5Q29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFR5cGVkQXJyYXlUeXBlLmNwcCIgLz4KQEAgLTE1ODksNiArMTU5MSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSXRlcmF0b3IuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdKb2luZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTeW1ib2xUYWJsZU9iamVjdC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZUluZm8uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlZEFycmF5Q29uc3RydWN0
b3JzLmgiIC8+CkBAIC0xNjgyLDYgKzE2ODUsOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTeW1ib2xPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcU3ltYm9sUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN5bWJvbFRhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFRlbXBsYXRlUmVnaXN0cnkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVGVtcGxhdGVSZWdpc3RyeUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVHJhY2luZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxUb05hdGl2ZUZyb21WYWx1ZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDRlMmE5NzU0ZGJkNTUwMTI3YTFkZjM3
ZTFkOTQyMzQ4OWJiMDJhMDguLjZhOTY5YTFiMzRlNTg0NTdkYmMxODU3NWRiZDY2MjIwMWJlODhl
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKQEAgLTcxMSw2ICs3MTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNFbnZpcm9ubWVudFJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC04NzksNiArODgyLDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxUZW1wbGF0ZVJlZ2lzdHJ5LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcVHlwZUxvY2F0aW9uQ2FjaGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjc2OCw2ICsyNzc0LDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTeW1ib2xUYWJsZU9iamVjdC5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yOTU3LDYgKzI5NjYsMTIgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVGVtcGxhdGVSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFRy
YWNpbmcuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWYwNGYzNTc5MzgxNWExM2UyYTE5
MTE1YjVmNGI3YTZjMDkxOTBkMy4uMDAxYjc5ZTFlNjljNWU1NmYzYTIzYzE2Y2E4OWQxZjhjNDBh
NDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMDQsNiArMTAwNCwxMSBA
QAogCQk3MEVDMEVDNTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBF
QkYxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDMEVDNjFBQTBE
N0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQzAxQUEwRDdEQTAwQjZBQUZB
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBFQzBFQzcxQUEwRDdE
QTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVDMTFBQTBEN0RBMDBCNkFBRkEgLyog
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MEVDQTYwNTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwRUNBNjAwMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXku
Y3BwICovOyB9OworCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBFQ0E2MDcxQUZE
QkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnkuY3BwICovOyB9OworCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEVDQTYw
OTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNl
RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMDA4Q0QwMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICov
OyB9OwogCQk3QzAwOENEMzE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMTE4
NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDREExODcxMjRCQjAwOTU1QzI0
IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZl
cnJlZC5jcHAgKi87IH07CkBAIC0yNzM5LDYgKzI3NDQsMTEgQEAKIAkJNzBFQzBFQkYxQUEwRDdE
QTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MEVDMEVDMTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEVDQTYwMjFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0QwMTg2
RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEpTUHJvbWlzZUZ1bmN0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk3QzAwOENEMTE4NkY4QTkzMDA5NTVDMjQgLyog
SlNQcm9taXNlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UHJvbWlzZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENE
ODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDU2Nyw2ICs0NTc3LDggQEAKIAkJCQkyNjAwQjVBNTE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLywKIAkJCQkwRjkxOUQwOTE1N0VFMDlE
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8sCiAJCQkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLywKKwkJCQk3MEVDQTYwMDFB
RkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcCAqLywKKwkJCQk3MEVD
QTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8sCiAJCQkJ
MTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovLAogCQkJCTBGMkI2NkNDMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwICovLAogCQkJCTBG
MkI2NkNEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCAqLywK
QEAgLTQ3MjksNiArNDc0MSw5IEBACiAJCQkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5
bWJvbFByb3RvdHlwZS5oICovLAogCQkJCTBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1i
b2xUYWJsZS5jcHAgKi8sCiAJCQkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRh
YmxlLmggKi8sCisJCQkJNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0
cnkuY3BwICovLAorCQkJCTcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lz
dHJ5LmggKi8sCisJCQkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0
cnlLZXkuaCAqLywKIAkJCQkwRkEyQzE3OTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0
aWxzLmNwcCAqLywKIAkJCQkwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0
aWxzLmggKi8sCiAJCQkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZh
bHVlLmggKi8sCkBAIC01NzAwLDYgKzU3MTUsNyBAQAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4
MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVC
bG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8q
IENvZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4
OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyODcsNiArNjMw
Myw3IEBACiAJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5OTUwMDA2Q0VCQ0MgLyogQ29k
ZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjIwMTZE
MDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lu
cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0QwMjE5QURBNDExMDA2QUM3MkEgLyogREZH
TmFpdmVEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKQEAgLTYzNzEsNiArNjM4OCw3IEBACiAJ
CQkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NUIwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM1MkMwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBs
YXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkM0MEUxNzA2QTcwMDJD
N0U4MiAvKiBSZWdFeHBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVEMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkIw
RUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovLApAQCAtNzEzMiw2
ICs3MTUwLDcgQEAKIAkJCQkwRkQ4QTMyNTE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlw
b2ludENyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1MDY4NjcxQUUyNUUy
ODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3MEVDQTYwNzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjIzNUJFQjE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0Njk0M0Iw
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03NDg2LDYgKzc1MDUsNyBAQAogCQkJCTBGQjEwNThEMTY3NTQ4MzcwMEY4QUI2RSAvKiBQcm9m
aWxlck9TUkV4aXRTaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0Ew
MDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzBFQ0E2MDUxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVS
ZWdpc3RyeUtleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNzEwN0VDN0U3MDA2NTA0
NDYgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgx
MDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
REUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggYzNjZTg3NTU5MWEzMjlmNzNlYTVkYjI2MDZiZjU2Njk4
YTI1ZjFhNi4uNDViNmI5MTViOTdiNGJhYmU4MzYyZDA2Y2YyOTk1OGMwYmEwNjkyZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5o
IgorI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgpAQCAtMTY5Myw2ICsxNjk0LDE2IEBAIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICByZXR1
cm4gc3RyaW5nSW5NYXA7CiB9CiAKK0pTVGVtcGxhdGVSZWdpc3RyeUtleSogQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChjb25zdCBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KQoreworICAgIEpTVGVtcGxhdGVSZWdpc3RyeUtl
eSomIHRlbXBsYXRlUmVnaXN0cnlLZXlJbk1hcCA9IG1fdGVtcGxhdGVSZWdpc3RyeUtleU1hcC5h
ZGQodGVtcGxhdGVSZWdpc3RyeUtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlm
ICghdGVtcGxhdGVSZWdpc3RyeUtleUluTWFwKSB7CisgICAgICAgIHRlbXBsYXRlUmVnaXN0cnlL
ZXlJbk1hcCA9IEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlKCp2bSgpLCB0ZW1wbGF0ZVJl
Z2lzdHJ5S2V5KTsKKyAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5
SW5NYXApOworICAgIH0KKyAgICByZXR1cm4gdGVtcGxhdGVSZWdpc3RyeUtleUluTWFwOworfQor
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQq
IGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbnRzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAjaWYgIUFT
U0VSVF9ESVNBQkxFRApAQCAtMjc3Myw2ICsyNzg0LDMzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVz
c2lvCiAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRh
Z2dlZFRlbXBsYXRlTm9kZSogdGFnZ2VkVGVtcGxhdGUpCit7CisgICAgVGVtcGxhdGVSZWdpc3Ry
eUtleTo6U3RyaW5nVmVjdG9yIHJhd1N0cmluZ3M7CisgICAgVGVtcGxhdGVSZWdpc3RyeUtleTo6
U3RyaW5nVmVjdG9yIGNvb2tlZFN0cmluZ3M7CisKKyAgICBUZW1wbGF0ZVN0cmluZ0xpc3ROb2Rl
KiB0ZW1wbGF0ZVN0cmluZyA9IHRhZ2dlZFRlbXBsYXRlLT50ZW1wbGF0ZUxpdGVyYWwoKS0+dGVt
cGxhdGVTdHJpbmdzKCk7CisgICAgZm9yICg7IHRlbXBsYXRlU3RyaW5nOyB0ZW1wbGF0ZVN0cmlu
ZyA9IHRlbXBsYXRlU3RyaW5nLT5uZXh0KCkpIHsKKyAgICAgICAgcmF3U3RyaW5ncy5hcHBlbmQo
dGVtcGxhdGVTdHJpbmctPnZhbHVlKCktPnJhdygpLmltcGwoKSk7CisgICAgICAgIGNvb2tlZFN0
cmluZ3MuYXBwZW5kKHRlbXBsYXRlU3RyaW5nLT52YWx1ZSgpLT5jb29rZWQoKS5pbXBsKCkpOwor
ICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXRUZW1wbGF0ZU9iamVjdCA9IG51bGxw
dHI7CisgICAgVmFyaWFibGUgdmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmdldFRlbXBs
YXRlT2JqZWN0UHJpdmF0ZU5hbWUpOworICAgIGlmIChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5s
b2NhbCgpKQorICAgICAgICBnZXRUZW1wbGF0ZU9iamVjdCA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFy
eSgpLCBsb2NhbCk7CisgICAgZWxzZSB7CisgICAgICAgIGdldFRlbXBsYXRlT2JqZWN0ID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IG5ld1RlbXBv
cmFyeSgpOworICAgICAgICBtb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKHNjb3BlLmdldCgpLCBl
bWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKKyAgICAgICAgZW1pdEdldEZyb21T
Y29wZShnZXRUZW1wbGF0ZU9iamVjdC5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5v
dEZvdW5kKTsKKyAgICB9CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhpcywgbnVs
bHB0cik7CisgICAgZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBKU1ZhbHVlKGFk
ZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChUZW1wbGF0ZVJlZ2lzdHJ5S2V5KHJhd1N0cmlu
Z3MsIGNvb2tlZFN0cmluZ3MpKSkpOworICAgIHJldHVybiBlbWl0Q2FsbChkc3QsIGdldFRlbXBs
YXRlT2JqZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgdGFnZ2VkVGVt
cGxhdGUtPmRpdm90KCksIHRhZ2dlZFRlbXBsYXRlLT5kaXZvdFN0YXJ0KCksIHRhZ2dlZFRlbXBs
YXRlLT5kaXZvdEVuZCgpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRFbnVtZXJhYmxlTGVuZ3RoKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkK
IHsKICAgICBlbWl0T3Bjb2RlKG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggYjgxNTYzMjAwOWNkOGZkY2ZlNDljZGIzYzZiMzEwOTIxY2ZjYmE3YS4uOTQ0NDJiYTQ5
MGEyZDdmZjMxZmMxYWFiYjU5OWZkYzZmNWQxOTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNs
dWRlICJTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgiCisjaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3Ry
eUtleS5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgpAQCAtNTUsNiArNTYsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZGVudGlmaWVyOworICAgIGNsYXNzIEpTVGVtcGxhdGVSZWdpc3RyeUtleTsKIAogICAgIGVudW0g
RXhwZWN0ZWRGdW5jdGlvbiB7CiAgICAgICAgIE5vRXhwZWN0ZWRGdW5jdGlvbiwKQEAgLTQ5OCw2
ICs1MDAsNyBAQAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25l
ZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOwogCiAgICAgICAgIHZvaWQgZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJl
c3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2spOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0VGVtcGxhdGVPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBUYWdnZWRUZW1wbGF0ZU5v
ZGUqKTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJ
RCogc3JjKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEVuZChSZWdpc3RlcklEKiBzcmMpIHsg
cmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3BfZW5kLCBzcmMpOyB9CkBAIC02MTksNiArNjIyLDcg
QEAKIAogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPiBOdW1iZXJNYXA7
CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlm
aWVyUmVwSGFzaD4gSWRlbnRpZmllclN0cmluZ01hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PFRlbXBsYXRlUmVnaXN0cnlLZXksIEpTVGVtcGxhdGVSZWdpc3RyeUtleSo+IFRlbXBsYXRlUmVn
aXN0cnlLZXlNYXA7CiAgICAgICAgIAogICAgICAgICAvLyBIZWxwZXIgZm9yIGVtaXRDYWxsKCkg
YW5kIGVtaXRDb25zdHJ1Y3QoKS4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBzZXQgb2YKICAgICAg
ICAgLy8gZXhwZWN0ZWQgZnVuY3Rpb25zIGhhdmUgaWRlbnRpY2FsIGJlaGF2aW9yIGZvciBib3Ro
IGNhbGwgYW5kIGNvbnN0cnVjdApAQCAtNjczLDYgKzY3Nyw3IEBACiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIEpTVGVtcGxhdGVSZWdpc3RyeUtleSogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0
YW50KGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmKTsKIAogICAgICAgICBWZWN0b3I8VW5saW5r
ZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7
IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogCkBAIC03NjIsNiArNzY3LDcgQEAKICAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uLCB1bnNpZ25l
ZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoLCBFbmNvZGVkSlNWYWx1ZVdp
dGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7CiAgICAgICAgIEpTVmFsdWVN
YXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFw
OworICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1h
cDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplciB7ICZtX2luc3RydWN0aW9ucyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMzliMDNjZGRjZmIyMzEwMzM0
YTFkNjNjODNmOGYzODUzZDE2YzZmYy4uNjkzMDUwYzMxYWNiZjgzMDMxMmE3NDhlOGMzMTk1M2U3
NzVhNDcxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtNDAsMTIgKzQwLDE0IEBACiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1
ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNs
dWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJTdGFja0FsaWdubWVudC5oIgorI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC0yNjAsNiArMjYyLDY0IEBA
IFJlZ2lzdGVySUQqIFRlbXBsYXRlTGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRTdHJj
YXQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB0ZW1wb3JhcnlSZWdpc3RlcnNbMF0u
Z2V0KCkpLCB0ZW1wb3JhcnlSZWdpc3RlcnNbMF0uZ2V0KCksIHRlbXBvcmFyeVJlZ2lzdGVycy5z
aXplKCkpOwogfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGFnZ2VkVGVt
cGxhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlZ2lzdGVy
SUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVj
dGVkRnVuY3Rpb24gPSBOb0V4cGVjdGVkRnVuY3Rpb247CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRhZyA9IG51bGxwdHI7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBudWxscHRyOwor
ICAgIGlmICghbV90YWctPmlzTG9jYXRpb24oKSkgeworICAgICAgICB0YWcgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX3RhZyk7CisgICAgfSBlbHNlIGlm
IChtX3RhZy0+aXNSZXNvbHZlTm9kZSgpKSB7CisgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZl
ID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX3RhZyk7CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7CisgICAgICAgIGV4cGVj
dGVkRnVuY3Rpb24gPSBnZW5lcmF0b3IuZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIoaWRl
bnRpZmllcik7CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkK
KyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGxvY2FsKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworCisgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3Rh
cnQoKSArIGlkZW50aWZpZXIubGVuZ3RoKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGJhc2UuZ2V0KCksIHZhcikpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUodGFnLmdldCgpLCBiYXNlLmdldCgpLCB2YXIsIFRocm93
SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fdGFnLT5pc0JyYWNrZXRB
Y2Nlc3Nvck5vZGUoKSkgeworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0g
c3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fdGFnKTsKKyAgICAgICAgYmFzZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJyYWNrZXQtPmJh
c2UoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5l
bWl0Tm9kZShicmFja2V0LT5zdWJzY3JpcHQoKSk7CisgICAgICAgIHRhZyA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0
eS5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fdGFnLT5pc0RvdEFjY2Vz
c29yTm9kZSgpKTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxE
b3RBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CisgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBkb3QtPmJhc2UoKSk7CisgICAgICAgIHRhZyA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0
KCksIGRvdC0+aWRlbnRpZmllcigpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGVtcGxhdGVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdGhpcyk7CisKKyAgICB1bnNpZ25lZCBleHByZXNzaW9uc0NvdW50
ID0gMDsKKyAgICBmb3IgKFRlbXBsYXRlRXhwcmVzc2lvbkxpc3ROb2RlKiB0ZW1wbGF0ZUV4cHJl
c3Npb24gPSBtX3RlbXBsYXRlTGl0ZXJhbC0+dGVtcGxhdGVFeHByZXNzaW9ucygpOyB0ZW1wbGF0
ZUV4cHJlc3Npb247IHRlbXBsYXRlRXhwcmVzc2lvbiA9IHRlbXBsYXRlRXhwcmVzc2lvbi0+bmV4
dCgpKQorICAgICAgICArK2V4cHJlc3Npb25zQ291bnQ7CisKKyAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAxICsgZXhwcmVzc2lvbnNDb3VudCk7Cisg
ICAgaWYgKGJhc2UpCisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXggPSAwOworICAgIGdlbmVyYXRvci5lbWl0TW92ZShj
YWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCsrKSwgdGVtcGxhdGVP
YmplY3QuZ2V0KCkpOworICAgIGZvciAoVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRlbXBs
YXRlRXhwcmVzc2lvbiA9IG1fdGVtcGxhdGVMaXRlcmFsLT50ZW1wbGF0ZUV4cHJlc3Npb25zKCk7
IHRlbXBsYXRlRXhwcmVzc2lvbjsgdGVtcGxhdGVFeHByZXNzaW9uID0gdGVtcGxhdGVFeHByZXNz
aW9uLT5uZXh0KCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLmFy
Z3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCsrKSwgdGVtcGxhdGVFeHByZXNzaW9uLT52YWx1
ZSgpKTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCB0YWcuZ2V0KCkpLCB0YWcuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cit9CiAjZW5k
aWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKaW5kZXggZWYzMTlhMTg1ZWM2ODgxZDk4MDIyYmUwZTc3MmQwNTBmMTg3
NzI2OS4uY2QwYTc0NjlkNTUwN2YyNDM0ZTUxZWNmZTBlNjJiOGM0OGE3MWY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTI4OCw2ICsyODgsMTMgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBUZW1wbGF0ZUxpdGVyYWxOb2RlKGxvY2F0aW9uLCB0ZW1wbGF0ZVN0cmluZ0xpc3QsIHRl
bXBsYXRlRXhwcmVzc2lvbkxpc3QpOwogICAgIH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVUYWdnZWRUZW1wbGF0ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgVGVtcGxhdGVMaXRlcmFsTm9kZSogdGVtcGxhdGVMaXRlcmFsLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICB7CisgICAgICAgIGF1dG8gbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgVGFnZ2VkVGVtcGxhdGVOb2RlKGxvY2F0aW9uLCBiYXNlLCB0ZW1wbGF0
ZUxpdGVyYWwpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KICNlbmRpZgogCiAgICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAppbmRleCA5NmViN2FhYjIzOWEzODZkMDdmNjBkYmE3NGU2ZmFkMWZhNmNkMzdhLi5mZTYx
ZWZhMzgzZGU2ZWRlYjYwY2FiYWRhODVjOWFlZjU1YTc3YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTY5LDYgKzU2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNU
b2tlblR5cGUgdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbihkb3VibGUgZG91YmxlVmFsdWUp
CiAgICAgCiAgICAgbV9idWZmZXI4LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRC
dWZmZXJDYXBhY2l0eSk7CiAgICAgbV9idWZmZXIxNi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KCht
X2NvZGVFbmQgLSBtX2NvZGUpIC8gMik7CisgICAgbV9idWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmlu
ZzE2LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSk7CiAg
ICAgCiAgICAgaWYgKExJS0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQogICAgICAgICBtX2N1cnJl
bnQgPSAqbV9jb2RlOwpAQCAtMTM3NCw3ICsxMzc1LDcgQEAgY2xhc3MgTGluZU51bWJlckFkZGVy
IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVp
bGRTdHJpbmdzPiB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46
OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEpCit0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJl
c3VsdCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqIHRva2VuRGF0
YSwgYm9vbCBzaG91bGRCdWlsZFJhd1N0cmluZ3MpCiB7CiAgICAgY29uc3QgVCogc3RyaW5nU3Rh
cnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgY29uc3QgVCogcmF3U3RyaW5nU3RhcnQgPSBj
dXJyZW50U291cmNlUHRyKCk7CkBAIC0xNDM1LDEwICsxNDM2LDE2IEBAIGNsYXNzIExpbmVOdW1i
ZXJBZGRlciB7CiAgICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnXHInKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIE5vcm1hbGl6ZSA8Q1I+LCA8Q1I+PExGPiB0byA8TEY+LgotICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpICYmIHNob3VsZEJ1
aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZDE2KHN0cmluZ1N0YXJ0
LCBjdXJyZW50U291cmNlUHRyKCkgLSBzdHJpbmdTdGFydCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRC
dWlsZFN0cmluZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdTdGFydCAh
PSBjdXJyZW50U291cmNlUHRyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
MTYoc3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0cmluZ1N0YXJ0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyYXdTdHJpbmdTdGFydCAhPSBjdXJyZW50U291cmNlUHRy
KCkgJiYgc2hvdWxkQnVpbGRSYXdTdHJpbmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5hcHBlbmQocmF3U3RyaW5nU3RhcnQsIGN1
cnJlbnRTb3VyY2VQdHIoKSAtIHJhd1N0cmluZ1N0YXJ0KTsKKwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjb3JkMTYoJ1xuJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
QnVpbGRSYXdTdHJpbmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYnVmZmVyRm9y
UmF3VGVtcGxhdGVTdHJpbmcxNi5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlckFkZGVyLmFkZChtX2N1cnJlbnQpOwogICAg
ICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICdcbicpIHsKQEAgLTE0NDYsNiArMTQ1Myw3IEBAIGNsYXNzIExpbmVOdW1iZXJBZGRl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigp
OworICAgICAgICAgICAgICAgICAgICByYXdTdHJpbmdTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBsaW5lTnVt
YmVyQWRkZXIuYWRkKG1fY3VycmVudCk7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CkBA
IC0xNDYxLDI0ICsxNDY5LDI4IEBAIGNsYXNzIExpbmVOdW1iZXJBZGRlciB7CiAKICAgICBib29s
IGlzVGFpbCA9IG1fY3VycmVudCA9PSAnYCc7CiAKLSAgICBpZiAoY3VycmVudFNvdXJjZVB0cigp
ICE9IHN0cmluZ1N0YXJ0ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgYXBwZW5kMTYo
c3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0cmluZ1N0YXJ0KTsKKyAgICBpZiAo
c2hvdWxkQnVpbGRTdHJpbmdzKSB7CisgICAgICAgIGlmIChjdXJyZW50U291cmNlUHRyKCkgIT0g
c3RyaW5nU3RhcnQpCisgICAgICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudFNv
dXJjZVB0cigpIC0gc3RyaW5nU3RhcnQpOworICAgICAgICBpZiAocmF3U3RyaW5nU3RhcnQgIT0g
Y3VycmVudFNvdXJjZVB0cigpICYmIHNob3VsZEJ1aWxkUmF3U3RyaW5ncykKKyAgICAgICAgICAg
IG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5hcHBlbmQocmF3U3RyaW5nU3RhcnQsIGN1
cnJlbnRTb3VyY2VQdHIoKSAtIHJhd1N0cmluZ1N0YXJ0KTsKKyAgICB9CiAKICAgICBpZiAoc2hv
dWxkQnVpbGRTdHJpbmdzKSB7CiAgICAgICAgIHRva2VuRGF0YS0+Y29va2VkID0gbWFrZUlkZW50
aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKLSAgICAgICAgLy8g
VE9ETzogV2hpbGUgbGluZSB0ZXJtaW5hdG9yIG5vcm1hbGl6YXRpb24gKGUuZy4gPENSPiA9PiA8
TEY+KSBzaG91bGQgYmUgYXBwbGllZCB0byBib3RoIHRoZSByYXcgYW5kIGNvb2tlZCByZXByZXNl
bnRhdGlvbnMsCi0gICAgICAgIC8vIHRoaXMgcmF3IGltcGxlbWVudGF0aW9uIGp1c3Qgc2xpY2Vz
IHRoZSBzb3VyY2Ugc3RyaW5nLiBBcyBhIHJlc3VsdCwgbGluZSB0ZXJtaW5hdG9ycyBhcHBlYXIg
aW4gdGhlIHJhdyByZXByZXNlbnRhdGlvbiB3aXRob3V0IG5vcm1hbGl6YXRpb24uCi0gICAgICAg
IC8vIEZvciBleGFtcGxlLCB3aGVuIHBhcnNpbmcgYDxDUj5gLCA8Q1I+IGFwcGVhcnMgaW4gdGhl
IHJhdyByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgLy8gV2hpbGUgbm9uLXRhZ2dlZCB0ZW1wbGF0
ZSBsaXRlcmFscyBkb24ndCB1c2UgdGhlIHJhdyByZXByZXNlbnRhdGlvbiwgdGFnZ2VkIHRlbXBs
YXRlcyB1c2UgdGhlIHJhdyByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgLy8gU28gbGluZSB0ZXJt
aW5hdG9yIG5vcm1hbGl6YXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHJhdyByZXByZXNl
bnRhdGlvbiB3aGVuIGltcGxlbWVudGluZyB0YWdnZWQgdGVtcGxhdGVzLgotICAgICAgICB0b2tl
bkRhdGEtPnJhdyA9IG1ha2VJZGVudGlmaWVyKHJhd1N0cmluZ1N0YXJ0LCBjdXJyZW50U291cmNl
UHRyKCkgLSByYXdTdHJpbmdTdGFydCk7CisgICAgICAgIC8vIExpbmUgdGVybWluYXRvciBub3Jt
YWxpemF0aW9uIChlLmcuIDxDUj4gPT4gPExGPikgc2hvdWxkIGJlIGFwcGxpZWQgdG8gYm90aCB0
aGUgcmF3IGFuZCBjb29rZWQgcmVwcmVzZW50YXRpb25zLgorICAgICAgICBpZiAoc2hvdWxkQnVp
bGRSYXdTdHJpbmdzKQorICAgICAgICAgICAgdG9rZW5EYXRhLT5yYXcgPSBtYWtlSWRlbnRpZmll
cihtX2J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYuZGF0YSgpLCBtX2J1ZmZlckZvclJhd1Rl
bXBsYXRlU3RyaW5nMTYuc2l6ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG9rZW5E
YXRhLT5yYXcgPSBtYWtlRW1wdHlJZGVudGlmaWVyKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
dG9rZW5EYXRhLT5jb29rZWQgPSBudWxscHRyOwotICAgICAgICB0b2tlbkRhdGEtPnJhdyA9IG51
bGxwdHI7CisgICAgICAgIHRva2VuRGF0YS0+Y29va2VkID0gbWFrZUVtcHR5SWRlbnRpZmllcigp
OworICAgICAgICB0b2tlbkRhdGEtPnJhdyA9IG1ha2VFbXB0eUlkZW50aWZpZXIoKTsKICAgICB9
CiAgICAgdG9rZW5EYXRhLT5pc1RhaWwgPSBpc1RhaWw7CiAKICAgICBtX2J1ZmZlcjE2LnNocmlu
aygwKTsKKyAgICBtX2J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYuc2hyaW5rKDApOwogCiAg
ICAgaWYgKGlzVGFpbCkgewogICAgICAgICAvLyBTa2lwIGAKQEAgLTIxMjUsOSArMjEzNyw5IEBA
IGNsYXNzIExpbmVOdW1iZXJBZGRlciB7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIFN0cmlu
Z1BhcnNlUmVzdWx0IHJlc3VsdCA9IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICBpZiAo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NEb250QnVpbGRTdHJpbmdzKQotICAgICAgICAgICAgcmVz
dWx0ID0gcGFyc2VUZW1wbGF0ZUxpdGVyYWw8ZmFsc2U+KHRva2VuRGF0YSk7CisgICAgICAgICAg
ICByZXN1bHQgPSBwYXJzZVRlbXBsYXRlTGl0ZXJhbDxmYWxzZT4odG9rZW5EYXRhLCB0cnVlKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VUZW1wbGF0ZUxpdGVyYWw8
dHJ1ZT4odG9rZW5EYXRhKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlVGVtcGxhdGVMaXRl
cmFsPHRydWU+KHRva2VuRGF0YSwgdHJ1ZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHJlc3Vs
dCAhPSBTdHJpbmdQYXJzZWRTdWNjZXNzZnVsbHkpKSB7CiAgICAgICAgICAgICB0b2tlbiA9IHJl
c3VsdCA9PSBTdHJpbmdVbnRlcm1pbmF0ZWQgPyBVTlRFUk1JTkFURURfVEVNUExBVEVfTElURVJB
TF9FUlJPUlRPSyA6IElOVkFMSURfVEVNUExBVEVfTElURVJBTF9FUlJPUlRPSzsKQEAgLTIzMzEs
NyArMjM0Myw3IEBAIGNsYXNzIExpbmVOdW1iZXJBZGRlciB7CiAKICNpZiBFTkFCTEUoRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoSlNUb2tlbiogdG9rZW5SZWNv
cmQpCitKU1Rva2VuVHlwZSBMZXhlcjxUPjo6c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIGJvb2wgc2hvdWxkQnVpbGRSYXdTdHJpbmdzKQogewogICAgIEpT
VG9rZW5EYXRhKiB0b2tlbkRhdGEgPSAmdG9rZW5SZWNvcmQtPm1fZGF0YTsKICAgICBKU1Rva2Vu
TG9jYXRpb24qIHRva2VuTG9jYXRpb24gPSAmdG9rZW5SZWNvcmQtPm1fbG9jYXRpb247CkBAIC0y
MzQwLDcgKzIzNTIsNyBAQCBjbGFzcyBMaW5lTnVtYmVyQWRkZXIgewogCiAgICAgLy8gTGVhZGlu
ZyBjbG9zaW5nIGJyYWNlIH0gaXMgYWxyZWFkeSBzaGlmdGVkIGluIHRoZSBwcmV2aW91cyB0b2tl
biBzY2FuLgogICAgIC8vIFNvIGluIHRoaXMgcmUtc2NhbiBwaGFzZSwgc2hpZnQoKSBpcyBub3Qg
bmVlZGVkIGhlcmUuCi0gICAgU3RyaW5nUGFyc2VSZXN1bHQgcmVzdWx0ID0gcGFyc2VUZW1wbGF0
ZUxpdGVyYWw8dHJ1ZT4odG9rZW5EYXRhKTsKKyAgICBTdHJpbmdQYXJzZVJlc3VsdCByZXN1bHQg
PSBwYXJzZVRlbXBsYXRlTGl0ZXJhbDx0cnVlPih0b2tlbkRhdGEsIHNob3VsZEJ1aWxkUmF3U3Ry
aW5ncyk7CiAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBFUlJPUlRPSzsKICAgICBpZiAoVU5MSUtF
TFkocmVzdWx0ICE9IFN0cmluZ1BhcnNlZFN1Y2Nlc3NmdWxseSkpIHsKICAgICAgICAgdG9rZW4g
PSByZXN1bHQgPT0gU3RyaW5nVW50ZXJtaW5hdGVkID8gVU5URVJNSU5BVEVEX1RFTVBMQVRFX0xJ
VEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX1RFTVBMQVRFX0xJVEVSQUxfRVJST1JUT0s7CkBAIC0y
Mzc0LDYgKzIzODYsOSBAQCBjbGFzcyBMaW5lTnVtYmVyQWRkZXIgewogICAgIFZlY3RvcjxVQ2hh
cj4gbmV3QnVmZmVyMTY7CiAgICAgbV9idWZmZXIxNi5zd2FwKG5ld0J1ZmZlcjE2KTsKIAorICAg
IFZlY3RvcjxVQ2hhcj4gbmV3QnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsKKyAgICBtX2J1
ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYuc3dhcChuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0
cmluZzE2KTsKKwogICAgIG1faXNSZXBhcnNpbmcgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDhhZmVmMjYxMTIxMDhhZWQ3ZTg2ZWQwZTg0NzliNzlj
MWQwMjI3YWIuLmZjZDM4YzUwYzAyOTMzMjVlMjJlMjNmOTNhODNiNjE0N2NhNjQ1NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBM
ZXhlciB7CiAgICAgYm9vbCBwcmV2VGVybWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVybWlu
YXRvcjsgfQogICAgIGJvb2wgc2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVyKiYgcGF0dGVybiwg
Y29uc3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2hhciBwYXR0ZXJuUHJlZml4ID0gMCk7CiAjaWYg
RU5BQkxFKEVTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkKLSAgICBKU1Rva2VuVHlwZSBzY2Fu
VHJhaWxpbmdUZW1wbGF0ZVN0cmluZyhKU1Rva2VuKik7CisgICAgSlNUb2tlblR5cGUgc2NhblRy
YWlsaW5nVGVtcGxhdGVTdHJpbmcoSlNUb2tlbiosIGJvb2wgc2hvdWxkQnVpbGRSYXdTdHJpbmdz
KTsKICNlbmRpZgogICAgIGJvb2wgc2tpcFJlZ0V4cCgpOwogCkBAIC0xNjYsNiArMTY2LDcgQEAg
Y2xhc3MgTGV4ZXIgewogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUxD
aGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7CiAg
ICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBtYWtlUmlnaHRTaXplZElkZW50aWZp
ZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVDaGFyIG9yQWxsQ2hh
cnMpOwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50aWZpZXJM
Q2hhckZyb21VQ2hhcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBtYWtlRW1wdHlJZGVudGlmaWVyKCk7
CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29u
c3Q7CiAKQEAgLTE4NCw3ICsxODUsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgZW51bSBjbGFzcyBF
c2NhcGVQYXJzZU1vZGUgeyBUZW1wbGF0ZSwgU3RyaW5nIH07CiAgICAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNl
Q29tcGxleEVzY2FwZShFc2NhcGVQYXJzZU1vZGUsIGJvb2wgc3RyaWN0TW9kZSwgVCBzdHJpbmdR
dW90ZUNoYXJhY3Rlcik7CiAjaWYgRU5BQkxFKEVTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkK
LSAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgU3Ry
aW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqKTsKKyAgICB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFy
c2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBib29sIHNob3VsZEJ1
aWxkUmF3U3RyaW5ncyk7CiAjZW5kaWYKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgo
ZG91YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5
KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwpAQCAtMjAxLDYgKzIwMiw3IEBAIGNsYXNzIExleGVyIHsK
IAogICAgIFZlY3RvcjxMQ2hhcj4gbV9idWZmZXI4OwogICAgIFZlY3RvcjxVQ2hhcj4gbV9idWZm
ZXIxNjsKKyAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsK
ICAgICBib29sIG1fdGVybWluYXRvcjsKICAgICBpbnQgbV9sYXN0VG9rZW47CiAKQEAgLTI4OSw2
ICsyOTEsMTIgQEAgY2xhc3MgTGV4ZXIgewogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50
aWZpZXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlRW1wdHlJ
ZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VFbXB0eUlkZW50aWZpZXIo
bV92bSk7Cit9CisKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8TENoYXI+
OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCogc291cmNlU3RyaW5nKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBkNGIz
MzU1ODcwNjQ0NDQ5MjRlNDY1NTI0MTlhZjBiNWVkZTlkMjViLi45NTQ2YjcxMzhmYmRjMTJhMjdl
MmIwYmVhNDJmZjkwYjg2ZjA5MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMTQzLDYgKzE0MywxMyBAQAogICAgICAgICAsIG1f
dGVtcGxhdGVFeHByZXNzaW9ucyh0ZW1wbGF0ZUV4cHJlc3Npb25zKQogICAgIHsKICAgICB9CisK
KyAgICBpbmxpbmUgVGFnZ2VkVGVtcGxhdGVOb2RlOjpUYWdnZWRUZW1wbGF0ZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIHRhZywgVGVtcGxhdGVM
aXRlcmFsTm9kZSogdGVtcGxhdGVMaXRlcmFsKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uKQorICAgICAgICAsIG1fdGFnKHRhZykKKyAgICAgICAgLCBtX3RlbXBsYXRlTGl0ZXJh
bCh0ZW1wbGF0ZUxpdGVyYWwpCisgICAgeworICAgIH0KICNlbmRpZgogCiAgICAgaW5saW5lIFJl
Z0V4cE5vZGU6OlJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDJjZjJlZTRmMzkyYzEyYWMyNjUzYzJmMDgy
ZmRjNDRlODgwYWFhZS4uYjU5ZjczY2YzNTIxNDVjNWU1OTljNjkzNWY3NGY4MjA2YTI5ODliMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNDczLDEyICs0NzMsMjggQEAK
ICAgICAgICAgVGVtcGxhdGVMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBUZW1w
bGF0ZVN0cmluZ0xpc3ROb2RlKik7CiAgICAgICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSosIFRlbXBsYXRlRXhwcmVz
c2lvbkxpc3ROb2RlKik7CiAKKyAgICAgICAgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogdGVtcGxh
dGVTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZVN0cmluZ3M7IH0KKyAgICAgICAg
VGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRlbXBsYXRlRXhwcmVzc2lvbnMoKSBjb25zdCB7
IHJldHVybiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBUZW1wbGF0ZVN0cmluZ0xpc3ROb2Rl
KiBtX3RlbXBsYXRlU3RyaW5nczsKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUq
IG1fdGVtcGxhdGVFeHByZXNzaW9uczsKICAgICB9OworCisgICAgY2xhc3MgVGFnZ2VkVGVtcGxh
dGVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGFnZ2VkVGVtcGxhdGVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgVGVtcGxhdGVMaXRlcmFsTm9kZSopOwor
CisgICAgICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIHRlbXBsYXRlTGl0ZXJhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGVtcGxhdGVMaXRlcmFsOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fdGFnOworICAg
ICAgICBUZW1wbGF0ZUxpdGVyYWxOb2RlKiBtX3RlbXBsYXRlTGl0ZXJhbDsKKyAgICB9OwogI2Vu
ZGlmCiAKICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IGZkNDI0NDU2ZGM0ZTY3MTQyZmRkNzkzYTg2YWEwYTczNGIwNGU4MTQu
LjJhZjdiYzI4NGQ1Zjg5MTdkNjNiY2Q5NTQ3OWM3NzdhOWEyNzVjYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIyOTksMTIgKzIyOTksMTIgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAKICNpZiBF
TkFCTEUoRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OlRlbXBsYXRlU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRlbXBsYXRlU3RyaW5n
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlzVGVtcGxhdGVIZWFkLCBib29sJiBlbGVtZW50
SXNUYWlsKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6VGVtcGxhdGVTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGVtcGxhdGVTdHJpbmco
VHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgaXNUZW1wbGF0ZUhlYWQsIGJvb2wgc2hvdWxkQnVp
bGRSYXdTdHJpbmdzLCBib29sJiBlbGVtZW50SXNUYWlsKQogewogICAgIGlmICghaXNUZW1wbGF0
ZUhlYWQpIHsKICAgICAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xv
c2luZyAnfScgZm9sbG93aW5nIGFuIGV4cHJlc3Npb24gaW4gdGVtcGxhdGUgbGl0ZXJhbCIpOwog
ICAgICAgICAvLyBSZS1zY2FuIHRoZSB0b2tlbiB0byByZWNvZ25pemUgaXQgYXMgVGVtcGxhdGUg
RWxlbWVudC4KLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5zY2FuVHJhaWxpbmdU
ZW1wbGF0ZVN0cmluZygmbV90b2tlbik7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhl
ci0+c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoJm1fdG9rZW4sIHNob3VsZEJ1aWxkUmF3U3Ry
aW5ncyk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKFRFTVBMQVRFLCAiRXhwZWN0ZWQgYW4gdGVt
cGxhdGUgZWxlbWVudCIpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGNvb2tlZCA9IG1fdG9rZW4u
bV9kYXRhLmNvb2tlZDsKQEAgLTIzMTYsMTIgKzIzMTYsMTIgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpUZW1wbGF0ZUxpdGVyYWwgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGVtcGxh
dGVMaXRlcmFsKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVMaXRlcmFsIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVRlbXBsYXRlTGl0ZXJhbChUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBzaG91
bGRCdWlsZFJhd1N0cmluZ3MpCiB7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgYm9vbCBlbGVtZW50SXNUYWlsID0gZmFsc2U7CiAKLSAgICBhdXRv
IGhlYWRUZW1wbGF0ZVN0cmluZyA9IHBhcnNlVGVtcGxhdGVTdHJpbmcoY29udGV4dCwgdHJ1ZSwg
ZWxlbWVudElzVGFpbCk7CisgICAgYXV0byBoZWFkVGVtcGxhdGVTdHJpbmcgPSBwYXJzZVRlbXBs
YXRlU3RyaW5nKGNvbnRleHQsIHRydWUsIHNob3VsZEJ1aWxkUmF3U3RyaW5ncywgZWxlbWVudElz
VGFpbCk7CiAgICAgZmFpbElmRmFsc2UoaGVhZFRlbXBsYXRlU3RyaW5nLCAiQ2Fubm90IHBhcnNl
IGhlYWQgdGVtcGxhdGUgZWxlbWVudCIpOwogCiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRl
bXBsYXRlU3RyaW5nTGlzdCB0ZW1wbGF0ZVN0cmluZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZVRlbXBs
YXRlU3RyaW5nTGlzdChoZWFkVGVtcGxhdGVTdHJpbmcpOwpAQCAtMjMzNyw3ICsyMzM3LDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAg
ICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlRXhwcmVzc2lvbkxpc3QgdGVtcGxhdGVF
eHByZXNzaW9uTGlzdCA9IGNvbnRleHQuY3JlYXRlVGVtcGxhdGVFeHByZXNzaW9uTGlzdChleHBy
ZXNzaW9uKTsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVFeHByZXNzaW9uTGlz
dCB0ZW1wbGF0ZUV4cHJlc3Npb25UYWlsID0gdGVtcGxhdGVFeHByZXNzaW9uTGlzdDsKIAotICAg
IGF1dG8gdGVtcGxhdGVTdHJpbmcgPSBwYXJzZVRlbXBsYXRlU3RyaW5nKGNvbnRleHQsIGZhbHNl
LCBlbGVtZW50SXNUYWlsKTsKKyAgICBhdXRvIHRlbXBsYXRlU3RyaW5nID0gcGFyc2VUZW1wbGF0
ZVN0cmluZyhjb250ZXh0LCBmYWxzZSwgc2hvdWxkQnVpbGRSYXdTdHJpbmdzLCBlbGVtZW50SXNU
YWlsKTsKICAgICBmYWlsSWZGYWxzZSh0ZW1wbGF0ZVN0cmluZywgIkNhbm5vdCBwYXJzZSB0ZW1w
bGF0ZSBlbGVtZW50Iik7CiAgICAgdGVtcGxhdGVTdHJpbmdUYWlsID0gY29udGV4dC5jcmVhdGVU
ZW1wbGF0ZVN0cmluZ0xpc3QodGVtcGxhdGVTdHJpbmdUYWlsLCB0ZW1wbGF0ZVN0cmluZyk7CiAK
QEAgLTIzNDgsNyArMjM0OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9w
KEpTVG9rZW5UeXBlIHRva2VuKQogCiAgICAgICAgIHRlbXBsYXRlRXhwcmVzc2lvblRhaWwgPSBj
b250ZXh0LmNyZWF0ZVRlbXBsYXRlRXhwcmVzc2lvbkxpc3QodGVtcGxhdGVFeHByZXNzaW9uVGFp
bCwgZXhwcmVzc2lvbik7CiAKLSAgICAgICAgYXV0byB0ZW1wbGF0ZVN0cmluZyA9IHBhcnNlVGVt
cGxhdGVTdHJpbmcoY29udGV4dCwgZmFsc2UsIGVsZW1lbnRJc1RhaWwpOworICAgICAgICBhdXRv
IHRlbXBsYXRlU3RyaW5nID0gcGFyc2VUZW1wbGF0ZVN0cmluZyhjb250ZXh0LCBmYWxzZSwgc2hv
dWxkQnVpbGRSYXdTdHJpbmdzLCBlbGVtZW50SXNUYWlsKTsKICAgICAgICAgZmFpbElmRmFsc2Uo
dGVtcGxhdGVTdHJpbmcsICJDYW5ub3QgcGFyc2UgdGVtcGxhdGUgZWxlbWVudCIpOwogICAgICAg
ICB0ZW1wbGF0ZVN0cmluZ1RhaWwgPSBjb250ZXh0LmNyZWF0ZVRlbXBsYXRlU3RyaW5nTGlzdCh0
ZW1wbGF0ZVN0cmluZ1RhaWwsIHRlbXBsYXRlU3RyaW5nKTsKICAgICB9CkBAIC0yNDYxLDcgKzI0
NjEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0
b2tlbikKICAgICB9CiAjaWYgRU5BQkxFKEVTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCkKICAg
ICBjYXNlIFRFTVBMQVRFOgotICAgICAgICByZXR1cm4gcGFyc2VUZW1wbGF0ZUxpdGVyYWwoY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBwYXJzZVRlbXBsYXRlTGl0ZXJhbChjb250ZXh0LCBmYWxz
ZSk7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9r
ZW4oKTsKQEAgLTI1ODUsNiArMjU4NSwxNiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlz
VW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgVEVNUExBVEU6IHsKKyAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCB1c2Ugc3VwZXIgYXMg
dGFnIGZvciB0YWdnZWQgdGVtcGxhdGVzIik7CisgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBl
eHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGludCBu
b25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CisgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6VGVtcGxhdGVMaXRlcmFsIHRlbXBsYXRlTGl0ZXJhbCA9IHBhcnNlVGVtcGxhdGVMaXRl
cmFsKGNvbnRleHQsIHRydWUpOworICAgICAgICAgICAgZmFpbElmRmFsc2UodGVtcGxhdGVMaXRl
cmFsLCAiQ2Fubm90IHBhcnNlIHRlbXBsYXRlIGxpdGVyYWwiKTsKKyAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZVRhZ2dlZFRlbXBsYXRlKGxvY2F0aW9uLCBiYXNlLCB0ZW1wbGF0ZUxp
dGVyYWwsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kUG9zaXRp
b24oKSk7CisgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZ290
byBlbmRNZW1iZXJFeHByZXNzaW9uOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAppbmRleCAzZGZmOGU0OWIzMDU3YzQ5OTE0NDVmNmZjNGVkNDJjOWYzNDY1YWM4
Li4zYzQyYjg1ZmI1M2RjMmE2MDdiZWJjZjNiMmY4NDEyZmQxMjhhYTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTc3Nyw4ICs3NzcsOCBAQCBjbGFzcyBQYXJzZXIg
ewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFz
c0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
LCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpUZW1wbGF0ZVN0cmluZyBwYXJz
ZVRlbXBsYXRlU3RyaW5nKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlzVGVtcGxhdGVIZWFk
LCBib29sJiBlbGVtZW50SXNUYWlsKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVMaXRlcmFsIHBhcnNl
VGVtcGxhdGVMaXRlcmFsKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlU3RyaW5n
IHBhcnNlVGVtcGxhdGVTdHJpbmcoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgaXNUZW1wbGF0
ZUhlYWQsIGJvb2wgc2hvdWxkQnVpbGRSYXdTdHJpbmdzLCBib29sJiBlbGVtZW50SXNUYWlsKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6VGVtcGxhdGVMaXRlcmFsIHBhcnNlVGVtcGxhdGVMaXRlcmFsKFRyZWVCdWls
ZGVyJiwgYm9vbCBzaG91bGRCdWlsZFJhd1N0cmluZ3MpOwogI2VuZGlmCiAKICAgICBBTFdBWVNf
SU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA0MGVjZTUzYTBiNjQ0YzA4MjA3OWMy
MmRmMGY5NDNiYzI1ZGJkYTI5Li4yYTdkNDRkZTc3MTg1ODQwNjMwMDFjMTEyNTk0YTYxYjU5ZmNm
YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC00
NSw2ICs0NSw3IEBACiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFM
V0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciYgbWFrZUlkZW50aWZpZXIoVk0qLCBjb25zdCBU
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25z
dCBJZGVudGlmaWVyJiBtYWtlRW1wdHlJZGVudGlmaWVyKFZNKik7CiAgICAgICAgIEFMV0FZU19J
TkxJTkUgY29uc3QgSWRlbnRpZmllciYgbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihWTSos
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKIAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtYWtlTnVtZXJpY0lkZW50aWZpZXIoVk0qLCBkb3VibGUgbnVtYmVyKTsK
QEAgLTkxLDYgKzkyLDExIEBACiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsK
ICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJB
cmVuYTo6bWFrZUVtcHR5SWRlbnRpZmllcihWTSogdm0pCisgICAgeworICAgICAgICByZXR1cm4g
dm0tPnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcjsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXJM
Q2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDU1NGU1ZGY2NGE3MjFmNDQ2MmQwZDg5YWIw
MjNhZmRkNzUzYzU1YmUuLjcyYmE4ZDYzOWYzOGIzNDUyY2RiZDY5Y2E3NzIxOWQ5ODJkMTViZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC04
Miw3ICs4Miw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgICAgICBQcm9wZXJ0eUxpc3RS
ZXN1bHQsIEFyZ3VtZW50c0xpc3RSZXN1bHQsIEVsZW1lbnRzTGlzdFJlc3VsdCwKICAgICAgICAg
U3RhdGVtZW50UmVzdWx0LCBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0LCBDbGF1c2VSZXN1bHQs
CiAgICAgICAgIENsYXVzZUxpc3RSZXN1bHQsIENvbW1hRXhwciwgRGVjb25zdHJ1Y3RpbmdBc3Np
Z25tZW50LAotICAgICAgICBUZW1wbGF0ZVN0cmluZ1Jlc3VsdCwgVGVtcGxhdGVTdHJpbmdMaXN0
UmVzdWx0LCBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0UmVzdWx0LCBUZW1wbGF0ZUV4cHIKKyAgICAg
ICAgVGVtcGxhdGVTdHJpbmdSZXN1bHQsIFRlbXBsYXRlU3RyaW5nTGlzdFJlc3VsdCwgVGVtcGxh
dGVFeHByZXNzaW9uTGlzdFJlc3VsdCwgVGVtcGxhdGVFeHByLCBUYWdnZWRUZW1wbGF0ZUV4cHIK
ICAgICB9OwogICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb25UeXBlOwogCkBAIC0xODgsNiArMTg4
LDcgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdCBj
cmVhdGVUZW1wbGF0ZUV4cHJlc3Npb25MaXN0KFRlbXBsYXRlRXhwcmVzc2lvbkxpc3QsIEV4cHJl
c3Npb24pIHsgcmV0dXJuIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3RSZXN1bHQ7IH0KICAgICBUZW1w
bGF0ZUxpdGVyYWwgY3JlYXRlVGVtcGxhdGVMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFRlbXBsYXRlU3RyaW5nTGlzdCkgeyByZXR1cm4gVGVtcGxhdGVFeHByOyB9CiAgICAgVGVtcGxh
dGVMaXRlcmFsIGNyZWF0ZVRlbXBsYXRlTGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBU
ZW1wbGF0ZVN0cmluZ0xpc3QsIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3QpIHsgcmV0dXJuIFRlbXBs
YXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVRhZ2dlZFRlbXBsYXRlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBUZW1wbGF0ZUxpdGVyYWwsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIFRhZ2dlZFRlbXBsYXRlRXhwcjsgfQogI2VuZGlmCiAKICAgICBp
bnQgY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0
dXJuIEFyZ3VtZW50c0xpc3RSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc5MDY5ZWE5NjRkNjA2MTU0MWU5NWRk
N2YxYzkzMzBmM2U4YzI4MmUuLmQ5NDg5Y2E3MjMxZjgzMTExMzAyNTBjNGE4OTY3OWVjOWVhNTlj
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMTUwLDYgKzE1MCw3IEBACiAgICAgbWFjcm8ocHJvZmlsZWRCeXRlY29kZXMp
IFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlw
ZSkgXAorICAgIG1hY3JvKHJhdykgXAogICAgIG1hY3JvKHJlbG9hZCkgXAogICAgIG1hY3JvKHJl
cGxhY2UpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCkBAIC0yODAsNyArMjgxLDggQEAKICAgICBt
YWNybyhUeXBlRXJyb3IpIFwKICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhCdWls
dGluTG9nKSBcCi0gICAgbWFjcm8oaG9tZU9iamVjdCkKKyAgICBtYWNybyhob21lT2JqZWN0KSBc
CisgICAgbWFjcm8oZ2V0VGVtcGxhdGVPYmplY3QpCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDdkMDZmYTYwMGVhMjA1ZTU3MTk1MGI0Y2I4M2M3YmViZjU4ZTliMDUuLmRhMzY0OTlmMWFk
MTE1ODY1ZGVjZjg0OTM0NDYwMWU3NDUwZjAzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNs
dWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0
cmluZ0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5j
bHVkZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTE2OSw2ICsxNzAs
MTMgQEAKIEBlbmQKICovCiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
dFRlbXBsYXRlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEFTU0VSVCh0aGlzVmFsdWUuaW5oZXJpdHMoSlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjppbmZvKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+dGVtcGxhdGVSZWdpc3RyeSgpLmdldFRlbXBs
YXRlT2JqZWN0KGV4ZWMsIGpzQ2FzdDxKU1RlbXBsYXRlUmVnaXN0cnlLZXkqPih0aGlzVmFsdWUp
LT50ZW1wbGF0ZVJlZ2lzdHJ5S2V5KCkpKTsKK30KKwogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFs
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgMCkKICAgICAsIG1fdm0odm0pCkBAIC0xNzksNiArMTg3LDcgQEAKICAgICAsIG1faGF2
aW5nQUJhZFRpbWVXYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hl
ZCkpKQogICAgICwgbV92YXJJbmplY3Rpb25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBv
aW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV93ZWFrUmFuZG9tKE9wdGlvbnM6OmZvcmNlV2Vh
a1JhbmRvbVNlZWQoKSA/IE9wdGlvbnM6OmZvcmNlZFdlYWtSYW5kb21TZWVkKCkgOiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpICsgMS4wKSkpCisgICAgLCBtX3RlbXBsYXRlUmVnaXN0cnkodm0pCiAgICAg
LCBtX2V2YWxFbmFibGVkKHRydWUpCiAgICAgLCBtX3J1bnRpbWVGbGFncygpCiAgICAgLCBtX2Nv
bnNvbGVDbGllbnQobnVsbHB0cikKQEAgLTQzMyw2ICs0NDIsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY09iamVjdEtleXMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBvYmplY3RDb25zdHJ1
Y3RvcktleXMpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jT2JqZWN0R2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOwogICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMpOworICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jR2V0VGVtcGxhdGVPYmpl
Y3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnZXRUZW1wbGF0
ZU9iamVjdCk7CiAKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCkBAIC00NDMsNiArNDUzLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5vYmplY3RLZXlzUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5j
T2JqZWN0S2V5cywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+b2JqZWN0R2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jT2JqZWN0R2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5vYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJv
bHNQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNPYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmdldFRlbXBsYXRlT2JqZWN0UHJpdmF0ZU5hbWUsIHByaXZh
dGVGdW5jR2V0VGVtcGxhdGVPYmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJv
clByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5CdWlsdGluTG9nUHJpdmF0ZU5hbWUsIGJ1aWx0aW5Mb2csIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPkFycmF5UHJpdmF0ZU5hbWUsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQ3ZjdjMjYwNTcyN2NhODRjYWVjY2IwYjNkYjQ1
NWI4OGUyZTk1YjMuLmFlMTEzODdlNDk0ZWE1NDFmOTU1OTQwMTZhMjY0YjJhODA1OGNmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgpAQCAtMjg0
LDYgKzI4NSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogCiAgICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CiAKKyAgICBUZW1w
bGF0ZVJlZ2lzdHJ5IG1fdGVtcGxhdGVSZWdpc3RyeTsKKwogICAgIGJvb2wgbV9ldmFsRW5hYmxl
ZDsKICAgICBTdHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgUnVudGltZUZs
YWdzIG1fcnVudGltZUZsYWdzOwpAQCAtNjA4LDYgKzYxMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+b3BhcXVlSlNDbGFzc0RhdGE7CiAgICAgfQogCisgICAgVGVtcGxhdGVSZWdp
c3RyeSYgdGVtcGxhdGVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fdGVtcGxhdGVSZWdpc3RyeTsgfQor
CiAgICAgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIoKSB7IHJldHVybiBtX3dlYWtSYW5kb20uZ2V0
KCk7IH0KICAgICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1fd2Vha1Jh
bmRvbS5nZXRVaW50MzIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDE0NjYxZmM3
MWQwNGU0Y2JkOGNjNTBhMjczOTljOTE2ZjY0YjVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojpz
X2luZm8gPSB7ICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5IiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1RlbXBsYXRlUmVnaXN0cnlLZXkpIH07CisKKworSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5OjpKU1RlbXBsYXRlUmVnaXN0cnlLZXkoVk0mIHZtLCBjb25zdCBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KQorICAgIDogQmFzZSh2bSwgdm0udGVtcGxh
dGVSZWdpc3RyeUtleVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fdGVtcGxhdGVSZWdpc3RyeUtl
eSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KQoreworfQorCitKU1RlbXBsYXRlUmVnaXN0cnlLZXkqIEpT
VGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlKFZNJiB2bSwgY29uc3QgVGVtcGxhdGVSZWdpc3Ry
eUtleSYgdGVtcGxhdGVSZWdpc3RyeUtleSkKK3sKKyAgICBKU1RlbXBsYXRlUmVnaXN0cnlLZXkq
IHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVGVtcGxhdGVSZWdpc3RyeUtl
eT4odm0uaGVhcCkpIEpTVGVtcGxhdGVSZWdpc3RyeUtleSh2bSwgdGVtcGxhdGVSZWdpc3RyeUtl
eSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIHN0YXRpY19jYXN0PEpTVGVtcGxhdGVSZWdpc3RyeUtleSo+KGNlbGwpLT5KU1RlbXBs
YXRlUmVnaXN0cnlLZXk6On5KU1RlbXBsYXRlUmVnaXN0cnlLZXkoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Rl
bXBsYXRlUmVnaXN0cnlLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVt
cGxhdGVSZWdpc3RyeUtleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNmUzOTI4NmQwOTNhMjE2NzZlMTIzMzdh
MDI4OGIzMDk0NWM0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5X2gKKyNkZWZpbmUgSlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5X2gKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5IGZpbmFs
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5KiBjcmVhdGUoVk0mLCBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5Jik7CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5
KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5OyB9CisKK3Byb3RlY3RlZDoK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCitwcml2YXRlOgorICAgIEpTVGVt
cGxhdGVSZWdpc3RyeUtleShWTSYsIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmKTsKKworICAg
IFRlbXBsYXRlUmVnaXN0cnlLZXkgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5OworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1RlbXBsYXRlUmVnaXN0cnlLZXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IGQ3YjUxNmE0MzNkODIwY2U4ZTRlMGY3MWVmODUwZWJkOGNlZWQ4MmEuLjM1MDkzNjJiNGJh
MGQzYWVhODRjYmMwMGE4YTcyYjFkNzBhYWRkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ2MiwxNyArNDYyLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0
YXRlKiBleGVjKQorSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBP
YmplY3QsIHJldHVybiBPLgotICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0g
ICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShv
YmopOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwotCiAgICAgaWYgKGlz
SlNGaW5hbE9iamVjdChvYmplY3QpICYmICFoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPmlu
ZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBvYmplY3QtPmZyZWV6ZShleGVjLT52bSgpKTsKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOworICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAg
b2YgTywKQEAgLTQ5NiwxNCArNDkwLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyBkLiBD
YWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQ
LCBkZXNjLCBhbmQgdHJ1ZSBhcyBhcmd1bWVudHMuCiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOworICAgICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CiAKICAgICAvLyAzLiBTZXQgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVy
bmFsIHByb3BlcnR5IG9mIE8gdG8gZmFsc2UuCiAgICAgb2JqZWN0LT5wcmV2ZW50RXh0ZW5zaW9u
cyhleGVjLT52bSgpKTsKIAogICAgIC8vIDQuIFJldHVybiBPLgotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUob2JqKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHJldHVybiBPLgorICAgIEpTVmFs
dWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUob2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgYXNPYmplY3Qob2JqKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJldmVudEV4
dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggNTNmYzBlOTI4NzYwZTExZmFmZjA5MmEx
NDRmNTQ5Y2MxZDUwMGRhOS4uOGZjNWM3MzIyNTgyNjYzYzhiZTI0MzY1NWRkN2I5ZTgyNjQ2ZmFi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oCkBAIC04OSw2ICs4OSw4IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKTsKIH0K
IAorSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
Kik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gT2JqZWN0Q29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MDNkMjA0OGRlOTI2ZWI1MmExN2FmYmM5YjYxODE4NzlhZjdiNzVk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxh
dGVSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeS5oIgorCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworVGVtcGxhdGVSZWdpc3RyeTo6VGVtcGxhdGVSZWdpc3Ry
eShWTSYgdm0pCisgICAgOiBtX3RlbXBsYXRlTWFwKHZtKQoreworfQorCitKU0FycmF5KiBUZW1w
bGF0ZVJlZ2lzdHJ5OjpnZXRUZW1wbGF0ZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFRl
bXBsYXRlUmVnaXN0cnlLZXkmIHRlbXBsYXRlS2V5KQoreworICAgIEpTQXJyYXkqIGNhY2hlZCA9
IG1fdGVtcGxhdGVNYXAuZ2V0KHRlbXBsYXRlS2V5KTsKKyAgICBpZiAoY2FjaGVkKQorICAgICAg
ICByZXR1cm4gY2FjaGVkOworCisgICAgdW5zaWduZWQgY291bnQgPSB0ZW1wbGF0ZUtleS5jb29r
ZWRTdHJpbmdzKCkuc2l6ZSgpOworICAgIEpTQXJyYXkqIHRlbXBsYXRlT2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBjb3VudCk7CisgICAgSlNBcnJheSogcmF3T2Jq
ZWN0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBjb3VudCk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAg
ICB0ZW1wbGF0ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzU3RyaW5nKGV4
ZWMsIHRlbXBsYXRlS2V5LmNvb2tlZFN0cmluZ3MoKVtpbmRleF0pLCBSZWFkT25seSB8IERvbnRE
ZWxldGUsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CisgICAgICAgIHJhd09iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzU3RyaW5nKGV4ZWMsIHRlbXBsYXRlS2V5LnJh
d1N0cmluZ3MoKVtpbmRleF0pLCBSZWFkT25seSB8IERvbnREZWxldGUsIFB1dERpcmVjdEluZGV4
TGlrZVB1dERpcmVjdCk7CisgICAgfQorCisgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhl
YywgcmF3T2JqZWN0KTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKworICAg
IHRlbXBsYXRlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnJhdywgcmF3T2JqZWN0LCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisK
KyAgICBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShleGVjLCB0ZW1wbGF0ZU9iamVjdCk7CisgICAg
QVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CisKKyAgICBtX3RlbXBsYXRlTWFwLnNldCh0
ZW1wbGF0ZUtleSwgdGVtcGxhdGVPYmplY3QpOworCisgICAgcmV0dXJuIHRlbXBsYXRlT2JqZWN0
OworfQorCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYjYyZGRmZDgyYzE3ZjE3
MTQ4NTQ5YzMwYzU5ZTc4OWRlNzA1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlbXBsYXRlUmVnaXN0cnlfaAorI2RlZmluZSBUZW1w
bGF0ZVJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCisjaW5jbHVkZSA8bGltaXRz
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcGxhdGVSZWdpc3RyeSB7CitwdWJsaWM6
CisgICAgVGVtcGxhdGVSZWdpc3RyeShWTSYpOworCisgICAgSlNBcnJheSogZ2V0VGVtcGxhdGVP
YmplY3QoRXhlY1N0YXRlKiwgY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYpOworCitwcml2YXRl
OgorICAgIFdlYWtHQ01hcDxUZW1wbGF0ZVJlZ2lzdHJ5S2V5LCBKU0FycmF5PiBtX3RlbXBsYXRl
TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBUZW1wbGF0ZVJlZ2lz
dHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
UmVnaXN0cnlLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnlLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmM3NzFhMDE5YTIyMTM1NTU4ODRhMTRlYTdjMjI4NTQ3
M2NmOWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeUtleS5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVGVtcGxhdGVSZWdpc3RyeUtleV9oCisjZGVmaW5lIFRlbXBsYXRlUmVnaXN0
cnlLZXlfaAorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxTdHJpbmcsIDQ+IFN0cmluZ1ZlY3RvcjsKKwor
ICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkoY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJpbmdzLCBj
b25zdCBTdHJpbmdWZWN0b3ImIGNvb2tlZFN0cmluZ3MpOworICAgIGVudW0gRGVsZXRlZFZhbHVl
VGFnIHsgRGVsZXRlZFZhbHVlIH07CisgICAgVGVtcGxhdGVSZWdpc3RyeUtleShEZWxldGVkVmFs
dWVUYWcpOworICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBUZW1w
bGF0ZVJlZ2lzdHJ5S2V5KEVtcHR5VmFsdWVUYWcpOworCisgICAgYm9vbCBpc0RlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3U3RyaW5ncy5pc0VtcHR5KCkgJiYgbV9oYXNoID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQorCisgICAgYm9vbCBpc0VtcHR5
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0eSgpICYmICFtX2hhc2g7
IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAg
IGNvbnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcmF3U3Ry
aW5nczsgfQorICAgIGNvbnN0IFN0cmluZ1ZlY3RvciYgY29va2VkU3RyaW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fY29va2VkU3RyaW5nczsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRl
bXBsYXRlUmVnaXN0cnlLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2hhc2ggPT0gb3RoZXIu
bV9oYXNoICYmIG1fcmF3U3RyaW5ncyA9PSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faGFzaCAhPSBvdGhlci5tX2hhc2ggfHwgbV9yYXdTdHJpbmdzICE9IG90aGVyLm1fcmF3
U3RyaW5nczsgfQorCisgICAgc3RydWN0IEhhc2hlciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2go
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
JiBhLCBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBm
YWxzZTsKKyAgICB9OworCitwcml2YXRlOgorICAgIFN0cmluZ1ZlY3RvciBtX3Jhd1N0cmluZ3Mg
eyB9OworICAgIFN0cmluZ1ZlY3RvciBtX2Nvb2tlZFN0cmluZ3MgeyB9OworICAgIHVuc2lnbmVk
IG1faGFzaCB7IDAgfTsKK307CisKK2lubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0
ZVJlZ2lzdHJ5S2V5KGNvbnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncywgY29uc3QgU3RyaW5n
VmVjdG9yJiBjb29rZWRTdHJpbmdzKQorICAgIDogbV9yYXdTdHJpbmdzKHJhd1N0cmluZ3MpCisg
ICAgLCBtX2Nvb2tlZFN0cmluZ3MoY29va2VkU3RyaW5ncykKK3sKKyAgICBtX2hhc2ggPSAwOwor
ICAgIGZvciAoY29uc3QgU3RyaW5nJiBzdHJpbmcgOiByYXdTdHJpbmdzKQorICAgICAgICBtX2hh
c2ggKz0gV1RGOjpTdHJpbmdIYXNoOjpoYXNoKHN0cmluZyk7Cit9CisKK2lubGluZSBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICA6
IG1faGFzaChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCit7Cit9CisKK2lu
bGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KEVtcHR5VmFsdWVU
YWcpCisgICAgOiBtX2hhc2goMCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk+IHsK
KyAgICB0eXBlZGVmIEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6SGFzaGVyIEhhc2g7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4g
OiBDdXN0b21IYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4geworfTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxYTM3MzRkZjM0YjFmZTc4MmZjYTVkMzMy
MGU0YzJiY2MwYzk2YmI2Li43MTI2ZTgwZDIzZTY5ZmE4ZGJjZGQ4OTViMWI1NjA1YTkxZjhmMDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2NSw3IEBACiAj
aW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VSZWFjdGlv
bi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKQEAgLTIyNCw2ICsyMjUsNyBAQCBzdGF0
aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFs
bG9jYXRvcikKICAgICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJlQ2hh
aW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpT
VGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7
CiAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZDBkNzgyZWNjYjVlYzBjOWIz
NjgwY2FjMjVjYWVhOWE4NzY2YjI3Zi4uNWU1NzQxMjc5ZGIwODA4NTc4MzEwNjRiNGFlNTFjZjA0
ZTkxNWUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0yNjQsNiArMjY0LDcg
QEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VB
cnJheVZhbHVlTWFwU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlUmVn
aXN0cnlLZXlTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gYXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1pZGVudGl0eS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1pZGVudGl0eS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMDJkMDMxNzQzMjM5MDcwZDA0OWIzZjUyMzFmZTFmNWI5MDg3ZWQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdn
ZWQtdGVtcGxhdGVzLWlkZW50aXR5LmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBKU09OLnN0cmluZ2lmeShhY3R1
YWwpKTsKK30KKwordmFyIHRlbXBsYXRlcyA9IFtdOworZnVuY3Rpb24gdGFnKHNpdGVPYmplY3Qp
IHsKKyAgICB0ZW1wbGF0ZXMucHVzaChzaXRlT2JqZWN0KTsKK30KKwordGFnYEhlbGxvYDsKK3Rh
Z2BXb3JsZGA7Cit0YWdgSGVsbG9gOworc2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwgMyk7Citz
aG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZW1wbGF0ZXNbMF0gPT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CisKK3RlbXBsYXRlcyA9IFtdOwor
dGFnYEhlbGxvXG5gOwordGFnYEhlbGxvXHJgOwordGFnYEhlbGxvXHUyMDI4YDsKK3Nob3VsZEJl
KHRlbXBsYXRlcy5sZW5ndGgsIDMpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0
ZXNbMV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMl0sIHRy
dWUpOworCit0ZW1wbGF0ZXMgPSBbXTsKK2V2YWwoInRhZ2BIZWxsb1xuYCIpOworZXZhbCgidGFn
YEhlbGxvXHJgIik7CitldmFsKCJ0YWdgSGVsbG9cdTIwMjhgIik7CitzaG91bGRCZSh0ZW1wbGF0
ZXMubGVuZ3RoLCAzKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSA9PT0gdGVtcGxhdGVzWzFdLCB0
cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKKwor
dGVtcGxhdGVzID0gW107CitldmFsKCJ0YWdgSGVsbG9cbmAiKTsKK2V2YWwoInRhZ2BIZWxsb1xc
bmAiKTsKK2V2YWwoInRhZ2BIZWxsb1xyYCIpOworZXZhbCgidGFnYEhlbGxvXFxyYCIpOworc2hv
dWxkQmUodGVtcGxhdGVzLmxlbmd0aCwgNCk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRl
bXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09IHRlbXBsYXRlc1sy
XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CitzaG91bGRC
ZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0
ZXNbMl0gIT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7CisKK3ZhciB2ID0gMDsKK3RlbXBsYXRlcyA9
IFtdOworZXZhbCgidGFnYEhlbGxvXG4ke3Z9d29ybGRgIik7CitldmFsKCJ0YWdgSGVsbG9cbiR7
dn13b3JsZGAiKTsKK3Nob3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDIpOworc2hvdWxkQmUodGVt
cGxhdGVzWzBdID09PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworCit2YXIgdiA9IDA7Cit0ZW1wbGF0
ZXMgPSBbXTsKK2V2YWwoInRhZ2BIZWxsbyR7dn1cbndvcmxkYCIpOworZXZhbCgidGFnYEhlbGxv
XG4ke3Z9d29ybGRgIik7CitzaG91bGRCZSh0ZW1wbGF0ZXMubGVuZ3RoLCAyKTsKK3Nob3VsZEJl
KHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1yYXctc3RyaW5n
cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRl
cy1yYXctc3RyaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDk1Nzg1OGZiNzU3ZmMzODdlMzFjMGUyMzIy
ZTJjZWVkZmExODBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXJhdy1zdHJpbmdzLmpzCkBAIC0wLDAgKzEsNjMg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBK
U09OLnN0cmluZ2lmeShhY3R1YWwpKTsKK30KKworZnVuY3Rpb24gdGFnKHJlc3VsdHMpIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKHNpdGVPYmplY3QpIHsKKyAgICAgICAgc2hvdWxkQmUoc2l0ZU9i
amVjdC5yYXcubGVuZ3RoLCByZXN1bHRzLmxlbmd0aCk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2l0ZU9iamVjdC5yYXcubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KHNpdGVPYmplY3QucmF3W2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH07Cit9CisK
K3RhZyhbJyddKWBgOwordGFnKFsnaGVsbG8nXSlgaGVsbG9gOwordGFnKFsnaGVsbG8nLCAnd29y
bGQnXSlgaGVsbG8kezB9d29ybGRgOwordGFnKFsnaGVsbG9cXHUyMDI4JywgJ3dvcmxkJ10pYGhl
bGxvXHUyMDI4JHswfXdvcmxkYDsKK3RhZyhbJ2hlbGxvXFx1MjAyOFxcdTIwMjknLCAnd29ybGQn
XSlgaGVsbG9cdTIwMjhcdTIwMjkkezB9d29ybGRgOwordGFnKFsnaGVsbG9cXG5cXHInLCAnd29y
bGQnXSlgaGVsbG9cblxyJHswfXdvcmxkYDsKKworZnVuY3Rpb24gdGVzdEV2YWwoY29udGVudCwg
cmVzdWx0cykgeworICAgIHZhciBzcGxpdCA9IDA7CisgICAgdmFyIGcgPSB0YWcocmVzdWx0cyk7
CisgICAgZXZhbCgiZ2AiICsgY29udGVudCArICJgIik7Cit9CisKK2ZvciAodmFyIGNoIG9mIFsg
J1wnJywgJyInLCAnXFwnLCAnYicsICdmJywgJ24nLCAncicsICd0JywgJ3YnIF0pCisgICAgdGVz
dEV2YWwoIlxcIiArIGNoLCBbIlxcIiArIGNoXSk7CisKK3ZhciBldmFsdWF0ZWQgPSBbXTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMHgxMDAwMDsgKytpKSB7CisgICAgdmFyIGNvZGUgPSBpLnRvU3Ry
aW5nKDE2KTsKKyAgICB2YXIgaW5wdXQgPSAiXFx1IiArICcwJy5yZXBlYXQoNCAtIGNvZGUubGVu
Z3RoKSArIGNvZGU7CisgICAgZXZhbHVhdGVkLnB1c2goaW5wdXQpOworfQordGVzdEV2YWwoZXZh
bHVhdGVkLmpvaW4oJyR7c3BsaXR9JyksIGV2YWx1YXRlZCkKKwordGVzdEV2YWwoIkhlbGxvXHJX
b3JsZCIsIFsgIkhlbGxvXG5Xb3JsZCIgXSk7Cit0ZXN0RXZhbCgiSGVsbG9cbldvcmxkIiwgWyAi
SGVsbG9cbldvcmxkIiBdKTsKKwordGVzdEV2YWwoIkhlbGxvXHJccldvcmxkIiwgWyAiSGVsbG9c
blxuV29ybGQiIF0pOwordGVzdEV2YWwoIkhlbGxvXHJcbldvcmxkIiwgWyAiSGVsbG9cbldvcmxk
IiBdKTsKK3Rlc3RFdmFsKCJIZWxsb1xuXG5Xb3JsZCIsIFsgIkhlbGxvXG5cbldvcmxkIiBdKTsK
K3Rlc3RFdmFsKCJIZWxsb1xuXHJXb3JsZCIsIFsgIkhlbGxvXG5cbldvcmxkIiBdKTsKKwordGVz
dEV2YWwoIkhlbGxvXG5cclxuV29ybGQiLCBbICJIZWxsb1xuXG5Xb3JsZCIgXSk7Cit0ZXN0RXZh
bCgiSGVsbG9cclxuXHJXb3JsZCIsIFsgIkhlbGxvXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJI
ZWxsb1xuXG5cbldvcmxkIiwgWyAiSGVsbG9cblxuXG5Xb3JsZCIgXSk7CisKK3Rlc3RFdmFsKCJI
ZWxsb1xuXHJcblxyV29ybGQiLCBbICJIZWxsb1xuXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJI
ZWxsb1xuXHJcblxuV29ybGQiLCBbICJIZWxsb1xuXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJI
ZWxsb1xyXG5cblxuV29ybGQiLCBbICJIZWxsb1xuXG5cbldvcmxkIiBdKTsKKwordGVzdEV2YWwo
IkhlbGxvXFxcblxyXHJXb3JsZCIsIFsgIkhlbGxvXFxcblxuXG5Xb3JsZCIgXSk7Cit0ZXN0RXZh
bCgiSGVsbG9cXFxyXG5cblxuV29ybGQiLCBbICJIZWxsb1xcXHJcblxuXG5Xb3JsZCIgXSk7Cit0
ZXN0RXZhbCgiSGVsbG9cXFxuXHJcblxuV29ybGQiLCBbICJIZWxsb1xcXG5cblxuV29ybGQiIF0p
OwordGVzdEV2YWwoIkhlbGxvXFxcblxyXHJcbldvcmxkIiwgWyAiSGVsbG9cXFxuXG5cbldvcmxk
IiBdKTsKKwordGVzdEV2YWwoIlx1MjAyOCIsIFsgIlx1MjAyOCIgXSk7Cit0ZXN0RXZhbCgiXHUy
MDI5IiwgWyAiXHUyMDI5IiBdKTsKK3Rlc3RFdmFsKCJcXHUyMDI4IiwgWyAiXFx1MjAyOCIgXSk7
Cit0ZXN0RXZhbCgiXFx1MjAyOSIsIFsgIlxcdTIwMjkiIF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXN5bnRheC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1zeW50
YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzE5OWJhY2I5NDljMjhhNTQwYzIyMmQ2MjdkMzQ0OGFkNjMxMWM1
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
dGFnZ2VkLXRlbXBsYXRlcy1zeW50YXguanMKQEAgLTAsMCArMSw3MCBAQAorZnVuY3Rpb24gdGFn
KCkgeworfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJv
cjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4KCJ0YWdgYCIpOwordGVzdFN5
bnRheCgidGFnYEhlbGxvYCIpOwordGVzdFN5bnRheCgidGFnYEhlbGxvJHt0YWd9YCIpOwordGVz
dFN5bnRheCgidGFnYCR7dGFnfWAiKTsKK3Rlc3RTeW50YXgoInRhZ2Ake3RhZ30gJHt0YWd9YCIp
OwordGVzdFN5bnRheCgidGFnYCR7dGFnfSR7dGFnfWAiKTsKKwordGVzdFN5bnRheCgidGFnLnBy
b3BgYCIpOwordGVzdFN5bnRheCgidGFnLnByb3BgSGVsbG9gIik7Cit0ZXN0U3ludGF4KCJ0YWcu
cHJvcGBIZWxsbyR7dGFnfWAiKTsKK3Rlc3RTeW50YXgoInRhZy5wcm9wYCR7dGFnfWAiKTsKK3Rl
c3RTeW50YXgoInRhZy5wcm9wYCR7dGFnfSAke3RhZ31gIik7Cit0ZXN0U3ludGF4KCJ0YWcucHJv
cGAke3RhZ30ke3RhZ31gIik7CisKK3Rlc3RTeW50YXgoInRhZ1twcm9wXWBgIik7Cit0ZXN0U3lu
dGF4KCJ0YWdbcHJvcF1gSGVsbG9gIik7Cit0ZXN0U3ludGF4KCJ0YWdbcHJvcF1gSGVsbG8ke3Rh
Z31gIik7Cit0ZXN0U3ludGF4KCJ0YWdbcHJvcF1gJHt0YWd9YCIpOwordGVzdFN5bnRheCgidGFn
W3Byb3BdYCR7dGFnfSAke3RhZ31gIik7Cit0ZXN0U3ludGF4KCJ0YWdbcHJvcF1gJHt0YWd9JHt0
YWd9YCIpOworCit0ZXN0U3ludGF4KCIodGFnKCkpYGAiKTsKK3Rlc3RTeW50YXgoIih0YWcoKSlg
SGVsbG9gIik7Cit0ZXN0U3ludGF4KCIodGFnKCkpYEhlbGxvJHt0YWd9YCIpOwordGVzdFN5bnRh
eCgiKHRhZygpKWAke3RhZ31gIik7Cit0ZXN0U3ludGF4KCIodGFnKCkpYCR7dGFnfSAke3RhZ31g
Iik7Cit0ZXN0U3ludGF4KCIodGFnKCkpYCR7dGFnfSR7dGFnfWAiKTsKKwordGVzdFN5bnRheCgi
KGNsYXNzIHsgc2F5KCkgeyBzdXBlci50YWdgYCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3Mg
eyBzYXkoKSB7IHN1cGVyLnRhZ2BIZWxsb2AgfSB9KSIpOwordGVzdFN5bnRheCgiKGNsYXNzIHsg
c2F5KCkgeyBzdXBlci50YWdgSGVsbG8ke3RhZ31gIH0gfSkiKTsKK3Rlc3RTeW50YXgoIihjbGFz
cyB7IHNheSgpIHsgc3VwZXIudGFnYCR7dGFnfWAgfSB9KSIpOwordGVzdFN5bnRheCgiKGNsYXNz
IHsgc2F5KCkgeyBzdXBlci50YWdgJHt0YWd9ICR7dGFnfWAgfSB9KSIpOwordGVzdFN5bnRheCgi
KGNsYXNzIHsgc2F5KCkgeyBzdXBlci50YWdgJHt0YWd9JHt0YWd9YCB9IH0pIik7CisKK3Rlc3RT
eW50YXgoIihjbGFzcyBleHRlbmRzIEhlbGxvIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKClgYCB9
IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3MgZXh0ZW5kcyBIZWxsbyB7IGNvbnN0cnVjdG9yKCkg
eyBzdXBlcigpYEhlbGxvYCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3MgZXh0ZW5kcyBIZWxs
byB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpYEhlbGxvJHt0YWd9YCB9IH0pIik7Cit0ZXN0U3lu
dGF4KCIoY2xhc3MgZXh0ZW5kcyBIZWxsbyB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpYCR7dGFn
fWAgfSB9KSIpOwordGVzdFN5bnRheCgiKGNsYXNzIGV4dGVuZHMgSGVsbG8geyBjb25zdHJ1Y3Rv
cigpIHsgc3VwZXIoKWAke3RhZ30gJHt0YWd9YCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3Mg
ZXh0ZW5kcyBIZWxsbyB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpYCR7dGFnfSR7dGFnfWAgfSB9
KSIpOworCit0ZXN0U3ludGF4RXJyb3IoInN1cGVyYEhlbGxvJHt0YWd9YCIsICJTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSBzdXBlciBhcyB0YWcgZm9yIHRhZ2dlZCB0ZW1wbGF0ZXMuIik7Cit0ZXN0
U3ludGF4RXJyb3IoIihjbGFzcyB7IHNheSgpIHsgc3VwZXJgSGVsbG8ke3RhZ31gIH0gfSkiLCAi
U3ludGF4RXJyb3I6IENhbm5vdCB1c2Ugc3VwZXIgYXMgdGFnIGZvciB0YWdnZWQgdGVtcGxhdGVz
LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdn
ZWQtdGVtcGxhdGVzLXRlbXBsYXRlLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy10ZW1wbGF0ZS1vYmplY3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjgwNWRlOWE0NjIyYzZjNDgwYTU1YmYyMzRhZTBkMzU4MDIxNTYwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRl
cy10ZW1wbGF0ZS1vYmplY3QuanMKQEAgLTAsMCArMSw0MyBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHRhZyhlbGVtZW50cykgeworICAgIHJldHVybiBmdW5jdGlvbiAoc2l0ZU9iamVjdCkgeworICAg
ICAgICBzaG91bGRCZShzaXRlT2JqZWN0IGluc3RhbmNlb2YgQXJyYXksIHRydWUpOworICAgICAg
ICBzaG91bGRCZShPYmplY3QuaXNGcm96ZW4oc2l0ZU9iamVjdCksIHRydWUpOworICAgICAgICBz
aG91bGRCZShzaXRlT2JqZWN0LnJhdyBpbnN0YW5jZW9mIEFycmF5LCB0cnVlKTsKKyAgICAgICAg
c2hvdWxkQmUoT2JqZWN0LmlzRnJvemVuKHNpdGVPYmplY3QucmF3KSwgdHJ1ZSk7CisgICAgICAg
IHNob3VsZEJlKHNpdGVPYmplY3QuaGFzT3duUHJvcGVydHkoInJhdyIpLCB0cnVlKTsKKyAgICAg
ICAgc2hvdWxkQmUoc2l0ZU9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSgicmF3IiksIGZhbHNl
KTsKKyAgICAgICAgc2hvdWxkQmUoc2l0ZU9iamVjdC5sZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGgp
OworICAgICAgICBzaG91bGRCZShzaXRlT2JqZWN0LnJhdy5sZW5ndGgsIGFyZ3VtZW50cy5sZW5n
dGgpOworICAgICAgICB2YXIgY291bnQgPSBzaXRlT2JqZWN0Lmxlbmd0aDsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBzaG91bGRCZShzaXRl
T2JqZWN0Lmhhc093blByb3BlcnR5KGkpLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciBkZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzaXRlT2JqZWN0LCBpKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKGRlc2Mud3JpdGFibGUsIGZhbHNlKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KGRlc2MuZW51bWVyYWJsZSwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZShkZXNjLmNvbmZp
Z3VyYWJsZSwgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIHNob3VsZEJlKHNpdGVPYmplY3Qu
bGVuZ3RoLCBlbGVtZW50cy5sZW5ndGggKyAxKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbGVtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNob3VsZEJlKGFyZ3VtZW50c1tp
ICsgMV0sIGVsZW1lbnRzW2ldKTsKKyAgICB9OworfQorCit2YXIgdmFsdWUgPSB7CisgICAgdG9T
dHJpbmcoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignaW5jb3JyZWN0Jyk7CisgICAgfSwK
KyAgICB2YWx1ZU9mKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29ycmVjdCcpOwor
ICAgIH0KK307CisKK3RhZyhbXSlgYDsKK3RhZyhbXSlgSGVsbG9gOwordGFnKFtdKWBIZWxsbyBX
b3JsZGA7Cit0YWcoW3ZhbHVlXSlgSGVsbG8gJHt2YWx1ZX0gV29ybGRgOwordGFnKFt2YWx1ZSwg
dmFsdWVdKWBIZWxsbyAke3ZhbHVlfSBPSywgJHt2YWx1ZX1gOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXRoaXMuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtdGhpcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNGE1OTkyMGNmYmI0ODcwODc0NzkxNzVhYWM1YzRlM2NjZGVmMzYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdn
ZWQtdGVtcGxhdGVzLXRoaXMuanMKQEAgLTAsMCArMSwyNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHRhZygpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK3ZhciBv
YmplY3QgPSB7CisgICAgdGFnKCkgeworICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIHJl
dHVybiB0aGlzOworICAgIH0KK307CisKK3Nob3VsZEJlKHRhZ2BIZWxsb2AsIHVuZGVmaW5lZCk7
CitzaG91bGRCZSgoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFnIH0oKSlgSGVsbG9gLCB1bmRlZmlu
ZWQpOworc2hvdWxkQmUob2JqZWN0LnRhZ2BIZWxsb2AsIG9iamVjdCk7CitzaG91bGRCZShvYmpl
Y3RbJ3RhZyddYEhlbGxvYCwgb2JqZWN0KTsKK3Nob3VsZEJlKG9iamVjdFsoZnVuY3Rpb24gKCkg
eyByZXR1cm4gJ3RhZyc7IH0oKSldYEhlbGxvYCwgb2JqZWN0KTsKKword2l0aCAob2JqZWN0KSB7
CisgICAgc2hvdWxkQmUodGFnYEhlbGxvYCwgb2JqZWN0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjcxNGJmMzNkMWQxN2NjMjBlOGM3ZWExMmZhMWY5NWIwZTQ3NThjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxh
dGVzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsKK30KKworZnVuY3Rp
b24gcmF3KHNpdGVPYmplY3QpIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzaXRlT2JqZWN0LnJhdy5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQg
Kz0gc2l0ZU9iamVjdC5yYXdbaV07CisgICAgICAgIGlmICgoaSArIDEpIDwgYXJndW1lbnRzLmxl
bmd0aCkgeworICAgICAgICAgICAgcmVzdWx0ICs9IGFyZ3VtZW50c1tpICsgMV07CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY29va2VkKHNpdGVP
YmplY3QpIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
aXRlT2JqZWN0LnJhdy5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQgKz0gc2l0ZU9iamVj
dFtpXTsKKyAgICAgICAgaWYgKChpICsgMSkgPCBhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAg
ICAgICByZXN1bHQgKz0gYXJndW1lbnRzW2kgKyAxXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBDb3VudGVyKCkgeworICAgIHZhciBjb3VudCA9
IDA7CisgICAgcmV0dXJuIHsKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1
cm4gY291bnQrKzsKKyAgICAgICAgfQorICAgIH07Cit9CisKK3ZhciBjID0gQ291bnRlcigpOwor
c2hvdWxkQmUocmF3YEhlbGxvICR7Y30gV29ybGQgJHtjfWAsIGBIZWxsbyAwIFdvcmxkIDFgKTsK
K3ZhciBjID0gQ291bnRlcigpOworc2hvdWxkQmUocmF3YCR7Y30ke2N9JHtjfWAsIGAwMTJgKTsK
K3ZhciBjID0gQ291bnRlcigpOworc2hvdWxkQmUocmF3YCR7Y30keyBgICAke2N9ICBgIH0ke2N9
YCwgYDEgIDAgIDJgKTsKK3ZhciBjID0gQ291bnRlcigpOworc2hvdWxkQmUocmF3YCR7Y30keyBy
YXdgICAke2N9ICBgIH0ke2N9YCwgYDEgIDAgIDJgKTsKK3ZhciBjID0gQ291bnRlcigpOworc2hv
dWxkQmUocmF3YCR7Y30keyBgICAke2N9JHtjfSAgYCB9JHtjfWAsIGAyICAwMSAgM2ApOwordmFy
IGMgPSBDb3VudGVyKCk7CitzaG91bGRCZShyYXdgJHtjfSR7IHJhd2AgICR7Y30ke2N9ICBgIH0k
e2N9YCwgYDIgIDAxICAzYCk7CisKK3Nob3VsZEJlKHJhd2BgLCBgYCk7CitzaG91bGRCZShjb29r
ZWRgYCwgYGApOworc2hvdWxkQmUocmF3YFxuYCwgYFxcbmApOworc2hvdWxkQmUoY29va2VkYFxu
YCwgYFxuYCk7CitzaG91bGRCZShyYXdgXHZgLCBgXFx2YCk7CitzaG91bGRCZShjb29rZWRgXHZg
LCBgXHZgKTsKK3Nob3VsZEJlKHJhd2AKKworYCwgYFxuXG5gKTsKK3Nob3VsZEJlKGNvb2tlZGAK
KworYCwgYFxuXG5gKTsKK3Nob3VsZEJlKHJhd2BcCitcCitgLCBgXFxcblxcXG5gKTsKK3Nob3Vs
ZEJlKGNvb2tlZGBcCitcCitgLCBgYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253114</attachid>
            <date>2015-05-14 01:48:10 -0700</date>
            <delta_ts>2015-05-14 09:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143183-20150514174646.patch</filename>
            <type>text/plain</type>
            <size>87672</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OTkyZjgwZjIwZGU2YWQ4OGNkMTUyNmVjYTE5MjNhMmUwNGRmNjg5Li4yNjk1OGI4ZTYyMTRkODlh
MWNhMTk5ODVhMzk3YjNhOTQ4YmRkNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDUtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IHRhZ2dlZCB0ZW1wbGF0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBFUzYgdGFnZ2VkIHRlbXBsYXRlcy4KKyAgICAgICAgSW4gdGFnZ2VkIHRlbXBsYXRl
cywgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSB0ZW1wbGF0ZSBvYmplY3QuCisKKyAgICAgICAgVGhl
IHRlbXBsYXRlIG9iamVjdCBjb250YWlucyB0aGUgcmF3IGFuZCBjb29rZWQgdGVtcGxhdGUgc3Ry
aW5ncywKKyAgICAgICAgc28gd2hlbiBwYXJzaW5nIHRoZSB0YWdnZWQgdGVtcGxhdGVzLCB3ZSBu
ZWVkIHRvIHRva2VuaXplIHRoZSByYXcgYW5kIGNvb2tlZCBzdHJpbmdzLgorICAgICAgICBXaGls
ZSB0YWdnZWQgdGVtcGxhdGVzIHJlcXVpcmUgdGhlIGJvdGggc3RyaW5ncywgdGhlIHRlbXBsYXRl
IGxpdGVyYWwgb25seSByZXF1aXJlcworICAgICAgICB0aGUgY29va2VkIHN0cmluZ3MuIFNvIHdo
ZW4gdG9rZW5pemluZyB1bmRlciB0aGUgdGVtcGxhdGUgbGl0ZXJhbCBjb250ZXh0LAorICAgICAg
ICB3ZSBvbmx5IGJ1aWxkcyB0aGUgY29va2VkIHN0cmluZ3MuCisKKyAgICAgICAgQXMgcGVyIEVT
NiBzcGVjLCB0aGUgdGVtcGxhdGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgcmF3IHN0cmluZ3MgYXJl
IHNoYXJlZCBpbiB0aGUgc2FtZSByZWFsbS4KKyAgICAgICAgVGhlIHRlbXBsYXRlIG9iamVjdHMg
aXMgY2FjaGVkLiBBbmQgZXZlcnkgdGltZSB3ZSBldmFsdWF0ZSB0aGUgc2FtZSB0YWdnZWQgdGVt
cGxhdGVzLAorICAgICAgICB0aGUgc2FtZSAoY2FjaGVkKSB0ZW1wbGF0ZSBvYmplY3RzIGFyZSB1
c2VkLgorICAgICAgICBTaW5jZSB0aGUgc3BlYyBmcmVlemVzIHRoaXMgdGVtcGxhdGUgb2JqZWN0
cyBjb21wbGV0ZWx5LAorICAgICAgICB3ZSBjYW5ub3QgYXR0YWNoIHNvbWUgcHJvcGVydGllcyB0
byBpdC4KKyAgICAgICAgU28gd2UgY2FuIHNheSB0aGF0IGl0IGJlaGF2ZXMgYXMgaWYgdGhlIHRl
bXBsYXRlIG9iamVjdHMgYXJlIHRoZSBwcmltaXRpdmUgdmFsdWVzIChsaWtlIEpTU3RyaW5nKS4K
KyAgICAgICAgU2luY2Ugd2UgY2Fubm90IGF0dGFjaCBwcm9wZXJ0aWVzLCB0aGUgb25seSB3YXkg
dG8gdGVzdCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRlbXBsYXRlIG9iamVjdCBpcyBjb21wYXJpbmcu
ICg9PT0pCisgICAgICAgIEFzIHRoZSByZXN1bHQsIHdoZW4gdGhlcmUgaXMgbm8gcmVmZXJlbmNl
IHRvIHRoZSB0ZW1wbGF0ZSBvYmplY3QsIHdlIGNhbiBnYXJiYWdlIGNvbGxlY3QgaXQKKyAgICAg
ICAgYmVjYXVzZSB0aGUgdXNlciBoYXMgbm8gd2F5IHRvIHRlc3QgdGhhdCB0aGUgbmV3bHkgY3Jl
YXRlZCB0ZW1wbGF0ZSBvYmplY3QgZG9lcyBub3QgZXF1YWwKKyAgICAgICAgdG8gdGhlIGFscmVh
ZHkgY29sbGVjdGVkIHRlbXBsYXRlIG9iamVjdC4KKworICAgICAgICBTbywgdG8gaW1wbGVtZW50
IHRhZ2dlZCB0ZW1wbGF0ZXMsIHdlIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMu
CisKKyAgICAgICAgMS4gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5CisgICAgICAgIEl0IGhvbGRzIHRo
ZSB0ZW1wbGF0ZSByZWdpc3RyeSBrZXkgYW5kIGl0IGRvZXMgbm90IGV4cG9zZWQgdG8gdXNlcnMu
CisgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkgaG9sZHMgdGhlIHZlY3RvciBvZiByYXcgYW5k
IGNvb2tlZCBzdHJpbmdzIHdpdGggdGhlIHByZS1jb21wdXRlZCBoYXNoIHZhbHVlLgorICAgICAg
ICBXaGVuIG9idGFpbmluZyB0aGUgdGVtcGxhdGUgb2JqZWN0IGZvciB0aGUgKHN0YXRpY2FsbHks
IGEuay5hLiBhdCB0aGUgcGFyc2luZyB0aW1lKSBnaXZlbiByYXcgc3RyaW5nIHZlY3RvcnMsCisg
ICAgICAgIHdlIHVzZSB0aGlzIEpTVGVtcGxhdGVSZWdpc3RyeUtleSBhcyBhIGtleSB0byB0aGUg
bWFwIGFuZCBsb29rIHVwIHRoZSB0ZW1wbGF0ZSBvYmplY3QgZnJvbQorICAgICAgICBUZW1wbGF0
ZVJlZ2lzdHJ5LgorICAgICAgICBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgaXMgY3JlYXRlZCBhdCB0
aGUgYnl0ZWNvZGUgY29tcGlsaW5nIHRpbWUgYW5kCisgICAgICAgIHN0b3JlZCBpbiB0aGUgQ29k
ZUJsb2NrIGFzIGxpa2UgYXMgSlNTdHJpbmcgY29udGVudCB2YWx1ZXMuCisKKyAgICAgICAgMi4g
VGVtcGxhdGVSZWdpc3RyeQorICAgICAgICBUaGlzIG1hbmFnZXMgdGhlIGNhY2hlZCB0ZW1wbGF0
ZSBvYmplY3RzLgorICAgICAgICBJdCBob2xkcyB0aGUgd2VhayBtYXAgKEpTVGVtcGxhdGVSZWdp
c3RyeUtleSAtPiB0aGUgdGVtcGxhdGUgb2JqZWN0KS4KKyAgICAgICAgVGhlIHRlbXBsYXRlIG9i
amVjdCBpcyB3ZWFrbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgU28gaWYgdGhlcmUgaXMgbm8gcmVm
ZXJlbmNlIHRvIHRoZSB0ZW1wbGF0ZSBvYmplY3QsCisgICAgICAgIHRoZSB0ZW1wbGF0ZSBvYmpl
Y3QgaXMgYXV0b21hdGljYWxseSBHQy1lZC4KKyAgICAgICAgV2hlbiBsb29raW5nIHVwIHRoZSB0
ZW1wbGF0ZSBvYmplY3QsIGl0IHNlYXJjaGVzIHRoZSBjYWNoZWQgdGVtcGxhdGUgb2JqZWN0Lgor
ICAgICAgICBJZiBpdCBpcyBmb3VuZCwgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXJzLgorICAg
ICAgICBJZiB0aGVyZSBpcyBubyBjYWNoZWQgdGVtcGxhdGUgb2JqZWN0cywgaXQgY3JlYXRlcyB0
aGUgbmV3IHRlbXBsYXRlIG9iamVjdCBhbmQKKyAgICAgICAgc3RvcmVzIGl0IHdpdGggdGhlIGdp
dmVuIHRlbXBsYXRlIHJlZ2lzdHJ5IGtleS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFRlbXBsYXRlT2Jq
ZWN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGFnZ2Vk
VGVtcGxhdGVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZUxpdGVy
YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVRhZ2dlZFRlbXBsYXRlKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGVtcGxhdGVMaXRlcmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZVRlbXBsYXRlTGl0ZXJhbCk6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6Y2xl
YXIpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bWFrZUVtcHR5SWRlbnRpZmllcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6VGFnZ2VkVGVtcGxhdGVOb2RlOjpUYWdnZWRUZW1wbGF0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpUZW1wbGF0ZUxpdGVyYWxOb2RlOjpUZW1wbGF0ZUxpdGVyYWxOb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6VGVt
cGxhdGVMaXRlcmFsTm9kZTo6dGVtcGxhdGVTdHJpbmdzKToKKyAgICAgICAgKEpTQzo6VGVtcGxh
dGVMaXRlcmFsTm9kZTo6dGVtcGxhdGVFeHByZXNzaW9ucyk6CisgICAgICAgIChKU0M6OlRhZ2dl
ZFRlbXBsYXRlTm9kZTo6dGVtcGxhdGVMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGVtcGxhdGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUZW1wbGF0ZUxpdGVy
YWwpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlRW1wdHlJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVUYWdnZWRUZW1wbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZVRlbXBsYXRlTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRUZW1wbGF0ZU9iamVjdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0ZW1wbGF0ZVJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OkpTVGVtcGxhdGVSZWdpc3RyeUtleSk6CisgICAgICAg
IChKU0M6OkpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTVGVtcGxh
dGVSZWdpc3RyeUtleS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUpOgorICAgICAg
ICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBs
YXRlUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeTo6
VGVtcGxhdGVSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlUmVnaXN0cnk6OmdldFRl
bXBsYXRlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAg
IChKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6
OlRlbXBsYXRlUmVnaXN0cnlLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lz
dHJ5S2V5OjpyYXdTdHJpbmdzKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6
Y29va2VkU3RyaW5ncyk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6SGFzaGVyOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6SGFzaGVyOjplcXVhbCk6CisgICAgICAgIChK
U0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6OlRlbXBsYXRlUmVnaXN0cnlLZXkpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1pZGVudGl0
eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L3RhZ2dlZC10ZW1wbGF0ZXMtcmF3LXN0cmluZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGFnKToKKyAgICAgICAgKHRlc3RFdmFsKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAodGFn
KToKKyAgICAgICAgKHRlc3RTeW50YXgpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy10ZW1wbGF0ZS1vYmplY3QuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGFnKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRhZyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3RhZ2dlZC10
ZW1wbGF0ZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocmF3KToK
KyAgICAgICAgKGNvb2tlZCk6CisgICAgICAgIChDb3VudGVyKToKKwogMjAxNS0wNS0xMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxODA1
OTUpOiBzYW1lLWNhbGxlZSBwcm9maWxpbmcgbm8gbG9uZ2VyIHdvcmtzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTUzMjE1NDE5OTI1NmJhOTQxMTMwMzg5ODI1M2ZmODgz
YWZhZmM2Ni4uYzMzNmRlNjQ5NjAxOTYxZGFjMmVhOWYyODQxMDI4NTU5ZGM1ZmNiNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTEyLDYgKzUxMiw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTU3RyaW5nSXRlcmF0b3Iu
Y3BwCiAgICAgcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKICAgICBydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCiAg
ICAgcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCiAgICAgcnVudGltZS9KU1R5
cGVkQXJyYXlQcm90b3R5cGVzLmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKQEAg
LTU3OCw2ICs1NzksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAg
cnVudGltZS9TeW1ib2xPYmplY3QuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKyAgICBydW50aW1lL1RlbXBsYXRlUmVnaXN0
cnkuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAgcnVudGltZS9UeXBl
TG9jYXRpb25DYWNoZS5jcHAKICAgICBydW50aW1lL1R5cGVQcm9maWxlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDc2YmQ4ODY0ZTcxYWM0OTM2OTFlNWFl
ZjBhNzc3YTM4YTVjMDFiN2MuLmZlMDgwMGQyMDkwYTY2Mjg5ODgwYTMzN2EzZjM4ZmZkNWI3OWMy
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzcxLDYgKzc3
MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSXRlcmF0
b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pv
aW5lci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3ltYm9s
VGFibGVPYmplY3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlZEFycmF5cy5jcHAiIC8+CkBAIC04
MzgsNiArODM5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9s
T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9s
UHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3lt
Ym9sVGFibGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUZW1w
bGF0ZVJlZ2lzdHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
VGVzdFJ1bm5lclV0aWxzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxUeXBlZEFycmF5VHlwZS5jcHAiIC8+CkBAIC0xNTkwLDYgKzE1OTIsNyBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0l0ZXJhdG9yLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSm9pbmVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3ltYm9sVGFibGVPYmplY3Qu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1R5cGVJbmZvLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5oIiAvPgpAQCAtMTY4Myw2ICsxNjg2LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3ltYm9sT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN5bWJvbFByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTeW1ib2xUYWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxUZW1wbGF0ZVJlZ2lzdHJ5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFRlbXBsYXRlUmVnaXN0cnlLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0aWxzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXFRyYWNpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVG9OYXRpdmVGcm9tVmFsdWUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA1MzhkYWU0MDg5NzExMTViM2NjNTI0
ZDliYjQ4Yjc3YWRiMWI4NTQzLi44ODU5NTEyNDk0MTU1NjJhOWI0MWZkZDlkMDRmOGEyMzA1OTI2
NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC03MDgsNiArNzA4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTRW52aXJvbm1lbnRSZWNvcmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtODczLDYgKzg3Niw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVGVtcGxhdGVSZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFR5cGVMb2NhdGlvbkNhY2hlLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI3NjMsNiArMjc2OSw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3ltYm9sVGFibGVPYmplY3QuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTVHlwZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjk1Miw2ICsyOTYxLDEyIEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmgiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFRlbXBsYXRlUmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcVGVtcGxhdGVSZWdpc3RyeUtleS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxU
cmFjaW5nLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxOTJlNjk1ZWMwNzI1YTM2NDc5
NDkwNTdkYzYzNDcwZGJlMGQxZGUuLjU4MDJmN2NkYmI3NzE1NzVjOWRkZjUzMjAwYjYxZGUyNTgy
ZTgxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDA1LDYgKzEwMDUsMTEg
QEAKIAkJNzBFQzBFQzUxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUMw
RUJGMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQzBFQzYxQUEw
RDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUMwRUMwMUFBMEQ3REEwMEI2QUFG
QSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwRUMwRUM3MUFBMEQ3
REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8q
IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBFQ0E2MDUxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxh
dGVSZWdpc3RyeUtleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEVDQTYwMDFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmNwcCAqLzsgfTsKKwkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdp
c3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwRUNBNjA3MUFG
REJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAyMUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5LmNwcCAqLzsgfTsKKwkJNzBFQ0E2MDgxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBFQ0E2
MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTcz
OSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlz
ZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCAq
LzsgfTsKIAkJN0MwMDhDRDMxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMDhDRDEx
ODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMy
NCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVm
ZXJyZWQuY3BwICovOyB9OwpAQCAtMjc0MSw2ICsyNzQ2LDExIEBACiAJCTcwRUMwRUJGMUFBMEQ3
REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQzBFQzAxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAwMUFGREJFQTIwMDQ0OTcz
OSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQ0E2MDIxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlUmVnaXN0cnlLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxh
dGVSZWdpc3RyeUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEMDE4
NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8q
IEpTUHJvbWlzZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb21pc2VGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhD
RDgxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NjksNiArNDU3OSw4IEBACiAJCQkJMjYwMEI1QTUxNTJC
QUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCiAJCQkJMEY5MTlEMDkxNTdFRTA5
RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovLAogCQkJCTBGOTE5RDBBMTU3
RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCisJCQkJNzBFQ0E2MDAx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8sCisJCQkJNzBF
Q0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAogCQkJ
CTE0QUJCNDU0MDk5QzJBMEYwMEUyQTI0RiAvKiBKU1R5cGUuaCAqLywKIAkJCQkwRjJCNjZDQzE3
QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCAqLywKIAkJCQkw
RjJCNjZDRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggKi8s
CkBAIC00NzMwLDYgKzQ3NDIsOSBAQAogCQkJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBT
eW1ib2xQcm90b3R5cGUuaCAqLywKIAkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3lt
Ym9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xU
YWJsZS5oICovLAorCQkJCTcwRUNBNjAyMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lz
dHJ5LmNwcCAqLywKKwkJCQk3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdp
c3RyeS5oICovLAorCQkJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmggKi8sCiAJCQkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJV
dGlscy5jcHAgKi8sCiAJCQkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJV
dGlscy5oICovLAogCQkJCTBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21W
YWx1ZS5oICovLApAQCAtNTcwMyw2ICs1NzE4LDcgQEAKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBG
MUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMy
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGMzQx
ODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzBFQ0E2MDgxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2Rl
QmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAv
KiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjkxLDYgKzYz
MDcsNyBAQAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENv
ZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2
RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJ
bnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NEMDIxOUFEQTQxMTAwNkFDNzJBIC8qIERG
R05haXZlRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCkBAIC02Mzc1LDYgKzYzOTIsNyBAQAog
CQkJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDVCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNTJDMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJDNDBFMTcwNkE3MDAy
QzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1RDBF
MTZGNUNEMDBCMzQ0NjAgLyogUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzJC
MEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLywKQEAgLTcxMzYs
NiArNzE1NCw3IEBACiAJCQkJMEZEOEEzMjUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTA2ODY3MUFFMjVF
MjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzBFQ0E2MDcxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRUIxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRC
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzYxNDY5NDNC
MDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNzQ4OSw2ICs3NTA4LDcgQEAKIAkJCQkwRkIxMDU4QjE2NzU0ODMxMDBGOEFCNkUgLyogUHJv
ZmlsZXJPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNThEMTY3NTQ4MzcwMEY4
QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5
MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTcwRUNBNjA1MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVn
aXN0cnlLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2
IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEw
N0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFE
RTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCA1ZmU5ZTBlMmFjZWViNGEzM2JmMTVhYTMxNTIzY2ZmOGM0
MDg3NmQ0Li4xNGExZTk3NDQ1ZGNlNGRjNDllZTA2ZWFmM2IxZGRkZWMxZWQzY2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgi
CisjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25z
LmgiCkBAIC0xNzE3LDYgKzE3MTgsMTYgQEAgSlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHJldHVy
biBzdHJpbmdJbk1hcDsKIH0KIAorSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBCeXRlY29kZUdlbmVy
YXRvcjo6YWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KGNvbnN0IFRlbXBsYXRlUmVnaXN0
cnlLZXkmIHRlbXBsYXRlUmVnaXN0cnlLZXkpCit7CisgICAgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
KiYgdGVtcGxhdGVSZWdpc3RyeUtleUluTWFwID0gbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwLmFk
ZCh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYg
KCF0ZW1wbGF0ZVJlZ2lzdHJ5S2V5SW5NYXApIHsKKyAgICAgICAgdGVtcGxhdGVSZWdpc3RyeUtl
eUluTWFwID0gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpjcmVhdGUoKnZtKCksIHRlbXBsYXRlUmVn
aXN0cnlLZXkpOworICAgICAgICBhZGRDb25zdGFudFZhbHVlKHRlbXBsYXRlUmVnaXN0cnlLZXlJ
bk1hcCk7CisgICAgfQorICAgIHJldHVybiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5SW5NYXA7Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCog
ZHN0LCBFbGVtZW50Tm9kZSogZWxlbWVudHMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECkBAIC0yNzk3LDYgKzI4MDgsMzMgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNz
aW8KICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFn
Z2VkVGVtcGxhdGVOb2RlKiB0YWdnZWRUZW1wbGF0ZSkKK3sKKyAgICBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5OjpTdHJpbmdWZWN0b3IgcmF3U3RyaW5nczsKKyAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpT
dHJpbmdWZWN0b3IgY29va2VkU3RyaW5nczsKKworICAgIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUq
IHRlbXBsYXRlU3RyaW5nID0gdGFnZ2VkVGVtcGxhdGUtPnRlbXBsYXRlTGl0ZXJhbCgpLT50ZW1w
bGF0ZVN0cmluZ3MoKTsKKyAgICBmb3IgKDsgdGVtcGxhdGVTdHJpbmc7IHRlbXBsYXRlU3RyaW5n
ID0gdGVtcGxhdGVTdHJpbmctPm5leHQoKSkgeworICAgICAgICByYXdTdHJpbmdzLmFwcGVuZCh0
ZW1wbGF0ZVN0cmluZy0+dmFsdWUoKS0+cmF3KCkuaW1wbCgpKTsKKyAgICAgICAgY29va2VkU3Ry
aW5ncy5hcHBlbmQodGVtcGxhdGVTdHJpbmctPnZhbHVlKCktPmNvb2tlZCgpLmltcGwoKSk7Cisg
ICAgfQorCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldFRlbXBsYXRlT2JqZWN0ID0gbnVsbHB0
cjsKKyAgICBWYXJpYWJsZSB2YXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuZ2V0VGVtcGxh
dGVPYmplY3RQcml2YXRlTmFtZSk7CisgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxv
Y2FsKCkpCisgICAgICAgIGdldFRlbXBsYXRlT2JqZWN0ID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5
KCksIGxvY2FsKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZ2V0VGVtcGxhdGVPYmplY3QgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoc2NvcGUuZ2V0KCksIGVt
aXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOworICAgICAgICBlbWl0R2V0RnJvbVNj
b3BlKGdldFRlbXBsYXRlT2JqZWN0LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgIH0KKworICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIEpTVmFsdWUoYWRk
VGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFRlbXBsYXRlUmVnaXN0cnlLZXkocmF3U3RyaW5n
cywgY29va2VkU3RyaW5ncykpKSk7CisgICAgcmV0dXJuIGVtaXRDYWxsKGRzdCwgZ2V0VGVtcGxh
dGVPYmplY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1lbnRzLCB0YWdnZWRUZW1w
bGF0ZS0+ZGl2b3QoKSwgdGFnZ2VkVGVtcGxhdGUtPmRpdm90U3RhcnQoKSwgdGFnZ2VkVGVtcGxh
dGUtPmRpdm90RW5kKCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEVudW1lcmFibGVMZW5ndGgoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQog
ewogICAgIGVtaXRPcGNvZGUob3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCA4NWRmYjllZGFkZWQzMGYzOWZkODI3YjUwZjI0NWZmMzYxYzVkYjRjLi40NmY4ZTI1OGE5
YjRkMzFmYzFlYjVkMTU3NDM5MzQzN2JmOTZkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgIlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CkBAIC01NSw2ICs1Niw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElk
ZW50aWZpZXI7CisgICAgY2xhc3MgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OwogCiAgICAgZW51bSBF
eHBlY3RlZEZ1bmN0aW9uIHsKICAgICAgICAgTm9FeHBlY3RlZEZ1bmN0aW9uLApAQCAtNTAxLDYg
KzUwMyw3IEBACiAgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVk
IG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CiAKICAgICAgICAgdm9pZCBlbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjayk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXBsYXRlTm9k
ZSopOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklE
KiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdFVuYXJ5Tm9Ec3RPcChvcF9lbmQsIHNyYyk7IH0KQEAgLTYyMiw2ICs2MjUsNyBA
QAogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+IE51bWJlck1hcDsK
ICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZp
ZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8
VGVtcGxhdGVSZWdpc3RyeUtleSwgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Kj4gVGVtcGxhdGVSZWdp
c3RyeUtleU1hcDsKICAgICAgICAgCiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwoKSBh
bmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgogICAgICAg
ICAvLyBleHBlY3RlZCBmdW5jdGlvbnMgaGF2ZSBpZGVudGljYWwgYmVoYXZpb3IgZm9yIGJvdGgg
Y2FsbCBhbmQgY29uc3RydWN0CkBAIC02NzYsNiArNjgwLDcgQEAKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBhZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3Rh
bnQoY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYpOwogCiAgICAgICAgIFZlY3RvcjxVbmxpbmtl
ZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAKQEAgLTc2NSw2ICs3NzAsNyBAQAogICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVk
LCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0
aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1h
cCBtX2pzVmFsdWVNYXA7CiAgICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7
CisgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFw
OwogCiAgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5
emVyIHsgJm1faW5zdHJ1Y3Rpb25zIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBmZjIxMGMzZGRiNDEyNDVlOGVh
M2RlYjhiZWIxYzllYTIzZDc4MTNkLi5lOTdkMzkzZTM3ZTQxZmI0YWQ0YWY1MzA1Nzk2NjhkMmRk
ODMwZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC00MCwxMiArNDAsMTQgQEAKICNpbmNsdWRlICJMYWJlbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUg
IlN0YWNrQWxpZ25tZW50LmgiCisjaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTI2MCw2ICsyNjIsNjQgQEAg
UmVnaXN0ZXJJRCogVGVtcGxhdGVMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKIAogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFN0cmNh
dChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHRlbXBvcmFyeVJlZ2lzdGVyc1swXS5n
ZXQoKSksIHRlbXBvcmFyeVJlZ2lzdGVyc1swXS5nZXQoKSwgdGVtcG9yYXJ5UmVnaXN0ZXJzLnNp
emUoKSk7CiB9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUYWdnZWRUZW1w
bGF0ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVnaXN0ZXJJ
RCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0
ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGFnID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IG51bGxwdHI7Cisg
ICAgaWYgKCFtX3RhZy0+aXNMb2NhdGlvbigpKSB7CisgICAgICAgIHRhZyA9IGdlbmVyYXRvci5l
bWl0Tm9kZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1fdGFnKTsKKyAgICB9IGVsc2UgaWYg
KG1fdGFnLT5pc1Jlc29sdmVOb2RlKCkpIHsKKyAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fdGFnKTsKKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKKyAgICAgICAgZXhwZWN0
ZWRGdW5jdGlvbiA9IGdlbmVyYXRvci5leHBlY3RlZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihpZGVu
dGlmaWVyKTsKKworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRl
bnRpZmllcik7CisgICAgICAgIGlmIChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5sb2NhbCgpKQor
ICAgICAgICAgICAgdGFnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgbG9jYWwpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisKKyAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFy
dCgpICsgaWRlbnRpZmllci5sZW5ndGgoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoYmFzZS5nZXQoKSwgZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUoYmFzZS5nZXQoKSwgdmFyKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldEZyb21TY29wZSh0YWcuZ2V0KCksIGJhc2UuZ2V0KCksIHZhciwgVGhyb3dJ
Zk5vdEZvdW5kKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV90YWctPmlzQnJhY2tldEFj
Y2Vzc29yTm9kZSgpKSB7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBz
dGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obV90YWcpOworICAgICAgICBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYnJhY2tldC0+YmFz
ZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGJyYWNrZXQtPnN1YnNjcmlwdCgpKTsKKyAgICAgICAgdGFnID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5
LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV90YWctPmlzRG90QWNjZXNz
b3JOb2RlKCkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERv
dEFjY2Vzc29yTm9kZSo+KG1fdGFnKTsKKyAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGRvdC0+YmFzZSgpKTsKKyAgICAgICAgdGFnID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQo
KSwgZG90LT5pZGVudGlmaWVyKCkpOworICAgIH0KKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0
ZW1wbGF0ZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0VGVtcGxhdGVPYmplY3QoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCB0aGlzKTsKKworICAgIHVuc2lnbmVkIGV4cHJlc3Npb25zQ291bnQg
PSAwOworICAgIGZvciAoVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRlbXBsYXRlRXhwcmVz
c2lvbiA9IG1fdGVtcGxhdGVMaXRlcmFsLT50ZW1wbGF0ZUV4cHJlc3Npb25zKCk7IHRlbXBsYXRl
RXhwcmVzc2lvbjsgdGVtcGxhdGVFeHByZXNzaW9uID0gdGVtcGxhdGVFeHByZXNzaW9uLT5uZXh0
KCkpCisgICAgICAgICsrZXhwcmVzc2lvbnNDb3VudDsKKworICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDEgKyBleHByZXNzaW9uc0NvdW50KTsKKyAg
ICBpZiAoYmFzZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworCisg
ICAgdW5zaWduZWQgYXJndW1lbnRJbmRleCA9IDA7CisgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KyspLCB0ZW1wbGF0ZU9i
amVjdC5nZXQoKSk7CisgICAgZm9yIChUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSogdGVtcGxh
dGVFeHByZXNzaW9uID0gbV90ZW1wbGF0ZUxpdGVyYWwtPnRlbXBsYXRlRXhwcmVzc2lvbnMoKTsg
dGVtcGxhdGVFeHByZXNzaW9uOyB0ZW1wbGF0ZUV4cHJlc3Npb24gPSB0ZW1wbGF0ZUV4cHJlc3Np
b24tPm5leHQoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KyspLCB0ZW1wbGF0ZUV4cHJlc3Npb24tPnZhbHVl
KCkpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIHRhZy5nZXQoKSksIHRhZy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKK30KICNlbmRp
ZgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAppbmRleCBjNDk0NTM2MTcyNTk4MjJkZGNjMGM2ZDM0NGRiM2FmODM2NmM5
NGY1Li5mYmNiZTI2NTQ1NzJhYTZlOTkxMjQzYzk3NmJiYzQ5OTkxYWJjNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjg4LDYgKzI4OCwxMyBAQCBj
bGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFRlbXBsYXRlTGl0ZXJhbE5vZGUobG9jYXRpb24sIHRlbXBsYXRlU3RyaW5nTGlzdCwgdGVt
cGxhdGVFeHByZXNzaW9uTGlzdCk7CiAgICAgfQorCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZVRhZ2dlZFRlbXBsYXRlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBUZW1wbGF0ZUxpdGVyYWxOb2RlKiB0ZW1wbGF0ZUxpdGVyYWwsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIHsKKyAgICAgICAgYXV0byBub2RlID0gbmV3ICht
X3BhcnNlckFyZW5hKSBUYWdnZWRUZW1wbGF0ZU5vZGUobG9jYXRpb24sIGJhc2UsIHRlbXBsYXRl
TGl0ZXJhbCk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZv
dCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQogI2VuZGlmCiAKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgc3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IDk2ZWI3YWFiMjM5YTM4NmQwN2Y2MGRiYTc0ZTZmYWQxZmE2Y2QzN2EuLjdiMTE5
YmE0NjRkMzI1YzM1OTEwZDI4ZWMxNjQxZjRhZGFhODVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC01NjksNiArNTY5LDcgQEAgc3RhdGljIGlubGluZSBKU1Rv
a2VuVHlwZSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKGRvdWJsZSBkb3VibGVWYWx1ZSkK
ICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1
ZmZlckNhcGFjaXR5KTsKICAgICBtX2J1ZmZlcjE2LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoKG1f
Y29kZUVuZCAtIG1fY29kZSkgLyAyKTsKKyAgICBtX2J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5n
MTYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKICAg
ICAKICAgICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCiAgICAgICAgIG1fY3VycmVu
dCA9ICptX2NvZGU7CkBAIC0xMzc0LDcgKzEzNzUsNyBAQCBjbGFzcyBMaW5lTnVtYmVyQWRkZXIg
ewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWls
ZFN0cmluZ3M+IHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPjo6
cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSkKK3RlbXBsYXRlIDxi
b29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVz
dWx0IExleGVyPFQ+OjpwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSogdG9rZW5EYXRh
LCBSYXdTdHJpbmdzQnVpbGRNb2RlIHJhd1N0cmluZ3NCdWlsZE1vZGUpCiB7CiAgICAgY29uc3Qg
VCogc3RyaW5nU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgY29uc3QgVCogcmF3U3Ry
aW5nU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CkBAIC0xNDM1LDEwICsxNDM2LDE2IEBAIGNs
YXNzIExpbmVOdW1iZXJBZGRlciB7CiAgICAgICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvciht
X2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnXHInKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSA8Q1I+LCA8Q1I+PExGPiB0byA8TEY+Lgot
ICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigp
ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZDE2
KHN0cmluZ1N0YXJ0LCBjdXJyZW50U291cmNlUHRyKCkgLSBzdHJpbmdTdGFydCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCisgICAgICAgICAgICAgICAgICAg
IGlmIChzaG91bGRCdWlsZFN0cmluZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJpbmdTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0cmluZ1N0
YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXdTdHJpbmdTdGFydCAhPSBjdXJy
ZW50U291cmNlUHRyKCkgJiYgcmF3U3RyaW5nc0J1aWxkTW9kZSA9PSBSYXdTdHJpbmdzQnVpbGRN
b2RlOjpCdWlsZFJhd1N0cmluZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9idWZm
ZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2LmFwcGVuZChyYXdTdHJpbmdTdGFydCwgY3VycmVudFNv
dXJjZVB0cigpIC0gcmF3U3RyaW5nU3RhcnQpOworCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWNvcmQxNignXG4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXdTdHJpbmdzQnVp
bGRNb2RlID09IFJhd1N0cmluZ3NCdWlsZE1vZGU6OkJ1aWxkUmF3U3RyaW5ncykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYuYXBwZW5k
KCdcbicpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGxpbmVO
dW1iZXJBZGRlci5hZGQobV9jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnXG4nKSB7CkBAIC0xNDQ2LDYg
KzE0NTMsNyBAQCBjbGFzcyBMaW5lTnVtYmVyQWRkZXIgewogICAgICAgICAgICAgICAgICAgICAg
ICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBz
dHJpbmdTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgcmF3
U3RyaW5nU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlckFkZGVyLmFkZChtX2N1cnJlbnQpOwog
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtMTQ2MSwyNCArMTQ2OSwyOCBAQCBjbGFz
cyBMaW5lTnVtYmVyQWRkZXIgewogCiAgICAgYm9vbCBpc1RhaWwgPSBtX2N1cnJlbnQgPT0gJ2An
OwogCi0gICAgaWYgKGN1cnJlbnRTb3VyY2VQdHIoKSAhPSBzdHJpbmdTdGFydCAmJiBzaG91bGRC
dWlsZFN0cmluZ3MpCi0gICAgICAgIGFwcGVuZDE2KHN0cmluZ1N0YXJ0LCBjdXJyZW50U291cmNl
UHRyKCkgLSBzdHJpbmdTdGFydCk7CisgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykgeworICAg
ICAgICBpZiAoY3VycmVudFNvdXJjZVB0cigpICE9IHN0cmluZ1N0YXJ0KQorICAgICAgICAgICAg
YXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHN0cmluZ1N0YXJ0KTsK
KyAgICAgICAgaWYgKHJhd1N0cmluZ1N0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSAmJiByYXdT
dHJpbmdzQnVpbGRNb2RlID09IFJhd1N0cmluZ3NCdWlsZE1vZGU6OkJ1aWxkUmF3U3RyaW5ncykK
KyAgICAgICAgICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5hcHBlbmQocmF3U3Ry
aW5nU3RhcnQsIGN1cnJlbnRTb3VyY2VQdHIoKSAtIHJhd1N0cmluZ1N0YXJ0KTsKKyAgICB9CiAK
ICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKSB7CiAgICAgICAgIHRva2VuRGF0YS0+Y29va2Vk
ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsK
LSAgICAgICAgLy8gVE9ETzogV2hpbGUgbGluZSB0ZXJtaW5hdG9yIG5vcm1hbGl6YXRpb24gKGUu
Zy4gPENSPiA9PiA8TEY+KSBzaG91bGQgYmUgYXBwbGllZCB0byBib3RoIHRoZSByYXcgYW5kIGNv
b2tlZCByZXByZXNlbnRhdGlvbnMsCi0gICAgICAgIC8vIHRoaXMgcmF3IGltcGxlbWVudGF0aW9u
IGp1c3Qgc2xpY2VzIHRoZSBzb3VyY2Ugc3RyaW5nLiBBcyBhIHJlc3VsdCwgbGluZSB0ZXJtaW5h
dG9ycyBhcHBlYXIgaW4gdGhlIHJhdyByZXByZXNlbnRhdGlvbiB3aXRob3V0IG5vcm1hbGl6YXRp
b24uCi0gICAgICAgIC8vIEZvciBleGFtcGxlLCB3aGVuIHBhcnNpbmcgYDxDUj5gLCA8Q1I+IGFw
cGVhcnMgaW4gdGhlIHJhdyByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgLy8gV2hpbGUgbm9uLXRh
Z2dlZCB0ZW1wbGF0ZSBsaXRlcmFscyBkb24ndCB1c2UgdGhlIHJhdyByZXByZXNlbnRhdGlvbiwg
dGFnZ2VkIHRlbXBsYXRlcyB1c2UgdGhlIHJhdyByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgLy8g
U28gbGluZSB0ZXJtaW5hdG9yIG5vcm1hbGl6YXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhl
IHJhdyByZXByZXNlbnRhdGlvbiB3aGVuIGltcGxlbWVudGluZyB0YWdnZWQgdGVtcGxhdGVzLgot
ICAgICAgICB0b2tlbkRhdGEtPnJhdyA9IG1ha2VJZGVudGlmaWVyKHJhd1N0cmluZ1N0YXJ0LCBj
dXJyZW50U291cmNlUHRyKCkgLSByYXdTdHJpbmdTdGFydCk7CisgICAgICAgIC8vIExpbmUgdGVy
bWluYXRvciBub3JtYWxpemF0aW9uIChlLmcuIDxDUj4gPT4gPExGPikgc2hvdWxkIGJlIGFwcGxp
ZWQgdG8gYm90aCB0aGUgcmF3IGFuZCBjb29rZWQgcmVwcmVzZW50YXRpb25zLgorICAgICAgICBp
ZiAocmF3U3RyaW5nc0J1aWxkTW9kZSA9PSBSYXdTdHJpbmdzQnVpbGRNb2RlOjpCdWlsZFJhd1N0
cmluZ3MpCisgICAgICAgICAgICB0b2tlbkRhdGEtPnJhdyA9IG1ha2VJZGVudGlmaWVyKG1fYnVm
ZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5kYXRhKCksIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVT
dHJpbmcxNi5zaXplKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0b2tlbkRhdGEtPnJh
dyA9IG1ha2VFbXB0eUlkZW50aWZpZXIoKTsKICAgICB9IGVsc2UgewotICAgICAgICB0b2tlbkRh
dGEtPmNvb2tlZCA9IG51bGxwdHI7Ci0gICAgICAgIHRva2VuRGF0YS0+cmF3ID0gbnVsbHB0cjsK
KyAgICAgICAgdG9rZW5EYXRhLT5jb29rZWQgPSBtYWtlRW1wdHlJZGVudGlmaWVyKCk7CisgICAg
ICAgIHRva2VuRGF0YS0+cmF3ID0gbWFrZUVtcHR5SWRlbnRpZmllcigpOwogICAgIH0KICAgICB0
b2tlbkRhdGEtPmlzVGFpbCA9IGlzVGFpbDsKIAogICAgIG1fYnVmZmVyMTYuc2hyaW5rKDApOwor
ICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5zaHJpbmsoMCk7CiAKICAgICBpZiAo
aXNUYWlsKSB7CiAgICAgICAgIC8vIFNraXAgYApAQCAtMjEyNSw5ICsyMTM3LDkgQEAgY2xhc3Mg
TGluZU51bWJlckFkZGVyIHsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgU3RyaW5nUGFyc2VS
ZXN1bHQgcmVzdWx0ID0gU3RyaW5nQ2Fubm90QmVQYXJzZWQ7CiAgICAgICAgIGlmIChsZXhlckZs
YWdzICYgTGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3MpCi0gICAgICAgICAgICByZXN1bHQgPSBw
YXJzZVRlbXBsYXRlTGl0ZXJhbDxmYWxzZT4odG9rZW5EYXRhKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHBhcnNlVGVtcGxhdGVMaXRlcmFsPGZhbHNlPih0b2tlbkRhdGEsIFJhd1N0cmluZ3NCdWls
ZE1vZGU6OkJ1aWxkUmF3U3RyaW5ncyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHBhcnNlVGVtcGxhdGVMaXRlcmFsPHRydWU+KHRva2VuRGF0YSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBwYXJzZVRlbXBsYXRlTGl0ZXJhbDx0cnVlPih0b2tlbkRhdGEsIFJhd1N0cmluZ3NC
dWlsZE1vZGU6OkJ1aWxkUmF3U3RyaW5ncyk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKHJlc3Vs
dCAhPSBTdHJpbmdQYXJzZWRTdWNjZXNzZnVsbHkpKSB7CiAgICAgICAgICAgICB0b2tlbiA9IHJl
c3VsdCA9PSBTdHJpbmdVbnRlcm1pbmF0ZWQgPyBVTlRFUk1JTkFURURfVEVNUExBVEVfTElURVJB
TF9FUlJPUlRPSyA6IElOVkFMSURfVEVNUExBVEVfTElURVJBTF9FUlJPUlRPSzsKQEAgLTIzMzEs
NyArMjM0Myw3IEBAIGNsYXNzIExpbmVOdW1iZXJBZGRlciB7CiAKICNpZiBFTkFCTEUoRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoSlNUb2tlbiogdG9rZW5SZWNv
cmQpCitKU1Rva2VuVHlwZSBMZXhlcjxUPjo6c2NhblRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIFJhd1N0cmluZ3NCdWlsZE1vZGUgcmF3U3RyaW5nc0J1aWxkTW9k
ZSkKIHsKICAgICBKU1Rva2VuRGF0YSogdG9rZW5EYXRhID0gJnRva2VuUmVjb3JkLT5tX2RhdGE7
CiAgICAgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uID0gJnRva2VuUmVjb3JkLT5tX2xv
Y2F0aW9uOwpAQCAtMjM0MCw3ICsyMzUyLDcgQEAgY2xhc3MgTGluZU51bWJlckFkZGVyIHsKIAog
ICAgIC8vIExlYWRpbmcgY2xvc2luZyBicmFjZSB9IGlzIGFscmVhZHkgc2hpZnRlZCBpbiB0aGUg
cHJldmlvdXMgdG9rZW4gc2Nhbi4KICAgICAvLyBTbyBpbiB0aGlzIHJlLXNjYW4gcGhhc2UsIHNo
aWZ0KCkgaXMgbm90IG5lZWRlZCBoZXJlLgotICAgIFN0cmluZ1BhcnNlUmVzdWx0IHJlc3VsdCA9
IHBhcnNlVGVtcGxhdGVMaXRlcmFsPHRydWU+KHRva2VuRGF0YSk7CisgICAgU3RyaW5nUGFyc2VS
ZXN1bHQgcmVzdWx0ID0gcGFyc2VUZW1wbGF0ZUxpdGVyYWw8dHJ1ZT4odG9rZW5EYXRhLCByYXdT
dHJpbmdzQnVpbGRNb2RlKTsKICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IEVSUk9SVE9LOwogICAg
IGlmIChVTkxJS0VMWShyZXN1bHQgIT0gU3RyaW5nUGFyc2VkU3VjY2Vzc2Z1bGx5KSkgewogICAg
ICAgICB0b2tlbiA9IHJlc3VsdCA9PSBTdHJpbmdVbnRlcm1pbmF0ZWQgPyBVTlRFUk1JTkFURURf
VEVNUExBVEVfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfVEVNUExBVEVfTElURVJBTF9FUlJP
UlRPSzsKQEAgLTIzNzQsNiArMjM4Niw5IEBAIGNsYXNzIExpbmVOdW1iZXJBZGRlciB7CiAgICAg
VmVjdG9yPFVDaGFyPiBuZXdCdWZmZXIxNjsKICAgICBtX2J1ZmZlcjE2LnN3YXAobmV3QnVmZmVy
MTYpOwogCisgICAgVmVjdG9yPFVDaGFyPiBuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2
OworICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5zd2FwKG5ld0J1ZmZlckZvclJh
d1RlbXBsYXRlU3RyaW5nMTYpOworCiAgICAgbV9pc1JlcGFyc2luZyA9IGZhbHNlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggOGFmZWYyNjExMjEwOGFlZDdlODZl
ZDBlODQ3OWI3OWMxZDAyMjdhYi4uY2FiN2Q1Mjk2MGQ0NGI4NWYwODEzZjcyNTI0YjUxNTQyYmZl
YmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTAyLDcgKzEwMiw4
IEBAIGNsYXNzIExleGVyIHsKICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gbV90ZXJtaW5hdG9yOyB9CiAgICAgYm9vbCBzY2FuUmVnRXhwKGNvbnN0IElkZW50aWZpZXIq
JiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyKiYgZmxhZ3MsIFVDaGFyIHBhdHRlcm5QcmVmaXgg
PSAwKTsKICNpZiBFTkFCTEUoRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKQotICAgIEpTVG9r
ZW5UeXBlIHNjYW5UcmFpbGluZ1RlbXBsYXRlU3RyaW5nKEpTVG9rZW4qKTsKKyAgICBlbnVtIGNs
YXNzIFJhd1N0cmluZ3NCdWlsZE1vZGUgeyBCdWlsZFJhd1N0cmluZ3MsIERvbnRCdWlsZFJhd1N0
cmluZ3MgfTsKKyAgICBKU1Rva2VuVHlwZSBzY2FuVHJhaWxpbmdUZW1wbGF0ZVN0cmluZyhKU1Rv
a2VuKiwgUmF3U3RyaW5nc0J1aWxkTW9kZSk7CiAjZW5kaWYKICAgICBib29sIHNraXBSZWdFeHAo
KTsKIApAQCAtMTY2LDYgKzE2Nyw3IEBAIGNsYXNzIExleGVyIHsKICAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IElkZW50aWZpZXIqIG1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmll
ciogbWFrZVJpZ2h0U2l6ZWRJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbGVuZ3RoLCBVQ2hhciBvckFsbENoYXJzKTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElk
ZW50aWZpZXIqIG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBsZW5ndGgpOworICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmll
ciogbWFrZUVtcHR5SWRlbnRpZmllcigpOwogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGxhc3RU
b2tlbldhc1Jlc3RyS2V5d29yZCgpIGNvbnN0OwogCkBAIC0xODQsNyArMTg2LDcgQEAgY2xhc3Mg
TGV4ZXIgewogICAgIGVudW0gY2xhc3MgRXNjYXBlUGFyc2VNb2RlIHsgVGVtcGxhdGUsIFN0cmlu
ZyB9OwogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElO
RSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZUNvbXBsZXhFc2NhcGUoRXNjYXBlUGFyc2VNb2RlLCBi
b29sIHN0cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogI2lmIEVOQUJMRShFUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVgpCi0gICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRT
dHJpbmdzPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlVGVtcGxhdGVMaXRl
cmFsKEpTVG9rZW5EYXRhKik7CisgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdz
PiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlVGVtcGxhdGVMaXRlcmFsKEpT
VG9rZW5EYXRhKiwgUmF3U3RyaW5nc0J1aWxkTW9kZSk7CiAjZW5kaWYKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwpAQCAtMjAxLDYgKzIwMyw3
IEBAIGNsYXNzIExleGVyIHsKIAogICAgIFZlY3RvcjxMQ2hhcj4gbV9idWZmZXI4OwogICAgIFZl
Y3RvcjxVQ2hhcj4gbV9idWZmZXIxNjsKKyAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyRm9yUmF3
VGVtcGxhdGVTdHJpbmcxNjsKICAgICBib29sIG1fdGVybWluYXRvcjsKICAgICBpbnQgbV9sYXN0
VG9rZW47CiAKQEAgLTI4OSw2ICsyOTIsMTIgQEAgY2xhc3MgTGV4ZXIgewogICAgIHJldHVybiAm
bV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExl
eGVyPFQ+OjptYWtlRW1wdHlJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gJm1fYXJlbmEtPm1h
a2VFbXB0eUlkZW50aWZpZXIobV92bSk7Cit9CisKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8TENoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCogc291cmNl
U3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaAppbmRleCBkNGIzMzU1ODcwNjQ0NDQ5MjRlNDY1NTI0MTlhZjBiNWVkZTlkMjViLi45
NTQ2YjcxMzhmYmRjMTJhMjdlMmIwYmVhNDJmZjkwYjg2ZjA5MzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMTQzLDYgKzE0Mywx
MyBAQAogICAgICAgICAsIG1fdGVtcGxhdGVFeHByZXNzaW9ucyh0ZW1wbGF0ZUV4cHJlc3Npb25z
KQogICAgIHsKICAgICB9CisKKyAgICBpbmxpbmUgVGFnZ2VkVGVtcGxhdGVOb2RlOjpUYWdnZWRU
ZW1wbGF0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIHRhZywgVGVtcGxhdGVMaXRlcmFsTm9kZSogdGVtcGxhdGVMaXRlcmFsKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgICAgICAsIG1fdGFnKHRhZykKKyAgICAgICAg
LCBtX3RlbXBsYXRlTGl0ZXJhbCh0ZW1wbGF0ZUxpdGVyYWwpCisgICAgeworICAgIH0KICNlbmRp
ZgogCiAgICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggM2ExOTAwNTcx
NjE5MWFmYzk4YTRjZWI0YWUxNDg2YWUwNjE4ZTE5Zi4uZjk4ZmM0YzBlYjRiMGQ5MjllYzI3MTg2
MGYwNjNhMTZiOTliOWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAt
NDczLDEyICs0NzMsMjggQEAKICAgICAgICAgVGVtcGxhdGVMaXRlcmFsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBUZW1wbGF0ZVN0cmluZ0xpc3ROb2RlKik7CiAgICAgICAgIFRlbXBsYXRl
TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgVGVtcGxhdGVTdHJpbmdMaXN0Tm9k
ZSosIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3ROb2RlKik7CiAKKyAgICAgICAgVGVtcGxhdGVTdHJp
bmdMaXN0Tm9kZSogdGVtcGxhdGVTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZVN0
cmluZ3M7IH0KKyAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRlbXBsYXRlRXhw
cmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7IH0KKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBUZW1w
bGF0ZVN0cmluZ0xpc3ROb2RlKiBtX3RlbXBsYXRlU3RyaW5nczsKICAgICAgICAgVGVtcGxhdGVF
eHByZXNzaW9uTGlzdE5vZGUqIG1fdGVtcGxhdGVFeHByZXNzaW9uczsKICAgICB9OworCisgICAg
Y2xhc3MgVGFnZ2VkVGVtcGxhdGVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGFnZ2VkVGVt
cGxhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgVGVtcGxh
dGVMaXRlcmFsTm9kZSopOworCisgICAgICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIHRlbXBsYXRl
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVtcGxhdGVMaXRlcmFsOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fdGFnOworICAgICAgICBUZW1wbGF0ZUxpdGVyYWxOb2RlKiBtX3RlbXBsYXRlTGl0
ZXJhbDsKKyAgICB9OwogI2VuZGlmCiAKICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDk1ZTk4OGRjZWZjMGYzMDFiYzlmNTAw
MjdmYzZhMjM4NTM3ZTgxYTIuLjEwYTA0YmMyZjA2YWRhNGRkMDFhMzA3OTkxMDkxZmY4NTZkMDQ5
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIyODIsMTIg
KzIyODIsMTIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5
cGUgdG9rZW4pCiAKICNpZiBFTkFCTEUoRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYKQogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVRlbXBsYXRlU3RyaW5nKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlzVGVtcGxhdGVI
ZWFkLCBib29sJiBlbGVtZW50SXNUYWlsKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVGVtcGxhdGVTdHJpbmcoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgaXNUZW1wbGF0ZUhl
YWQsIHR5cGVuYW1lIExleGVyVHlwZTo6UmF3U3RyaW5nc0J1aWxkTW9kZSByYXdTdHJpbmdzQnVp
bGRNb2RlLCBib29sJiBlbGVtZW50SXNUYWlsKQogewogICAgIGlmICghaXNUZW1wbGF0ZUhlYWQp
IHsKICAgICAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAn
fScgZm9sbG93aW5nIGFuIGV4cHJlc3Npb24gaW4gdGVtcGxhdGUgbGl0ZXJhbCIpOwogICAgICAg
ICAvLyBSZS1zY2FuIHRoZSB0b2tlbiB0byByZWNvZ25pemUgaXQgYXMgVGVtcGxhdGUgRWxlbWVu
dC4KLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5zY2FuVHJhaWxpbmdUZW1wbGF0
ZVN0cmluZygmbV90b2tlbik7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+c2Nh
blRyYWlsaW5nVGVtcGxhdGVTdHJpbmcoJm1fdG9rZW4sIHJhd1N0cmluZ3NCdWlsZE1vZGUpOwog
ICAgIH0KICAgICBtYXRjaE9yRmFpbChURU1QTEFURSwgIkV4cGVjdGVkIGFuIHRlbXBsYXRlIGVs
ZW1lbnQiKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBjb29rZWQgPSBtX3Rva2VuLm1fZGF0YS5j
b29rZWQ7CkBAIC0yMjk5LDEyICsyMjk5LDEyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
aXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6VGVtcGxhdGVMaXRlcmFsIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRlbXBsYXRlTGl0ZXJh
bChUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlTGl0ZXJhbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VUZW1wbGF0ZUxpdGVyYWwoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHR5cGVuYW1lIExleGVyVHlw
ZTo6UmF3U3RyaW5nc0J1aWxkTW9kZSByYXdTdHJpbmdzQnVpbGRNb2RlKQogewogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGJvb2wgZWxlbWVudElz
VGFpbCA9IGZhbHNlOwogCi0gICAgYXV0byBoZWFkVGVtcGxhdGVTdHJpbmcgPSBwYXJzZVRlbXBs
YXRlU3RyaW5nKGNvbnRleHQsIHRydWUsIGVsZW1lbnRJc1RhaWwpOworICAgIGF1dG8gaGVhZFRl
bXBsYXRlU3RyaW5nID0gcGFyc2VUZW1wbGF0ZVN0cmluZyhjb250ZXh0LCB0cnVlLCByYXdTdHJp
bmdzQnVpbGRNb2RlLCBlbGVtZW50SXNUYWlsKTsKICAgICBmYWlsSWZGYWxzZShoZWFkVGVtcGxh
dGVTdHJpbmcsICJDYW5ub3QgcGFyc2UgaGVhZCB0ZW1wbGF0ZSBlbGVtZW50Iik7CiAKICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVTdHJpbmdMaXN0IHRlbXBsYXRlU3RyaW5nTGlz
dCA9IGNvbnRleHQuY3JlYXRlVGVtcGxhdGVTdHJpbmdMaXN0KGhlYWRUZW1wbGF0ZVN0cmluZyk7
CkBAIC0yMzIwLDcgKzIzMjAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlP
cChKU1Rva2VuVHlwZSB0b2tlbikKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVF
eHByZXNzaW9uTGlzdCB0ZW1wbGF0ZUV4cHJlc3Npb25MaXN0ID0gY29udGV4dC5jcmVhdGVUZW1w
bGF0ZUV4cHJlc3Npb25MaXN0KGV4cHJlc3Npb24pOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpUZW1wbGF0ZUV4cHJlc3Npb25MaXN0IHRlbXBsYXRlRXhwcmVzc2lvblRhaWwgPSB0ZW1wbGF0
ZUV4cHJlc3Npb25MaXN0OwogCi0gICAgYXV0byB0ZW1wbGF0ZVN0cmluZyA9IHBhcnNlVGVtcGxh
dGVTdHJpbmcoY29udGV4dCwgZmFsc2UsIGVsZW1lbnRJc1RhaWwpOworICAgIGF1dG8gdGVtcGxh
dGVTdHJpbmcgPSBwYXJzZVRlbXBsYXRlU3RyaW5nKGNvbnRleHQsIGZhbHNlLCByYXdTdHJpbmdz
QnVpbGRNb2RlLCBlbGVtZW50SXNUYWlsKTsKICAgICBmYWlsSWZGYWxzZSh0ZW1wbGF0ZVN0cmlu
ZywgIkNhbm5vdCBwYXJzZSB0ZW1wbGF0ZSBlbGVtZW50Iik7CiAgICAgdGVtcGxhdGVTdHJpbmdU
YWlsID0gY29udGV4dC5jcmVhdGVUZW1wbGF0ZVN0cmluZ0xpc3QodGVtcGxhdGVTdHJpbmdUYWls
LCB0ZW1wbGF0ZVN0cmluZyk7CiAKQEAgLTIzMzEsNyArMjMzMSw3IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogCiAgICAgICAgIHRlbXBs
YXRlRXhwcmVzc2lvblRhaWwgPSBjb250ZXh0LmNyZWF0ZVRlbXBsYXRlRXhwcmVzc2lvbkxpc3Qo
dGVtcGxhdGVFeHByZXNzaW9uVGFpbCwgZXhwcmVzc2lvbik7CiAKLSAgICAgICAgYXV0byB0ZW1w
bGF0ZVN0cmluZyA9IHBhcnNlVGVtcGxhdGVTdHJpbmcoY29udGV4dCwgZmFsc2UsIGVsZW1lbnRJ
c1RhaWwpOworICAgICAgICBhdXRvIHRlbXBsYXRlU3RyaW5nID0gcGFyc2VUZW1wbGF0ZVN0cmlu
Zyhjb250ZXh0LCBmYWxzZSwgcmF3U3RyaW5nc0J1aWxkTW9kZSwgZWxlbWVudElzVGFpbCk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKHRlbXBsYXRlU3RyaW5nLCAiQ2Fubm90IHBhcnNlIHRlbXBsYXRl
IGVsZW1lbnQiKTsKICAgICAgICAgdGVtcGxhdGVTdHJpbmdUYWlsID0gY29udGV4dC5jcmVhdGVU
ZW1wbGF0ZVN0cmluZ0xpc3QodGVtcGxhdGVTdHJpbmdUYWlsLCB0ZW1wbGF0ZVN0cmluZyk7CiAg
ICAgfQpAQCAtMjQ0NCw3ICsyNDQ0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1Vu
YXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgfQogI2lmIEVOQUJMRShFUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVgpCiAgICAgY2FzZSBURU1QTEFURToKLSAgICAgICAgcmV0dXJuIHBhcnNl
VGVtcGxhdGVMaXRlcmFsKGNvbnRleHQpOworICAgICAgICByZXR1cm4gcGFyc2VUZW1wbGF0ZUxp
dGVyYWwoY29udGV4dCwgTGV4ZXJUeXBlOjpSYXdTdHJpbmdzQnVpbGRNb2RlOjpEb250QnVpbGRS
YXdTdHJpbmdzKTsKICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZhaWxEdWVUb1VuZXhw
ZWN0ZWRUb2tlbigpOwpAQCAtMjU2OCw2ICsyNTY4LDE2IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgICAgICAgICAgbmV4dCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBURU1QTEFURTogewor
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IHVzZSBz
dXBlciBhcyB0YWcgZm9yIHRhZ2dlZCB0ZW1wbGF0ZXMiKTsKKyAgICAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOworICAgICAgICAg
ICAgaW50IG5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKKyAgICAgICAgICAgIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpUZW1wbGF0ZUxpdGVyYWwgdGVtcGxhdGVMaXRlcmFsID0gcGFyc2VUZW1w
bGF0ZUxpdGVyYWwoY29udGV4dCwgTGV4ZXJUeXBlOjpSYXdTdHJpbmdzQnVpbGRNb2RlOjpCdWls
ZFJhd1N0cmluZ3MpOworICAgICAgICAgICAgZmFpbElmRmFsc2UodGVtcGxhdGVMaXRlcmFsLCAi
Q2Fubm90IHBhcnNlIHRlbXBsYXRlIGxpdGVyYWwiKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250
ZXh0LmNyZWF0ZVRhZ2dlZFRlbXBsYXRlKGxvY2F0aW9uLCBiYXNlLCB0ZW1wbGF0ZUxpdGVyYWws
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7
CisgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZ290byBlbmRN
ZW1iZXJFeHByZXNzaW9uOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCAyODgzZGFhMTY0NzA5ZWVjNWNiZWMxMjZjZDg0NTEzYjExNTdhMDhhLi5kZmUw
NDI5OGU5OTJkOGYwYjE2ZDYxNDljN2Y0ZWE2ZTgxMDAyZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTc3Nyw4ICs3NzcsOCBAQCBjbGFzcyBQYXJzZXIgewogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJl
c3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJz
ZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpUZW1wbGF0ZVN0cmluZyBwYXJzZVRlbXBs
YXRlU3RyaW5nKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlzVGVtcGxhdGVIZWFkLCBib29s
JiBlbGVtZW50SXNUYWlsKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVMaXRlcmFsIHBhcnNlVGVtcGxh
dGVMaXRlcmFsKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlU3RyaW5nIHBhcnNl
VGVtcGxhdGVTdHJpbmcoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgaXNUZW1wbGF0ZUhlYWQs
IHR5cGVuYW1lIExleGVyVHlwZTo6UmF3U3RyaW5nc0J1aWxkTW9kZSwgYm9vbCYgZWxlbWVudElz
VGFpbCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlTGl0ZXJhbCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChU
cmVlQnVpbGRlciYsIHR5cGVuYW1lIExleGVyVHlwZTo6UmF3U3RyaW5nc0J1aWxkTW9kZSk7CiAj
ZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IDQw
ZWNlNTNhMGI2NDRjMDgyMDc5YzIyZGYwZjk0M2JjMjVkYmRhMjkuLjJhN2Q0NGRlNzcxODU4NDA2
MzAwMWMxMTI1OTRhNjFiNTlmY2ZhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyJiBtYWtlSWRl
bnRpZmllcihWTSosIGNvbnN0IFQqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOworICAgICAg
ICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXImIG1ha2VFbXB0eUlkZW50aWZpZXIoVk0q
KTsKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyJiBtYWtlSWRlbnRpZmll
ckxDaGFyRnJvbVVDaGFyKFZNKiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5n
dGgpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmllcihW
TSosIGRvdWJsZSBudW1iZXIpOwpAQCAtOTEsNiArOTIsMTEgQEAKICAgICAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRl
bnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlRW1wdHlJZGVudGlmaWVyKFZNKiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2bS0+cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOwor
ICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFy
ZW5hOjptYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKFZNKiB2bSwgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiAgICAgewogICAgICAgICBpZiAoIWxlbmd0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZjA0NTM5
NzM1OGI5YWFlOWRlYzEzMzRiOGM5MDZjMzlhMTZjZTY4Ni4uMzFkM2ZlNDQxNWUwZDM3NDU0MDJi
NzA4OTcyZWIzOWY2YTc4YTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKQEAgLTgyLDcgKzgyLDkgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAg
ICAgICAgIFByb3BlcnR5TGlzdFJlc3VsdCwgQXJndW1lbnRzTGlzdFJlc3VsdCwgRWxlbWVudHNM
aXN0UmVzdWx0LAogICAgICAgICBTdGF0ZW1lbnRSZXN1bHQsIEZvcm1hbFBhcmFtZXRlckxpc3RS
ZXN1bHQsIENsYXVzZVJlc3VsdCwKICAgICAgICAgQ2xhdXNlTGlzdFJlc3VsdCwgQ29tbWFFeHBy
LCBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQsCi0gICAgICAgIFRlbXBsYXRlU3RyaW5nUmVzdWx0
LCBUZW1wbGF0ZVN0cmluZ0xpc3RSZXN1bHQsIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3RSZXN1bHQs
IFRlbXBsYXRlRXhwcgorICAgICAgICBUZW1wbGF0ZVN0cmluZ1Jlc3VsdCwgVGVtcGxhdGVTdHJp
bmdMaXN0UmVzdWx0LAorICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0UmVzdWx0LCBUZW1w
bGF0ZUV4cHIsCisgICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcgogICAgIH07CiAgICAgdHlwZWRl
ZiBpbnQgRXhwcmVzc2lvblR5cGU7CiAKQEAgLTE4OCw2ICsxOTAsNyBAQCBjbGFzcyBTeW50YXhD
aGVja2VyIHsKICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0IGNyZWF0ZVRlbXBsYXRlRXhwcmVz
c2lvbkxpc3QoVGVtcGxhdGVFeHByZXNzaW9uTGlzdCwgRXhwcmVzc2lvbikgeyByZXR1cm4gVGVt
cGxhdGVFeHByZXNzaW9uTGlzdFJlc3VsdDsgfQogICAgIFRlbXBsYXRlTGl0ZXJhbCBjcmVhdGVU
ZW1wbGF0ZUxpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgVGVtcGxhdGVTdHJpbmdMaXN0
KSB7IHJldHVybiBUZW1wbGF0ZUV4cHI7IH0KICAgICBUZW1wbGF0ZUxpdGVyYWwgY3JlYXRlVGVt
cGxhdGVMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFRlbXBsYXRlU3RyaW5nTGlzdCwg
VGVtcGxhdGVFeHByZXNzaW9uTGlzdCkgeyByZXR1cm4gVGVtcGxhdGVFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlVGFnZ2VkVGVtcGxhdGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIFRlbXBsYXRlTGl0ZXJhbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
VGFnZ2VkVGVtcGxhdGVFeHByOyB9CiAjZW5kaWYKIAogICAgIGludCBjcmVhdGVBcmd1bWVudHNM
aXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJndW1lbnRzTGlzdFJl
c3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggYjBlMjgzOGQ2NThjYmQzYzUxOWMxMjdiZTA1MDZiNGE2OTEzM2JmZi4u
Zjc1NzRjNmExN2ZmMDZlZGY3ZWM3Y2JhZTA4OGNlZTkzZjI3YmQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xNTAsNiAr
MTUwLDcgQEAKICAgICBtYWNybyhwcm9maWxlZEJ5dGVjb2RlcykgXAogICAgIG1hY3JvKHByb3Bl
cnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmF3
KSBcCiAgICAgbWFjcm8ocmVsb2FkKSBcCiAgICAgbWFjcm8ocmVwbGFjZSkgXAogICAgIG1hY3Jv
KHJlc29sdmUpIFwKQEAgLTI4MSw3ICsyODIsOCBAQAogICAgIG1hY3JvKFR5cGVFcnJvcikgXAog
ICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAgIG1hY3JvKEJ1aWx0aW5Mb2cpIFwKLSAgICBtYWNy
byhob21lT2JqZWN0KQorICAgIG1hY3JvKGhvbWVPYmplY3QpIFwKKyAgICBtYWNybyhnZXRUZW1w
bGF0ZU9iamVjdCkKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggN2QwNmZhNjAwZWEyMDVl
NTcxOTUwYjRjYjgzYzdiZWJmNThlOWIwNS4uZGEzNjQ5OWYxYWQxMTU4NjVkZWNmODQ5MzQ0NjAx
ZTc0NTBmMDNiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtODMsNiArODMsNyBAQAogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5j
bHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlD
b25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgiCiAjaW5j
bHVkZSAiSlNUeXBlZEFycmF5cy5oIgpAQCAtMTY5LDYgKzE3MCwxMyBAQAogQGVuZAogKi8KIAor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2V0VGVtcGxhdGVPYmplY3QoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgQVNTRVJUKHRoaXNWYWx1ZS5pbmhlcml0cyhKU1RlbXBsYXRlUmVnaXN0cnlLZXk6
OmluZm8oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT50ZW1wbGF0ZVJlZ2lzdHJ5KCkuZ2V0VGVtcGxhdGVPYmplY3QoZXhlYywganND
YXN0PEpTVGVtcGxhdGVSZWdpc3RyeUtleSo+KHRoaXNWYWx1ZSktPnRlbXBsYXRlUmVnaXN0cnlL
ZXkoKSkpOworfQorCiBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQogICAgICwgbV92
bSh2bSkKQEAgLTE3OSw2ICsxODcsNyBAQAogICAgICwgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX3Zhcklu
amVjdGlvbldhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkp
CiAgICAgLCBtX3dlYWtSYW5kb20oT3B0aW9uczo6Zm9yY2VXZWFrUmFuZG9tU2VlZCgpID8gT3B0
aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNlZWQoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5k
b21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjAp
KSkKKyAgICAsIG1fdGVtcGxhdGVSZWdpc3RyeSh2bSkKICAgICAsIG1fZXZhbEVuYWJsZWQodHJ1
ZSkKICAgICAsIG1fcnVudGltZUZsYWdzKCkKICAgICAsIG1fY29uc29sZUNsaWVudChudWxscHRy
KQpAQCAtNDMzLDYgKzQ0Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jT2JqZWN0S2V5cyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cyk7CiAgICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvcik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNPYmpl
Y3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAs
IFN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyk7CisgICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNHZXRUZW1wbGF0ZU9iamVjdCA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdldFRlbXBsYXRlT2JqZWN0KTsKIAogICAgIEds
b2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTQ0Myw2ICs0NTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPm9iamVjdEtleXNQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNPYmplY3RLZXlzLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5vYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFt
ZSwgcHJpdmF0ZUZ1bmNPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPm9iamVjdEdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lLCBwcml2
YXRlRnVuY09iamVjdEdldE93blByb3BlcnR5U3ltYm9scywgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+Z2V0VGVtcGxhdGVPYmplY3RQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNHZXRUZW1wbGF0ZU9i
amVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlw
ZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkJ1aWx0aW5M
b2dQcml2YXRlTmFtZSwgYnVpbHRpbkxvZywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+QXJyYXlQ
cml2YXRlTmFtZSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggNDdmN2MyNjA1NzI3Y2E4NGNhZWNjYjBiM2RiNDU1Yjg4ZTJlOTViMy4uYWUxMTM4
N2U0OTRlYTU0MWY5NTU5NDAxNmEyNjRiMmE4MDU4Y2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CkBAIC0yODQsNiArMjg1LDggQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAg
ICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKIAorICAgIFRlbXBsYXRlUmVnaXN0cnkgbV90ZW1w
bGF0ZVJlZ2lzdHJ5OworCiAgICAgYm9vbCBtX2V2YWxFbmFibGVkOwogICAgIFN0cmluZyBtX2V2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7
CkBAIC02MDgsNiArNjExLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5vcGFxdWVK
U0NsYXNzRGF0YTsKICAgICB9CiAKKyAgICBUZW1wbGF0ZVJlZ2lzdHJ5JiB0ZW1wbGF0ZVJlZ2lz
dHJ5KCkgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5OyB9CisKICAgICBkb3VibGUgd2Vha1Jh
bmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQogICAgIHVuc2lnbmVk
IHdlYWtSYW5kb21JbnRlZ2VyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVS
ZWdpc3RyeUtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRl
UmVnaXN0cnlLZXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMTQ2NjFmYzcxZDA0ZTRjYmQ4Y2M1MGEyNzM5
OWM5MTZmNjRiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdp
c3RyeUtleS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OnNfaW5mbyA9IHsgIlRlbXBsYXRl
UmVnaXN0cnlLZXkiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVt
cGxhdGVSZWdpc3RyeUtleSkgfTsKKworCitKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OkpTVGVtcGxh
dGVSZWdpc3RyeUtleShWTSYgdm0sIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIHRlbXBsYXRl
UmVnaXN0cnlLZXkpCisgICAgOiBCYXNlKHZtLCB2bS50ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0
dXJlLmdldCgpKQorICAgICwgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5KHRlbXBsYXRlUmVnaXN0cnlL
ZXkpCit7Cit9CisKK0pTVGVtcGxhdGVSZWdpc3RyeUtleSogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
OjpjcmVhdGUoVk0mIHZtLCBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lz
dHJ5S2V5KQoreworICAgIEpTVGVtcGxhdGVSZWdpc3RyeUtleSogcmVzdWx0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Pih2bS5oZWFwKSkgSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5KHZtLCB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KTsKKyAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpTVGVtcGxh
dGVSZWdpc3RyeUtleTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Kj4oY2VsbCktPkpTVGVtcGxhdGVSZWdpc3RyeUtleTo6fkpT
VGVtcGxhdGVSZWdpc3RyeUtleSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmM2ZTM5Mjg2ZDA5M2EyMTY3NmUxMjMzN2EwMjg4YjMwOTQ1YzRjNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBKU1RlbXBsYXRlUmVnaXN0cnlLZXlfaAorI2RlZmluZSBKU1RlbXBsYXRlUmVnaXN0cnlLZXlf
aAorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3Qg
QmFzZTsKKworICAgIHN0YXRpYyBKU1RlbXBsYXRlUmVnaXN0cnlLZXkqIGNyZWF0ZShWTSYsIGNv
bnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmKTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIGNvbnN0IFRl
bXBsYXRlUmVnaXN0cnlLZXkmIHRlbXBsYXRlUmVnaXN0cnlLZXkoKSBjb25zdCB7IHJldHVybiBt
X3RlbXBsYXRlUmVnaXN0cnlLZXk7IH0KKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKK3ByaXZhdGU6CisgICAgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KFZN
JiwgY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYpOworCisgICAgVGVtcGxhdGVSZWdpc3RyeUtl
eSBtX3RlbXBsYXRlUmVnaXN0cnlLZXk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTVGVtcGxhdGVSZWdpc3RyeUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDdiNTE2YTQzM2Q4MjBj
ZThlNGUwZjcxZWY4NTBlYmQ4Y2VlZDgyYS4uMzUwOTM2MmI0YmEwZDNhZWE4NGNiYzAwYThhNzJi
MWQ3MGFhZGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcApAQCAtNDYyLDE3ICs0NjIsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVj
dCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
ZWN0KQogewotICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgcmV0dXJuIE8uCi0g
ICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoIW9iai5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7Ci0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KG9iaik7Ci0KICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVj
dCkgJiYgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpKSB7CiAg
ICAgICAgIG9iamVjdC0+ZnJlZXplKGV4ZWMtPnZtKCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iaik7CisgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCiAgICAgLy8g
Mi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLApAQCAtNDk2LDE0ICs0
OTAsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckZy
ZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIGQuIENhbGwgdGhlIFtbRGVmaW5lT3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFz
IGFyZ3VtZW50cy4KICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MsIHRydWUpOwog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iaik7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIAog
ICAgIC8vIDMuIFNldCB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgTyB0
byBmYWxzZS4KICAgICBvYmplY3QtPnByZXZlbnRFeHRlbnNpb25zKGV4ZWMtPnZtKCkpOwogCiAg
ICAgLy8gNC4gUmV0dXJuIE8uCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOworICAg
IHJldHVybiBvYmplY3Q7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEuIElmIFR5cGUo
TykgaXMgbm90IE9iamVjdCwgcmV0dXJuIE8uCisgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBpZiAoIW9iai5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iaik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1
Y3RvckZyZWV6ZShleGVjLCBhc09iamVjdChvYmopKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaAppbmRleCA1M2ZjMGU5Mjg3NjBlMTFmYWZmMDkyYTE0NGY1NDljYzFkNTAwZGE5Li44
ZmM1YzczMjI1ODI2NjNjOGJlMjQzNjU1ZGQ3YjllODI2NDZmYWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTg5LDYgKzg5
LDggQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpOwogfQogCitKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBPYmplY3RDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
M2QyMDQ4ZGU5MjZlYjUyYTE3YWZiYzliNjE4MTg3OWFmN2I3NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNwcApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitUZW1wbGF0ZVJlZ2lzdHJ5OjpUZW1wbGF0ZVJlZ2lzdHJ5KFZNJiB2bSkKKyAgICA6IG1f
dGVtcGxhdGVNYXAodm0pCit7Cit9CisKK0pTQXJyYXkqIFRlbXBsYXRlUmVnaXN0cnk6OmdldFRl
bXBsYXRlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYg
dGVtcGxhdGVLZXkpCit7CisgICAgSlNBcnJheSogY2FjaGVkID0gbV90ZW1wbGF0ZU1hcC5nZXQo
dGVtcGxhdGVLZXkpOworICAgIGlmIChjYWNoZWQpCisgICAgICAgIHJldHVybiBjYWNoZWQ7CisK
KyAgICB1bnNpZ25lZCBjb3VudCA9IHRlbXBsYXRlS2V5LmNvb2tlZFN0cmluZ3MoKS5zaXplKCk7
CisgICAgSlNBcnJheSogdGVtcGxhdGVPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IG51bGxwdHIsIGNvdW50KTsKKyAgICBKU0FycmF5KiByYXdPYmplY3QgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIG51bGxwdHIsIGNvdW50KTsKKworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIHRlbXBsYXRlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChleGVjLCBpbmRleCwganNTdHJpbmcoZXhlYywgdGVtcGxhdGVLZXkuY29v
a2VkU3RyaW5ncygpW2luZGV4XSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSwgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKKyAgICAgICAgcmF3T2JqZWN0LT5wdXREaXJlY3RJbmRleChleGVj
LCBpbmRleCwganNTdHJpbmcoZXhlYywgdGVtcGxhdGVLZXkucmF3U3RyaW5ncygpW2luZGV4XSks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSwgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKKyAg
ICB9CisKKyAgICBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShleGVjLCByYXdPYmplY3QpOworICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworCisgICAgdGVtcGxhdGVPYmplY3QtPnB1
dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucmF3LCByYXdPYmplY3Qs
IFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKworICAgIG9iamVjdENvbnN0cnVj
dG9yRnJlZXplKGV4ZWMsIHRlbXBsYXRlT2JqZWN0KTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKKworICAgIG1fdGVtcGxhdGVNYXAuc2V0KHRlbXBsYXRlS2V5LCB0ZW1wbGF0
ZU9iamVjdCk7CisKKyAgICByZXR1cm4gdGVtcGxhdGVPYmplY3Q7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
bGF0ZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJl
Z2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNiNjJkZGZkODJjMTdmMTcxNDg1NDljMzBjNTllNzg5ZGU3
MDUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBsYXRlUmVnaXN0cnkuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVGVtcGxhdGVSZWdpc3RyeV9oCisjZGVmaW5lIFRlbXBsYXRlUmVnaXN0cnlfaAorCisj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIKKyNp
bmNsdWRlICJXZWFrR0NNYXAuaCIKKyNpbmNsdWRlIDxsaW1pdHM+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5IHsKK3B1YmxpYzoKKyAgICBUZW1wbGF0ZVJlZ2lz
dHJ5KFZNJik7CisKKyAgICBKU0FycmF5KiBnZXRUZW1wbGF0ZU9iamVjdChFeGVjU3RhdGUqLCBj
b25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5Jik7CisKK3ByaXZhdGU6CisgICAgV2Vha0dDTWFwPFRl
bXBsYXRlUmVnaXN0cnlLZXksIEpTQXJyYXk+IG1fdGVtcGxhdGVNYXA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFRlbXBsYXRlUmVnaXN0cnlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2Yzc3MWEwMTlhMjIxMzU1NTg4NGExNGVhN2MyMjg1NDczY2Y5YWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5X2gKKyNkZWZpbmUgVGVtcGxhdGVSZWdpc3RyeUtleV9oCisKKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBsYXRlUmVnaXN0cnlLZXkgeworcHVibGljOgorICAgIHR5cGVk
ZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5nVmVjdG9yOworCisgICAgVGVtcGxhdGVSZWdpc3Ry
eUtleShjb25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MsIGNvbnN0IFN0cmluZ1ZlY3RvciYg
Y29va2VkU3RyaW5ncyk7CisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUg
fTsKKyAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5KERlbGV0ZWRWYWx1ZVRhZyk7CisgICAgZW51bSBF
bXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkoRW1w
dHlWYWx1ZVRhZyk7CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9yYXdTdHJpbmdzLmlzRW1wdHkoKSAmJiBtX2hhc2ggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpOyB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmF3U3RyaW5ncy5pc0VtcHR5KCkgJiYgIW1faGFzaDsgfQorCisgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgY29uc3QgU3RyaW5nVmVjdG9y
JiByYXdTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJpbmdzOyB9CisgICAgY29uc3Qg
U3RyaW5nVmVjdG9yJiBjb29rZWRTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9jb29rZWRTdHJp
bmdzOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2ggJiYgbV9yYXdTdHJp
bmdzID09IG90aGVyLm1fcmF3U3RyaW5nczsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNoICE9IG90aGVy
Lm1faGFzaCB8fCBtX3Jhd1N0cmluZ3MgIT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9CisKKyAgICBz
dHJ1Y3QgSGFzaGVyIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVtcGxh
dGVSZWdpc3RyeUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIGEsIGNvbnN0IFRlbXBsYXRl
UmVnaXN0cnlLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKK3By
aXZhdGU6CisgICAgU3RyaW5nVmVjdG9yIG1fcmF3U3RyaW5ncyB7IH07CisgICAgU3RyaW5nVmVj
dG9yIG1fY29va2VkU3RyaW5ncyB7IH07CisgICAgdW5zaWduZWQgbV9oYXNoIHsgMCB9OworfTsK
KworaW5saW5lIFRlbXBsYXRlUmVnaXN0cnlLZXk6OlRlbXBsYXRlUmVnaXN0cnlLZXkoY29uc3Qg
U3RyaW5nVmVjdG9yJiByYXdTdHJpbmdzLCBjb25zdCBTdHJpbmdWZWN0b3ImIGNvb2tlZFN0cmlu
Z3MpCisgICAgOiBtX3Jhd1N0cmluZ3MocmF3U3RyaW5ncykKKyAgICAsIG1fY29va2VkU3RyaW5n
cyhjb29rZWRTdHJpbmdzKQoreworICAgIG1faGFzaCA9IDA7CisgICAgZm9yIChjb25zdCBTdHJp
bmcmIHN0cmluZyA6IHJhd1N0cmluZ3MpCisgICAgICAgIG1faGFzaCArPSBXVEY6OlN0cmluZ0hh
c2g6Omhhc2goc3RyaW5nKTsKK30KKworaW5saW5lIFRlbXBsYXRlUmVnaXN0cnlLZXk6OlRlbXBs
YXRlUmVnaXN0cnlLZXkoRGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9oYXNoKHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKK3sKK30KKworaW5saW5lIFRlbXBsYXRlUmVnaXN0
cnlLZXk6OlRlbXBsYXRlUmVnaXN0cnlLZXkoRW1wdHlWYWx1ZVRhZykKKyAgICA6IG1faGFzaCgw
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CisKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4geworICAgIHR5cGVkZWYgSlNDOjpU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpIYXNoZXIgSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiA6IEN1c3RvbUhhc2hUcmFpdHM8
SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiB7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
I2VuZGlmIC8vIFRlbXBsYXRlUmVnaXN0cnlLZXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDFhMzczNGRmMzRiMWZlNzgyZmNhNWQzMzIwZTRjMmJjYzBjOTZiYjYuLjcx
MjZlODBkMjNlNjlmYThkYmNkZDg5NWIxYjU2MDVhOTFmOGYwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVJlYWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgpAQCAtMjI0LDYgKzIyNSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2Vt
YmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIHN5bWJv
bFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRo
aXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5
VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB0ZW1w
bGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgYXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBkMGQ3ODJlY2NiNWVjMGM5YjM2ODBjYWMyNWNhZWE5YTg3NjZi
MjdmLi41ZTU3NDEyNzlkYjA4MDg1NzgzMTA2NGI0YWU1MWNmMDRlOTE1ZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTI2NCw2ICsyNjQsNyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJv
bFRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1
cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90YWdnZWQtdGVtcGxhdGVzLWlkZW50aXR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLWlkZW50aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMmQw
MzE3NDMyMzkwNzBkMDQ5YjNmNTIzMWZlMWY1YjkwODdlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtaWRlbnRp
dHkuanMKQEAgLTAsMCArMSw1OSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOworfQorCit2YXIgdGVt
cGxhdGVzID0gW107CitmdW5jdGlvbiB0YWcoc2l0ZU9iamVjdCkgeworICAgIHRlbXBsYXRlcy5w
dXNoKHNpdGVPYmplY3QpOworfQorCit0YWdgSGVsbG9gOwordGFnYFdvcmxkYDsKK3RhZ2BIZWxs
b2A7CitzaG91bGRCZSh0ZW1wbGF0ZXMubGVuZ3RoLCAzKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1sw
XSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSA9PT0gdGVt
cGxhdGVzWzJdLCB0cnVlKTsKKwordGVtcGxhdGVzID0gW107Cit0YWdgSGVsbG9cbmA7Cit0YWdg
SGVsbG9ccmA7Cit0YWdgSGVsbG9cdTIwMjhgOworc2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwg
Myk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91
bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CisKK3RlbXBsYXRlcyA9
IFtdOworZXZhbCgidGFnYEhlbGxvXG5gIik7CitldmFsKCJ0YWdgSGVsbG9ccmAiKTsKK2V2YWwo
InRhZ2BIZWxsb1x1MjAyOGAiKTsKK3Nob3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDMpOworc2hv
dWxkQmUodGVtcGxhdGVzWzBdID09PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworc2hvdWxkQmUodGVt
cGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMl0sIHRydWUpOworCit0ZW1wbGF0ZXMgPSBbXTsKK2V2
YWwoInRhZ2BIZWxsb1xuYCIpOworZXZhbCgidGFnYEhlbGxvXFxuYCIpOworZXZhbCgidGFnYEhl
bGxvXHJgIik7CitldmFsKCJ0YWdgSGVsbG9cXHJgIik7CitzaG91bGRCZSh0ZW1wbGF0ZXMubGVu
Z3RoLCA0KTsKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsK
K3Nob3VsZEJlKHRlbXBsYXRlc1swXSA9PT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKK3Nob3VsZEJl
KHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzNdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRl
c1sxXSAhPT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1sxXSAhPT0g
dGVtcGxhdGVzWzNdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1syXSAhPT0gdGVtcGxhdGVz
WzNdLCB0cnVlKTsKKwordmFyIHYgPSAwOwordGVtcGxhdGVzID0gW107CitldmFsKCJ0YWdgSGVs
bG9cbiR7dn13b3JsZGAiKTsKK2V2YWwoInRhZ2BIZWxsb1xuJHt2fXdvcmxkYCIpOworc2hvdWxk
QmUodGVtcGxhdGVzLmxlbmd0aCwgMik7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09IHRlbXBs
YXRlc1sxXSwgdHJ1ZSk7CisKK3ZhciB2ID0gMDsKK3RlbXBsYXRlcyA9IFtdOworZXZhbCgidGFn
YEhlbGxvJHt2fVxud29ybGRgIik7CitldmFsKCJ0YWdgSGVsbG9cbiR7dn13b3JsZGAiKTsKK3No
b3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDIpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0
ZW1wbGF0ZXNbMV0sIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXJhdy1zdHJpbmdzLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXJhdy1zdHJpbmdzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFkOTU3ODU4ZmI3NTdmYzM4N2UzMWMwZTIzMjJlMmNlZWRmYTE4MGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10
ZW1wbGF0ZXMtcmF3LXN0cmluZ3MuanMKQEAgLTAsMCArMSw2MyBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIEpTT04uc3RyaW5naWZ5KGFjdHVh
bCkpOworfQorCitmdW5jdGlvbiB0YWcocmVzdWx0cykgeworICAgIHJldHVybiBmdW5jdGlvbiAo
c2l0ZU9iamVjdCkgeworICAgICAgICBzaG91bGRCZShzaXRlT2JqZWN0LnJhdy5sZW5ndGgsIHJl
c3VsdHMubGVuZ3RoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXRlT2JqZWN0LnJh
dy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgc2hvdWxkQmUoc2l0ZU9iamVjdC5yYXdbaV0s
IHJlc3VsdHNbaV0pOworICAgICAgICB9CisgICAgfTsKK30KKwordGFnKFsnJ10pYGA7Cit0YWco
WydoZWxsbyddKWBoZWxsb2A7Cit0YWcoWydoZWxsbycsICd3b3JsZCddKWBoZWxsbyR7MH13b3Js
ZGA7Cit0YWcoWydoZWxsb1xcdTIwMjgnLCAnd29ybGQnXSlgaGVsbG9cdTIwMjgkezB9d29ybGRg
OwordGFnKFsnaGVsbG9cXHUyMDI4XFx1MjAyOScsICd3b3JsZCddKWBoZWxsb1x1MjAyOFx1MjAy
OSR7MH13b3JsZGA7Cit0YWcoWydoZWxsb1xcblxccicsICd3b3JsZCddKWBoZWxsb1xuXHIkezB9
d29ybGRgOworCitmdW5jdGlvbiB0ZXN0RXZhbChjb250ZW50LCByZXN1bHRzKSB7CisgICAgdmFy
IHNwbGl0ID0gMDsKKyAgICB2YXIgZyA9IHRhZyhyZXN1bHRzKTsKKyAgICBldmFsKCJnYCIgKyBj
b250ZW50ICsgImAiKTsKK30KKworZm9yICh2YXIgY2ggb2YgWyAnXCcnLCAnIicsICdcXCcsICdi
JywgJ2YnLCAnbicsICdyJywgJ3QnLCAndicgXSkKKyAgICB0ZXN0RXZhbCgiXFwiICsgY2gsIFsi
XFwiICsgY2hdKTsKKwordmFyIGV2YWx1YXRlZCA9IFtdOworZm9yICh2YXIgaSA9IDA7IGkgPCAw
eDEwMDAwOyArK2kpIHsKKyAgICB2YXIgY29kZSA9IGkudG9TdHJpbmcoMTYpOworICAgIHZhciBp
bnB1dCA9ICJcXHUiICsgJzAnLnJlcGVhdCg0IC0gY29kZS5sZW5ndGgpICsgY29kZTsKKyAgICBl
dmFsdWF0ZWQucHVzaChpbnB1dCk7Cit9Cit0ZXN0RXZhbChldmFsdWF0ZWQuam9pbignJHtzcGxp
dH0nKSwgZXZhbHVhdGVkKQorCit0ZXN0RXZhbCgiSGVsbG9ccldvcmxkIiwgWyAiSGVsbG9cbldv
cmxkIiBdKTsKK3Rlc3RFdmFsKCJIZWxsb1xuV29ybGQiLCBbICJIZWxsb1xuV29ybGQiIF0pOwor
Cit0ZXN0RXZhbCgiSGVsbG9cclxyV29ybGQiLCBbICJIZWxsb1xuXG5Xb3JsZCIgXSk7Cit0ZXN0
RXZhbCgiSGVsbG9cclxuV29ybGQiLCBbICJIZWxsb1xuV29ybGQiIF0pOwordGVzdEV2YWwoIkhl
bGxvXG5cbldvcmxkIiwgWyAiSGVsbG9cblxuV29ybGQiIF0pOwordGVzdEV2YWwoIkhlbGxvXG5c
cldvcmxkIiwgWyAiSGVsbG9cblxuV29ybGQiIF0pOworCit0ZXN0RXZhbCgiSGVsbG9cblxyXG5X
b3JsZCIsIFsgIkhlbGxvXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJIZWxsb1xyXG5ccldvcmxk
IiwgWyAiSGVsbG9cblxuV29ybGQiIF0pOwordGVzdEV2YWwoIkhlbGxvXG5cblxuV29ybGQiLCBb
ICJIZWxsb1xuXG5cbldvcmxkIiBdKTsKKwordGVzdEV2YWwoIkhlbGxvXG5cclxuXHJXb3JsZCIs
IFsgIkhlbGxvXG5cblxuV29ybGQiIF0pOwordGVzdEV2YWwoIkhlbGxvXG5cclxuXG5Xb3JsZCIs
IFsgIkhlbGxvXG5cblxuV29ybGQiIF0pOwordGVzdEV2YWwoIkhlbGxvXHJcblxuXG5Xb3JsZCIs
IFsgIkhlbGxvXG5cblxuV29ybGQiIF0pOworCit0ZXN0RXZhbCgiSGVsbG9cXFxuXHJccldvcmxk
IiwgWyAiSGVsbG9cXFxuXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJIZWxsb1xcXHJcblxuXG5X
b3JsZCIsIFsgIkhlbGxvXFxcclxuXG5cbldvcmxkIiBdKTsKK3Rlc3RFdmFsKCJIZWxsb1xcXG5c
clxuXG5Xb3JsZCIsIFsgIkhlbGxvXFxcblxuXG5Xb3JsZCIgXSk7Cit0ZXN0RXZhbCgiSGVsbG9c
XFxuXHJcclxuV29ybGQiLCBbICJIZWxsb1xcXG5cblxuV29ybGQiIF0pOworCit0ZXN0RXZhbCgi
XHUyMDI4IiwgWyAiXHUyMDI4IiBdKTsKK3Rlc3RFdmFsKCJcdTIwMjkiLCBbICJcdTIwMjkiIF0p
OwordGVzdEV2YWwoIlxcdTIwMjgiLCBbICJcXHUyMDI4IiBdKTsKK3Rlc3RFdmFsKCJcXHUyMDI5
IiwgWyAiXFx1MjAyOSIgXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXN5bnRheC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MTk5YmFjYjk0OWMyOGE1NDBjMjIyZDYyN2QzNDQ4YWQ2MzExYzUxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXN5
bnRheC5qcwpAQCAtMCwwICsxLDcwIEBACitmdW5jdGlvbiB0YWcoKSB7Cit9CisKK2Z1bmN0aW9u
IHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOwor
ICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRh
eEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJp
bmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQs
IG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGV2
YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBzeW50
YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9y
KSk7Cit9CisKK3Rlc3RTeW50YXgoInRhZ2BgIik7Cit0ZXN0U3ludGF4KCJ0YWdgSGVsbG9gIik7
Cit0ZXN0U3ludGF4KCJ0YWdgSGVsbG8ke3RhZ31gIik7Cit0ZXN0U3ludGF4KCJ0YWdgJHt0YWd9
YCIpOwordGVzdFN5bnRheCgidGFnYCR7dGFnfSAke3RhZ31gIik7Cit0ZXN0U3ludGF4KCJ0YWdg
JHt0YWd9JHt0YWd9YCIpOworCit0ZXN0U3ludGF4KCJ0YWcucHJvcGBgIik7Cit0ZXN0U3ludGF4
KCJ0YWcucHJvcGBIZWxsb2AiKTsKK3Rlc3RTeW50YXgoInRhZy5wcm9wYEhlbGxvJHt0YWd9YCIp
OwordGVzdFN5bnRheCgidGFnLnByb3BgJHt0YWd9YCIpOwordGVzdFN5bnRheCgidGFnLnByb3Bg
JHt0YWd9ICR7dGFnfWAiKTsKK3Rlc3RTeW50YXgoInRhZy5wcm9wYCR7dGFnfSR7dGFnfWAiKTsK
KwordGVzdFN5bnRheCgidGFnW3Byb3BdYGAiKTsKK3Rlc3RTeW50YXgoInRhZ1twcm9wXWBIZWxs
b2AiKTsKK3Rlc3RTeW50YXgoInRhZ1twcm9wXWBIZWxsbyR7dGFnfWAiKTsKK3Rlc3RTeW50YXgo
InRhZ1twcm9wXWAke3RhZ31gIik7Cit0ZXN0U3ludGF4KCJ0YWdbcHJvcF1gJHt0YWd9ICR7dGFn
fWAiKTsKK3Rlc3RTeW50YXgoInRhZ1twcm9wXWAke3RhZ30ke3RhZ31gIik7CisKK3Rlc3RTeW50
YXgoIih0YWcoKSlgYCIpOwordGVzdFN5bnRheCgiKHRhZygpKWBIZWxsb2AiKTsKK3Rlc3RTeW50
YXgoIih0YWcoKSlgSGVsbG8ke3RhZ31gIik7Cit0ZXN0U3ludGF4KCIodGFnKCkpYCR7dGFnfWAi
KTsKK3Rlc3RTeW50YXgoIih0YWcoKSlgJHt0YWd9ICR7dGFnfWAiKTsKK3Rlc3RTeW50YXgoIih0
YWcoKSlgJHt0YWd9JHt0YWd9YCIpOworCit0ZXN0U3ludGF4KCIoY2xhc3MgeyBzYXkoKSB7IHN1
cGVyLnRhZ2BgIH0gfSkiKTsKK3Rlc3RTeW50YXgoIihjbGFzcyB7IHNheSgpIHsgc3VwZXIudGFn
YEhlbGxvYCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3MgeyBzYXkoKSB7IHN1cGVyLnRhZ2BI
ZWxsbyR7dGFnfWAgfSB9KSIpOwordGVzdFN5bnRheCgiKGNsYXNzIHsgc2F5KCkgeyBzdXBlci50
YWdgJHt0YWd9YCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3MgeyBzYXkoKSB7IHN1cGVyLnRh
Z2Ake3RhZ30gJHt0YWd9YCB9IH0pIik7Cit0ZXN0U3ludGF4KCIoY2xhc3MgeyBzYXkoKSB7IHN1
cGVyLnRhZ2Ake3RhZ30ke3RhZ31gIH0gfSkiKTsKKwordGVzdFN5bnRheCgiKGNsYXNzIGV4dGVu
ZHMgSGVsbG8geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKWBgIH0gfSkiKTsKK3Rlc3RTeW50YXgo
IihjbGFzcyBleHRlbmRzIEhlbGxvIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKClgSGVsbG9gIH0g
fSkiKTsKK3Rlc3RTeW50YXgoIihjbGFzcyBleHRlbmRzIEhlbGxvIHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyKClgSGVsbG8ke3RhZ31gIH0gfSkiKTsKK3Rlc3RTeW50YXgoIihjbGFzcyBleHRlbmRz
IEhlbGxvIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKClgJHt0YWd9YCB9IH0pIik7Cit0ZXN0U3lu
dGF4KCIoY2xhc3MgZXh0ZW5kcyBIZWxsbyB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpYCR7dGFn
fSAke3RhZ31gIH0gfSkiKTsKK3Rlc3RTeW50YXgoIihjbGFzcyBleHRlbmRzIEhlbGxvIHsgY29u
c3RydWN0b3IoKSB7IHN1cGVyKClgJHt0YWd9JHt0YWd9YCB9IH0pIik7CisKK3Rlc3RTeW50YXhF
cnJvcigic3VwZXJgSGVsbG8ke3RhZ31gIiwgIlN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHN1cGVy
IGFzIHRhZyBmb3IgdGFnZ2VkIHRlbXBsYXRlcy4iKTsKK3Rlc3RTeW50YXhFcnJvcigiKGNsYXNz
IHsgc2F5KCkgeyBzdXBlcmBIZWxsbyR7dGFnfWAgfSB9KSIsICJTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSBzdXBlciBhcyB0YWcgZm9yIHRhZ2dlZCB0ZW1wbGF0ZXMuIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtdGVtcGxh
dGUtb2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQt
dGVtcGxhdGVzLXRlbXBsYXRlLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODA1ZGU5YTQ2MjJjNmM0
ODBhNTViZjIzNGFlMGQzNTgwMjE1NjBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLXRlbXBsYXRlLW9iamVjdC5q
cwpAQCAtMCwwICsxLDQzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGFnKGVsZW1lbnRzKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChzaXRlT2JqZWN0KSB7CisgICAgICAgIHNob3VsZEJlKHNpdGVP
YmplY3QgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKE9iamVjdC5p
c0Zyb3plbihzaXRlT2JqZWN0KSwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKHNpdGVPYmplY3Qu
cmF3IGluc3RhbmNlb2YgQXJyYXksIHRydWUpOworICAgICAgICBzaG91bGRCZShPYmplY3QuaXNG
cm96ZW4oc2l0ZU9iamVjdC5yYXcpLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUoc2l0ZU9iamVj
dC5oYXNPd25Qcm9wZXJ0eSgicmF3IiksIHRydWUpOworICAgICAgICBzaG91bGRCZShzaXRlT2Jq
ZWN0LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJyYXciKSwgZmFsc2UpOworICAgICAgICBzaG91bGRC
ZShzaXRlT2JqZWN0Lmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCk7CisgICAgICAgIHNob3VsZEJl
KHNpdGVPYmplY3QucmF3Lmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCk7CisgICAgICAgIHZhciBj
b3VudCA9IHNpdGVPYmplY3QubGVuZ3RoOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHNpdGVPYmplY3QuaGFzT3duUHJvcGVy
dHkoaSksIHRydWUpOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHNpdGVPYmplY3QsIGkpOworICAgICAgICAgICAgc2hvdWxkQmUoZGVzYy53
cml0YWJsZSwgZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoZGVzYy5lbnVtZXJhYmxlLCB0
cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKGRlc2MuY29uZmlndXJhYmxlLCBmYWxzZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmUoc2l0ZU9iamVjdC5sZW5ndGgsIGVsZW1lbnRzLmxl
bmd0aCArIDEpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgc2hvdWxkQmUoYXJndW1lbnRzW2kgKyAxXSwgZWxlbWVudHNbaV0p
OworICAgIH07Cit9CisKK3ZhciB2YWx1ZSA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdpbmNvcnJlY3QnKTsKKyAgICB9LAorICAgIHZhbHVlT2YoKSB7Cisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignaW5jb3JyZWN0Jyk7CisgICAgfQorfTsKKwordGFnKFtd
KWBgOwordGFnKFtdKWBIZWxsb2A7Cit0YWcoW10pYEhlbGxvIFdvcmxkYDsKK3RhZyhbdmFsdWVd
KWBIZWxsbyAke3ZhbHVlfSBXb3JsZGA7Cit0YWcoW3ZhbHVlLCB2YWx1ZV0pYEhlbGxvICR7dmFs
dWV9IE9LLCAke3ZhbHVlfWA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0YTU5
OTIwY2ZiYjQ4NzA4NzQ3OTE3NWFhYzVjNGUzY2NkZWYzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtdGhpcy5q
cwpAQCAtMCwwICsxLDI2IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGFnKCkgeworICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICByZXR1cm4gdGhpczsKK30KKwordmFyIG9iamVjdCA9IHsKKyAgICB0YWco
KSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQor
fTsKKworc2hvdWxkQmUodGFnYEhlbGxvYCwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKChmdW5jdGlv
biAoKSB7IHJldHVybiB0YWcgfSgpKWBIZWxsb2AsIHVuZGVmaW5lZCk7CitzaG91bGRCZShvYmpl
Y3QudGFnYEhlbGxvYCwgb2JqZWN0KTsKK3Nob3VsZEJlKG9iamVjdFsndGFnJ11gSGVsbG9gLCBv
YmplY3QpOworc2hvdWxkQmUob2JqZWN0WyhmdW5jdGlvbiAoKSB7IHJldHVybiAndGFnJzsgfSgp
KV1gSGVsbG9gLCBvYmplY3QpOworCit3aXRoIChvYmplY3QpIHsKKyAgICBzaG91bGRCZSh0YWdg
SGVsbG9gLCBvYmplY3QpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNzE0YmYzM2QxZDE3
Y2MyMGU4YzdlYTEyZmExZjk1YjBlNDc1OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMuanMKQEAgLTAsMCArMSw2
NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOworfQorCitmdW5jdGlvbiByYXcoc2l0ZU9iamVjdCkg
eworICAgIHZhciByZXN1bHQgPSAnJzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpdGVPYmpl
Y3QucmF3Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBzaXRlT2JqZWN0LnJhd1tp
XTsKKyAgICAgICAgaWYgKChpICsgMSkgPCBhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAgICAg
ICByZXN1bHQgKz0gYXJndW1lbnRzW2kgKyAxXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBjb29rZWQoc2l0ZU9iamVjdCkgeworICAgIHZhciBy
ZXN1bHQgPSAnJzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpdGVPYmplY3QucmF3Lmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBzaXRlT2JqZWN0W2ldOworICAgICAgICBpZiAo
KGkgKyAxKSA8IGFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBhcmd1
bWVudHNbaSArIDFdOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2Z1bmN0aW9uIENvdW50ZXIoKSB7CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICByZXR1cm4gewor
ICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBjb3VudCsrOworICAgICAg
ICB9CisgICAgfTsKK30KKwordmFyIGMgPSBDb3VudGVyKCk7CitzaG91bGRCZShyYXdgSGVsbG8g
JHtjfSBXb3JsZCAke2N9YCwgYEhlbGxvIDAgV29ybGQgMWApOwordmFyIGMgPSBDb3VudGVyKCk7
CitzaG91bGRCZShyYXdgJHtjfSR7Y30ke2N9YCwgYDAxMmApOwordmFyIGMgPSBDb3VudGVyKCk7
CitzaG91bGRCZShyYXdgJHtjfSR7IGAgICR7Y30gIGAgfSR7Y31gLCBgMSAgMCAgMmApOwordmFy
IGMgPSBDb3VudGVyKCk7CitzaG91bGRCZShyYXdgJHtjfSR7IHJhd2AgICR7Y30gIGAgfSR7Y31g
LCBgMSAgMCAgMmApOwordmFyIGMgPSBDb3VudGVyKCk7CitzaG91bGRCZShyYXdgJHtjfSR7IGAg
ICR7Y30ke2N9ICBgIH0ke2N9YCwgYDIgIDAxICAzYCk7Cit2YXIgYyA9IENvdW50ZXIoKTsKK3No
b3VsZEJlKHJhd2Ake2N9JHsgcmF3YCAgJHtjfSR7Y30gIGAgfSR7Y31gLCBgMiAgMDEgIDNgKTsK
Kworc2hvdWxkQmUocmF3YGAsIGBgKTsKK3Nob3VsZEJlKGNvb2tlZGBgLCBgYCk7CitzaG91bGRC
ZShyYXdgXG5gLCBgXFxuYCk7CitzaG91bGRCZShjb29rZWRgXG5gLCBgXG5gKTsKK3Nob3VsZEJl
KHJhd2BcdmAsIGBcXHZgKTsKK3Nob3VsZEJlKGNvb2tlZGBcdmAsIGBcdmApOworc2hvdWxkQmUo
cmF3YAorCitgLCBgXG5cbmApOworc2hvdWxkQmUoY29va2VkYAorCitgLCBgXG5cbmApOworc2hv
dWxkQmUocmF3YFwKK1wKK2AsIGBcXFxuXFxcbmApOworc2hvdWxkQmUoY29va2VkYFwKK1wKK2As
IGBgKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>