<?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>143181</bug_id>
          
          <creation_ts>2015-03-28 01:46:53 -0700</creation_ts>
          <short_desc>class methods should be non-enumerable</short_desc>
          <delta_ts>2015-04-25 15:04:40 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>esprehn</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080920</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-28 01:46:53 -0700</bug_when>
    <thetext>Both instance and static methods defined by ES6 class syntax should not be enumerable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080921</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-28 01:48:56 -0700</bug_when>
    <thetext>Also see the bug 142842: The prototype internal slot of an ES6 class should be non-configurable and non-writable  See dependency tree for bug 142842.

We can either add an extra argument to op_put_by_id or add a new op code to modify the descriptor of a property.

Any preferences?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080922</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-28 01:51:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/20337023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081106</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-29 23:48:28 -0700</bug_when>
    <thetext>Looks like defineProperty is mostly used to define a new accessor in benchmarks (run-jsc-benchmarks):

The total number of calls to defineOwnIndexProperty: 8
The total number of calls to defineOwnNonIndexProperty: 3562
  was a new entry: 3398
  didn&apos;t change descriptor: 0
  configurable:  2224
  enumerable: 2168
  writable: 1726
  accessor: 1726</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081108</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-29 23:53:04 -0700</bug_when>
    <thetext>In Speedometer, it&apos;s mostly used to define non-enumerable and non-writable proeprties:

The total number of calls to defineOwnIndexProperty: 22
The total number of calls to defineOwnNonIndexProperty: 103034
  was a new entry: 66903 (65%)
  didn&apos;t change descriptor: 0
  configurable: 73953 (72%)
  enumerable: 2168 (2%)
  writable: 1726 (2%)
  accessor: 1726 (2%)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081535</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-30 18:42:58 -0700</bug_when>
    <thetext>*** Bug 143246 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081537</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-30 18:48:38 -0700</bug_when>
    <thetext>I talked with Geoff today about this bug, and he suggested that we can just make a function call to defineProperty. We can then add an intrinsic to defineProperty so that it&apos;ll go fast in DFG.  That&apos;ll work nicely with the bug 143239.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081955</commentid>
    <comment_count>7</comment_count>
      <attachid>249911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-01 02:49:04 -0700</bug_when>
    <thetext>Created attachment 249911
WIP

Some real craziness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082470</commentid>
    <comment_count>8</comment_count>
      <attachid>250046</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-02 23:20:28 -0700</bug_when>
    <thetext>Created attachment 250046
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084631</commentid>
    <comment_count>9</comment_count>
      <attachid>250598</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-12 03:22:57 -0700</bug_when>
    <thetext>Created attachment 250598
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086944</commentid>
    <comment_count>10</comment_count>
      <attachid>251202</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-20 16:25:08 -0700</bug_when>
    <thetext>Created attachment 251202
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087223</commentid>
    <comment_count>11</comment_count>
      <attachid>251202</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 16:54:11 -0700</bug_when>
    <thetext>Comment on attachment 251202
Updated for ToT

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:572
&gt; +    unsigned m_linkTimeConstants[LinkTimeConstantCount] { 0 };

Looks like Windows can’t handle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087237</commentid>
    <comment_count>12</comment_count>
      <attachid>251202</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-04-21 17:34:51 -0700</bug_when>
    <thetext>Comment on attachment 251202
Updated for ToT

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:572
&gt;&gt; +    unsigned m_linkTimeConstants[LinkTimeConstantCount] { 0 };
&gt; 
&gt; Looks like Windows can’t handle this.

I&apos;d swear we&apos;ve used things like this before -- you could try making LinkTimeConstantCount static or a class member.

Also honestly i&apos;d prefer it if you used std::array here sit has bounds checking at least in debug builds (alas not in release :-/ )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087594</commentid>
    <comment_count>13</comment_count>
      <attachid>251369</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-22 14:39:46 -0700</bug_when>
    <thetext>Created attachment 251369
Fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087725</commentid>
    <comment_count>14</comment_count>
      <attachid>251404</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-22 21:50:02 -0700</bug_when>
    <thetext>Created attachment 251404
Another attempt to fix Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087787</commentid>
    <comment_count>15</comment_count>
      <attachid>251425</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 03:36:03 -0700</bug_when>
    <thetext>Created attachment 251425
Fixed Windows build for good; fuck off cl.exe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087931</commentid>
    <comment_count>16</comment_count>
      <attachid>251468</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 12:33:58 -0700</bug_when>
    <thetext>Created attachment 251468
Yet another Win build fix; fuck cl.exe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087933</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 12:34:11 -0700</bug_when>
    <thetext>Fucking cl.exe needs to die.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087960</commentid>
    <comment_count>18</comment_count>
      <attachid>251468</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-23 13:19:01 -0700</bug_when>
    <thetext>Comment on attachment 251468
Yet another Win build fix; fuck cl.exe

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

Patch looks OK to me. Please address the comments below, and fix the build.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1769
&gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++) {
&gt; +        LinkTimeConstant type = static_cast&lt;LinkTimeConstant&gt;(i);
&gt; +        if (unsigned registerIndex = unlinkedCodeBlock-&gt;registerIndexForLinkTimeConstant(type))
&gt; +            m_constantRegisters[registerIndex].set(*m_vm, ownerExecutable, m_globalObject-&gt;jsCellForLinkTimeConstant(type));
&gt; +    }

Can we unify LinkTimeConstant with SpecialPointer? They implement the same feature, so it would be nice to unify them. SpecialPointer is just a LinkTimeConstant for one of two possible functions (call, apply), and LinkTimeConstant adds another (defineProperty).

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:152
&gt; +    m_linkTimeConstantRegisters = { {nullptr} };

Will this syntax fill all entries or just the first? We want to fill all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087998</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 14:13:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 251468 [details]
&gt; Yet another Win build fix; fuck cl.exe
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251468&amp;action=review
&gt; 
&gt; Patch looks OK to me. Please address the comments below, and fix the build.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1769
&gt; &gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++) {
&gt; &gt; +        LinkTimeConstant type = static_cast&lt;LinkTimeConstant&gt;(i);
&gt; &gt; +        if (unsigned registerIndex = unlinkedCodeBlock-&gt;registerIndexForLinkTimeConstant(type))
&gt; &gt; +            m_constantRegisters[registerIndex].set(*m_vm, ownerExecutable, m_globalObject-&gt;jsCellForLinkTimeConstant(type));
&gt; &gt; +    }
&gt; 
&gt; Can we unify LinkTimeConstant with SpecialPointer? They implement the same
&gt; feature, so it would be nice to unify them. SpecialPointer is just a
&gt; LinkTimeConstant for one of two possible functions (call, apply), and
&gt; LinkTimeConstant adds another (defineProperty).

Yeah, that&apos;s the plan but I didn&apos;t want to do that in this patch since it&apos;s already quite massive.

&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:152
&gt; &gt; +    m_linkTimeConstantRegisters = { {nullptr} };
&gt; 
&gt; Will this syntax fill all entries or just the first? We want to fill all.

It should initiailize them all but I&apos;m gonna just use loop since it doesn&apos;t seem like nothing compiles these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088101</commentid>
    <comment_count>20</comment_count>
      <attachid>251514</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 16:59:53 -0700</bug_when>
    <thetext>Created attachment 251514
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088121</commentid>
    <comment_count>21</comment_count>
      <attachid>251521</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 18:09:54 -0700</bug_when>
    <thetext>Created attachment 251521
Another build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088147</commentid>
    <comment_count>22</comment_count>
      <attachid>251521</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-23 19:17:17 -0700</bug_when>
    <thetext>Comment on attachment 251521
Another build fix

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:334
&gt; +    unsigned addConstant(LinkTimeConstant type)

ASSERT it’s &lt; LinkTimeConstantCount?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:343
&gt; +    unsigned registerIndexForLinkTimeConstant(LinkTimeConstant type)

ASSERT it’s &lt; LinkTimeConstantCount?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:153
&gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++)
&gt; +        m_linkTimeConstantRegisters[i] = nullptr;

Can this use a modern for loop instead?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:186
&gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++)
&gt; +        m_linkTimeConstantRegisters[i] = nullptr;

Can this use a modern for loop instead?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:504
&gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++)
&gt; +        m_linkTimeConstantRegisters[i] = nullptr;

Can this use a modern for loop instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088152</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-23 19:25:30 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Comment on attachment 251521 [details]
&gt; Another build fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251521&amp;action=review
&gt;
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:153
&gt; &gt; +    for (unsigned i = 0; i &lt; LinkTimeConstantCount; i++)
&gt; &gt; +        m_linkTimeConstantRegisters[i] = nullptr;
&gt; 
&gt; Can this use a modern for loop instead?

How do I do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088583</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-25 14:43:47 -0700</bug_when>
    <thetext>Okay, we can just do:
for (auto&amp; constantRegister : m_linkTimeConstantRegisters)
    constantRegister = nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088588</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-25 14:57:15 -0700</bug_when>
    <thetext>Thanks for the review!  Will land the patch after using modern loops and adding assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088593</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-25 15:04:40 -0700</bug_when>
    <thetext>Committed r183316: &lt;http://trac.webkit.org/changeset/183316&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249911</attachid>
            <date>2015-04-01 02:49:04 -0700</date>
            <delta_ts>2015-04-02 23:20:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>17694</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxODIyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczOCw2ICsxNzM4LDEzIEBACiAgICAgc2V0Q29u
c3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVu
bGlua2VkQ29kZUJsb2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSk7CiAg
ICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIG1f
Y29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVy
KCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2Jh
bE9iamVjdC5nZXQoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFNwZWNpYWw6OlRhYmxlU2l6ZSk7IGkrKykgeworICAgICAgICBTcGVjaWFs
OjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gc3RhdGljX2Nhc3Q8U3BlY2lhbDo6UG9pbnRlcj4o
aSk7CisgICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0gdW5saW5rZWRDb2RlQmxv
Y2stPmluZGV4Rm9yU3BlY2lhbFBvaW50ZXIoc3BlY2lhbFBvaW50ZXIpKQorICAgICAgICAgICAg
bV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0
YWJsZSwgbV9nbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3Ioc3BlY2lhbFBvaW50ZXIpKTsK
KyAgICB9CisKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpAQCAtMTg2OCw3
ICsxODc1LDYgQEAKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9
ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLQogICAgICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICAgICAgY2FzZSBv
cF9uZXdfYXJyYXlfYnVmZmVyOgogICAgICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6
IHsKQEAgLTE4ODYsNyArMTg5Miw2IEBACiAgICAgICAgICAgICAgICAgbV9vd25lckV4ZWN1dGFi
bGUuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSwgaW5mZXJyZWRJbmxp
bmVDYXBhY2l0eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51
Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgJKHJldmlzaW9uIDE4MjIxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDEyIEBACiAg
ICAgSW5zdHJ1Y3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKSB7IHUuc3BlY2lhbFBvaW50
ZXIgPSBwb2ludGVyOyB9CiAgICAgSW5zdHJ1Y3Rpb24oU3RyaW5nSW1wbCogdWlkKSB7IHUudWlk
ID0gdWlkOyB9CiAgICAgSW5zdHJ1Y3Rpb24oYm9vbCogcHJlZGljYXRlUG9pbnRlcikgeyB1LnBy
ZWRpY2F0ZVBvaW50ZXIgPSBwcmVkaWNhdGVQb2ludGVyOyB9CisgICAgc3RhdGljIEluc3RydWN0
aW9uIGZyb21TcGVjaWFsUG9pbnRlcih2b2lkKiBwb2ludGVyKQorICAgIHsKKyAgICAgICAgSW5z
dHJ1Y3Rpb24gaW5zdHJ1Y3Rpb247CisgICAgICAgIGluc3RydWN0aW9uLnUucG9pbnRlciA9IHBv
aW50ZXI7CisgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbjsKKyAgICB9CiAKICAgICB1bmlvbiB7
CiAgICAgICAgIE9wY29kZSBvcGNvZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAkocmV2aXNpb24gMTgyMjE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAKICAgICBBcHBseUZ1bmN0aW9uLAogICAgIE9iamVjdENvbnN0cnVj
dG9yLAogICAgIEFycmF5Q29uc3RydWN0b3IsCisgICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwK
ICAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVzZSB0aGlzIHRv
IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgogfTsKIH0gLy8gbmFtZXNwYWNlIFNw
ZWNpYWwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODIyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYg
KzMzMCwxNSBAQAogICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5h
cHBlbmQoc291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CisgICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFs
UG9pbnRlcikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpOworICAgICAgICBtX3NwZWNpYWxQb2ludGVyQ29uc3RhbnRJbmRleFtzcGVj
aWFsUG9pbnRlcl0gPSByZXN1bHQ7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuYXBwZW5k
KFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXIpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB1bnNpZ25lZCBpbmRleEZvclNwZWNp
YWxQb2ludGVyKFNwZWNpYWw6OlBvaW50ZXIgc3BlY2lhbFBvaW50ZXIpIHsgcmV0dXJuIG1fc3Bl
Y2lhbFBvaW50ZXJDb25zdGFudEluZGV4W3NwZWNpYWxQb2ludGVyXTsgfQogICAgIHVuc2lnbmVk
IGFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUpOwogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdp
c3RlcnM7IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0
ZXIoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CkBAIC01NTUsNiArNTY0LDcgQEAKICAgICBW
ZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAgIHVu
c2lnbmVkIG1fc3BlY2lhbFBvaW50ZXJDb25zdGFudEluZGV4W1NwZWNpYWw6OlRhYmxlU2l6ZV0g
eyAwIH07CiAgICAgdHlwZWRlZiBWZWN0b3I8V3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPj4gRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOwogICAgIEZ1bmN0aW9uRXhwcmVz
c2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9y
IG1fZnVuY3Rpb25FeHByczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxODIyMTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg3LDYgKzk4NywyNSBAQAogICAgIHJldHVybiAmbV9j
b25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE1vdmVTcGVjaWFsUG9pbnRlcihSZWdpc3RlcklEKiBkc3QsIFNwZWNpYWw6
OlBvaW50ZXIgc3BlY2lhbFBvaW50ZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHNwZWNpYWxQb2lu
dGVyKTsKKworICAgIGlmICghbV9zcGVjaWFsUG9pbnRlclJlZ2lzdGVyc1tzcGVjaWFsUG9pbnRl
cl0pIHsKKyAgICAgICAgaW50IGluZGV4ID0gbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAg
IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzLmFwcGVuZChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCArIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKKyAgICAgICAgKyttX25leHRDb25zdGFudE9mZnNl
dDsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KHNwZWNpYWxQb2ludGVyKTsgICAg
CisgICAgICAgIG1fc3BlY2lhbFBvaW50ZXJSZWdpc3RlcnNbc3BlY2lhbFBvaW50ZXJdID0gJm1f
Y29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisKKyAgICBlbWl0T3Bjb2RlKG9w
X21vdik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc3BlY2lhbFBvaW50ZXJSZWdpc3RlcnNbc3BlY2lhbFBvaW50
ZXJdLT5pbmRleCgpKTsKKworICAgIHJldHVybiBkc3Q7Cit9CisKIHVuc2lnbmVkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRSZWdFeHAoUmVnRXhwKiByKQogewogICAgIHJldHVybiBtX2NvZGVCbG9j
ay0+YWRkUmVnRXhwKHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTgyMjE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw5IEBACiAKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gbV9wcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICBBcmd1bWVu
dHNOb2RlKiBtX2FyZ3VtZW50c05vZGU7CisgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJndW1l
bnRzTm9kZSB7IG51bGxwdHIgfTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwg
OCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fYXJndjsKLSAgICAgICAgdW5zaWduZWQgbV9wYWRk
aW5nOworICAgICAgICB1bnNpZ25lZCBtX3BhZGRpbmcgeyAwIH07CiAgICAgfTsKIAogICAgIHN0
cnVjdCBGaW5hbGx5Q29udGV4dCB7CkBAIC00NTYsNiArNDU2LDcgQEAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIAorICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TW92ZVNwZWNpYWxQb2ludGVyKFJlZ2lzdGVySUQqIGRzdCwgU3BlY2lhbDo6UG9p
bnRlcik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklE
KiBkc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYyk7CiAKQEAgLTcxNCw2ICs3MTUsNyBAQAogICAgICAgICBSZWdpc3RlcklE
KiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCog
bV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCog
bV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9z
cGVjaWFsUG9pbnRlclJlZ2lzdGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdIHsgbnVsbHB0ciB9Owog
CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxs
ZWVSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxODIyMTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxNiw4ICs0MTYsNDAgQEAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0
YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3
T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9hc3NpZ24pOwotICAgIGlmIChub2RlLm5lZWRz
U3VwZXJCaW5kaW5nKCkpCisgICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CisgICAgICAgIGlm
IChub2RlLm5hbWUoKSkKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZS5tX2V4cHJlc3Npb24pOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChuZXdPYmosIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYmx1ciwgcHJvcGVy
dHlOYW1lUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisKICAgICAgICAg
ZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgbmV3T2JqKTsKKworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHRydWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQo
ZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnZhbHVl
LCB2YWx1ZS5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6
OlVua25vd24pOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRv
clJlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNvbmZpZ3VyYWJsZSwg
dHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworCisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlU3BlY2lhbFBvaW50ZXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBTcGVjaWFsOjpEZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKworICAgICAgICBWZWN0b3I8UmVnaXN0ZXJJRCosIDg+IGFy
Z3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChuZXdPYmopOworICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIG5ld09iaik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcigy
KSwgZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4geCA9IGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGRlZmlu
ZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbik7CisKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBpZiAobm9kZS5uYW1lKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
aXJlY3RQdXRCeUlkKG5ld09iaiwgKm5vZGUubmFtZSgpLCB2YWx1ZS5nZXQoKSwgbm9kZS5wdXRU
eXBlKCkpOwogICAgICAgICByZXR1cm47CkBAIC01MDEsNyArNTMzLDYgQEAKIAogQ2FsbEFyZ3Vt
ZW50czo6Q2FsbEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBBcmd1bWVu
dHNOb2RlKiBhcmd1bWVudHNOb2RlLCB1bnNpZ25lZCBhZGRpdGlvbmFsQXJndW1lbnRzKQogICAg
IDogbV9hcmd1bWVudHNOb2RlKGFyZ3VtZW50c05vZGUpCi0gICAgLCBtX3BhZGRpbmcoMCkKIHsK
ICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKICAgICAgICAgbV9w
cm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwpAQCAtMjg1Miw3
ICsyODgzLDYgQEAKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3I7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZTsKIAogICAgIC8vIEZJWE1FOiBNYWtl
IHRoZSBwcm90b3R5cGUgbm9uLWNvbmZpZ3VyYWJsZSAmIG5vbi13cml0YWJsZS4KICAgICBpZiAo
bV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pCkBAIC0yODYyLDggKzI4OTIsMTMgQEAKICAgICAgICAg
ICAgIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVj
dG9yS2luZDo6QmFzZSwgbV9uYW1lKTsKICAgICB9CiAKLSAgICBwcm90b3R5cGUgPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpOworICAgIGNvbnN0IGF1dG8m
IHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm90b3R5cGU7Ly8gPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCkpOworICAgIHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBwcm9wZXJ0eU5h
bWVzLnByb3RvdHlwZSk7CiAKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHkg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlU3BlY2lh
bFBvaW50ZXIoZGVmaW5lUHJvcGVydHkuZ2V0KCksIFNwZWNpYWw6OkRlZmluZVByb3BlcnR5RnVu
Y3Rpb24pOworCiAgICAgaWYgKHN1cGVyY2xhc3MpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3RvUGFyZW50ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQocHJvdG9QYXJlbnQuZ2V0KCksIGpzTnVsbCgpKTsKQEAgLTI4OTAsNyAr
MjkyNSwxMSBAQAogCiAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3Ry
dWN0b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgfQotCisvKgorICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBkZXNjcmlwdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3Jp
cHRvci5nZXQoKSwgcHJvcGVydHlOYW1lcy52YWx1ZSwgcHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbChjb25zdHJ1Y3Rvci5nZXQo
KSwgZGVmaW5lUHJvcGVydHkuZ2V0KCksIEV4cGVjdGVkRnVuY3Rpb246Ok5vRXhwZWN0ZWRGdW5j
dGlvbiwgPCNKU0M6OkNhbGxBcmd1bWVudHMgJiM+LCA8I2NvbnN0IEpTQzo6SlNUZXh0UG9zaXRp
b24gJmRpdm90Iz4sIDwjY29uc3QgSlNDOjpKU1RleHRQb3NpdGlvbiAmZGl2b3RTdGFydCM+LCA8
I2NvbnN0IEpTQzo6SlNUZXh0UG9zaXRpb24gJmRpdm90RW5kIz4pCisqLwogICAgIGlmIChtX3N0
YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQo
KSwgbV9zdGF0aWNNZXRob2RzKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAxODIyMTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSw3IEBACiAgICAgbWFjcm8oY29uc3RydWN0b3IpIFwKICAgICBtYWNy
byhjb3VudCkgXAogICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oZGVmaW5lUHJvcGVy
dHkpIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbikgXAogICAgIG1hY3JvKGRlc2NyaXB0aW9ucykg
XAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxODIyMTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNyw2ICszMjcsMTAgQEAKICAgICAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciog
b2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0
b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisKKyAgICBKU0Z1bmN0aW9uKiBk
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJv
cGVydHkoZXhlYywgdGhpcyk7CisgICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSk7CiAgICAgCkBAIC00NDYsNyArNDUwLDggQEAKICAgICBtX3NwZWNp
YWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlGdW5jdGlvbi5nZXQo
KTsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBv
YmplY3RDb25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJheUNv
bnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0gICAgCisgICAgbV9zcGVjaWFsUG9pbnRl
cnNbU3BlY2lhbDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbl0gPSBtX2RlZmluZVByb3BlcnR5RnVu
Y3Rpb24uZ2V0KCk7CisKICAgICBDb25zb2xlUHJvdG90eXBlKiBjb25zb2xlUHJvdG90eXBlID0g
Q29uc29sZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBDb25zb2xlUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9j
b25zb2xlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNDb25zb2xlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGNvbnNvbGVQcm90b3R5cGUpKTsKICAgICBKU0NvbnNvbGUqIGNvbnNvbGVPYmpl
Y3QgPSBKU0NvbnNvbGU6OmNyZWF0ZSh2bSwgbV9jb25zb2xlU3RydWN0dXJlLmdldCgpKTsKQEAg
LTY4OSw2ICs2OTQsNyBAQAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5
cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAxODIyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDcgQEAKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVm
aW5lUHJvcGVydHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Ro
cm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3Rv
dHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CkBAIC0yNTQsNyArMjU1LDcgQEAKICAgICAKICAgICBz
dGQ6OmFycmF5PFR5cGVkQXJyYXlEYXRhLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IG1f
dHlwZWRBcnJheXM7CiAgICAgICAgIAotICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNp
YWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5k
IEpJVC4KKyAgICBKU0NlbGwqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07
IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KIAogICAgIFN0
cmluZyBtX25hbWU7CiAKQEAgLTM5Miw2ICszOTMsNyBAQAogICAgIEpTRnVuY3Rpb24qIGV2YWxG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNG
dW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0
KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
cHBseUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQog
ICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoVk0mIHZtKQogICAg
IHsKICAgICAgICAgaWYgKCFtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKQpAQCAtNTE0LDcg
KzUxNiw3IEBACiAgICAgICAgIHJldHVybiB0eXBlZEFycmF5U3RydWN0dXJlKHR5cGUpID09IHN0
cnVjdHVyZTsKICAgICB9CiAKLSAgICB2b2lkKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBv
aW50ZXIgcG9pbnRlcikKKyAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9p
bnRlciBwb2ludGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHBvaW50ZXIgPCBTcGVjaWFsOjpU
YWJsZVNpemUpOwogICAgICAgICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNbcG9pbnRlcl07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAxODIyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDE0
IEBACiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
IH0KIAorSlNGdW5jdGlvbiogT2JqZWN0Q29uc3RydWN0b3I6OmFkZERlZmluZVByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMywgdm0ucHJvcGVydHlOYW1l
cy0+ZGVmaW5lUHJvcGVydHkuc3RyaW5nKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVy
dHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5kZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydHlGdW5jdGlvbiwgRG9udEVudW0pOworICAg
IHJldHVybiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOworfQorCiBib29sIE9iamVjdENvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgb2JqZWN0Q29uc3Ry
dWN0b3JUYWJsZSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTgyMjE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOCBAQAogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCisgICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBPYmplY3RQcm90b3R5cGUqKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1
bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250046</attachid>
            <date>2015-04-02 23:20:28 -0700</date>
            <delta_ts>2015-04-12 03:22:50 -0700</delta_ts>
            <desc>WIP2</desc>
            <filename>wip143181b.patch</filename>
            <type>text/plain</type>
            <size>19174</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxODIzMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2Myw2ICsxNzYzLDEzIEBACiAgICAgc2V0Q29u
c3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVu
bGlua2VkQ29kZUJsb2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSk7CiAg
ICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIG1f
Y29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVy
KCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2Jh
bE9iamVjdC5nZXQoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVD
b25zdGFudENvdW50OyBpKyspIHsKKyAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3Rh
dGljX2Nhc3Q8TGlua1RpbWVDb25zdGFudD4oaSk7CisgICAgICAgIGlmICh1bnNpZ25lZCByZWdp
c3RlckluZGV4ID0gdW5saW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNv
bnN0YW50KHR5cGUpKQorICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3Rlcklu
ZGV4XS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QtPmpzQ2VsbEZv
ckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOworICAgIH0KKwogICAgIG1fZnVuY3Rpb25EZWNscy5y
ZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwog
ICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY2lhbFBvaW50ZXIuaAkocmV2aXNpb24gMTgyMzA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDExIEBACiB9OwogfSAvLyBuYW1lc3BhY2UgU3BlY2lhbAogCitlbnVtIGNsYXNzIExpbmtU
aW1lQ29uc3RhbnQgeworICAgIERlZmluZVByb3BlcnR5RnVuY3Rpb24sCit9OworY29uc3QgdW5z
aWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKKwogaW5saW5lIGJvb2wgcG9pbnRlcklz
RnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNp
b24gMTgyMzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsMTkgQEAKICAgICAgICAgbV9j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNl
bnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIHVuc2lnbmVkIGFk
ZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOworICAgICAgICBBU1NFUlQocmVz
dWx0KTsKKyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dHlwZSldID0gcmVzdWx0OworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0
ZUJhcnJpZXI8VW5rbm93bj4oKSk7CisgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXTsKKyAg
ICB9CiAgICAgdW5zaWduZWQgYWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSk7CiAgICAgY29uc3Qg
VmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1
cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3du
PiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRS
ZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KQEAgLTU1NSw2
ICs1NjgsNyBAQAogICAgIFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVj
dG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb247CisgICAgdW5zaWduZWQgbV9saW5rVGltZUNvbnN0YW50c1tMaW5rVGltZUNvbnN0
YW50Q291bnRdIHsgMCB9OwogICAgIHR5cGVkZWYgVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4+IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvcjsKICAgICBGdW5j
dGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVz
c2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTgyMzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Nyw2ICs5ODcsMjQgQEAKICAgICBy
ZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBk
c3QsIExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgIGlmICghbV9saW5rVGltZUNvbnN0
YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4
dENvbnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQo
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAg
ICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25z
dGFudCh0eXBlKTsKKyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisKKyAgICBl
bWl0T3Bjb2RlKG9wX21vdik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgo
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
c1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gZHN0OworfQorCiB1bnNp
Z25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhwKFJlZ0V4cCogcikKIHsKICAgICByZXR1
cm4gbV9jb2RlQmxvY2stPmFkZFJlZ0V4cChyKTsKQEAgLTE5NTYsNiArMTk3NCw0MSBAQAogICAg
IHJldHVybiBkc3Q7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5l
UHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdp
c3RlciwKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJS
ZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7CisKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9yYXJ5
KCksIHRydWUpOworICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCisgICAg
ICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLmNvbmZpZ3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24pOworICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlXcml0YWJsZSkKKyAgICAgICAgZW1p
dERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
d3JpdGFibGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAg
ICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
YWxzZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKKyAgICAgICAg
ZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVz
KCkud3JpdGFibGUsIGZhbHNlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7
CisgICAgfQorICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlFbnVtZXJhYmxlKQorICAgICAgICBl
bWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7
CisKKyAgICBpZiAodmFsdWVSZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZhbHVlUmVnaXN0
ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKGdldHRlclJlZ2lzdGVyKQorICAg
ICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5nZXQsIGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAg
IGlmIChzZXR0ZXJSZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRv
clJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0LCBzZXR0ZXJSZWdpc3RlciwgUHJv
cGVydHlOb2RlOjpVbmtub3duKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9w
ZXJ0eVJlZ2lzdGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBM
aW5rVGltZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKworICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7CisgICAgZW1pdExvYWQoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgZW1pdE1vdmUo
Y2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOworICAgIGVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIp
OworICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwgZGVzY3Jp
cHRvclJlZ2lzdGVyLmdldCgpKTsKKworICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZp
bmVQcm9wZXJ0eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIHBvc2l0aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworfQorCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCiB7CiAgICAgaWYgKGlz
Q29uc3RydWN0b3IoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTgyMzA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NTgsNiArNDU4LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKTsKIApAQCAtNDg5LDYgKzQ5MCwxNCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRz
JiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
UmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVy
SUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3Rl
cklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCisgICAgICAgIGVudW0gUHJvcGVydHlEZXNjcmlwdG9yT3B0aW9uIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5Q29uZmlndXJhYmxlID0gMSwKKyAgICAgICAgICAgIFByb3BlcnR5V3Jp
dGFibGUgICAgID0gMSA8PCAxLAorICAgICAgICAgICAgUHJvcGVydHlFbnVtZXJhYmxlICAgPSAx
IDw8IDIsCisgICAgICAgIH07CisgICAgICAgIHZvaWQgZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShS
ZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAg
ICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgcG9zaXRpb24pOworCiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0
aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25O
b2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2spOwogICAgICAgICAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpOwpAQCAtNzIwLDYgKzcyOSw3IEBACiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAg
ICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbTGlua1RpbWVDb25zdGFu
dENvdW50XSB7IG51bGxwdHIgfTsKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24g
MTgyMzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDggQEAKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9k
ZS0+bV9hc3NpZ24pOwotICAgICAgICAgICAgaWYgKG5vZGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkp
CisgICAgICAgICAgICBib29sIGlzQ2xhc3NQcm9wZXJ0eSA9IG5vZGUtPm5lZWRzU3VwZXJCaW5k
aW5nKCk7CisgICAgICAgICAgICBpZiAoaXNDbGFzc1Byb3BlcnR5KQogICAgICAgICAgICAgICAg
IGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUsIGRzdCk7CiAKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSBnZXQvc2V0IHByb3BlcnR5LCBmaW5kIGl0cyBlbnRyeSBpbiB0aGUgbWFw
LgpAQCAtNDAzLDEwICs0MDQsMTYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+bmVlZHNTdXBl
ckJpbmRpbmcoKSkKKyAgICAgICAgICAgIEFTU0VSVCghcGFpci5zZWNvbmQgfHwgaXNDbGFzc1By
b3BlcnR5ID09IHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAgICAg
IGlmIChpc0NsYXNzUHJvcGVydHkgJiYgcGFpci5zZWNvbmQpCiAgICAgICAgICAgICAgICAgZW1p
dFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBzZWNvbmRSZWcsIGRzdCk7CiAKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVy
UmVnLmdldCgpLCBzZXR0ZXJSZWcuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9w
ZXJ0eSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpu
b2RlLT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVBy
b3BlcnR5KGRzdCwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIGdldHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpLCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZXR0ZXJTZXR0ZXIoZHN0
LCAqbm9kZS0+bmFtZSgpLCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5nZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTQxNiw4ICs0MjMsMTkgQEAKIHZvaWQgUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9hc3NpZ24pOwotICAg
IGlmIChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgaWYgKG5vZGUubmVlZHNTdXBlckJp
bmRpbmcoKSkgewogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdl
dCgpLCBuZXdPYmopOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlcjsKKyAgICAgICAgaWYgKG5vZGUubmFtZSgpKQorICAgICAgICAgICAgcHJvcGVydHlO
YW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCAqbm9kZS5uYW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fZXhwcmVzc2lvbik7CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9wZXJ0eU5hbWVS
ZWdpc3Rlci5nZXQoKSwKKyAgICAgICAgICAgIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKG5vZGUubmFtZSgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChuZXdPYmosICpub2RlLm5hbWUoKSwgdmFsdWUuZ2V0KCksIG5vZGUucHV0VHlwZSgp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg1MCw3ICsyODY4LDYgQEAKICAgICB9CiAKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3I7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
b3RvdHlwZTsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBwcm90b3R5cGUgbm9uLWNvbmZpZ3Vy
YWJsZSAmIG5vbi13cml0YWJsZS4KICAgICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pCkBA
IC0yODYwLDcgKzI4NzcsOCBAQAogICAgICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUpOwogICAg
IH0KIAotICAgIHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSk7CisgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVy
YXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAKICAgICBpZiAo
c3VwZXJjbGFzcykgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJlbnQgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC0yODg5LDYgKzI5MDcsOSBAQAogICAgICAgICBl
bWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUu
Z2V0KCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9w
ZXJ0eU5hbWVzLnByb3RvdHlwZSk7CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVy
dHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90
eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsKKwogICAgIGlmICht
X3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5n
ZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAxODIzMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAgICAgbWFjcm8oY29uc3RydWN0b3IpIFwKICAgICBt
YWNybyhjb3VudCkgXAogICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oZGVmaW5lUHJv
cGVydHkpIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbikgXAogICAgIG1hY3JvKGRlc2NyaXB0aW9u
cykgXAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxODIzMDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNyw2ICszMjcsMTAgQEAKICAgICAKICAgICBPYmplY3RDb25zdHJ1Y3Rv
ciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisKKyAgICBKU0Z1bmN0aW9u
KiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5l
UHJvcGVydHkoZXhlYywgdGhpcyk7CisgICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisKICAgICBKU0NlbGwqIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25z
dHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSk7CiAgICAgCkBAIC00NDYsNyArNDUwLDkgQEAKICAgICBtX3Nw
ZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlGdW5jdGlvbi5n
ZXQoKTsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0g
PSBvYmplY3RDb25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJh
eUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0gICAgCisKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpEZWZpbmVQ
cm9wZXJ0eUZ1bmN0aW9uKV0gPSBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7CisKICAg
ICBDb25zb2xlUHJvdG90eXBlKiBjb25zb2xlUHJvdG90eXBlID0gQ29uc29sZVByb3RvdHlwZTo6
Y3JlYXRlKHZtLCB0aGlzLCBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jb25zb2xlU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNDb25zb2xlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGNvbnNvbGVQ
cm90b3R5cGUpKTsKICAgICBKU0NvbnNvbGUqIGNvbnNvbGVPYmplY3QgPSBKU0NvbnNvbGU6OmNy
ZWF0ZSh2bSwgbV9jb25zb2xlU3RydWN0dXJlLmdldCgpKTsKQEAgLTY4OSw2ICs2OTUsNyBAQAog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAx
ODIzMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDcgQEAKICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
Y2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rp
b247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVy
U2V0dGVyOwogCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90
b3R5cGU7CkBAIC0yNTMsOSArMjU0LDEwIEBACiAgICAgfTsKICAgICAKICAgICBzdGQ6OmFycmF5
PFR5cGVkQXJyYXlEYXRhLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IG1fdHlwZWRBcnJh
eXM7Ci0gICAgICAgIAotICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxl
U2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KIAor
ICAgIEpTQ2VsbCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3Bl
Y2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgorICAgIEpTQ2VsbCogbV9s
aW5rVGltZUNvbnN0YW50c1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworCiAgICAgU3RyaW5nIG1f
bmFtZTsKIAogICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwpAQCAtMzkzLDYgKzM5NSw3IEBACiAg
ICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9u
KiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRl
clNldHRlcihWTSYgdm0pCiAgICAgewogICAgICAgICBpZiAoIW1fdGhyb3dUeXBlRXJyb3JHZXR0
ZXJTZXR0ZXIpCkBAIC01MTUsMTEgKzUxOCwxNyBAQAogICAgICAgICByZXR1cm4gdHlwZWRBcnJh
eVN0cnVjdHVyZSh0eXBlKSA9PSBzdHJ1Y3R1cmU7CiAgICAgfQogCi0gICAgdm9pZCogYWN0dWFs
UG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisgICAgSlNDZWxsKiBhY3R1YWxQ
b2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKICAgICB7CiAgICAgICAgIEFTU0VS
VChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKICAgICAgICAgcmV0dXJuIG1fc3BlY2lh
bFBvaW50ZXJzW3BvaW50ZXJdOwogICAgIH0KKyAgICBKU0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7CisgICAgICAgIEFTU0VSVChpbmRl
eCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29u
c3RhbnRzW2luZGV4XTsKKyAgICB9CiAKICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQuZ2V0KCk7IH0KICAgICBXYXRjaHBvaW50U2V0KiBoYXZpbmdBQmFkVGltZVdhdGNo
cG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludC5nZXQoKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTgyMzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5MywxNCBA
QAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9
CiAKK0pTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMt
PmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRFbnVtKTsKKyAgICBy
ZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKK30KKwogYm9vbCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIG9iamVjdENvbnN0cnVj
dG9yVGFibGUsIGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE4MjMwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDggQEAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogICAgIH0KIAorICAgIEpTRnVuY3Rpb24qIGFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0Kik7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5j
dGlvbjo6U3RydWN0dXJlRmxhZ3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250598</attachid>
            <date>2015-04-12 03:22:57 -0700</date>
            <delta_ts>2015-04-20 16:25:02 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-143181-20150412032204.patch</filename>
            <type>text/plain</type>
            <size>31588</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyNjQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTExICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTEwICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEVTNjogSXRlcmF0b3IgdG9TdHJp
bmcgbmFtZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODI2NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc2Myw2ICsxNzYzLDEzIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG8KICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRS
ZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNl
bnRhdGlvbigpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3Qo
KSkKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1
dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykgeworICAgICAgICBMaW5rVGltZUNvbnN0
YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50PihpKTsKKyAgICAgICAgaWYg
KHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtlZENvZGVCbG9jay0+cmVnaXN0ZXJJbmRl
eEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCisgICAgICAgICAgICBtX2NvbnN0YW50UmVnaXN0
ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9i
amVjdC0+anNDZWxsRm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSk7CisgICAgfQorCiAgICAgbV9m
dW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0
aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5r
ZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCShyZXZpc2lvbiAxODI2NDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsMTEgQEAgZW51bSBQb2ludGVyIHsKIH07CiB9IC8vIG5hbWVzcGFj
ZSBTcGVjaWFsCiAKK2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7CisgICAgRGVmaW5lUHJv
cGVydHlGdW5jdGlvbiwKK307Citjb25zdCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQg
PSAxOworCiBpbmxpbmUgYm9vbCBwb2ludGVySXNGdW5jdGlvbihTcGVjaWFsOjpQb2ludGVyIHBv
aW50ZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyLCBwb2ludGVyIDwgU3BlY2lhbDo6
VGFibGVTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODI2NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzMwLDYgKzMzMCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uLmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNv
bnN0YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50
UmVnaXN0ZXJzLnNpemUoKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXSA9IHJlc3VsdDsKKyAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkp
OworICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KExpbmtU
aW1lQ29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKV07CisgICAgfQogICAgIHVuc2lnbmVkIGFk
ZE9yRmluZENvbnN0YW50KEpTVmFsdWUpOwogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3Rl
cnM7IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CkBAIC01NTUsNiArNTY4LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwor
ICAgIHVuc2lnbmVkIG1fbGlua1RpbWVDb25zdGFudHNbTGlua1RpbWVDb25zdGFudENvdW50XSB7
IDAgfTsKICAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+PiBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I7CiAgICAgRnVuY3Rpb25FeHByZXNz
aW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3Ig
bV9mdW5jdGlvbkV4cHJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4MjY0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODcsNiArOTg3LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjphZGRDb25zdGEKICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0
ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQgdHlwZSkK
K3sKKyAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpOworICAgIGlmICghbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhd
KSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zmc2V0OworICAgICAgICBt
X2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
KyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7
CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh0eXBlKTsKKyAgICAgICAgbV9saW5r
VGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdID0gJm1fY29uc3RhbnRQb29sUmVn
aXN0ZXJzW2luZGV4XTsKKyAgICB9CisKKyAgICBlbWl0T3Bjb2RlKG9wX21vdik7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7
CisKKyAgICByZXR1cm4gZHN0OworfQorCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRk
UmVnRXhwKFJlZ0V4cCogcikKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZFJlZ0V4cChy
KTsKQEAgLTE5NTYsNiArMTk3NCw0MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxWCiAgICAgcmV0dXJuIGRzdDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHBy
b3BlcnR5TmFtZVJlZ2lzdGVyLAorICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lz
dGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWdu
ZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9yUmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBv
cmFyeSgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9h
ZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUNvbmZp
Z3VyYWJsZSkKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdyaXRhYmxl
KQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6
OlVua25vd24pOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpIHsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgZmFs
c2UpOworICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlO
b2RlOjpVbmtub3duKTsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUVudW1lcmFi
bGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlO
b2RlOjpVbmtub3duKTsKKworICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBlbWl0RGly
ZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1
ZSwgdmFsdWVSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICBpZiAoZ2V0dGVy
UmVnaXN0ZXIpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwgZ2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6
VW5rbm93bik7CisgICAgaWYgKHNldHRlclJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0
QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNldHRl
clJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworCisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0ZXIgPSBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQobmV3
VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pOwor
CisgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKKyAg
ICBlbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7
CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0
eU5hbWVSZWdpc3Rlcik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lz
dGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZW1pdENhbGwobmV3VGVt
cG9yYXJ5KCksIGRlZmluZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7Cit9CisKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykK
IHsKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAxODI2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw2ICs0NTgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdp
c3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAq
KTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0
ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1v
dmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRN
b3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIApAQCAtNDg5LDYgKzQ5MCwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
YWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQq
IHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZy
ZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmls
ZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAor
ICAgICAgICBlbnVtIFByb3BlcnR5RGVzY3JpcHRvck9wdGlvbiB7CisgICAgICAgICAgICBQcm9w
ZXJ0eUNvbmZpZ3VyYWJsZSA9IDEsCisgICAgICAgICAgICBQcm9wZXJ0eVdyaXRhYmxlICAgICA9
IDEgPDwgMSwKKyAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJsZSAgID0gMSA8PCAyLAorICAg
ICAgICB9OworICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCog
bmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKKyAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdp
c3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9z
aXRpb24mKTsKKwogICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4m
IGNhbGxCYWNrKTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVn
aXN0ZXJJRCogc3JjKTsKQEAgLTcyMCw2ICs3MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJl
Z2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291
bnRdIHsgbnVsbHB0ciB9OwogCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAz
Mj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdp
c3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxODI2
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlZ2lz
dGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUtPm1fYXNzaWduKTsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAgICAgICAgICAgYm9vbCBp
c0NsYXNzUHJvcGVydHkgPSBub2RlLT5uZWVkc1N1cGVyQmluZGluZygpOworICAgICAgICAgICAg
aWYgKGlzQ2xhc3NQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChn
ZW5lcmF0b3IsIHZhbHVlLCBkc3QpOwogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZ2V0L3Nl
dCBwcm9wZXJ0eSwgZmluZCBpdHMgZW50cnkgaW4gdGhlIG1hcC4KQEAgLTQwMywxMCArNDA0LDE2
IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY28KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZCAmJiBw
YWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIEFTU0VSVCghcGFp
ci5zZWNvbmQgfHwgaXNDbGFzc1Byb3BlcnR5ID09IHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmlu
ZGluZygpKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzUHJvcGVydHkgJiYgcGFpci5zZWNvbmQp
CiAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBzZWNvbmRSZWcs
IGRzdCk7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2V0dGVyU2V0dGVyKGRzdCwg
Km5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVnLmdldCgpLCBzZXR0ZXJSZWcuZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGRzdCwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0
KCksCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGdldHRlclJlZy5nZXQoKSwgc2V0dGVy
UmVnLmdldCgpLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRHZXR0ZXJTZXR0ZXIoZHN0LCAqbm9kZS0+bmFtZSgpLCBnZXR0ZXJSZWcuZ2V0KCksIHNl
dHRlclJlZy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQxNiw4ICs0MjMsMTkgQEAg
UmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogdm9pZCBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7
Ci0gICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICBpZiAobm9kZS5uZWVkc1N1
cGVyQmluZGluZygpKSB7CiAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFs
dWUuZ2V0KCksIG5ld09iaik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5
TmFtZVJlZ2lzdGVyOworICAgICAgICBpZiAobm9kZS5uYW1lKCkpCisgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3BlcnR5
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9leHByZXNzaW9uKTsKKwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5
TmFtZVJlZ2lzdGVyLmdldCgpLAorICAgICAgICAgICAgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2Rl
R2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBpZiAobm9kZS5uYW1lKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
aXJlY3RQdXRCeUlkKG5ld09iaiwgKm5vZGUubmFtZSgpLCB2YWx1ZS5nZXQoKSwgbm9kZS5wdXRU
eXBlKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yODUwLDcgKzI4NjgsNiBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNvbnN0cnVjdG9yOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGU7CiAK
ICAgICAvLyBGSVhNRTogTWFrZSB0aGUgcHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBub24t
d3JpdGFibGUuCiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKQpAQCAtMjg2MCw3ICsy
ODc3LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAg
ICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIDogQ29uc3Ry
dWN0b3JLaW5kOjpCYXNlLCBtX25hbWUpOwogICAgIH0KIAotICAgIHByb3RvdHlwZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CisgICAgY29uc3QgYXV0
byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSk7CiAKICAgICBpZiAoc3VwZXJjbGFzcykgewogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJlbnQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBA
IC0yODg5LDYgKzI5MDcsMTMgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVj
b2RlKAogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdl
dCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25zdHJ1Y3Rvck5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3IpOworICAgIGdlbmVyYXRvci5l
bWl0Q2FsbERlZmluZVByb3BlcnR5KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVn
aXN0ZXIuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAorICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOworICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1l
UmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9w
b3NpdGlvbik7CisKICAgICBpZiAobV9zdGF0aWNNZXRob2RzKQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAko
cmV2aXNpb24gMTgyNjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQAogICAgIG1hY3Jv
KGNvbnN0cnVjdG9yKSBcCiAgICAgbWFjcm8oY291bnQpIFwKICAgICBtYWNybyhjb3VudGVycykg
XAorICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwK
ICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMTgyNjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDEwIEBAIG1fICMj
IHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGgKICAgICAKICAgICBPYmplY3RDb25z
dHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1f
b2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisKKyAg
ICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rv
ci0+YWRkRGVmaW5lUHJvcGVydHkoZXhlYywgdGhpcyk7CisgICAgbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uLnNldCh2bSwgdGhpcywgZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisKICAgICBKU0Nl
bGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2Vs
bCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAgICAgCkBAIC00NDYsNyArNDUwLDkg
QEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcgogICAgIG1fc3BlY2lh
bFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1bmN0aW9uLmdldCgp
OwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9i
amVjdENvbnN0cnVjdG9yOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29u
c3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLSAgICAKKworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsKKwogICAgIENv
bnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVByb3Rv
dHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3JlYXRl
KHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtNjg5LDYgKzY5NSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
YXBwbHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVmaW5l
UHJvcGVydHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTgyNjQ4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg5LDYgKzE4OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwog
CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CkBA
IC0yNTMsOCArMjU0LDkgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgCiAgICAgc3RkOjphcnJh
eTxUeXBlZEFycmF5RGF0YSwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTPiBtX3R5cGVkQXJy
YXlzOwotICAgICAgICAKLSAgICB2b2lkKiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJs
ZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCisK
KyAgICBKU0NlbGwqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNw
ZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KKyAgICBKU0NlbGwqIG1f
bGlua1RpbWVDb25zdGFudHNbTGlua1RpbWVDb25zdGFudENvdW50XTsKIAogICAgIFN0cmluZyBt
X25hbWU7CiAKQEAgLTM5Myw2ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogZXZh
bEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBK
U0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5n
ZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOyB9
CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBpZiAoIW1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpCkBAIC01MTUs
MTEgKzUxOCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlZEFycmF5U3RydWN0dXJl
KHR5cGUpID09IHN0cnVjdHVyZTsKICAgICB9CiAKLSAgICB2b2lkKiBhY3R1YWxQb2ludGVyRm9y
KFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKKyAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXJGb3Io
U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHBvaW50ZXIg
PCBTcGVjaWFsOjpUYWJsZVNpemUpOwogICAgICAgICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNb
cG9pbnRlcl07CiAgICAgfQorICAgIEpTQ2VsbCoganNDZWxsRm9yTGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1Rp
bWVDb25zdGFudENvdW50KTsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNbaW5k
ZXhdOworICAgIH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC5n
ZXQoKTsgfQogICAgIFdhdGNocG9pbnRTZXQqIGhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpIHsg
cmV0dXJuIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LmdldCgpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAxODI2NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDE0IEBAIHZvaWQgT2Jq
ZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFYKICAgICAgICAgSlNDX05BVElWRV9GVU5D
VElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAorSlNGdW5jdGlvbiogT2JqZWN0Q29uc3Ry
dWN0b3I6OmFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTRnVuY3Rp
b24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMywgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHkuc3RyaW5nKCksIG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVy
dHlGdW5jdGlvbiwgRG9udEVudW0pOworICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9u
OworfQorCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxK
U09iamVjdD4oZXhlYywgb2JqZWN0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PE9iamVjdENvbnN0
cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24g
MTgyNjQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKKyAgICBK
U0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlv
bjo6U3RydWN0dXJlRmxhZ3M7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI2NDgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNC0x
MSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBjbGFzcyBtZXRo
b2RzIHNob3VsZCBiZSBub24tZW51bWVyYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAg
QWxzbyBmaXhlZCBhIHRlc3QgdGhhdCBwcmV2aW91c2x5IHJlbGllZCBvbiAicHJvdG90eXBlIiBw
cm9wZXJ0eSBiZWluZyB3cml0YWJsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIG5vIGxvbmdlciB0
aGUgY2FzZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qczoKKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qczogQWRkZWQuCisKIDIw
MTUtMDQtMTAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250
ZW50IEZpbHRlcmluZ10gU3VwcG9ydCBtb2RpZnlpbmcgcmVxdWVzdCBVUkxzCkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODI2NDgpCisrKyBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyB4ID0gY2xhc3Mg
ZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0bwogUEFTUyB4Ll9fcHJvdG9fXyBpcyBGdW5jdGlvbi5w
cm90b3R5cGUKIFBBU1MgeCA9IGNsYXNzIGV4dGVuZHMgMyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07
IHguX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlz
IG5vdCBhbiBvYmplY3QuLgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAiYWJjIiB7IGNvbnN0cnVj
dG9yKCkgeyB9IH07IHguX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBz
dXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuLgotUEFTUyBiYXNlV2l0aEJhZFByb3RvdHlwZSA9
IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90
eXBlID0gMyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgYmFzZVdpdGhCYWRQcm90b3R5
cGUgPSBmdW5jdGlvbiAoKSB7fTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gMzsg
bmV3IGJhc2VXaXRoQmFkUHJvdG90eXBlIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB4
ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9
IH0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUg
aXMgbm90IGFuIG9iamVjdC4uCiBQQVNTIGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9
ICJhYmMiIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyBi
YXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0gdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4u
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwkocmV2aXNpb24gMTgyNjQ4KQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHNob3VsZEJlKCd4ID0gY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3QKIHNob3VsZEJlKCd4Ll9fcHJvdG9fXycsICdGdW5jdGlvbi5wcm90b3R5cGUn
KTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29uc3RydWN0b3IoKSB7IH0g
fTsgeC5fX3Byb3RvX18nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9i
amVjdC4iJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgImFiYyIgeyBjb25zdHJ1
Y3RvcigpIHsgfSB9OyB4Ll9fcHJvdG9fXycsICciVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcyBp
cyBub3QgYW4gb2JqZWN0LiInKTsKLXNob3VsZE5vdFRocm93KCdiYXNlV2l0aEJhZFByb3RvdHlw
ZSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJv
dG90eXBlID0gMycpOworc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlID0gZnVu
Y3Rpb24gKCkge307IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9IDM7IG5ldyBiYXNl
V2l0aEJhZFByb3RvdHlwZScpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBleHRlbmRzIGJhc2VX
aXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfScsICciVHlwZUVycm9yOiBUaGUg
c3VwZXJjbGFzc1wncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91bGROb3RU
aHJvdygnYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gImFiYyInKTsKIHNob3VsZFRo
cm93KCd4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9y
KCkgeyB9IH0nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3NcJ3MgcHJvdG90eXBlIGlzIG5v
dCBhbiBvYmplY3QuIicpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNz
LXN5bnRheC1wcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIHRoZSBkZXNjcmlw
dG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBsaWNpdGx5IGRlZmluZWQgYnkgRVM2IGNsYXNzIHN5
bnRheCcpOworCitmdW5jdGlvbiBkZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKSB7Cisg
ICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworfQorCitmdW5jdGlvbiBlbnVtZXJhdGVkUHJvcGVydGllcyhvYmplY3QpIHsKKyAg
ICB2YXIgcHJvcGVydGllcyA9IFtdOworICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBvYmpl
Y3QpCisgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBw
cm9wZXJ0aWVzOworfQorCitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEs
ICJwcm90b3R5cGUiKS53cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEge307IHZhciB4ID0g
QS5wcm90b3R5cGU7IEEucHJvdG90eXBlID0gMzsgQS5wcm90b3R5cGUnLCAneCcpOworc2hvdWxk
QmVGYWxzZSgnY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikuZW51bWVyYWJs
ZScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHt9OyBBLmZvbyA9ICJmb28iOyBlbnVtZXJhdGVk
UHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEg
e307IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJwcm90b3R5cGUiKScpOworc2hv
dWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikuY29uZmln
dXJhYmxlJyk7CitzaG91bGRUaHJvdygnY2xhc3MgQSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEEsICJwcm90b3R5cGUiLCB7dmFsdWU6ICJmb28ifSknLCAnIlR5cGVFcnJvcjogQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iJyk7CisKK3Nob3VsZEJl
VHJ1ZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS53
cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgQS5mb28g
PSAzOyBBLmZvbycsICczJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygp
IHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFsc2Uo
J2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5j
bHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30g
fTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRCZSgnY2xhc3Mg
QSB7IHN0YXRpYyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2
YWx1ZTogImJhciJ9KTsgQS5mb28nLCAnImJhciInKTsKKworc2hvdWxkQmUoJ2NsYXNzIEEgeyBz
dGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLndyaXRhYmxlJywgJ3Vu
ZGVmaW5lZCcpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHsgcmV0dXJu
IDU7IH0gfTsgQS5mb28gPSAzOyBBLmZvbycsICc1Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBB
IHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxl
Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBlbnVt
ZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2Ns
YXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBB
KS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQg
Zm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRC
ZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIiJyk7CisKK3Nob3VsZEJl
VHJ1ZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28i
KS53cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBBLnByb3RvdHlw
ZS5mb28gPSAzOyBBLnByb3RvdHlwZS5mb28nLCAnMycpOworc2hvdWxkQmVGYWxzZSgnY2xhc3Mg
QSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5lbnVtZXJhYmxl
Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3Bl
cnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xh
c3MgQSB7IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygi
Zm9vIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3Io
QS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
Zm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiZm9vIiwge3Zh
bHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsKKworc2hvdWxkQmUoJ2Ns
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLndy
aXRhYmxlJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkgeyBy
ZXR1cm4gNTsgfSB9OyBBLnByb3RvdHlwZS5mb28gPSAzOyBBLnByb3RvdHlwZS5mb28nLCAnNScp
Oworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEu
cHJvdG90eXBlLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7
IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVk
ZXMoImZvbyIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGVu
dW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlVHJ1
ZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9v
IikuY29uZmlndXJhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBP
YmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7
IEEucHJvdG90eXBlLmZvbycsICciYmFyIicpOworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9
OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS53cml0YWJsZScpOworc2hv
dWxkQmUoJ2NsYXNzIEEgeyB9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IDM7IEEucHJvdG90
eXBlLmNvbnN0cnVjdG9yJywgJzMnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IH07IHggPSB7
fTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9OyAo
bmV3IEEpIGluc3RhbmNlb2YgQScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IH07IGRlc2Ny
aXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJl
RmFsc2UoJ2NsYXNzIEEgeyB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5j
bHVkZXMoImNvbnN0cnVjdG9yIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyB9OyBlbnVt
ZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImNvbnN0cnVjdG9yIiknKTsKK3Nob3Vs
ZEJlVHJ1ZSgnY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3Rv
ciIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyB9OyBPYmplY3QuZGVmaW5l
UHJvcGVydHkoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIsIHt2YWx1ZTogImJhciJ9KTsgQS5w
cm90b3R5cGUuY29uc3RydWN0b3InLCAnImJhciInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251202</attachid>
            <date>2015-04-20 16:25:08 -0700</date>
            <delta_ts>2015-04-22 14:39:44 -0700</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-143181-20150420162405.patch</filename>
            <type>text/plain</type>
            <size>35733</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTExICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIwICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGVidWdnaW5nIHRvb2xzIHRvIHRlc3Qg
aWYgYSBnaXZlbiBwb2ludGVyIGlzIGEgdmFsaWQgb2JqZWN0IGFuZCBpbiB0aGUgaGVhcC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxODMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2MSw2ICsxNzYxLDEzIEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxp
bmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpKTsKICAgICBpZiAodW5saW5rZWRDb2Rl
QmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1
bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgo
KV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykg
eworICAgICAgICBMaW5rVGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNv
bnN0YW50PihpKTsKKyAgICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtl
ZENvZGVCbG9jay0+cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCisgICAg
ICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCgqbV92bSwgb3du
ZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC0+anNDZWxsRm9yTGlua1RpbWVDb25zdGFudCh0
eXBlKSk7CisgICAgfQorCiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2Vk
Q29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291
bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5s
aW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5o
CShyZXZpc2lvbiAxODMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTEgQEAgZW51bSBQb2lu
dGVyIHsKIH07CiB9IC8vIG5hbWVzcGFjZSBTcGVjaWFsCiAKK2VudW0gY2xhc3MgTGlua1RpbWVD
b25zdGFudCB7CisgICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwKK307Citjb25zdCB1bnNpZ25l
ZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOworCiBpbmxpbmUgYm9vbCBwb2ludGVySXNGdW5j
dGlvbihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwb2lu
dGVyLCBwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAx
ODMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDYgKzMzMSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChzb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICB1bnNpZ25l
ZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNp
Z25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCk7CisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHR5cGUpXSA9IHJlc3VsdDsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQo
V3JpdGVCYXJyaWVyPFVua25vd24+KCkpOworICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhG
b3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKV07
CisgICAgfQogICAgIHVuc2lnbmVkIGFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUpOwogICAgIGNv
bnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsg
cmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0
YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CkBAIC01
NTYsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlm
aWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0
ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAgIHVuc2lnbmVkIG1fbGlua1RpbWVDb25zdGFudHNb
TGlua1RpbWVDb25zdGFudENvdW50XSB7IDAgfTsKICAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJh
cnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+PiBGdW5jdGlvbkV4cHJlc3Npb25WZWN0
b3I7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBG
dW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHJldmlzaW9uIDE4MzAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0
LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGEKICAgICByZXR1
cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3Qs
IExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgIGlmICghbV9saW5rVGltZUNvbnN0YW50
UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENv
bnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAg
ICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFu
dCh0eXBlKTsKKyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5k
ZXhdID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisKKyAgICBlbWl0
T3Bjb2RlKG9wX21vdik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tj
b25zdGFudEluZGV4XS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gZHN0OworfQorCiB1bnNpZ25l
ZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhwKFJlZ0V4cCogcikKIHsKICAgICByZXR1cm4g
bV9jb2RlQmxvY2stPmFkZFJlZ0V4cChyKTsKQEAgLTE5NTMsNiArMTk3MSw0MSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWCiAgICAgcmV0dXJuIGRzdDsKIH0KIAor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklE
KiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAgIFJlZ2lzdGVy
SUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IHBvc2l0aW9uKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9yUmVnaXN0ZXIg
PSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7CisgICAgaWYg
KG9wdGlvbnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxl
LCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKG9w
dGlvbnMgJiBQcm9wZXJ0eVdyaXRhYmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNj
cmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lz
dGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGVsc2UgaWYgKHZhbHVlUmVn
aXN0ZXIpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0
TG9hZChuZXdUZW1wb3JhcnkoKSwgZmFsc2UpOworICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChk
ZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VS
ZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICB9CisgICAgaWYgKG9w
dGlvbnMgJiBQcm9wZXJ0eUVudW1lcmFibGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRl
c2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVS
ZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKworICAgIGlmICh2YWx1ZVJl
Z2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpV
bmtub3duKTsKKyAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCisgICAgICAgIGVtaXREaXJlY3RQdXRC
eUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwgZ2V0dGVy
UmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKHNldHRlclJlZ2lzdGVy
KQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5zZXQsIHNldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24p
OworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0ZXIgPSBlbWl0
TW92ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29uc3RhbnQ6OkRl
ZmluZVByb3BlcnR5RnVuY3Rpb24pOworCisgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KCp0aGlzLCBudWxscHRyLCAzKTsKKyAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3Vt
ZW50UmVnaXN0ZXIoMCksIG5ld09iaik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlcik7CisgICAgZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCkp
OworCisgICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRlZmluZVByb3BlcnR5UmVnaXN0ZXIu
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgcG9zaXRpb24sIHBvc2l0
aW9uLCBwb3NpdGlvbik7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
OCw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAo
UmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92
ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKTsKIApAQCAtNDg5LDYgKzQ5MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
Q2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1l
bnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICBlbnVtIFByb3BlcnR5RGVzY3JpcHRvck9w
dGlvbiB7CisgICAgICAgICAgICBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSA9IDEsCisgICAgICAgICAg
ICBQcm9wZXJ0eVdyaXRhYmxlICAgICA9IDEgPDwgMSwKKyAgICAgICAgICAgIFByb3BlcnR5RW51
bWVyYWJsZSAgID0gMSA8PCAyLAorICAgICAgICB9OworICAgICAgICB2b2lkIGVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQg
b3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKwogICAgICAgICB2b2lkIGVtaXRFbnVt
ZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNz
aW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrKTsKICAgICAgICAgCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKTsKQEAgLTcyMCw2ICs3MjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIg
eyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdIHsgbnVsbHB0ciB9OwogCiAgICAgICAgIFNlZ21l
bnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCShyZXZpc2lvbiAxODMwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIs
OCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG5vZGUtPm1fYXNzaWduKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5uZWVkc1N1cGVyQmluZGlu
ZygpKQorICAgICAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkgPSBub2RlLT5uZWVkc1N1cGVy
QmluZGluZygpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkKICAgICAgICAgICAg
ICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLCBkc3QpOwogCiAgICAgICAg
ICAgICAvLyBUaGlzIGlzIGEgZ2V0L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMgZW50cnkgaW4gdGhl
IG1hcC4KQEAgLTQwMywxMCArNDA0LDE2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRCeXRlY28KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmcoKSkK
KyAgICAgICAgICAgIEFTU0VSVCghcGFpci5zZWNvbmQgfHwgaXNDbGFzc1Byb3BlcnR5ID09IHBh
aXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNz
UHJvcGVydHkgJiYgcGFpci5zZWNvbmQpCiAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmpl
Y3QoZ2VuZXJhdG9yLCBzZWNvbmRSZWcsIGRzdCk7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVnLmdldCgpLCBz
ZXR0ZXJSZWcuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLT5uYW1lKCkp
OworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGRzdCwg
cHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
IGdldHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJv
cGVydHlDb25maWd1cmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZXR0ZXJTZXR0ZXIoZHN0LCAqbm9kZS0+bmFt
ZSgpLCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTQxNiw4ICs0MjMsMTkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjbwogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5
Tm9kZSYgbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7Ci0gICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmco
KSkKKyAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKSB7CiAgICAgICAgIGVtaXRQdXRI
b21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIG5ld09iaik7CisKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyOworICAgICAgICBpZiAobm9kZS5u
YW1lKCkpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0
TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG5vZGUubV9leHByZXNzaW9uKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQ
cm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLAorICAgICAgICAgICAg
dmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0
eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAobm9kZS5uYW1lKCkpIHsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKG5ld09iaiwgKm5vZGUubmFtZSgp
LCB2YWx1ZS5nZXQoKSwgbm9kZS5wdXRUeXBlKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yODcx
LDcgKzI4ODksNiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAg
ICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yOwotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm90b3R5cGU7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgcHJvdG90eXBl
IG5vbi1jb25maWd1cmFibGUgJiBub24td3JpdGFibGUuCiAgICAgaWYgKG1fY29uc3RydWN0b3JF
eHByZXNzaW9uKQpAQCAtMjg4MSw3ICsyODk4LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUpOwogICAgIH0K
IAotICAgIHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSk7CisgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRv
ci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAKICAgICBpZiAoc3Vw
ZXJjbGFzcykgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJlbnQgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC0yOTEwLDYgKzI5MjgsMTMgQEAgUmVnaXN0ZXJJRCog
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChn
ZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3RlciA9IGdlbmVyYXRv
ci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMuY29uc3Ry
dWN0b3IpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KHByb3RvdHlwZS5n
ZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBu
dWxscHRyLCBudWxscHRyLAorICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25m
aWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlv
bik7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5w
cm90b3R5cGUpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVj
dG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CisKICAgICBpZiAobV9zdGF0aWNNZXRo
b2RzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3Rh
dGljTWV0aG9kcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNiArOTEsNyBAQAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCiAgICAgbWFjcm8oY291bnQp
IFwKICAgICBtYWNybyhjb3VudGVycykgXAorICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAg
ICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBt
YWNybyhkaXNwbGF5TmFtZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzIsNiArMzMyLDEwIEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwg
dGgKICAgICAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBv
YmplY3RDb25zdHJ1Y3Rvcik7CisKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0
aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHkoZXhlYywgdGhpcyk7
CisgICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZGVmaW5lUHJvcGVy
dHlGdW5jdGlvbik7CisKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7
CiAgICAgCkBAIC00NTEsNyArNDU1LDkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcgogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25d
ID0gbV9hcHBseUZ1bmN0aW9uLmdldCgpOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6
Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwogICAgIG1fc3BlY2lhbFBv
aW50ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLSAg
ICAKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi5nZXQoKTsKKwogICAgIENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUg
PSBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBt
X2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgY29uc29sZVByb3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9i
amVjdCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwpA
QCAtNzAyLDYgKzcwOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRl
cj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKIApAQCAtMjU3LDggKzI1OCw5IEBAIHBy
b3RlY3RlZDoKICAgICB9OwogICAgIAogICAgIHN0ZDo6YXJyYXk8VHlwZWRBcnJheURhdGEsIE5V
TUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUz4gbV90eXBlZEFycmF5czsKLSAgICAgICAgCi0gICAg
dm9pZCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBw
b2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgorCisgICAgSlNDZWxsKiBtX3NwZWNp
YWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQg
YnkgdGhlIExMSW50IGFuZCBKSVQuCisgICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRzW0xp
bmtUaW1lQ29uc3RhbnRDb3VudF07CiAKICAgICBTdHJpbmcgbV9uYW1lOwogCkBAIC00MDAsNiAr
NDAyLDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0
aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgp
OyB9CisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRl
clNldHRlcihWTSYgdm0pCiAgICAgewpAQCAtNTIzLDExICs1MjYsMTcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKSA9PSBzdHJ1Y3R1cmU7CiAgICAg
fQogCi0gICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIp
CisgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikK
ICAgICB7CiAgICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKICAg
ICAgICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwogICAgIH0KKyAgICBKU0Nl
bGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7CisgICAgICAg
IHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICB9CiAKICAgICBXYXRjaHBv
aW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0KCk7IH0KICAgICBXYXRjaHBvaW50U2V0
KiBoYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludC5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsNiArMTAwLDE0IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFYKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1i
b2xzIiwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAx
KTsKIH0KIAorSlNGdW5jdGlvbiogT2JqZWN0Q29uc3RydWN0b3I6OmFkZERlZmluZVByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMywgdm0ucHJvcGVydHlO
YW1lcy0+ZGVmaW5lUHJvcGVydHkuc3RyaW5nKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5kZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydHlGdW5jdGlvbiwgRG9udEVudW0pOwor
ICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOworfQorCiBib29sIE9iamVjdENvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgb2JqZWN0Q29u
c3RydWN0b3JUYWJsZSwganNDYXN0PE9iamVjdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTgzMDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKKyAgICBKU0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7
CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzAyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA0LTExICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5v
bi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdC4KKworICAgICAgICBBbHNvIGZpeGVkIGEgdGVz
dCB0aGF0IHByZXZpb3VzbHkgcmVsaWVkIG9uICJwcm90b3R5cGUiIHByb3BlcnR5IGJlaW5nIHdy
aXRhYmxlCisgICAgICAgIHNpbmNlIHRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgorCisgICAg
ICAgICoganMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpz
L2NsYXNzLXN5bnRheC1wcm90b3R5cGUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzOiBBZGRlZC4KKwogMjAxNS0wNC0yMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFNWR0ZpdFRv
Vmlld0JveDo6dmlld0JveFRvVmlld1RyYW5zZm9ybSgpIGhhcyB0byBjb3VudCBmb3IgemVybyBw
aHlzaWNhbCB3aWR0aCBhbmQgaGVpZ2h0IGJlZm9yZSBjYWxsaW5nIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW86OmdldENUTSgpCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5k
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4
LWV4dGVuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODMwMjgpCisrKyBMYXlvdXRUZXN0cy9q
cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAgUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0bwogUEFT
UyB4Ll9fcHJvdG9fXyBpcyBGdW5jdGlvbi5wcm90b3R5cGUKIFBBU1MgeCA9IGNsYXNzIGV4dGVu
ZHMgMyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuLgogUEFTUyB4ID0gY2xh
c3MgZXh0ZW5kcyAiYWJjIiB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuLgot
UEFTUyBiYXNlV2l0aEJhZFByb3RvdHlwZSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsg
YmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gMyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUgPSBmdW5jdGlvbiAoKSB7fTsgYmFzZVdpdGhC
YWRQcm90b3R5cGUucHJvdG90eXBlID0gMzsgbmV3IGJhc2VXaXRoQmFkUHJvdG90eXBlIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFBy
b3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4uCiBQQVNTIGJhc2VX
aXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9ICJhYmMiIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVj
dG9yKCkgeyB9IH0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MncyBw
cm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4uCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1z
eW50YXgtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKK1Rlc3RzIGZvciB0aGUgZGVzY3JpcHRvcnMgb2YgdGhl
IHByb3BlcnRpZXMgaW1wbGljaXRseSBkZWZpbmVkIGJ5IEVTNiBjbGFzcyBzeW50YXgKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihB
LCAicHJvdG90eXBlIikud3JpdGFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgdmFyIHgg
PSBBLnByb3RvdHlwZTsgQS5wcm90b3R5cGUgPSAzOyBBLnByb3RvdHlwZSBpcyB4CitQQVNTIGNs
YXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLmVudW1lcmFibGUgaXMgZmFsc2UK
K1BBU1MgY2xhc3MgQSB7fTsgQS5mb28gPSAiZm9vIjsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSku
aW5jbHVkZXMoImZvbyIpIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7fTsgZW51bWVyYXRlZFByb3Bl
cnRpZXMoQSkuaW5jbHVkZXMoInByb3RvdHlwZSIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307
IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBj
bGFzcyBBIHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgInByb3RvdHlwZSIsIHt2YWx1ZTog
ImZvbyJ9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2
YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5Li4KK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28o
KSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS53cml0YWJsZSBpcyB0cnVlCitQQVNTIGNsYXNz
IEEgeyBzdGF0aWMgZm9vKCkge30gfTsgQS5mb28gPSAzOyBBLmZvbyBpcyAzCitQQVNTIGNsYXNz
IEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuZW51bWVyYWJsZSBp
cyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9w
ZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGlj
IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEs
ICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vIGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBz
dGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLndyaXRhYmxlIGlzIHVu
ZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07
IEEuZm9vID0gMzsgQS5mb28gaXMgNQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7
fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNz
IEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1
ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9
OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQ
QVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIp
LmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9
IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZv
byBpcyAiYmFyIgorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3Rv
dHlwZSwgImZvbyIpLndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07
IEEucHJvdG90eXBlLmZvbyA9IDM7IEEucHJvdG90eXBlLmZvbyBpcyAzCitQQVNTIGNsYXNzIEEg
eyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuZW51bWVyYWJsZSBp
cyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMo
QS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZm9v
KCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKSBpcyBm
YWxzZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwg
ImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBP
YmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7
IEEucHJvdG90eXBlLmZvbyBpcyAiYmFyIgorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07
IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS53cml0YWJsZSBpcyB1bmRlZmluZWQKK1BB
U1MgY2xhc3MgQSB7IGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEucHJvdG90eXBlLmZvbyA9
IDM7IEEucHJvdG90eXBlLmZvbyBpcyA1CitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsg
ZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1Mg
Y2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlw
ZSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30g
fTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQor
UEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJm
b28iKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9
KTsgQS5wcm90b3R5cGUuZm9vIGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyB9OyBkZXNjcmlwdG9y
KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS53cml0YWJsZSBpcyB0cnVlCitQQVNTIGNsYXNz
IEEgeyB9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IDM7IEEucHJvdG90eXBlLmNvbnN0cnVj
dG9yIGlzIDMKK1BBU1MgY2xhc3MgQSB7IH07IHggPSB7fTsgQS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9OyAobmV3IEEpIGluc3RhbmNlb2YgQSBpcyB0
cnVlCitQQVNTIGNsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVkZXMoImNvbnN0cnVjdG9yIikgaXMgZmFsc2UKK1BB
U1MgY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiY29u
c3RydWN0b3IiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3Rv
dHlwZSwgImNvbnN0cnVjdG9yIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7
IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwge3Zh
bHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAiYmFyIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4
dGVuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNz
LXN5bnRheC1leHRlbmRzLmpzCShyZXZpc2lvbiAxODMwMjgpCisrKyBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgc2hvdWxkQmUoJ3ggPSBjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdAogc2hv
dWxkQmUoJ3guX19wcm90b19fJywgJ0Z1bmN0aW9uLnByb3RvdHlwZScpOwogc2hvdWxkVGhyb3co
J3ggPSBjbGFzcyBleHRlbmRzIDMgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyB4Ll9fcHJvdG9fXycs
ICciVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0LiInKTsKIHNob3Vs
ZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5kcyAiYWJjIiB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHgu
X19wcm90b19fJywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3Qu
IicpOwotc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlID0gY2xhc3MgeyBjb25z
dHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAzJyk7Citz
aG91bGROb3RUaHJvdygnYmFzZVdpdGhCYWRQcm90b3R5cGUgPSBmdW5jdGlvbiAoKSB7fTsgYmFz
ZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gMzsgbmV3IGJhc2VXaXRoQmFkUHJvdG90eXBl
Jyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhCYWRQcm90b3R5cGUg
eyBjb25zdHJ1Y3RvcigpIHsgfSB9JywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzXCdzIHBy
b3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0LiInKTsKIHNob3VsZE5vdFRocm93KCdiYXNlV2l0aEJh
ZFByb3RvdHlwZS5wcm90b3R5cGUgPSAiYWJjIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBl
eHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfScsICciVHlw
ZUVycm9yOiBUaGUgc3VwZXJjbGFzc1wncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4iJyk7
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlw
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3lu
dGF4LXByb3RvdHlwZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjIgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgdGhlIGRlc2NyaXB0b3JzIG9mIHRoZSBwcm9w
ZXJ0aWVzIGltcGxpY2l0bHkgZGVmaW5lZCBieSBFUzYgY2xhc3Mgc3ludGF4Jyk7CisKK2Z1bmN0
aW9uIGRlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpIHsKKyAgICByZXR1cm4gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cit9CisKK2Z1
bmN0aW9uIGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG9iamVjdCkgeworICAgIHZhciBwcm9wZXJ0aWVz
ID0gW107CisgICAgZm9yICh2YXIgcHJvcGVydHlOYW1lIGluIG9iamVjdCkKKyAgICAgICAgcHJv
cGVydGllcy5wdXNoKHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHByb3BlcnRpZXM7Cit9CisK
K3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLndy
aXRhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7fTsgdmFyIHggPSBBLnByb3RvdHlwZTsgQS5w
cm90b3R5cGUgPSAzOyBBLnByb3RvdHlwZScsICd4Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBB
IHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZVRy
dWUoJ2NsYXNzIEEge307IEEuZm9vID0gImZvbyI7IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmlu
Y2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsgZW51bWVyYXRlZFBy
b3BlcnRpZXMoQSkuaW5jbHVkZXMoInByb3RvdHlwZSIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFz
cyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS5jb25maWd1cmFibGUnKTsKK3Nob3Vs
ZFRocm93KCdjbGFzcyBBIHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgInByb3RvdHlwZSIs
IHt2YWx1ZTogImZvbyJ9KScsICciVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1
ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiInKTsKKworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsg
c3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLndyaXRhYmxlJyk7CitzaG91
bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBBLmZvbyA9IDM7IEEuZm9vJywgJzMn
KTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRv
cihBLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRp
YyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsK
K3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEs
ICJmb28iKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygp
IHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBB
LmZvbycsICciYmFyIicpOworCitzaG91bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkg
e30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikud3JpdGFibGUnLCAndW5kZWZpbmVkJyk7CitzaG91
bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkgeyByZXR1cm4gNTsgfSB9OyBBLmZvbyA9
IDM7IEEuZm9vJywgJzUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZv
bygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFs
c2UoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVz
KEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBn
ZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28i
KScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEsICJmb28iKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3Rh
dGljIGdldCBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1
ZTogImJhciJ9KTsgQS5mb28nLCAnImJhciInKTsKKworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsg
Zm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLndyaXRhYmxlJyk7Citz
aG91bGRCZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IEEucHJvdG90eXBlLmZvbyA9IDM7IEEucHJv
dG90eXBlLmZvbycsICczJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsg
ZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFs
c2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlw
ZSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30g
fTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxk
QmVUcnVlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZv
byIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEu
cHJvdG90eXBlLmZvbycsICciYmFyIicpOworCitzaG91bGRCZSgnY2xhc3MgQSB7IGdldCBmb28o
KSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3JpdGFibGUnLCAndW5kZWZp
bmVkJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEu
cHJvdG90eXBlLmZvbyA9IDM7IEEucHJvdG90eXBlLmZvbycsICc1Jyk7CitzaG91bGRCZUZhbHNl
KCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28i
KS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07
IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIiknKTsKK3No
b3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRp
ZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgZ2V0
IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUn
KTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9v
JywgJyJiYXIiJyk7CisKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5w
cm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLndyaXRhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7
IH07IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gMzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3In
LCAnMycpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgfTsgeCA9IHt9OyBBLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH07IChuZXcgQSkgaW5zdGFuY2Vv
ZiBBJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlw
ZSwgImNvbnN0cnVjdG9yIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7
IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiY29uc3RydWN0
b3IiKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVz
KG5ldyBBKS5pbmNsdWRlcygiY29uc3RydWN0b3IiKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBB
IHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikuY29uZmlndXJhYmxl
Jyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3Rv
dHlwZSwgImNvbnN0cnVjdG9yIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5jb25zdHJ1
Y3RvcicsICciYmFyIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251369</attachid>
            <date>2015-04-22 14:39:46 -0700</date>
            <delta_ts>2015-04-22 21:49:59 -0700</delta_ts>
            <desc>Fixed Windows build</desc>
            <filename>bug-143181-20150422143843.patch</filename>
            <type>text/plain</type>
            <size>36212</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIwICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBQaGFudG9tTmV3T2JqZWN0
IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9i
amVjdCgpKQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAg
ICBpZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rl
ckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRS
ZWdpc3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xv
YmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAg
ICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1
bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTIsNiArMjUyLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKFZNKgogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCiAgICAgLCBtX2ZlYXR1cmVz
KDApCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50
cygpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCiAgICAgLCBtX2FycmF5QWxsb2NhdGlv
blByb2ZpbGVDb3VudCgwKQogICAgICwgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZUNvdW50KDAp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMSw2ICszMzEs
MTkgQEAgcHVibGljOgogICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bi5hcHBlbmQoc291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CisgICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBl
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5z
aXplKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKV0gPSByZXN1bHQ7CisgICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKKyAgICAgICAg
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbjo6T3RoZXIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB1
bnNpZ25lZCByZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
IHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odHlwZSldOworICAgIH0KICAgICB1bnNpZ25lZCBhZGRPckZpbmRDb25z
dGFudChKU1ZhbHVlKTsKICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYg
Y29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAgICAg
Y29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4XTsgfQpAQCAtNTU2LDYgKzU2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtu
b3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKICAgICBWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKKyAgICBzdGQ6OmFy
cmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7
CiAgICAgdHlwZWRlZiBWZWN0b3I8V3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPj4gRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVu
Y3Rpb25FeHByczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTg0LDYgKzk4NCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6YWRkQ29uc3RhCiAgICAgcmV0dXJuICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tp
bmRleF07CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtU
aW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50IHR5cGUpCit7Cisg
ICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsK
KyAgICBpZiAoIW1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XSkgewor
ICAgICAgICBpbnQgaW5kZXggPSBtX25leHRDb25zdGFudE9mZnNldDsKKyAgICAgICAgbV9jb25z
dGFudFBvb2xSZWdpc3RlcnMuYXBwZW5kKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9u
ZXh0Q29uc3RhbnRPZmZzZXQpOworICAgICAgICArK21fbmV4dENvbnN0YW50T2Zmc2V0OworICAg
ICAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQodHlwZSk7CisgICAgICAgIG1fbGlua1RpbWVD
b25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVy
c1tpbmRleF07CisgICAgfQorCisgICAgZW1pdE9wY29kZShvcF9tb3YpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOworCisg
ICAgcmV0dXJuIGRzdDsKK30KKwogdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFJlZ0V4
cChSZWdFeHAqIHIpCiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5hZGRSZWdFeHAocik7CkBA
IC0xOTUzLDYgKzE5NzEsNDEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsVgogICAgIHJldHVybiBkc3Q7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eU5hbWVSZWdpc3RlciwKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9w
dGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3Jhcnko
KSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3
VGVtcG9yYXJ5KCksIHRydWUpOworICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFi
bGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLmNvbmZpZ3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOworICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlXcml0YWJsZSkKKyAg
ICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtu
b3duKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKSB7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsK
KyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9w
ZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6
VW5rbm93bik7CisgICAgfQorICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlFbnVtZXJhYmxlKQor
ICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6
VW5rbm93bik7CisKKyAgICBpZiAodmFsdWVSZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1
dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZh
bHVlUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKGdldHRlclJlZ2lz
dGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS5nZXQsIGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25v
d24pOworICAgIGlmIChzZXR0ZXJSZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQo
ZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0LCBzZXR0ZXJSZWdp
c3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBk
ZWZpbmVQcm9wZXJ0eVJlZ2lzdGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBv
cmFyeSgpLCBMaW5rVGltZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKworICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7CisgICAgZW1p
dExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAg
ZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOworICAg
IGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1l
UmVnaXN0ZXIpOworICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcigy
KSwgZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKworICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFy
eSgpLCBkZWZpbmVQcm9wZXJ0eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIHBvc2l0aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCiB7CiAg
ICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTgz
MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQq
IGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1w
dHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKQEAgLTQ4OSw2ICs0OTAsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsRXZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZh
cmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlz
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVn
aXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29r
UmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKKyAgICAg
ICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0b3JPcHRpb24geworICAgICAgICAgICAgUHJvcGVydHlD
b25maWd1cmFibGUgPSAxLAorICAgICAgICAgICAgUHJvcGVydHlXcml0YWJsZSAgICAgPSAxIDw8
IDEsCisgICAgICAgICAgICBQcm9wZXJ0eUVudW1lcmFibGUgICA9IDEgPDwgMiwKKyAgICAgICAg
fTsKKyAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09i
aiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCisgICAgICAgICAgICBSZWdpc3Rl
cklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
Jik7CisKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxs
QmFjayk7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmV0dXJuKFJlZ2lzdGVy
SUQqIHNyYyk7CkBAIC03MjAsNiArNzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdp
c3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdp
c3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3Rl
cklEKiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbTGlua1RpbWVDb25zdGFudENvdW50XSB7
IG51bGxwdHIgfTsKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1f
Y29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTgzMDUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDggQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdEJ5dGVjbwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWdpc3RlcklE
KiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLT5tX2Fzc2lnbik7Ci0gICAgICAgICAg
ICBpZiAobm9kZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIGJvb2wgaXNDbGFz
c1Byb3BlcnR5ID0gbm9kZS0+bmVlZHNTdXBlckJpbmRpbmcoKTsKKyAgICAgICAgICAgIGlmIChp
c0NsYXNzUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJh
dG9yLCB2YWx1ZSwgZHN0KTsKIAogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGdldC9zZXQgcHJv
cGVydHksIGZpbmQgaXRzIGVudHJ5IGluIHRoZSBtYXAuCkBAIC00MDMsMTAgKzQwNCwxNiBAQCBS
ZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocGFpci5zZWNvbmQgJiYgcGFpci5z
ZWNvbmQtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICBBU1NFUlQoIXBhaXIuc2Vj
b25kIHx8IGlzQ2xhc3NQcm9wZXJ0eSA9PSBwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmco
KSk7CisgICAgICAgICAgICBpZiAoaXNDbGFzc1Byb3BlcnR5ICYmIHBhaXIuc2Vjb25kKQogICAg
ICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgc2Vjb25kUmVnLCBkc3Qp
OwogCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdldHRlclNldHRlcihkc3QsICpub2Rl
LT5uYW1lKCksIGdldHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpKTsKKyAgICAgICAgICAg
IGlmIChpc0NsYXNzUHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCAqbm9kZS0+bmFtZSgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShkc3QsIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5n
ZXQoKSwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlLCBtX3Bvc2l0aW9u
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVnLmdldCgpLCBzZXR0ZXJS
ZWcuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MTYsOCArNDIzLDE5IEBAIFJlZ2lz
dGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY28KIHZvaWQgUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9hc3NpZ24pOwotICAg
IGlmIChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgaWYgKG5vZGUubmVlZHNTdXBlckJp
bmRpbmcoKSkgewogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdl
dCgpLCBuZXdPYmopOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlcjsKKyAgICAgICAgaWYgKG5vZGUubmFtZSgpKQorICAgICAgICAgICAgcHJvcGVydHlO
YW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCAqbm9kZS5uYW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fZXhwcmVzc2lvbik7CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9wZXJ0eU5hbWVS
ZWdpc3Rlci5nZXQoKSwKKyAgICAgICAgICAgIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKG5vZGUubmFtZSgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChuZXdPYmosICpub2RlLm5hbWUoKSwgdmFsdWUuZ2V0KCksIG5vZGUucHV0VHlwZSgp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3MSw3ICsyODg5LDYgQEAgUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb25zdHJ1Y3RvcjsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlOwogCiAgICAg
Ly8gRklYTUU6IE1ha2UgdGhlIHByb3RvdHlwZSBub24tY29uZmlndXJhYmxlICYgbm9uLXdyaXRh
YmxlLgogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikKQEAgLTI4ODEsNyArMjg5OCw4
IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgKICAgICAgICAgICAg
IG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVjdG9y
S2luZDo6QmFzZSwgbV9uYW1lKTsKICAgICB9CiAKLSAgICBwcm90b3R5cGUgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpOworICAgIGNvbnN0IGF1dG8mIHBy
b3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCkpOwogCiAgICAgaWYgKHN1cGVyY2xhc3MpIHsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByb3RvUGFyZW50ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwpAQCAtMjkx
MCw2ICsyOTI4LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgK
ICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBjb25zdHJ1Y3Rvci5nZXQoKSwg
cHJvdG90eXBlLmdldCgpKTsKICAgICB9CiAKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3Ry
dWN0b3JOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yKTsKKyAgICBnZW5lcmF0b3IuZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVy
LmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgQnl0
ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6
OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMucHJvdG90eXBlKTsKKyAgICBnZW5lcmF0b3IuZW1p
dENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lz
dGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRp
b24pOworCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlz
aW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAKICAgICBtYWNybyhjb25z
dHJ1Y3RvcikgXAogICAgIG1hY3JvKGNvdW50KSBcCiAgICAgbWFjcm8oY291bnRlcnMpIFwKKyAg
ICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3JvKGRlc2NyaXB0aW9uKSBcCiAgICAg
bWFjcm8oZGVzY3JpcHRpb25zKSBcCiAgICAgbWFjcm8oZGlzcGxheU5hbWUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxMCBAQCBtXyAjIyBwcm9w
ZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoCiAgICAgCiAgICAgT2JqZWN0Q29uc3RydWN0
b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhp
cywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVj
dENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOworCisgICAgSlNG
dW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbiA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFk
ZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMpOworICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworCiAgICAgSlNDZWxsKiBm
dW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFy
cmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogICAgIApAQCAtNDUxLDcgKzQ1NSw5IEBAIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICBtX3NwZWNpYWxQb2lu
dGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsKICAg
ICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBvYmplY3RD
b25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJheUNvbnN0cnVj
dG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0gICAgCisKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uKV0gPSBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7CisKICAgICBDb25zb2xl
UHJvdG90eXBlKiBjb25zb2xlUHJvdG90eXBlID0gQ29uc29sZVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jb25zb2xlU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgSlNDb25zb2xlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGNvbnNvbGVQcm90b3R5cGUp
KTsKICAgICBKU0NvbnNvbGUqIGNvbnNvbGVPYmplY3QgPSBKU0NvbnNvbGU6OmNyZWF0ZSh2bSwg
bV9jb25zb2xlU3RydWN0dXJlLmdldCgpKTsKQEAgLTcwMiw2ICs3MDgsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9jYWxsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FwcGx5
RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5MSw2ICsxOTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwor
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwog
ICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0
ZXI7CiAKQEAgLTI1Nyw4ICsyNTgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKICAgICAKICAgICBz
dGQ6OmFycmF5PFR5cGVkQXJyYXlEYXRhLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IG1f
dHlwZWRBcnJheXM7Ci0gICAgICAgIAotICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNp
YWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5k
IEpJVC4KKworICAgIEpTQ2VsbCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXpl
XTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgorICAgIEpT
Q2VsbCogbV9saW5rVGltZUNvbnN0YW50c1tMaW5rVGltZUNvbnN0YW50Q291bnRdOwogCiAgICAg
U3RyaW5nIG1fbmFtZTsKIApAQCAtNDAwLDYgKzQwMiw3IEBAIHB1YmxpYzoKICAgICBKU0Z1bmN0
aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQoKTsg
fQogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZ1
bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIGRlZmluZVBy
b3BlcnR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24u
Z2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQoKTsgfQogICAgIEdldHRl
clNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoVk0mIHZtKQogICAgIHsKQEAgLTUy
MywxMSArNTI2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlTdHJ1Y3R1
cmUodHlwZSkgPT0gc3RydWN0dXJlOwogICAgIH0KIAotICAgIHZvaWQqIGFjdHVhbFBvaW50ZXJG
b3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQorICAgIEpTQ2VsbCogYWN0dWFsUG9pbnRlckZv
cihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQocG9pbnRl
ciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7CiAgICAgICAgIHJldHVybiBtX3NwZWNpYWxQb2ludGVy
c1twb2ludGVyXTsKICAgICB9CisgICAgSlNDZWxsKiBqc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5r
VGltZUNvbnN0YW50Q291bnQpOworICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50c1tp
bmRleF07CisgICAgfQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
LmdldCgpOyB9CiAgICAgV2F0Y2hwb2ludFNldCogaGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkg
eyByZXR1cm4gbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQuZ2V0KCk7IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxNCBAQCB2b2lk
IE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWCiAgICAgICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04oImdldE93blByb3BlcnR5U3ltYm9scyIsIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlTeW1ib2xzLCBEb250RW51bSwgMSk7CiB9CiAKK0pTRnVuY3Rpb24qIE9iamVjdENv
bnN0cnVjdG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0Z1
bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygp
LCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVBy
b3BlcnR5RnVuY3Rpb24sIERvbnRFbnVtKTsKKyAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5j
dGlvbjsKK30KKwogYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SlNPYmplY3Q+KGV4ZWMsIG9iamVjdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxPYmplY3RD
b25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlz
aW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCisg
ICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODMwNTMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxNS0wNC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBjbGFzcyBtZXRob2RzIHNob3VsZCBiZSBub24tZW51bWVyYWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3Qu
CisKKyAgICAgICAgQWxzbyBmaXhlZCBhIHRlc3QgdGhhdCBwcmV2aW91c2x5IHJlbGllZCBvbiAi
cHJvdG90eXBlIiBwcm9wZXJ0eSBiZWluZyB3cml0YWJsZQorICAgICAgICBzaW5jZSB0aGlzIGlz
IG5vIGxvbmdlciB0aGUgY2FzZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1leHRlbmRz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5q
czoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qczog
QWRkZWQuCisKIDIwMTUtMDQtMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE3NzQ5NCk6IC13ZWJraXQtbWFzay1pbWFnZTog
d2l0aCBkYXRhIFVSSSBmYWlscyBvbiBub24tbG9jYWwgZmlsZXMKSW5kZXg6IExheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
MzA1MykKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBQQVNTIHggPSBjbGFzcyBleHRlbmRz
IG51bGwgeyBjb25zdHJ1Y3RvCiBQQVNTIHguX19wcm90b19fIGlzIEZ1bmN0aW9uLnByb3RvdHlw
ZQogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3By
b3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFu
IG9iamVjdC4uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzICJhYmMiIHsgY29uc3RydWN0b3IoKSB7
IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xh
c3MgaXMgbm90IGFuIG9iamVjdC4uCi1QQVNTIGJhc2VXaXRoQmFkUHJvdG90eXBlID0gY2xhc3Mg
eyBjb25zdHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAz
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBiYXNlV2l0aEJhZFByb3RvdHlwZSA9IGZ1
bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAzOyBuZXcgYmFz
ZVdpdGhCYWRQcm90b3R5cGUgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHggPSBjbGFz
cyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBpcyBub3Qg
YW4gb2JqZWN0Li4KIFBBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gImFiYyIg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzIGJhc2VXaXRo
QmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0Li4KSW5kZXg6
IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlw
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorVGVzdHMgZm9y
IHRoZSBkZXNjcmlwdG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBsaWNpdGx5IGRlZmluZWQgYnkg
RVM2IGNsYXNzIHN5bnRheAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBj
bGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS53cml0YWJsZSBpcyBmYWxzZQor
UEFTUyBjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9IDM7IEEu
cHJvdG90eXBlIGlzIHgKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBl
IikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyBBLmZvbyA9ICJmb28iOyBl
bnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikgaXMgdHJ1ZQorUEFTUyBjbGFz
cyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygicHJvdG90eXBlIikgaXMg
ZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikuY29uZmln
dXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShB
LCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuLgorUEFT
UyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLndyaXRh
YmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBBLmZvbyA9IDM7
IEEuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9y
KEEsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9v
KCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNl
CitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIiku
Y29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBP
YmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5mb28gaXMg
ImJhciIKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihB
LCAiZm9vIikud3JpdGFibGUgaXMgdW5kZWZpbmVkCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0
IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5mb28gPSAzOyBBLmZvbyBpcyA1CitQQVNTIGNsYXNz
IEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmVudW1lcmFi
bGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZW51bWVy
YXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEg
eyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNs
dWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30g
fTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3Mg
QSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsICJmb28i
LCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vIGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7
fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3JpdGFibGUgaXMgdHJ1ZQorUEFT
UyBjbGFzcyBBIHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUu
Zm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5
cGUsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9
OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVkZXMoImZvbyIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcg
QSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBk
ZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1Mg
Y2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwg
ImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vIGlzICJiYXIiCitQQVNTIGNs
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLndy
aXRhYmxlIGlzIHVuZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHsgcmV0dXJuIDU7
IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vIGlzIDUKK1BBU1MgY2xh
c3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuZW51
bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0
ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1Mg
Y2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5j
bHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVz
Y3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIGNs
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBl
LCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28gaXMgImJhciIKK1BBU1Mg
Y2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLndyaXRh
YmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
MzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgMworUEFTUyBjbGFzcyBBIHsgfTsgeCA9IHt9
OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH07IChu
ZXcgQSkgaW5zdGFuY2VvZiBBIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IGRlc2NyaXB0b3Io
QS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xh
c3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiY29u
c3RydWN0b3IiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRp
ZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEg
eyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5jb25maWd1cmFibGUg
aXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90
eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmNvbnN0cnVj
dG9yIGlzICJiYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMJKHJldmlzaW9uIDE4MzA1
MykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBzaG91bGRCZSgneCA9IGNsYXNzIGV4
dGVuZHMgbnVsbCB7IGNvbnN0CiBzaG91bGRCZSgneC5fX3Byb3RvX18nLCAnRnVuY3Rpb24ucHJv
dG90eXBlJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgMyB7IGNvbnN0cnVjdG9y
KCkgeyB9IH07IHguX19wcm90b19fJywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5v
dCBhbiBvYmplY3QuIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBleHRlbmRzICJhYmMiIHsg
Y29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVy
Y2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7Ci1zaG91bGROb3RUaHJvdygnYmFzZVdpdGhCYWRQ
cm90b3R5cGUgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IGJhc2VXaXRoQmFkUHJvdG90
eXBlLnByb3RvdHlwZSA9IDMnKTsKK3Nob3VsZE5vdFRocm93KCdiYXNlV2l0aEJhZFByb3RvdHlw
ZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAzOyBu
ZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUnKTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5k
cyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0nLCAnIlR5cGVFcnJv
cjogVGhlIHN1cGVyY2xhc3NcJ3MgcHJvdG90eXBlIGlzIG5vdCBhbiBvYmplY3QuIicpOwogc2hv
dWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9ICJhYmMiJyk7CiBz
aG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhCYWRQcm90b3R5cGUgeyBjb25z
dHJ1Y3RvcigpIHsgfSB9JywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzXCdzIHByb3RvdHlw
ZSBpcyBub3QgYW4gb2JqZWN0LiInKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciB0aGUg
ZGVzY3JpcHRvcnMgb2YgdGhlIHByb3BlcnRpZXMgaW1wbGljaXRseSBkZWZpbmVkIGJ5IEVTNiBj
bGFzcyBzeW50YXgnKTsKKworZnVuY3Rpb24gZGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFt
ZSkgeworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
cHJvcGVydHlOYW1lKTsKK30KKworZnVuY3Rpb24gZW51bWVyYXRlZFByb3BlcnRpZXMob2JqZWN0
KSB7CisgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKKyAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUg
aW4gb2JqZWN0KQorICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gcHJvcGVydGllczsKK30KKworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsgZGVzY3Jp
cHRvcihBLCAicHJvdG90eXBlIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHt9OyB2
YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9IDM7IEEucHJvdG90eXBlJywgJ3gnKTsK
K3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLmVu
dW1lcmFibGUnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7fTsgQS5mb28gPSAiZm9vIjsgZW51
bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZUZhbHNlKCdj
bGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygicHJvdG90eXBlIikn
KTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIp
LmNvbmZpZ3VyYWJsZScpOworc2hvdWxkVGhyb3coJ2NsYXNzIEEge307IE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pJywgJyJUeXBlRXJyb3I6IEF0
dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIicpOworCitz
aG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAi
Zm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07
IEEuZm9vID0gMzsgQS5mb28nLCAnMycpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRp
YyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlJyk7CitzaG91bGRC
ZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVz
KEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgc3RhdGljIGZv
bygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUo
J2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsICJm
b28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIiJyk7CisKK3Nob3VsZEJlKCdjbGFz
cyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS53cml0YWJs
ZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7
IHJldHVybiA1OyB9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnNScpOworc2hvdWxkQmVGYWxzZSgn
Y2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuZW51
bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30g
fTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZUZh
bHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGll
cyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0
aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOwor
c2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZvbycsICciYmFyIicpOworCitz
aG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBl
LCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgQS5w
cm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vJywgJzMnKTsKK3Nob3VsZEJlRmFsc2Uo
J2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuZW51
bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGVudW1lcmF0
ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlRmFs
c2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5j
bHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRCZSgnY2xh
c3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgImZv
byIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vJywgJyJiYXIiJyk7CisKK3Nob3Vs
ZEJlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJm
b28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZ2V0IGZv
bygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9v
JywgJzUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3Jp
cHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFsc2UoJ2Ns
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5cGUp
LmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7
fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91
bGRCZVRydWUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlw
ZSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkg
e30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiZm9vIiwge3ZhbHVlOiAi
YmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsKKworc2hvdWxkQmVUcnVlKCdjbGFz
cyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikud3JpdGFibGUn
KTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAzOyBB
LnByb3RvdHlwZS5jb25zdHJ1Y3RvcicsICczJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9
OyB4ID0ge307IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
eDsgfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyB9
OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5lbnVtZXJhYmxlJyk7Citz
aG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5
cGUpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsg
fTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpJyk7
CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29u
c3RydWN0b3IiKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsgT2JqZWN0
LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6ICJiYXIi
fSk7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yJywgJyJiYXIiJyk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251404</attachid>
            <date>2015-04-22 21:50:02 -0700</date>
            <delta_ts>2015-04-23 03:35:58 -0700</delta_ts>
            <desc>Another attempt to fix Windows build</desc>
            <filename>bug-143181-20150422214858.patch</filename>
            <type>text/plain</type>
            <size>36163</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIwICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBQaGFudG9tTmV3T2JqZWN0
IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9i
amVjdCgpKQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAg
ICBpZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rl
ckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRS
ZWdpc3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xv
YmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAg
ICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1
bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjEsNiArMjYxLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKFZNKgogICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQogI2VuZGlmCiB7
CisgICAgbV9saW5rVGltZUNvbnN0YW50cyA9IHsgezB9IH07CiAgICAgQVNTRVJUKG1fY29uc3Ry
dWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgp
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMx
LDYgKzMzMSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uLmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KKyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0
YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVn
aXN0ZXJzLnNpemUoKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXSA9IHJlc3VsdDsKKyAgICAg
ICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwor
ICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKV07CisgICAgfQogICAgIHVuc2lnbmVkIGFkZE9y
RmluZENvbnN0YW50KEpTVmFsdWUpOwogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7
IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CkBAIC01NTYsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJy
aWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNv
bnN0YW50czsKICAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+PiBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I7CiAgICAgRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0
b3IgbV9mdW5jdGlvbkV4cHJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4MzA1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNiArOTg0LDI0IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGEKICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVn
aXN0ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRN
b3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQgdHlw
ZSkKK3sKKyAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHR5cGUpOworICAgIGlmICghbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5k
ZXhdKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zmc2V0OworICAgICAg
ICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZz
ZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh0eXBlKTsKKyAgICAgICAgbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdID0gJm1fY29uc3RhbnRQb29s
UmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisKKyAgICBlbWl0T3Bjb2RlKG9wX21vdik7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgo
KSk7CisKKyAgICByZXR1cm4gZHN0OworfQorCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkUmVnRXhwKFJlZ0V4cCogcikKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZFJlZ0V4
cChyKTsKQEAgLTE5NTMsNiArMTk3MSw0MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGxWCiAgICAgcmV0dXJuIGRzdDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQq
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJl
Z2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5z
aWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9yUmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1Rl
bXBvcmFyeSgpKTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0
TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSkKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVy
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCks
IFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdyaXRh
YmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5v
ZGU6OlVua25vd24pOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpIHsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwg
ZmFsc2UpOworICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJvcGVy
dHlOb2RlOjpVbmtub3duKTsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUVudW1l
cmFibGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVy
dHlOb2RlOjpVbmtub3duKTsKKworICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBlbWl0
RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSwgdmFsdWVSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICBpZiAoZ2V0
dGVyUmVnaXN0ZXIpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwgZ2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9k
ZTo6VW5rbm93bik7CisgICAgaWYgKHNldHRlclJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0
UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNl
dHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworCisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0ZXIgPSBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQo
bmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24p
OworCisgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsK
KyAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09i
aik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9w
ZXJ0eU5hbWVSZWdpc3Rlcik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJl
Z2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZW1pdENhbGwobmV3
VGVtcG9yYXJ5KCksIGRlZmluZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNy
YykKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw2ICs0NTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihS
ZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdF
eHAqKTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVn
aXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIApAQCAtNDg5LDYgKzQ5
MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVy
SUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJz
dEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJv
ZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
IAorICAgICAgICBlbnVtIFByb3BlcnR5RGVzY3JpcHRvck9wdGlvbiB7CisgICAgICAgICAgICBQ
cm9wZXJ0eUNvbmZpZ3VyYWJsZSA9IDEsCisgICAgICAgICAgICBQcm9wZXJ0eVdyaXRhYmxlICAg
ICA9IDEgPDwgMSwKKyAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJsZSAgID0gMSA8PCAyLAor
ICAgICAgICB9OworICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJ
RCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0
UG9zaXRpb24mKTsKKwogICAgICAgICB2b2lkIGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KT4mIGNhbGxCYWNrKTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4o
UmVnaXN0ZXJJRCogc3JjKTsKQEAgLTcyMCw2ICs3MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAg
ICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAg
ICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAg
IFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50
Q291bnRdIHsgbnVsbHB0ciB9OwogCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklE
LCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxS
ZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAx
ODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsOCBAQCBSZWdpc3RlcklEKiBQcm9w
ZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUtPm1fYXNzaWduKTsKLSAg
ICAgICAgICAgIGlmIChub2RlLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAgICAgICAgICAgYm9v
bCBpc0NsYXNzUHJvcGVydHkgPSBub2RlLT5uZWVkc1N1cGVyQmluZGluZygpOworICAgICAgICAg
ICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVj
dChnZW5lcmF0b3IsIHZhbHVlLCBkc3QpOwogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZ2V0
L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMgZW50cnkgaW4gdGhlIG1hcC4KQEAgLTQwMywxMCArNDA0
LDE2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY28KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZCAm
JiBwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIEFTU0VSVCgh
cGFpci5zZWNvbmQgfHwgaXNDbGFzc1Byb3BlcnR5ID09IHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVy
QmluZGluZygpKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzUHJvcGVydHkgJiYgcGFpci5zZWNv
bmQpCiAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBzZWNvbmRS
ZWcsIGRzdCk7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2V0dGVyU2V0dGVyKGRz
dCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVnLmdldCgpLCBzZXR0ZXJSZWcuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGRzdCwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCksCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGdldHRlclJlZy5nZXQoKSwgc2V0
dGVyUmVnLmdldCgpLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUsIG1f
cG9zaXRpb24pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRHZXR0ZXJTZXR0ZXIoZHN0LCAqbm9kZS0+bmFtZSgpLCBnZXR0ZXJSZWcuZ2V0KCks
IHNldHRlclJlZy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQxNiw4ICs0MjMsMTkg
QEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2ln
bik7Ci0gICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICBpZiAobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKSB7CiAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwg
dmFsdWUuZ2V0KCksIG5ld09iaik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3Bl
cnR5TmFtZVJlZ2lzdGVyOworICAgICAgICBpZiAobm9kZS5uYW1lKCkpCisgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9leHByZXNzaW9uKTsK
KworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3Bl
cnR5TmFtZVJlZ2lzdGVyLmdldCgpLAorICAgICAgICAgICAgdmFsdWUuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVj
b2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICBpZiAobm9kZS5uYW1lKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKG5ld09iaiwgKm5vZGUubmFtZSgpLCB2YWx1ZS5nZXQoKSwgbm9kZS5w
dXRUeXBlKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yODcxLDcgKzI4ODksNiBAQCBSZWdpc3Rl
cklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgfQogCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvbnN0cnVjdG9yOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGU7
CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgcHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBu
b24td3JpdGFibGUuCiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKQpAQCAtMjg4MSw3
ICsyODk4LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAg
ICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIDogQ29u
c3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUpOwogICAgIH0KIAotICAgIHByb3RvdHlwZSA9IGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9y
LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CisgICAgY29uc3Qg
YXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSk7CiAKICAgICBpZiAoc3VwZXJjbGFzcykgewogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJlbnQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CkBAIC0yOTEwLDYgKzI5MjgsMTMgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKAogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9y
LmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3IpOworICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1l
UmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAorICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOworICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisKICAgICBpZiAobV9zdGF0aWNNZXRob2RzKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsNyBAQAogICAgIG1h
Y3JvKGNvbnN0cnVjdG9yKSBcCiAgICAgbWFjcm8oY291bnQpIFwKICAgICBtYWNybyhjb3VudGVy
cykgXAorICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24p
IFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDEwIEBAIG1f
ICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGgKICAgICAKICAgICBPYmplY3RD
b25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAg
IG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisK
KyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1
Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHkoZXhlYywgdGhpcyk7CisgICAgbV9kZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisKICAgICBK
U0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpT
Q2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAgICAgCkBAIC00NTEsNyArNDU1
LDkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcgogICAgIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1bmN0aW9uLmdl
dCgpOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9
IG9iamVjdENvbnN0cnVjdG9yOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5
Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLSAgICAKKworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVBy
b3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsKKwogICAg
IENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVBy
b3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3Jl
YXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtNzAyLDYgKzcwOCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYXBwbHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVm
aW5lUHJvcGVydHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTgzMDUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVu
Y3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdl
dHRlclNldHRlcjsKIApAQCAtMjU3LDggKzI1OCw5IEBAIHByb3RlY3RlZDoKICAgICB9OwogICAg
IAogICAgIHN0ZDo6YXJyYXk8VHlwZWRBcnJheURhdGEsIE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9U
WVBFUz4gbV90eXBlZEFycmF5czsKLSAgICAgICAgCi0gICAgdm9pZCogbV9zcGVjaWFsUG9pbnRl
cnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBM
TEludCBhbmQgSklULgorCisgICAgSlNDZWxsKiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpU
YWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQu
CisgICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07
CiAKICAgICBTdHJpbmcgbV9uYW1lOwogCkBAIC00MDAsNiArNDAyLDcgQEAgcHVibGljOgogICAg
IEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9u
LmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiog
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAg
ICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihWTSYgdm0pCiAgICAg
ewpAQCAtNTIzLDExICs1MjYsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwZWRBcnJh
eVN0cnVjdHVyZSh0eXBlKSA9PSBzdHJ1Y3R1cmU7CiAgICAgfQogCi0gICAgdm9pZCogYWN0dWFs
UG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisgICAgSlNDZWxsKiBhY3R1YWxQ
b2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKICAgICB7CiAgICAgICAgIEFTU0VS
VChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKICAgICAgICAgcmV0dXJuIG1fc3BlY2lh
bFBvaW50ZXJzW3BvaW50ZXJdOwogICAgIH0KKyAgICBKU0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7CisgICAgICAgIEFTU0VSVChpbmRl
eCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29u
c3RhbnRzW2luZGV4XTsKKyAgICB9CiAKICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQuZ2V0KCk7IH0KICAgICBXYXRjaHBvaW50U2V0KiBoYXZpbmdBQmFkVGltZVdhdGNo
cG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludC5nZXQoKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE0
IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFYKICAgICAgICAgSlND
X05BVElWRV9GVU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKIH0KIAorSlNGdW5jdGlvbiog
T2JqZWN0Q29uc3RydWN0b3I6OmFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMywgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHku
c3RyaW5nKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eSwg
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbiwgRG9udEVudW0pOworICAgIHJldHVybiBkZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uOworfQorCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgb2JqZWN0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0
PE9iamVjdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKKyAgICBKU0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MzA1MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE1LTA0LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHJlZ3Jlc3Np
b24gdGVzdC4KKworICAgICAgICBBbHNvIGZpeGVkIGEgdGVzdCB0aGF0IHByZXZpb3VzbHkgcmVs
aWVkIG9uICJwcm90b3R5cGUiIHByb3BlcnR5IGJlaW5nIHdyaXRhYmxlCisgICAgICAgIHNpbmNl
IHRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4
LWV4dGVuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1wcm90b3R5
cGUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1l
eHRlbmRzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90
eXBlLmpzOiBBZGRlZC4KKwogMjAxNS0wNC0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3NDk0KTogLXdlYmtpdC1tYXNr
LWltYWdlOiB3aXRoIGRhdGEgVVJJIGZhaWxzIG9uIG5vbi1sb2NhbCBmaWxlcwpJbmRleDogTGF5
b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTgzMDUzKQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgeCA9IGNsYXNz
IGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG8KIFBBU1MgeC5fX3Byb3RvX18gaXMgRnVuY3Rpb24u
cHJvdG90eXBlCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzIDMgeyBjb25zdHJ1Y3RvcigpIHsgfSB9
OyB4Ll9fcHJvdG9fXyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcyBp
cyBub3QgYW4gb2JqZWN0Li4KIFBBU1MgeCA9IGNsYXNzIGV4dGVuZHMgImFiYyIgeyBjb25zdHJ1
Y3RvcigpIHsgfSB9OyB4Ll9fcHJvdG9fXyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUg
c3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0Li4KLVBBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUg
PSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3Rv
dHlwZSA9IDMgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGJhc2VXaXRoQmFkUHJvdG90
eXBlID0gZnVuY3Rpb24gKCkge307IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9IDM7
IG5ldyBiYXNlV2l0aEJhZFByb3RvdHlwZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mg
eCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhCYWRQcm90b3R5cGUgeyBjb25zdHJ1Y3RvcigpIHsg
fSB9IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzJ3MgcHJvdG90eXBl
IGlzIG5vdCBhbiBvYmplY3QuLgogUEFTUyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUg
PSAiYWJjIiBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgeCA9IGNsYXNzIGV4dGVuZHMg
YmFzZVdpdGhCYWRQcm90b3R5cGUgeyBjb25zdHJ1Y3RvcigpIHsgfSB9IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzJ3MgcHJvdG90eXBlIGlzIG5vdCBhbiBvYmplY3Qu
LgpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgt
cHJvdG90eXBlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACitU
ZXN0cyBmb3IgdGhlIGRlc2NyaXB0b3JzIG9mIHRoZSBwcm9wZXJ0aWVzIGltcGxpY2l0bHkgZGVm
aW5lZCBieSBFUzYgY2xhc3Mgc3ludGF4CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGNsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLndyaXRhYmxlIGlz
IGZhbHNlCitQQVNTIGNsYXNzIEEge307IHZhciB4ID0gQS5wcm90b3R5cGU7IEEucHJvdG90eXBl
ID0gMzsgQS5wcm90b3R5cGUgaXMgeAorUEFTUyBjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJw
cm90b3R5cGUiKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IEEuZm9vID0g
ImZvbyI7IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKSBpcyB0cnVlCitQ
QVNTIGNsYXNzIEEge307IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJwcm90b3R5
cGUiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUi
KS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KEEsICJwcm90b3R5cGUiLCB7dmFsdWU6ICJmb28ifSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0
eS4uCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9v
Iikud3JpdGFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IEEu
Zm9vID0gMzsgQS5mb28gaXMgMworUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRl
c2NyaXB0b3IoQSwgImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikg
aXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEs
ICJmb28iKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygp
IHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBB
LmZvbyBpcyAiYmFyIgorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEsICJmb28iKS53cml0YWJsZSBpcyB1bmRlZmluZWQKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBnZXQgZm9vKCkgeyByZXR1cm4gNTsgfSB9OyBBLmZvbyA9IDM7IEEuZm9vIGlzIDUKK1BB
U1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIiku
ZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9
OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1Mg
Y2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3
IEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBm
b28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFT
UyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHko
QSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5mb28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7
IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS53cml0YWJsZSBpcyB0
cnVlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBBLnByb3RvdHlwZS5mb28gPSAzOyBBLnBy
b3RvdHlwZS5mb28gaXMgMworUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihB
LnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGZv
bygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9v
IikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0
aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGZvbygp
IHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJv
dG90eXBlLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28gaXMgImJhciIK
K1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAi
Zm9vIikud3JpdGFibGUgaXMgdW5kZWZpbmVkCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkgeyBy
ZXR1cm4gNTsgfSB9OyBBLnByb3RvdHlwZS5mb28gPSAzOyBBLnByb3RvdHlwZS5mb28gaXMgNQor
UEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJm
b28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsg
ZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxz
ZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5l
dyBBKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7
fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUK
K1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5w
cm90b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmZvbyBpcyAiYmFy
IgorUEFTUyBjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9y
Iikud3JpdGFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgQS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSAzOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAzCitQQVNTIGNsYXNzIEEgeyB9
OyB4ID0ge307IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
eDsgfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgZGVz
Y3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikuZW51bWVyYWJsZSBpcyBmYWxzZQor
UEFTUyBjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1
ZGVzKCJjb25zdHJ1Y3RvciIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyB9OyBlbnVtZXJhdGVk
UHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImNvbnN0cnVjdG9yIikgaXMgZmFsc2UKK1BBU1Mg
Y2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmNvbmZp
Z3VyYWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHko
QS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgaXMgImJhciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90
eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3Rv
dHlwZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXBy
b3RvdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1w
cm90b3R5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwkocmV2aXNp
b24gMTgzMDUzKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1l
eHRlbmRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHNob3VsZEJlKCd4ID0g
Y2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3QKIHNob3VsZEJlKCd4Ll9fcHJvdG9fXycsICdGdW5j
dGlvbi5wcm90b3R5cGUnKTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29u
c3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xh
c3MgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMg
ImFiYyIgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyB4Ll9fcHJvdG9fXycsICciVHlwZUVycm9yOiBU
aGUgc3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0LiInKTsKLXNob3VsZE5vdFRocm93KCdiYXNl
V2l0aEJhZFByb3RvdHlwZSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgYmFzZVdpdGhC
YWRQcm90b3R5cGUucHJvdG90eXBlID0gMycpOworc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFk
UHJvdG90eXBlID0gZnVuY3Rpb24gKCkge307IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlw
ZSA9IDM7IG5ldyBiYXNlV2l0aEJhZFByb3RvdHlwZScpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFz
cyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfScsICci
VHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzc1wncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4i
Jyk7CiBzaG91bGROb3RUaHJvdygnYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0gImFi
YyInKTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlw
ZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3NcJ3Mg
cHJvdG90eXBlIGlzIG5vdCBhbiBvYmplY3QuIicpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACitkZXNjcmlwdGlvbignVGVzdHMg
Zm9yIHRoZSBkZXNjcmlwdG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBsaWNpdGx5IGRlZmluZWQg
YnkgRVM2IGNsYXNzIHN5bnRheCcpOworCitmdW5jdGlvbiBkZXNjcmlwdG9yKG9iamVjdCwgcHJv
cGVydHlOYW1lKSB7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworfQorCitmdW5jdGlvbiBlbnVtZXJhdGVkUHJvcGVydGll
cyhvYmplY3QpIHsKKyAgICB2YXIgcHJvcGVydGllcyA9IFtdOworICAgIGZvciAodmFyIHByb3Bl
cnR5TmFtZSBpbiBvYmplY3QpCisgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBwcm9wZXJ0aWVzOworfQorCitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9
OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS53cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNz
IEEge307IHZhciB4ID0gQS5wcm90b3R5cGU7IEEucHJvdG90eXBlID0gMzsgQS5wcm90b3R5cGUn
LCAneCcpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90
eXBlIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHt9OyBBLmZvbyA9ICJm
b28iOyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJl
RmFsc2UoJ2NsYXNzIEEge307IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJwcm90
b3R5cGUiKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJv
dG90eXBlIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRUaHJvdygnY2xhc3MgQSB7fTsgT2JqZWN0
LmRlZmluZVByb3BlcnR5KEEsICJwcm90b3R5cGUiLCB7dmFsdWU6ICJmb28ifSknLCAnIlR5cGVF
cnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4i
Jyk7CisKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlw
dG9yKEEsICJmb28iKS53cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9v
KCkge30gfTsgQS5mb28gPSAzOyBBLmZvbycsICczJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBB
IHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmVudW1lcmFibGUnKTsK
K3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZW51bWVyYXRlZFBy
b3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBz
dGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlJyk7Citz
aG91bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoQSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5mb28nLCAnImJhciInKTsKKworc2hvdWxk
QmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIp
LndyaXRhYmxlJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0
IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5mb28gPSAzOyBBLmZvbycsICc1Jyk7CitzaG91bGRC
ZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJm
b28iKS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBm
b28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsKK3No
b3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQ
cm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3Mg
QSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJh
YmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0
LmRlZmluZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIi
Jyk7CisKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5w
cm90b3R5cGUsICJmb28iKS53cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBmb28oKSB7
fSB9OyBBLnByb3RvdHlwZS5mb28gPSAzOyBBLnByb3RvdHlwZS5mb28nLCAnMycpOworc2hvdWxk
QmVGYWxzZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJm
b28iKS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsg
ZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKScpOworc2hv
dWxkQmVGYWxzZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5l
dyBBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IGZvbygpIHt9
IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUnKTsKK3Nob3Vs
ZEJlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90
eXBlLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsK
Kworc2hvdWxkQmUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3Rv
dHlwZSwgImZvbyIpLndyaXRhYmxlJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJ2NsYXNzIEEg
eyBnZXQgZm9vKCkgeyByZXR1cm4gNTsgfSB9OyBBLnByb3RvdHlwZS5mb28gPSAzOyBBLnByb3Rv
dHlwZS5mb28nLCAnNScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9
OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVG
YWxzZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnBy
b3RvdHlwZSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZ2V0
IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIikn
KTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEu
cHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGdl
dCBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJmb28iLCB7
dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmZvbycsICciYmFyIicpOworCitzaG91bGRCZVRy
dWUoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS53
cml0YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyB9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IDM7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yJywgJzMnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xh
c3MgQSB7IH07IHggPSB7fTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7
IHJldHVybiB4OyB9OyAobmV3IEEpIGluc3RhbmNlb2YgQScpOworc2hvdWxkQmVGYWxzZSgnY2xh
c3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFi
bGUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhB
LnByb3RvdHlwZSkuaW5jbHVkZXMoImNvbnN0cnVjdG9yIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2Ns
YXNzIEEgeyB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImNvbnN0cnVj
dG9yIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5
cGUsICJjb25zdHJ1Y3RvciIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyB9
OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIsIHt2YWx1
ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3InLCAnImJhciInKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251425</attachid>
            <date>2015-04-23 03:36:03 -0700</date>
            <delta_ts>2015-04-23 12:33:55 -0700</delta_ts>
            <desc>Fixed Windows build for good; fuck off cl.exe</desc>
            <filename>bug-143181-20150423033458.patch</filename>
            <type>text/plain</type>
            <size>36222</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIwICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBQaGFudG9tTmV3T2JqZWN0
IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9i
amVjdCgpKQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAg
ICBpZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rl
ckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRS
ZWdpc3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xv
YmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAg
ICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1
bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjEsNiArMjYxLDggQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKFZNKgogICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQogI2VuZGlmCiB7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsr
KQorICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gMDsKICAgICBBU1NFUlQobV9jb25z
dHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5k
KCkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzEsNiArMzMxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQorICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRS
ZWdpc3RlcnMuc2l6ZSgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSldID0gcmVzdWx0OworICAg
ICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7
CisgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1Rp
bWVDb25zdGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXTsKKyAgICB9CiAgICAgdW5zaWduZWQgYWRk
T3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSk7CiAgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVy
czsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3Rlcihp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KQEAgLTU1Niw2ICs1NjksNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXcml0ZUJh
cnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247Cisg
ICAgc3RkOjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1l
Q29uc3RhbnRzOwogICAgIHR5cGVkZWYgVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZT4+IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvcjsKICAgICBGdW5jdGlvbkV4
cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRXhwcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTgz
MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw2ICs5ODQsMjQgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YQogICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnNbaW5kZXhdOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCB0
eXBlKQoreworICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odHlwZSk7CisgICAgaWYgKCFtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJ
bmRleF0pIHsKKyAgICAgICAgaW50IGluZGV4ID0gbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAg
ICAgIG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzLmFwcGVuZChGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCArIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKKyAgICAgICAgKyttX25leHRDb25zdGFudE9m
ZnNldDsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KHR5cGUpOworICAgICAgICBt
X2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0gPSAmbV9jb25zdGFudFBv
b2xSZWdpc3RlcnNbaW5kZXhdOworICAgIH0KKworICAgIGVtaXRPcGNvZGUob3BfbW92KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdLT5pbmRl
eCgpKTsKKworICAgIHJldHVybiBkc3Q7Cit9CisKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9y
OjphZGRSZWdFeHAoUmVnRXhwKiByKQogewogICAgIHJldHVybiBtX2NvZGVCbG9jay0+YWRkUmVn
RXhwKHIpOwpAQCAtMTk1Myw2ICsxOTcxLDQxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbFYKICAgICByZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJ
RCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCisgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1
bnNpZ25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2NyaXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3
VGVtcG9yYXJ5KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVt
aXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0cnVlKTsKKyAgICBpZiAob3B0aW9ucyAmIFByb3BlcnR5
Q29uZmlndXJhYmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0
ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUsIHRydWVSZWdpc3Rlci5nZXQo
KSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICBpZiAob3B0aW9ucyAmIFByb3BlcnR5V3Jp
dGFibGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5
Tm9kZTo6VW5rbm93bik7CisgICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgeworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgp
LCBmYWxzZSk7CisgICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgpLCBQcm9w
ZXJ0eU5vZGU6OlVua25vd24pOworICAgIH0KKyAgICBpZiAob3B0aW9ucyAmIFByb3BlcnR5RW51
bWVyYWJsZSkKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9w
ZXJ0eU5vZGU6OlVua25vd24pOworCisgICAgaWYgKHZhbHVlUmVnaXN0ZXIpCisgICAgICAgIGVt
aXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LnZhbHVlLCB2YWx1ZVJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGlmIChn
ZXR0ZXJSZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lz
dGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlO
b2RlOjpVbmtub3duKTsKKyAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCisgICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwg
c2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlv
bik7CisKKyAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMp
OworICAgIGVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOworICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3
T2JqKTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHBy
b3BlcnR5TmFtZVJlZ2lzdGVyKTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSk7CisKKyAgICBlbWl0Q2FsbChu
ZXdUZW1wb3JhcnkoKSwgZGVmaW5lUHJvcGVydHlSZWdpc3Rlci5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBwb3NpdGlvbiwgcG9zaXRpb24sIHBvc2l0aW9uKTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCog
c3JjKQogewogICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDU4LDYgKzQ1OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9y
KFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJl
Z0V4cCopOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChS
ZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TW92ZUVtcHR5VmFsdWUoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCkBAIC00ODksNiAr
NDkwLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEV2
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0
ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZp
cnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBw
cm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogCisgICAgICAgIGVudW0gUHJvcGVydHlEZXNjcmlwdG9yT3B0aW9uIHsKKyAgICAgICAgICAg
IFByb3BlcnR5Q29uZmlndXJhYmxlID0gMSwKKyAgICAgICAgICAgIFByb3BlcnR5V3JpdGFibGUg
ICAgID0gMSA8PCAxLAorICAgICAgICAgICAgUHJvcGVydHlFbnVtZXJhYmxlICAgPSAxIDw8IDIs
CisgICAgICAgIH07CisgICAgICAgIHZvaWQgZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3Rl
cklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYpOworCiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9k
ZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopPiYgY2FsbEJhY2spOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJldHVy
bihSZWdpc3RlcklEKiBzcmMpOwpAQCAtNzIwLDYgKzcyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtUaW1lQ29uc3Rh
bnRDb3VudF0geyBudWxscHRyIH07CiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVy
SUQsIDMyPiBtX2NvbnN0YW50UG9vbFJlZ2lzdGVyczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFJlZ2lzdGVySUQsIDMyPiBtX2NhbGxlZVJlZ2lzdGVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDcgKzM2Miw4IEBAIFJlZ2lzdGVySUQqIFBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY28KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
UmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS0+bV9hc3NpZ24pOwot
ICAgICAgICAgICAgaWYgKG5vZGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICBi
b29sIGlzQ2xhc3NQcm9wZXJ0eSA9IG5vZGUtPm5lZWRzU3VwZXJCaW5kaW5nKCk7CisgICAgICAg
ICAgICBpZiAoaXNDbGFzc1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIGVtaXRQdXRIb21lT2Jq
ZWN0KGdlbmVyYXRvciwgdmFsdWUsIGRzdCk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBn
ZXQvc2V0IHByb3BlcnR5LCBmaW5kIGl0cyBlbnRyeSBpbiB0aGUgbWFwLgpAQCAtNDAzLDEwICs0
MDQsMTYgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHBhaXIuc2Vjb25k
ICYmIHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAgICAgICAgICAgQVNTRVJU
KCFwYWlyLnNlY29uZCB8fCBpc0NsYXNzUHJvcGVydHkgPT0gcGFpci5zZWNvbmQtPm5lZWRzU3Vw
ZXJCaW5kaW5nKCkpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSAmJiBwYWlyLnNl
Y29uZCkKICAgICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHNlY29u
ZFJlZywgZHN0KTsKIAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZXR0ZXJTZXR0ZXIo
ZHN0LCAqbm9kZS0+bmFtZSgpLCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5nZXQoKSk7Cisg
ICAgICAgICAgICBpZiAoaXNDbGFzc1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgKm5vZGUtPm5hbWUoKSk7CisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZHN0LCBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgZ2V0dGVyUmVnLmdldCgpLCBz
ZXR0ZXJSZWcuZ2V0KCksIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSwg
bV9wb3NpdGlvbik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEdldHRlclNldHRlcihkc3QsICpub2RlLT5uYW1lKCksIGdldHRlclJlZy5nZXQo
KSwgc2V0dGVyUmVnLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDE2LDggKzQyMywx
OSBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogewogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fYXNz
aWduKTsKLSAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKQorICAgIGlmIChub2RlLm5l
ZWRzU3VwZXJCaW5kaW5nKCkpIHsKICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9y
LCB2YWx1ZS5nZXQoKSwgbmV3T2JqKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlOYW1lUmVnaXN0ZXI7CisgICAgICAgIGlmIChub2RlLm5hbWUoKSkKKyAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJv
cGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2V4cHJlc3Npb24p
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KG5ld09iaiwgcHJv
cGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksCisgICAgICAgICAgICB2YWx1ZS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0
ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGlmIChub2RlLm5hbWUoKSkgewogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERpcmVjdFB1dEJ5SWQobmV3T2JqLCAqbm9kZS5uYW1lKCksIHZhbHVlLmdldCgpLCBub2Rl
LnB1dFR5cGUoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NzEsNyArMjg4OSw2IEBAIFJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgKICAgICB9CiAKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29uc3RydWN0b3I7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlw
ZTsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBwcm90b3R5cGUgbm9uLWNvbmZpZ3VyYWJsZSAm
IG5vbi13cml0YWJsZS4KICAgICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pCkBAIC0yODgx
LDcgKzI4OTgsOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAg
ICAgICAgICAgICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgOiBD
b25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSk7CiAgICAgfQogCi0gICAgcHJvdG90eXBlID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgY29uc3RydWN0
b3IuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKKyAgICBjb25z
dCBhdXRvJiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKIAogICAgIGlmIChzdXBlcmNsYXNzKSB7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b1BhcmVudCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKQEAgLTI5MTAsNiArMjkyOCwxMyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoCiAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3RydWN0
b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgfQogCisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rvcik7CisgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkocHJvdG90eXBlLmdldCgpLCBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3Rlci5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2Rl
R2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlw
ZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAw
LCBtX3Bvc2l0aW9uKTsKKwogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBACiAgICAg
bWFjcm8oY29uc3RydWN0b3IpIFwKICAgICBtYWNybyhjb3VudCkgXAogICAgIG1hY3JvKGNvdW50
ZXJzKSBcCisgICAgbWFjcm8oZGVmaW5lUHJvcGVydHkpIFwKICAgICBtYWNybyhkZXNjcmlwdGlv
bikgXAogICAgIG1hY3JvKGRlc2NyaXB0aW9ucykgXAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsMTAgQEAg
bV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aAogICAgIAogICAgIE9iamVj
dENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAg
ICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsK
KworICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24gPSBtX29iamVjdENvbnN0
cnVjdG9yLT5hZGREZWZpbmVQcm9wZXJ0eShleGVjLCB0aGlzKTsKKyAgICBtX2RlZmluZVByb3Bl
cnR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKwogICAg
IEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAg
SlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKICAgICAKQEAgLTQ1MSw3ICs0
NTUsOSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgbV9z
cGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXBwbHlGdW5jdGlvbl0gPSBtX2FwcGx5RnVuY3Rpb24u
Z2V0KCk7CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3Jd
ID0gb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJy
YXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwotICAgIAorCisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5l
UHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworCiAg
ICAgQ29uc29sZVByb3RvdHlwZSogY29uc29sZVByb3RvdHlwZSA9IENvbnNvbGVQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgQ29uc29sZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY29uc29sZVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQ29uc29sZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBjb25zb2xl
UHJvdG90eXBlKSk7CiAgICAgSlNDb25zb2xlKiBjb25zb2xlT2JqZWN0ID0gSlNDb25zb2xlOjpj
cmVhdGUodm0sIG1fY29uc29sZVN0cnVjdHVyZS5nZXQoKSk7CkBAIC03MDIsNiArNzA4LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hcHBseUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9k
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxODMwNTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlG
dW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyOwogCkBAIC0yNTcsOCArMjU4LDkgQEAgcHJvdGVjdGVkOgogICAgIH07CiAg
ICAgCiAgICAgc3RkOjphcnJheTxUeXBlZEFycmF5RGF0YSwgTlVNQkVSX09GX1RZUEVEX0FSUkFZ
X1RZUEVTPiBtX3R5cGVkQXJyYXlzOwotICAgICAgICAKLSAgICB2b2lkKiBtX3NwZWNpYWxQb2lu
dGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhl
IExMSW50IGFuZCBKSVQuCisKKyAgICBKU0NlbGwqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6
OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJ
VC4KKyAgICBKU0NlbGwqIG1fbGlua1RpbWVDb25zdGFudHNbTGlua1RpbWVDb25zdGFudENvdW50
XTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAKQEAgLTQwMCw2ICs0MDIsNyBAQCBwdWJsaWM6CiAg
ICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9u
KiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKFZNJiB2bSkKICAg
ICB7CkBAIC01MjMsMTEgKzUyNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlZEFy
cmF5U3RydWN0dXJlKHR5cGUpID09IHN0cnVjdHVyZTsKICAgICB9CiAKLSAgICB2b2lkKiBhY3R1
YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKKyAgICBKU0NlbGwqIGFjdHVh
bFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwogICAgICAgICByZXR1cm4gbV9zcGVj
aWFsUG9pbnRlcnNbcG9pbnRlcl07CiAgICAgfQorICAgIEpTQ2VsbCoganNDZWxsRm9yTGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVD
b25zdGFudHNbaW5kZXhdOworICAgIH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludC5nZXQoKTsgfQogICAgIFdhdGNocG9pbnRTZXQqIGhhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludCgpIHsgcmV0dXJuIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAs
MTQgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVgogICAgICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgRG9udEVudW0sIDEpOwogfQogCitKU0Z1bmN0aW9u
KiBPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAzLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0
eS5zdHJpbmcoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5
LCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLCBEb250RW51bSk7CisgICAgcmV0dXJuIGRlZmluZVBy
b3BlcnR5RnVuY3Rpb247Cit9CisKIGJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKICAgICByZXR1cm4gZ2V0U3RhdGlj
RnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBvYmplY3RDb25zdHJ1Y3RvclRhYmxlLCBqc0Nh
c3Q8T2JqZWN0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAorICAgIEpTRnVuY3Rpb24qIGFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0Kik7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBPYmplY3RQcm90b3R5cGUqKTsKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTgzMDUzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTUtMDQtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgY2xhc3MgbWV0aG9kcyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVncmVz
c2lvbiB0ZXN0LgorCisgICAgICAgIEFsc28gZml4ZWQgYSB0ZXN0IHRoYXQgcHJldmlvdXNseSBy
ZWxpZWQgb24gInByb3RvdHlwZSIgcHJvcGVydHkgYmVpbmcgd3JpdGFibGUKKyAgICAgICAgc2lu
Y2UgdGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuCisKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50
YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LXByb3Rv
dHlwZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWV4dGVuZHMuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90
b3R5cGUuanM6IEFkZGVkLgorCiAyMDE1LTA0LTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzc0OTQpOiAtd2Via2l0LW1h
c2staW1hZ2U6IHdpdGggZGF0YSBVUkkgZmFpbHMgb24gbm9uLWxvY2FsIGZpbGVzCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxODMwNTMpCisrKyBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyB4ID0gY2xh
c3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0bwogUEFTUyB4Ll9fcHJvdG9fXyBpcyBGdW5jdGlv
bi5wcm90b3R5cGUKIFBBU1MgeCA9IGNsYXNzIGV4dGVuZHMgMyB7IGNvbnN0cnVjdG9yKCkgeyB9
IH07IHguX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNz
IGlzIG5vdCBhbiBvYmplY3QuLgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAiYWJjIiB7IGNvbnN0
cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRo
ZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuLgotUEFTUyBiYXNlV2l0aEJhZFByb3RvdHlw
ZSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJv
dG90eXBlID0gMyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgYmFzZVdpdGhCYWRQcm90
b3R5cGUgPSBmdW5jdGlvbiAoKSB7fTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0g
MzsgbmV3IGJhc2VXaXRoQmFkUHJvdG90eXBlIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFT
UyB4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkg
eyB9IH0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MncyBwcm90b3R5
cGUgaXMgbm90IGFuIG9iamVjdC4uCiBQQVNTIGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlw
ZSA9ICJhYmMiIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB4ID0gY2xhc3MgZXh0ZW5k
cyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0gdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVj
dC4uCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJvdG90eXBl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRh
eC1wcm90b3R5cGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAK
K1Rlc3RzIGZvciB0aGUgZGVzY3JpcHRvcnMgb2YgdGhlIHByb3BlcnRpZXMgaW1wbGljaXRseSBk
ZWZpbmVkIGJ5IEVTNiBjbGFzcyBzeW50YXgKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikud3JpdGFibGUg
aXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgdmFyIHggPSBBLnByb3RvdHlwZTsgQS5wcm90b3R5
cGUgPSAzOyBBLnByb3RvdHlwZSBpcyB4CitQQVNTIGNsYXNzIEEge307IGRlc2NyaXB0b3IoQSwg
InByb3RvdHlwZSIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgQS5mb28g
PSAiZm9vIjsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIHRydWUK
K1BBU1MgY2xhc3MgQSB7fTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoInByb3Rv
dHlwZSIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlw
ZSIpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyBPYmplY3QuZGVmaW5l
UHJvcGVydHkoQSwgInByb3RvdHlwZSIsIHt2YWx1ZTogImZvbyJ9KSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3Bl
cnR5Li4KK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJm
b28iKS53cml0YWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsg
QS5mb28gPSAzOyBBLmZvbyBpcyAzCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsg
ZGVzY3JpcHRvcihBLCAiZm9vIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsg
c3RhdGljIGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28i
KSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3Io
QSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9v
KCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7
IEEuZm9vIGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRl
c2NyaXB0b3IoQSwgImZvbyIpLndyaXRhYmxlIGlzIHVuZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsg
c3RhdGljIGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEuZm9vID0gMzsgQS5mb28gaXMgNQor
UEFTUyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28i
KS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9
IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFT
UyBjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhu
ZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0
IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZvbyBpcyAiYmFyIgorUEFTUyBjbGFzcyBB
IHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLndyaXRhYmxlIGlz
IHRydWUKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IEEucHJvdG90eXBlLmZvbyA9IDM7IEEu
cHJvdG90eXBlLmZvbyBpcyAzCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9y
KEEucHJvdG90eXBlLCAiZm9vIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsg
Zm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJm
b28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3Bl
cnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZm9v
KCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0
cnVlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5w
cm90b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmZvbyBpcyAiYmFy
IgorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUs
ICJmb28iKS53cml0YWJsZSBpcyB1bmRlZmluZWQKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7
IHJldHVybiA1OyB9IH07IEEucHJvdG90eXBlLmZvbyA9IDM7IEEucHJvdG90eXBlLmZvbyBpcyA1
CitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwg
ImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9
OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVkZXMoImZvbyIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMo
bmV3IEEpLmluY2x1ZGVzKCJmb28iKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygp
IHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShB
LnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vIGlzICJi
YXIiCitQQVNTIGNsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiKS53cml0YWJsZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyB9OyBBLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IDM7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIDMKK1BBU1MgY2xhc3MgQSB7
IH07IHggPSB7fTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVy
biB4OyB9OyAobmV3IEEpIGluc3RhbmNlb2YgQSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyB9OyBk
ZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5lbnVtZXJhYmxlIGlzIGZhbHNl
CitQQVNTIGNsYXNzIEEgeyB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5j
bHVkZXMoImNvbnN0cnVjdG9yIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IH07IGVudW1lcmF0
ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiY29uc3RydWN0b3IiKSBpcyBmYWxzZQorUEFT
UyBjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikuY29u
ZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciBpcyAiYmFyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90
b3R5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtcHJv
dG90eXBlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgt
cHJvdG90eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LXByb3RvdHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCShyZXZp
c2lvbiAxODMwNTMpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWV4dGVuZHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgc2hvdWxkQmUoJ3gg
PSBjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdAogc2hvdWxkQmUoJ3guX19wcm90b19fJywgJ0Z1
bmN0aW9uLnByb3RvdHlwZScpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBleHRlbmRzIDMgeyBj
b25zdHJ1Y3RvcigpIHsgfSB9OyB4Ll9fcHJvdG9fXycsICciVHlwZUVycm9yOiBUaGUgc3VwZXJj
bGFzcyBpcyBub3QgYW4gb2JqZWN0LiInKTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3MgZXh0ZW5k
cyAiYWJjIiB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fJywgJyJUeXBlRXJyb3I6
IFRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuIicpOwotc2hvdWxkTm90VGhyb3coJ2Jh
c2VXaXRoQmFkUHJvdG90eXBlID0gY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0
aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAzJyk7CitzaG91bGROb3RUaHJvdygnYmFzZVdpdGhC
YWRQcm90b3R5cGUgPSBmdW5jdGlvbiAoKSB7fTsgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90
eXBlID0gMzsgbmV3IGJhc2VXaXRoQmFkUHJvdG90eXBlJyk7CiBzaG91bGRUaHJvdygneCA9IGNs
YXNzIGV4dGVuZHMgYmFzZVdpdGhCYWRQcm90b3R5cGUgeyBjb25zdHJ1Y3RvcigpIHsgfSB9Jywg
JyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzXCdzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0
LiInKTsKIHNob3VsZE5vdFRocm93KCdiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAi
YWJjIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90
eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfScsICciVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzc1wn
cyBwcm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4iJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90
eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0
cyBmb3IgdGhlIGRlc2NyaXB0b3JzIG9mIHRoZSBwcm9wZXJ0aWVzIGltcGxpY2l0bHkgZGVmaW5l
ZCBieSBFUzYgY2xhc3Mgc3ludGF4Jyk7CisKK2Z1bmN0aW9uIGRlc2NyaXB0b3Iob2JqZWN0LCBw
cm9wZXJ0eU5hbWUpIHsKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cit9CisKK2Z1bmN0aW9uIGVudW1lcmF0ZWRQcm9wZXJ0
aWVzKG9iamVjdCkgeworICAgIHZhciBwcm9wZXJ0aWVzID0gW107CisgICAgZm9yICh2YXIgcHJv
cGVydHlOYW1lIGluIG9iamVjdCkKKyAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIHByb3BlcnRpZXM7Cit9CisKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEg
e307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlwZSIpLndyaXRhYmxlJyk7CitzaG91bGRCZSgnY2xh
c3MgQSB7fTsgdmFyIHggPSBBLnByb3RvdHlwZTsgQS5wcm90b3R5cGUgPSAzOyBBLnByb3RvdHlw
ZScsICd4Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90
b3R5cGUiKS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEge307IEEuZm9vID0g
ImZvbyI7IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxk
QmVGYWxzZSgnY2xhc3MgQSB7fTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoInBy
b3RvdHlwZSIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJw
cm90b3R5cGUiKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZFRocm93KCdjbGFzcyBBIHt9OyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoQSwgInByb3RvdHlwZSIsIHt2YWx1ZTogImZvbyJ9KScsICciVHlw
ZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5
LiInKTsKKworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2Ny
aXB0b3IoQSwgImZvbyIpLndyaXRhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBm
b28oKSB7fSB9OyBBLmZvbyA9IDM7IEEuZm9vJywgJzMnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNz
IEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuZW51bWVyYWJsZScp
Oworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBlbnVtZXJhdGVk
UHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7
IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5jb25maWd1cmFibGUnKTsK
K3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZvbycsICciYmFyIicpOworCitzaG91
bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9v
Iikud3JpdGFibGUnLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IHN0YXRpYyBn
ZXQgZm9vKCkgeyByZXR1cm4gNTsgfSB9OyBBLmZvbyA9IDM7IEEuZm9vJywgJzUnKTsKK3Nob3Vs
ZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwg
ImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0
IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKScpOwor
c2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRl
ZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdjbGFz
cyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5jb25maWd1
cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5mb28nLCAnImJh
ciInKTsKKworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihB
LnByb3RvdHlwZSwgImZvbyIpLndyaXRhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGZvbygp
IHt9IH07IEEucHJvdG90eXBlLmZvbyA9IDM7IEEucHJvdG90eXBlLmZvbycsICczJyk7CitzaG91
bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwg
ImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9
OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVkZXMoImZvbyIpJyk7Citz
aG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMo
bmV3IEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgZm9vKCkg
e30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hv
dWxkQmUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90
b3R5cGUsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmZvbycsICciYmFyIicp
OworCitzaG91bGRCZSgnY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikud3JpdGFibGUnLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnY2xhc3Mg
QSB7IGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEucHJvdG90eXBlLmZvbyA9IDM7IEEucHJv
dG90eXBlLmZvbycsICc1Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9
IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5lbnVtZXJhYmxlJyk7CitzaG91bGRC
ZUZhbHNlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEu
cHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBn
ZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJmb28i
KScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3Io
QS5wcm90b3R5cGUsICJmb28iKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
Z2V0IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgImZvbyIs
IHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vJywgJyJiYXIiJyk7CisKK3Nob3VsZEJl
VHJ1ZSgnY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIp
LndyaXRhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IH07IEEucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gMzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3InLCAnMycpOworc2hvdWxkQmVUcnVlKCdj
bGFzcyBBIHsgfTsgeCA9IHt9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHg7IH07IChuZXcgQSkgaW5zdGFuY2VvZiBBJyk7CitzaG91bGRCZUZhbHNlKCdj
bGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikuZW51bWVy
YWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVz
KEEucHJvdG90eXBlKS5pbmNsdWRlcygiY29uc3RydWN0b3IiKScpOworc2hvdWxkQmVGYWxzZSgn
Y2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiY29uc3Ry
dWN0b3IiKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3Rv
dHlwZSwgImNvbnN0cnVjdG9yIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRCZSgnY2xhc3MgQSB7
IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwge3Zh
bHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvcicsICciYmFyIicpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251468</attachid>
            <date>2015-04-23 12:33:58 -0700</date>
            <delta_ts>2015-04-23 16:59:50 -0700</delta_ts>
            <desc>Yet another Win build fix; fuck cl.exe</desc>
            <filename>bug-143181-20150423123254.patch</filename>
            <type>text/plain</type>
            <size>36971</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIwICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBQaGFudG9tTmV3T2JqZWN0
IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9i
amVjdCgpKQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAg
ICBpZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rl
ckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRS
ZWdpc3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xv
YmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAg
ICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1
bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjEsNiArMjYxLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKFZNKgogICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQogI2VuZGlmCiB7
CisgICAgbV9saW5rVGltZUNvbnN0YW50cyA9IHsgezB9IH07CiAgICAgQVNTRVJUKG1fY29uc3Ry
dWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgp
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODMwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMx
LDYgKzMzMSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uLmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KKyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0
YW50IHR5cGUpCisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVn
aXN0ZXJzLnNpemUoKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXSA9IHJlc3VsdDsKKyAgICAg
ICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwor
ICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKV07CisgICAgfQogICAgIHVuc2lnbmVkIGFkZE9y
RmluZENvbnN0YW50KEpTVmFsdWUpOwogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7
IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CkBAIC01NTYsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJy
aWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNv
bnN0YW50czsKICAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+PiBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I7CiAgICAgRnVuY3Rpb25FeHBy
ZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0
b3IgbV9mdW5jdGlvbkV4cHJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4MzA1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQog
ICAgICwgbV92bSgmdm0pCiB7CisgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzID0geyB7
bnVsbHB0cn0gfTsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxs
b2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CkBAIC0x
NzksNiArMTgwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgog
ICAgICwgbV92bSgmdm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNC
dWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMgPSB7
IHtudWxscHRyfSB9OwogICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICBtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CiAgICAgCkBAIC00OTQsNiArNDk2LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICwgbV9jb2RlVHlwZShF
dmFsQ29kZSkKICAgICAsIG1fdm0oJnZtKQogeworICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVycyA9IHsge251bGxwdHJ9IH07CiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmlj
dEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIApAQCAtOTg0LDYgKzk4
NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhCiAgICAgcmV0
dXJuICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0
LCBMaW5rVGltZUNvbnN0YW50IHR5cGUpCit7CisgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKKyAgICBpZiAoIW1fbGlua1RpbWVDb25zdGFu
dFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XSkgeworICAgICAgICBpbnQgaW5kZXggPSBtX25leHRD
b25zdGFudE9mZnNldDsKKyAgICAgICAgbV9jb25zdGFudFBvb2xSZWdpc3RlcnMuYXBwZW5kKEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9uZXh0Q29uc3RhbnRPZmZzZXQpOworICAgICAg
ICArK21fbmV4dENvbnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3Rh
bnQodHlwZSk7CisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudElu
ZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CisgICAgfQorCisgICAgZW1p
dE9wY29kZShvcF9tb3YpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNb
Y29uc3RhbnRJbmRleF0tPmluZGV4KCkpOworCisgICAgcmV0dXJuIGRzdDsKK30KKwogdW5zaWdu
ZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFJlZ0V4cChSZWdFeHAqIHIpCiB7CiAgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5hZGRSZWdFeHAocik7CkBAIC0xOTUzLDYgKzE5NzQsNDEgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVgogICAgIHJldHVybiBkc3Q7CiB9CiAK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJ
RCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3RlciwKKyAgICBSZWdpc3Rl
cklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBwb3NpdGlvbikKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVzY3JpcHRvclJlZ2lzdGVy
ID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9yYXJ5KCksIHRydWUpOworICAgIGlm
IChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCisgICAgICAgIGVtaXREaXJlY3RQdXRC
eUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmNvbmZpZ3VyYWJs
ZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGlmIChv
cHRpb25zICYgUHJvcGVydHlXcml0YWJsZSkKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdp
c3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJl
Z2lzdGVyKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1p
dExvYWQobmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQo
ZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNl
UmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgfQorICAgIGlmIChv
cHRpb25zICYgUHJvcGVydHlFbnVtZXJhYmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChk
ZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVl
UmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisKKyAgICBpZiAodmFsdWVS
ZWdpc3RlcikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZhbHVlUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6
VW5rbm93bik7CisgICAgaWYgKGdldHRlclJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0
QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5nZXQsIGdldHRl
clJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGlmIChzZXR0ZXJSZWdpc3Rl
cikKKyAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkuc2V0LCBzZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3du
KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJlZ2lzdGVyID0gZW1p
dE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBMaW5rVGltZUNvbnN0YW50OjpE
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKworICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cygqdGhpcywgbnVsbHB0ciwgMyk7CisgICAgZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOworICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIpOworICAgIGVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwgZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgp
KTsKKworICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0eVJlZ2lzdGVy
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgcG9zaXRpb24pOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJldHVybihSZWdpc3RlcklEKiBzcmMpCiB7CiAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NTgsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhw
KFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1v
dmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYyk7CiAKQEAgLTQ4OSw2ICs0OTAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMs
IENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKKyAgICAgICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0b3JP
cHRpb24geworICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLAorICAgICAgICAg
ICAgUHJvcGVydHlXcml0YWJsZSAgICAgPSAxIDw8IDEsCisgICAgICAgICAgICBQcm9wZXJ0eUVu
dW1lcmFibGUgICA9IDEgPDwgMiwKKyAgICAgICAgfTsKKyAgICAgICAgdm9pZCBlbWl0Q2FsbERl
ZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1l
UmVnaXN0ZXIsCisgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVk
IG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CisKICAgICAgICAgdm9pZCBlbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjayk7CiAgICAgICAgIAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYyk7CkBAIC03MjAsNiArNzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVy
IHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdp
c3RlcnNbTGlua1RpbWVDb25zdGFudENvdW50XTsKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
UmVnaXN0ZXJJRCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50
ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAko
cmV2aXNpb24gMTgzMDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDggQEAgUmVnaXN0
ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLT5tX2Fz
c2lnbik7Ci0gICAgICAgICAgICBpZiAobm9kZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAg
ICAgICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5ID0gbm9kZS0+bmVlZHNTdXBlckJpbmRpbmcoKTsK
KyAgICAgICAgICAgIGlmIChpc0NsYXNzUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgZW1pdFB1
dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZSwgZHN0KTsKIAogICAgICAgICAgICAgLy8gVGhp
cyBpcyBhIGdldC9zZXQgcHJvcGVydHksIGZpbmQgaXRzIGVudHJ5IGluIHRoZSBtYXAuCkBAIC00
MDMsMTAgKzQwNCwxNiBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNv
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocGFp
ci5zZWNvbmQgJiYgcGFpci5zZWNvbmQtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAg
ICBBU1NFUlQoIXBhaXIuc2Vjb25kIHx8IGlzQ2xhc3NQcm9wZXJ0eSA9PSBwYWlyLnNlY29uZC0+
bmVlZHNTdXBlckJpbmRpbmcoKSk7CisgICAgICAgICAgICBpZiAoaXNDbGFzc1Byb3BlcnR5ICYm
IHBhaXIuc2Vjb25kKQogICAgICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRv
ciwgc2Vjb25kUmVnLCBkc3QpOwogCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdldHRl
clNldHRlcihkc3QsICpub2RlLT5uYW1lKCksIGdldHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzUHJvcGVydHkpIHsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAqbm9kZS0+bmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShkc3QsIHByb3BlcnR5TmFt
ZVJlZ2lzdGVyLmdldCgpLAorICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBnZXR0ZXJSZWcu
Z2V0KCksIHNldHRlclJlZy5nZXQoKSwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmln
dXJhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVy
UmVnLmdldCgpLCBzZXR0ZXJSZWcuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MTYs
OCArNDIzLDE5IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY28KIHZv
aWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUp
CiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUubV9hc3NpZ24pOwotICAgIGlmIChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgaWYg
KG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkgewogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChn
ZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBuZXdPYmopOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlcjsKKyAgICAgICAgaWYgKG5vZGUubmFtZSgpKQorICAg
ICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCAqbm9kZS5uYW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fZXhw
cmVzc2lvbik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3
T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwKKyAgICAgICAgICAgIHZhbHVlLmdldCgp
LCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFi
bGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKG5vZGUubmFtZSgpKSB7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChuZXdPYmosICpub2RlLm5hbWUoKSwgdmFsdWUuZ2V0
KCksIG5vZGUucHV0VHlwZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3MSw3ICsyODg5LDYg
QEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIH0KIAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvcjsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvdG90eXBlOwogCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIHByb3RvdHlwZSBub24tY29uZmln
dXJhYmxlICYgbm9uLXdyaXRhYmxlLgogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikK
QEAgLTI4ODEsNyArMjg5OCw4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRl
Y29kZSgKICAgICAgICAgICAgIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RGVy
aXZlZCA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lKTsKICAgICB9CiAKLSAgICBwcm90
b3R5cGUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpOwor
ICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5ld09i
amVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogCiAgICAgaWYgKHN1cGVyY2xhc3MpIHsK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvUGFyZW50ID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwpAQCAtMjkxMCw2ICsyOTI4LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSgKICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKICAgICB9CiAKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUuZ2V0KCksIGNvbnN0
cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0ciwKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworCisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0
TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMucHJvdG90eXBlKTsK
KyAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwg
cHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIsIDAsIG1fcG9zaXRpb24pOworCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcg
QEAKICAgICBtYWNybyhjb25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGNvdW50KSBcCiAgICAgbWFj
cm8oY291bnRlcnMpIFwKKyAgICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3JvKGRl
c2NyaXB0aW9uKSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb25zKSBcCiAgICAgbWFjcm8oZGlzcGxh
eU5hbWUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMz
MiwxMCBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoCiAgICAgCiAg
ICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3Ry
dWN0b3IpOworCisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbiA9IG1fb2Jq
ZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMpOworICAgIG1fZGVm
aW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3BlcnR5RnVuY3Rpb24p
OworCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogICAgIApAQCAt
NDUxLDcgKzQ1NSw5IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIK
ICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlG
dW5jdGlvbi5nZXQoKTsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25z
dHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVj
aWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0gICAgCisKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKV0gPSBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0
KCk7CisKICAgICBDb25zb2xlUHJvdG90eXBlKiBjb25zb2xlUHJvdG90eXBlID0gQ29uc29sZVBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jb25zb2xlU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNDb25zb2xlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IGNvbnNvbGVQcm90b3R5cGUpKTsKICAgICBKU0NvbnNvbGUqIGNvbnNvbGVPYmplY3QgPSBKU0Nv
bnNvbGU6OmNyZWF0ZSh2bSwgbV9jb25zb2xlU3RydWN0dXJlLmdldCgpKTsKQEAgLTcwMiw2ICs3
MDgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RlZmluZVByb3BlcnR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9u
IDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9hcHBseUZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2RlZmluZVBy
b3BlcnR5RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CiAKQEAgLTI1Nyw4ICsyNTgsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgfTsKICAgICAKICAgICBzdGQ6OmFycmF5PFR5cGVkQXJyYXlEYXRhLCBOVU1CRVJfT0ZfVFlQ
RURfQVJSQVlfVFlQRVM+IG1fdHlwZWRBcnJheXM7Ci0gICAgICAgIAotICAgIHZvaWQqIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNl
ZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KKworICAgIEpTQ2VsbCogbV9zcGVjaWFsUG9pbnRlcnNb
U3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTElu
dCBhbmQgSklULgorICAgIEpTQ2VsbCogbV9saW5rVGltZUNvbnN0YW50c1tMaW5rVGltZUNvbnN0
YW50Q291bnRdOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKIApAQCAtNDAwLDYgKzQwMiw3IEBAIHB1
YmxpYzoKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2
YWxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXBwbHlG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpT
RnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RlZmlu
ZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5n
ZXQoKTsgfQogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoVk0m
IHZtKQogICAgIHsKQEAgLTUyMywxMSArNTI2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHR5cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSkgPT0gc3RydWN0dXJlOwogICAgIH0KIAotICAgIHZv
aWQqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQorICAgIEpTQ2Vs
bCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCiAgICAgewogICAg
ICAgICBBU1NFUlQocG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7CiAgICAgICAgIHJldHVy
biBtX3NwZWNpYWxQb2ludGVyc1twb2ludGVyXTsKICAgICB9CisgICAgSlNDZWxsKiBqc0NlbGxG
b3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgICAgICBB
U1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOworICAgICAgICByZXR1cm4gbV9s
aW5rVGltZUNvbnN0YW50c1tpbmRleF07CisgICAgfQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50LmdldCgpOyB9CiAgICAgV2F0Y2hwb2ludFNldCogaGF2aW5nQUJh
ZFRpbWVXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQuZ2V0
KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDYgKzEwMCwxNCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWCiAg
ICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImdldE93blByb3BlcnR5U3ltYm9scyIsIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBEb250RW51bSwgMSk7CiB9CiAKK0pT
RnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMtPmRlZmlu
ZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5l
UHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRFbnVtKTsKKyAgICByZXR1cm4g
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKK30KKwogYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIG9iamVjdENvbnN0cnVjdG9yVGFi
bGUsIGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDE4MzA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCisgICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODMwNTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBjbGFzcyBtZXRob2RzIHNob3VsZCBiZSBub24tZW51bWVyYWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgQWxzbyBmaXhlZCBhIHRlc3QgdGhhdCBwcmV2
aW91c2x5IHJlbGllZCBvbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBiZWluZyB3cml0YWJsZQorICAg
ICAgICBzaW5jZSB0aGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KKworICAgICAgICAqIGpzL2Ns
YXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50
YXgtcHJvdG90eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtZXh0ZW5kcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3lu
dGF4LXByb3RvdHlwZS5qczogQWRkZWQuCisKIDIwMTUtMDQtMjAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE3NzQ5NCk6IC13
ZWJraXQtbWFzay1pbWFnZTogd2l0aCBkYXRhIFVSSSBmYWlscyBvbiBub24tbG9jYWwgZmlsZXMK
SW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4MzA1MykKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1l
eHRlbmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBQQVNT
IHggPSBjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvCiBQQVNTIHguX19wcm90b19fIGlz
IEZ1bmN0aW9uLnByb3RvdHlwZQogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29uc3RydWN0
b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1
cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzICJhYmMi
IHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4uCi1QQVNTIGJhc2VXaXRoQmFk
UHJvdG90eXBlID0gY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0aEJhZFByb3Rv
dHlwZS5wcm90b3R5cGUgPSAzIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBiYXNlV2l0
aEJhZFByb3RvdHlwZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90
b3R5cGUgPSAzOyBuZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3Ry
dWN0b3IoKSB7IH0gfSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydz
IHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0Li4KIFBBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUu
cHJvdG90eXBlID0gImFiYyIgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHggPSBjbGFz
cyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBpcyBub3Qg
YW4gb2JqZWN0Li4KSW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1w
cm90b3R5cGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xh
c3Mtc3ludGF4LXByb3RvdHlwZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MSBAQAorVGVzdHMgZm9yIHRoZSBkZXNjcmlwdG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBs
aWNpdGx5IGRlZmluZWQgYnkgRVM2IGNsYXNzIHN5bnRheAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS53
cml0YWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBB
LnByb3RvdHlwZSA9IDM7IEEucHJvdG90eXBlIGlzIHgKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3Jp
cHRvcihBLCAicHJvdG90eXBlIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9
OyBBLmZvbyA9ICJmb28iOyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikg
aXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRl
cygicHJvdG90eXBlIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAi
cHJvdG90eXBlIikuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9u
bHkgcHJvcGVydHkuLgorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0
b3IoQSwgImZvbyIpLndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28o
KSB7fSB9OyBBLmZvbyA9IDM7IEEuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28o
KSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVk
ZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVz
Y3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1ZTog
ImJhciJ9KTsgQS5mb28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkg
e30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikud3JpdGFibGUgaXMgdW5kZWZpbmVkCitQQVNTIGNs
YXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5mb28gPSAzOyBBLmZv
byBpcyA1CitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3Io
QSwgImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQg
Zm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9w
ZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlz
IHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vIGlzICJiYXIiCitQQVNT
IGNsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3Jp
dGFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9v
ID0gMzsgQS5wcm90b3R5cGUuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IGRl
c2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5j
bHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJh
dGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNz
IEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJh
YmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9v
IGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnBy
b3RvdHlwZSwgImZvbyIpLndyaXRhYmxlIGlzIHVuZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsgZ2V0
IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUu
Zm9vIGlzIDUKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZv
bygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9v
IikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBn
ZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KEEucHJvdG90eXBlLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5m
b28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJj
b25zdHJ1Y3RvciIpLndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IEEucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gMzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgMworUEFTUyBj
bGFzcyBBIHsgfTsgeCA9IHt9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHg7IH07IChuZXcgQSkgaW5zdGFuY2VvZiBBIGlzIHRydWUKK1BBU1MgY2xhc3Mg
QSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFibGUg
aXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90
eXBlKS5pbmNsdWRlcygiY29uc3RydWN0b3IiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgfTsg
ZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEu
cHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICJiYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3lu
dGF4LXByb3RvdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1wcm90b3R5cGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNz
LXN5bnRheC1wcm90b3R5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtcHJvdG90eXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMu
anMJKHJldmlzaW9uIDE4MzA1MykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtZXh0ZW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBzaG91
bGRCZSgneCA9IGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0CiBzaG91bGRCZSgneC5fX3Byb3Rv
X18nLCAnRnVuY3Rpb24ucHJvdG90eXBlJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVu
ZHMgMyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fJywgJyJUeXBlRXJyb3I6IFRo
ZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFz
cyBleHRlbmRzICJhYmMiIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18nLCAnIlR5
cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7Ci1zaG91bGROb3RU
aHJvdygnYmFzZVdpdGhCYWRQcm90b3R5cGUgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07
IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9IDMnKTsKK3Nob3VsZE5vdFRocm93KCdi
YXNlV2l0aEJhZFByb3RvdHlwZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlw
ZS5wcm90b3R5cGUgPSAzOyBuZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUnKTsKIHNob3VsZFRocm93
KCd4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkg
eyB9IH0nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3NcJ3MgcHJvdG90eXBlIGlzIG5vdCBh
biBvYmplY3QuIicpOwogc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlLnByb3Rv
dHlwZSA9ICJhYmMiJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhC
YWRQcm90b3R5cGUgeyBjb25zdHJ1Y3RvcigpIHsgfSB9JywgJyJUeXBlRXJyb3I6IFRoZSBzdXBl
cmNsYXNzXCdzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0LiInKTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRh
eC1wcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciB0aGUgZGVzY3JpcHRvcnMgb2YgdGhlIHByb3BlcnRpZXMgaW1wbGljaXRs
eSBkZWZpbmVkIGJ5IEVTNiBjbGFzcyBzeW50YXgnKTsKKworZnVuY3Rpb24gZGVzY3JpcHRvcihv
YmplY3QsIHByb3BlcnR5TmFtZSkgeworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKK30KKworZnVuY3Rpb24gZW51bWVyYXRl
ZFByb3BlcnRpZXMob2JqZWN0KSB7CisgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKKyAgICBmb3Ig
KHZhciBwcm9wZXJ0eU5hbWUgaW4gb2JqZWN0KQorICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gcHJvcGVydGllczsKK30KKworc2hvdWxkQmVGYWxzZSgn
Y2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikud3JpdGFibGUnKTsKK3Nob3Vs
ZEJlKCdjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9IDM7IEEu
cHJvdG90eXBlJywgJ3gnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3Io
QSwgInByb3RvdHlwZSIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7fTsg
QS5mb28gPSAiZm9vIjsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7
CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNs
dWRlcygicHJvdG90eXBlIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0
b3IoQSwgInByb3RvdHlwZSIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkVGhyb3coJ2NsYXNzIEEg
e307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0p
JywgJyJUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkg
cHJvcGVydHkuIicpOworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30g
fTsgZGVzY3JpcHRvcihBLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
c3RhdGljIGZvbygpIHt9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnMycpOworc2hvdWxkQmVGYWxz
ZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVt
ZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGVu
dW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdj
bGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3Vy
YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIiJyk7
CisKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9y
KEEsICJmb28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
c3RhdGljIGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnNScp
Oworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3Jp
cHRvcihBLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0
YXRpYyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZv
byIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBl
bnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRy
dWUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIp
LmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9
IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZv
bycsICciYmFyIicpOworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBB
IHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vJywgJzMn
KTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGZv
bygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9v
IiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEg
eyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxl
Jyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vJywg
JyJiYXIiJyk7CisKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0
b3IoQS5wcm90b3R5cGUsICJmb28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJl
KCdjbGFzcyBBIHsgZ2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0g
MzsgQS5wcm90b3R5cGUuZm9vJywgJzUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQg
Zm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUnKTsK
K3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3Bl
cnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xh
c3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVk
ZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVz
Y3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2Ns
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBl
LCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsKKwor
c2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0
cnVjdG9yIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsgQS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSAzOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvcicsICczJyk7CitzaG91bGRC
ZVRydWUoJ2NsYXNzIEEgeyB9OyB4ID0ge307IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4geDsgfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEnKTsKK3Nob3VsZEJl
RmFsc2UoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3Ii
KS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFBy
b3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRC
ZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVz
KCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9y
KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdj
bGFzcyBBIHsgfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yJywgJyJiYXIiJyk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251514</attachid>
            <date>2015-04-23 16:59:53 -0700</date>
            <delta_ts>2015-04-23 18:09:49 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-143181-20150423165848.patch</filename>
            <type>text/plain</type>
            <size>37199</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIzICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZ1bmN0aW9uUmFy
ZURhdGEgYWxsb2NhdGlvbiB0aHJlYWQtc2FmZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSog
bwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJl
Z2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgp
KQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxP
YmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0
YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1lQ29uc3Rh
bnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAgICBpZiAo
dW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3RlckluZGV4
Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRSZWdpc3Rl
cnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2Jq
ZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAgICBtX2Z1
bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtl
ZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9
IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50ZXIgcG9p
bnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpU
YWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjEsNiArMjYxLDggQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KFZNKgogICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQogI2VuZGlmCiB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKQorICAg
ICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gMDsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiAr
MzMxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQorICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQg
dHlwZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRSZWdpc3Rl
cnMuc2l6ZSgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSldID0gcmVzdWx0OworICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7CisgICAg
ICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXTsKKyAgICB9CiAgICAgdW5zaWduZWQgYWRkT3JGaW5k
Q29uc3RhbnQoSlNWYWx1ZSk7CiAgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQog
ICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleF07IH0KQEAgLTU1Niw2ICs1NjksNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgc3Rk
OjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3Rh
bnRzOwogICAgIHR5cGVkZWYgVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4+IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvcjsKICAgICBGdW5jdGlvbkV4cHJlc3Np
b25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBt
X2Z1bmN0aW9uRXhwcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTgzMjI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2ICsxNDksOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAg
LCBtX3ZtKCZ2bSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25z
dGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tpXSA9
IG51bGxwdHI7CisKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxs
b2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CkBAIC0x
NzksNiArMTgyLDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgog
ICAgICwgbV92bSgmdm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNC
dWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1Rp
bWVDb25zdGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
c1tpXSA9IG51bGxwdHI7CisKICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAg
bV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwogICAgIApAQCAtNDk0LDYgKzUwMCw5IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAsIG1fY29kZVR5
cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVyc1tpXSA9IG51bGxwdHI7CisKICAgICBtX3N5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOwogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCkBAIC05
ODQsNiArOTkzLDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGEK
ICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3Rl
cklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBjb25zdGFu
dEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgIGlmICghbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdKSB7CisgICAgICAgIGludCBpbmRleCA9
IG1fbmV4dENvbnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5h
cHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7
CisgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRDb25zdGFudCh0eXBlKTsKKyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2Nv
bnN0YW50SW5kZXhdID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisK
KyAgICBlbWl0T3Bjb2RlKG9wX21vdik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gZHN0OworfQor
CiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhwKFJlZ0V4cCogcikKIHsKICAg
ICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZFJlZ0V4cChyKTsKQEAgLTE5NTAsNiArMTk3Nyw0MSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWCiAgICAgcmV0dXJuIGRz
dDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShS
ZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAg
IFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9y
UmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7
CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgZW1pdERp
cmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29u
ZmlndXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Cisg
ICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdyaXRhYmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0
QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwg
dHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGVsc2UgaWYg
KHZhbHVlUmVnaXN0ZXIpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0
ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgZmFsc2UpOworICAgICAgICBlbWl0RGlyZWN0
UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJs
ZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICB9Cisg
ICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUVudW1lcmFibGUpCisgICAgICAgIGVtaXREaXJlY3RQ
dXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFi
bGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKworICAgIGlm
ICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVn
aXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVSZWdpc3RlciwgUHJvcGVy
dHlOb2RlOjpVbmtub3duKTsKKyAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCisgICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdl
dCwgZ2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKHNldHRl
clJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6
OlVua25vd24pOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0
ZXIgPSBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29u
c3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworCisgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKKyAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlcik7CisgICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0
ZXIuZ2V0KCkpOworCisgICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRlZmluZVByb3BlcnR5
UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgcG9zaXRp
b24sIHBvc2l0aW9uLCBwb3NpdGlvbik7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3Rv
cigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1OCw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIAorICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0
YW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQq
IGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKTsKIApAQCAtNDg5LDYgKzQ5MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogZnVuYywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJz
dFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICBlbnVtIFByb3BlcnR5RGVz
Y3JpcHRvck9wdGlvbiB7CisgICAgICAgICAgICBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSA9IDEsCisg
ICAgICAgICAgICBQcm9wZXJ0eVdyaXRhYmxlICAgICA9IDEgPDwgMSwKKyAgICAgICAgICAgIFBy
b3BlcnR5RW51bWVyYWJsZSAgID0gMSA8PCAyLAorICAgICAgICB9OworICAgICAgICB2b2lkIGVt
aXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eU5hbWVSZWdpc3RlciwKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3Rlciwg
dW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKwogICAgICAgICB2b2lk
IGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2Rl
LCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrKTsKICAgICAgICAgCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKTsKQEAgLTcyMCw2
ICs3MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZh
bHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2Jq
ZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0
UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdIHsgbnVsbHB0ciB9OwogCiAgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3Rl
cnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdp
c3RlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
Miw3ICszNjIsOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUtPm1fYXNzaWduKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5uZWVkc1N1
cGVyQmluZGluZygpKQorICAgICAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkgPSBub2RlLT5u
ZWVkc1N1cGVyQmluZGluZygpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkKICAg
ICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLCBkc3QpOwog
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZ2V0L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMgZW50
cnkgaW4gdGhlIG1hcC4KQEAgLTQwMywxMCArNDA0LDE2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRCeXRlY28KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJp
bmRpbmcoKSkKKyAgICAgICAgICAgIEFTU0VSVCghcGFpci5zZWNvbmQgfHwgaXNDbGFzc1Byb3Bl
cnR5ID09IHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAgICAgIGlm
IChpc0NsYXNzUHJvcGVydHkgJiYgcGFpci5zZWNvbmQpCiAgICAgICAgICAgICAgICAgZW1pdFB1
dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBzZWNvbmRSZWcsIGRzdCk7CiAKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVn
LmdldCgpLCBzZXR0ZXJSZWcuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0
eSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdp
c3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2Rl
LT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGRzdCwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsIGdldHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpLCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZXR0ZXJTZXR0ZXIoZHN0LCAq
bm9kZS0+bmFtZSgpLCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5nZXQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTQxNiw4ICs0MjMsMTkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdEJ5dGVjbwogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQ
cm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmos
IFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7Ci0gICAgaWYgKG5vZGUubmVlZHNTdXBl
ckJpbmRpbmcoKSkKKyAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKSB7CiAgICAgICAg
IGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIG5ld09iaik7CisKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyOworICAgICAgICBp
ZiAobm9kZS5uYW1lKCkpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLm5hbWUoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUubV9leHByZXNzaW9uKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLAorICAg
ICAgICAgICAgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRh
YmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAobm9kZS5u
YW1lKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKG5ld09iaiwgKm5v
ZGUubmFtZSgpLCB2YWx1ZS5nZXQoKSwgbm9kZS5wdXRUeXBlKCkpOwogICAgICAgICByZXR1cm47
CkBAIC0yODcxLDcgKzI4ODksNiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yOwotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGU7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUg
cHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBub24td3JpdGFibGUuCiAgICAgaWYgKG1fY29u
c3RydWN0b3JFeHByZXNzaW9uKQpAQCAtMjg4MSw3ICsyODk4LDggQEAgUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUp
OwogICAgIH0KIAotICAgIHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSk7CisgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9
IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAKICAg
ICBpZiAoc3VwZXJjbGFzcykgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJl
bnQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC0yOTEwLDYgKzI5MjgsMTMgQEAgUmVn
aXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAgICBlbWl0UHV0SG9t
ZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwog
ICAgIH0KIAorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3RlciA9
IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFt
ZXMuY29uc3RydWN0b3IpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KHBy
b3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVjdG9y
LmdldCgpLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJv
cGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwg
bV9wb3NpdGlvbik7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVy
dHlOYW1lcy5wcm90b3R5cGUpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5
KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlw
ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CisKICAgICBpZiAobV9z
dGF0aWNNZXRob2RzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0
KCksIG1fc3RhdGljTWV0aG9kcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTgzMjI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsNyBAQAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCiAgICAgbWFj
cm8oY291bnQpIFwKICAgICBtYWNybyhjb3VudGVycykgXAorICAgIG1hY3JvKGRlZmluZVByb3Bl
cnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMp
IFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTgzMjI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzIsNiArMzMyLDEwIEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJl
LnNldCh2bSwgdGgKICAgICAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0
b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHkoZXhl
YywgdGhpcyk7CisgICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZGVm
aW5lUHJvcGVydHlGdW5jdGlvbik7CisKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgCkBAIC00NTgsNyArNDYyLDkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcgogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5
RnVuY3Rpb25dID0gbV9hcHBseUZ1bmN0aW9uLmdldCgpOwogICAgIG1fc3BlY2lhbFBvaW50ZXJz
W1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwogICAgIG1f
c3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1
Y3RvcjsKLSAgICAKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5l
UHJvcGVydHlGdW5jdGlvbi5nZXQoKTsKKwogICAgIENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQ
cm90b3R5cGUgPSBDb25zb2xlUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KTsKICAgICBtX2NvbnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgY29uc29sZVByb3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSog
Y29uc29sZU9iamVjdCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUu
Z2V0KCkpOwpAQCAtNzE3LDYgKzcyMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rp
b24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBA
IHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdl
dHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKIApAQCAtMjU3LDggKzI1
OCw5IEBAIHByb3RlY3RlZDoKICAgICB9OwogICAgIAogICAgIHN0ZDo6YXJyYXk8VHlwZWRBcnJh
eURhdGEsIE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUz4gbV90eXBlZEFycmF5czsKLSAgICAg
ICAgCi0gICAgdm9pZCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8g
U3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgorCisgICAgSlNDZWxs
KiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50
ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCisgICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29u
c3RhbnRzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CiAKICAgICBTdHJpbmcgbV9uYW1lOwogCkBA
IC00MDAsNiArNDAyLDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiog
Y2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0
aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVu
Y3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVF
cnJvckdldHRlclNldHRlcihWTSYgdm0pCiAgICAgewpAQCAtNTIzLDExICs1MjYsMTcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gdHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKSA9PSBzdHJ1Y3R1
cmU7CiAgICAgfQogCi0gICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVy
IHBvaW50ZXIpCisgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIg
cG9pbnRlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVT
aXplKTsKICAgICAgICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwogICAgIH0K
KyAgICBKU0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0
eXBlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odHlwZSk7CisgICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7
CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICB9CiAKICAg
ICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpIHsgcmV0
dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0KCk7IH0KICAgICBXYXRj
aHBvaW50U2V0KiBoYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FC
YWRUaW1lV2F0Y2hwb2ludC5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTgzMjI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCwxNCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWCiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImdldE93blByb3Bl
cnR5U3ltYm9scyIsIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBEb250
RW51bSwgMSk7CiB9CiAKK0pTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRl
ZmluZVByb3BlcnR5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRF
bnVtKTsKKyAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKK30KKwogYm9vbCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQogewogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIG9i
amVjdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCisgICAgSlNGdW5jdGlvbiogYWRkRGVm
aW5lUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKwogcHJvdGVjdGVkOgog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3Rv
dHlwZSopOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODMyMjYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNC0yMyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBjbGFzcyBtZXRob2RzIHNob3Vs
ZCBiZSBub24tZW51bWVyYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgQWxzbyBmaXhl
ZCBhIHRlc3QgdGhhdCBwcmV2aW91c2x5IHJlbGllZCBvbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBi
ZWluZyB3cml0YWJsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4K
KworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qczoKKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvY2xhc3Mtc3ludGF4LXByb3RvdHlwZS5qczogQWRkZWQuCisKIDIwMTUtMDQtMjMg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBjb21w
b3NpdGluZy9zY3JvbGxpbmcvdG91Y2gtc2Nyb2xsLXRvLWNsaXAuaHRtbCBmYWlscyBpbiBXSzEK
SW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4MzIyNikKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1l
eHRlbmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBQQVNT
IHggPSBjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvCiBQQVNTIHguX19wcm90b19fIGlz
IEZ1bmN0aW9uLnByb3RvdHlwZQogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29uc3RydWN0
b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1
cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzICJhYmMi
IHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4uCi1QQVNTIGJhc2VXaXRoQmFk
UHJvdG90eXBlID0gY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0aEJhZFByb3Rv
dHlwZS5wcm90b3R5cGUgPSAzIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBiYXNlV2l0
aEJhZFByb3RvdHlwZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90
b3R5cGUgPSAzOyBuZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3Ry
dWN0b3IoKSB7IH0gfSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydz
IHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0Li4KIFBBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUu
cHJvdG90eXBlID0gImFiYyIgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHggPSBjbGFz
cyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBpcyBub3Qg
YW4gb2JqZWN0Li4KSW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1w
cm90b3R5cGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xh
c3Mtc3ludGF4LXByb3RvdHlwZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MSBAQAorVGVzdHMgZm9yIHRoZSBkZXNjcmlwdG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBs
aWNpdGx5IGRlZmluZWQgYnkgRVM2IGNsYXNzIHN5bnRheAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS53
cml0YWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBB
LnByb3RvdHlwZSA9IDM7IEEucHJvdG90eXBlIGlzIHgKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3Jp
cHRvcihBLCAicHJvdG90eXBlIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9
OyBBLmZvbyA9ICJmb28iOyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikg
aXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRl
cygicHJvdG90eXBlIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAi
cHJvdG90eXBlIikuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9u
bHkgcHJvcGVydHkuLgorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0
b3IoQSwgImZvbyIpLndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28o
KSB7fSB9OyBBLmZvbyA9IDM7IEEuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28o
KSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVk
ZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVz
Y3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBmb28oKSB7fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1ZTog
ImJhciJ9KTsgQS5mb28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkg
e30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikud3JpdGFibGUgaXMgdW5kZWZpbmVkCitQQVNTIGNs
YXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5mb28gPSAzOyBBLmZv
byBpcyA1CitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3Io
QSwgImZvbyIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQg
Zm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9w
ZXJ0aWVzKG5ldyBBKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0
YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlz
IHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vIGlzICJiYXIiCitQQVNT
IGNsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3Jp
dGFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9v
ID0gMzsgQS5wcm90b3R5cGUuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IGRl
c2NyaXB0b3IoQS5wcm90b3R5cGUsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5j
bHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJh
dGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNz
IEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJh
YmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9v
IGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnBy
b3RvdHlwZSwgImZvbyIpLndyaXRhYmxlIGlzIHVuZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsgZ2V0
IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUu
Zm9vIGlzIDUKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZv
bygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9v
IikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBn
ZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KEEucHJvdG90eXBlLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5m
b28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJj
b25zdHJ1Y3RvciIpLndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IEEucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gMzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgMworUEFTUyBj
bGFzcyBBIHsgfTsgeCA9IHt9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHg7IH07IChuZXcgQSkgaW5zdGFuY2VvZiBBIGlzIHRydWUKK1BBU1MgY2xhc3Mg
QSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFibGUg
aXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90
eXBlKS5pbmNsdWRlcygiY29uc3RydWN0b3IiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgfTsg
ZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpIGlzIGZh
bHNlCitQQVNTIGNsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEu
cHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICJiYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3lu
dGF4LXByb3RvdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1wcm90b3R5cGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNz
LXN5bnRheC1wcm90b3R5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtcHJvdG90eXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMu
anMJKHJldmlzaW9uIDE4MzIyNikKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtZXh0ZW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBzaG91
bGRCZSgneCA9IGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0CiBzaG91bGRCZSgneC5fX3Byb3Rv
X18nLCAnRnVuY3Rpb24ucHJvdG90eXBlJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVu
ZHMgMyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fJywgJyJUeXBlRXJyb3I6IFRo
ZSBzdXBlcmNsYXNzIGlzIG5vdCBhbiBvYmplY3QuIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFz
cyBleHRlbmRzICJhYmMiIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18nLCAnIlR5
cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7Ci1zaG91bGROb3RU
aHJvdygnYmFzZVdpdGhCYWRQcm90b3R5cGUgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07
IGJhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9IDMnKTsKK3Nob3VsZE5vdFRocm93KCdi
YXNlV2l0aEJhZFByb3RvdHlwZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlw
ZS5wcm90b3R5cGUgPSAzOyBuZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUnKTsKIHNob3VsZFRocm93
KCd4ID0gY2xhc3MgZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkg
eyB9IH0nLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3NcJ3MgcHJvdG90eXBlIGlzIG5vdCBh
biBvYmplY3QuIicpOwogc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlLnByb3Rv
dHlwZSA9ICJhYmMiJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhC
YWRQcm90b3R5cGUgeyBjb25zdHJ1Y3RvcigpIHsgfSB9JywgJyJUeXBlRXJyb3I6IFRoZSBzdXBl
cmNsYXNzXCdzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0LiInKTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRh
eC1wcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciB0aGUgZGVzY3JpcHRvcnMgb2YgdGhlIHByb3BlcnRpZXMgaW1wbGljaXRs
eSBkZWZpbmVkIGJ5IEVTNiBjbGFzcyBzeW50YXgnKTsKKworZnVuY3Rpb24gZGVzY3JpcHRvcihv
YmplY3QsIHByb3BlcnR5TmFtZSkgeworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKK30KKworZnVuY3Rpb24gZW51bWVyYXRl
ZFByb3BlcnRpZXMob2JqZWN0KSB7CisgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKKyAgICBmb3Ig
KHZhciBwcm9wZXJ0eU5hbWUgaW4gb2JqZWN0KQorICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gcHJvcGVydGllczsKK30KKworc2hvdWxkQmVGYWxzZSgn
Y2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikud3JpdGFibGUnKTsKK3Nob3Vs
ZEJlKCdjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9IDM7IEEu
cHJvdG90eXBlJywgJ3gnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3Io
QSwgInByb3RvdHlwZSIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7fTsg
QS5mb28gPSAiZm9vIjsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7
CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNs
dWRlcygicHJvdG90eXBlIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0
b3IoQSwgInByb3RvdHlwZSIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkVGhyb3coJ2NsYXNzIEEg
e307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0p
JywgJyJUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkg
cHJvcGVydHkuIicpOworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30g
fTsgZGVzY3JpcHRvcihBLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
c3RhdGljIGZvbygpIHt9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnMycpOworc2hvdWxkQmVGYWxz
ZSgnY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVt
ZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGVu
dW1lcmF0ZWRQcm9wZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdj
bGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3Vy
YWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIiJyk7
CisKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9y
KEEsICJmb28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
c3RhdGljIGdldCBmb28oKSB7IHJldHVybiA1OyB9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnNScp
Oworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3Jp
cHRvcihBLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0
YXRpYyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZv
byIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBl
bnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRy
dWUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIp
LmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9
IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZv
bycsICciYmFyIicpOworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBB
IHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vJywgJzMn
KTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGZv
bygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9v
IiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEg
eyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxl
Jyk7CitzaG91bGRCZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShBLnByb3RvdHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vJywg
JyJiYXIiJyk7CisKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0
b3IoQS5wcm90b3R5cGUsICJmb28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJl
KCdjbGFzcyBBIHsgZ2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0g
MzsgQS5wcm90b3R5cGUuZm9vJywgJzUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQg
Zm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUnKTsK
K3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3Bl
cnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xh
c3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVk
ZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVz
Y3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2Ns
YXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBl
LCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsKKwor
c2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0
cnVjdG9yIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsgQS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSAzOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvcicsICczJyk7CitzaG91bGRC
ZVRydWUoJ2NsYXNzIEEgeyB9OyB4ID0ge307IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4geDsgfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEnKTsKK3Nob3VsZEJl
RmFsc2UoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3Ii
KS5lbnVtZXJhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFBy
b3BlcnRpZXMoQS5wcm90b3R5cGUpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRC
ZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVz
KCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9y
KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdj
bGFzcyBBIHsgfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yJywgJyJiYXIiJyk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251521</attachid>
            <date>2015-04-23 18:09:54 -0700</date>
            <delta_ts>2015-04-23 19:17:17 -0700</delta_ts>
            <desc>Another build fix</desc>
            <filename>bug-143181-20150423180849.patch</filename>
            <type>text/plain</type>
            <size>37187</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTA0LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGNsYXNzIG1ldGhvZHMgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSB0byBkZWZpbmUgbWV0aG9kcy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNvbmNlcHQgb2YgbGluayB0aW1lIGNvbnN0YW50cyBhbmQgdXNlcyBpdCB0
byByZXNvbHZlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQorICAgICAgICBpbnNpZGUgQ29kZUJsb2Nr
J3MgY29uc3RydWN0b3Igc2luY2UgYnl0ZWNvZGUgY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IG11bHRp
cGxlIGdsb2JhbCBvYmplY3RzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDog
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVzb2x2ZSBsaW5rIHRpbWUg
Y29uc3RhbnRzIHRoYXQgYXJlIHVzZWQuIElnbm9yZSBvbmVzIHdpdGggcmVnaXN0ZXIKKyAgICAg
ICAgaW5kZXggb2YgemVyby4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOiBB
ZGRlZCBhIG5ldyBlbnVtIGZvciBsaW5rIHRpbWUgY29uc3RhbnRzLiBJdCBjdXJyZW50bHkgY29u
dGFpbnMKKyAgICAgICAgZXhhY3RseSBvbmUgZW50cnkgZm9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eS4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOiBBZGRlZC4gTGlrZSBhZGRDb25zdGFu
dCB0aGF0IHRha2VzIEpTVmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIGNvbnN0YW50IHJl
Z2lzdGVyIGZvciB0aGUgbGluayB0aW1lIGNvbnN0YW50IHdlJ3JlIGFkZGluZy4KKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50
KTogQWRkZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFu
dCk6IEFkZGVkLiBMaWtlIGFkZENvbnN0YW50VmFsdWUsIGFsbG9jYXRlIGEgbmV3CisgICAgICAg
IHJlZ2lzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGxpbmsgdGltZSBjb25zdGFudCBhbmQgbm90aWZ5
IFVubGlua2VkQ29kZUJsb2NrIGFib3V0IGl0LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eSk6IEFkZGVkLiBDcmVhdGUgYSBuZXcgcHJvcGVy
dHkgZGVzY3JpcHRvciBhbmQgY2FsbAorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkgd2l0
aCBpdC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKTogTWFrZSBzdGF0aWMgYW5kIG5vbi1zdGF0aWMgZ2V0
dGVycyBhbmQgc2V0dGVycyBmb3IgY2xhc3NlcworICAgICAgICBub24tZW51bWVyYWJsZSBieSB1
c2luZyBlbWl0Q2FsbERlZmluZVByb3BlcnR5IHRvIGRlZmluZSB0aGVtLgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6IERpdHRvIGZvciBh
IG5vbi1hY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOiBNYWtlIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBub24tZW51bWVyYWJsZSBh
bmQgbWFrZSBwcm90b3R5cGUKKyAgICAgICAgcHJvcGVydHkgb24gdGhlIGNsYXNzIG5vbi13cml0
YWJsZSwgbm9uLWNvbmZpZ3VyYWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIGJ5IHVzaW5nIGRlZmlu
ZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOiBTZXQgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG1fZGVmaW5lUHJvcGVydHlG
dW5jdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogQWRkZWQgYSB2YXJp
YW50IHRoYXQgdGFrZXMgTGlua1RpbWVDb25zdGFudC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBMaWtlIGFjdHVhbFBvaW50ZXJGb3Is
IHRha2VzIExpbmtUaW1lQ29uc3RhbnQgYW5kCisgICAgICAgIHJldHVybnMgYSBKU0NlbGw7IGUu
Zy4gT2JqZWN0LmRlZmluZVByb3BlcnR5LgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJv
cGVydHkpOiBBZGRlZC4gUmV0dXJucyBPYmplY3QuZGVmaW5lUHJvcGVydHkuCisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorCiAyMDE1LTA0LTIzICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZ1bmN0aW9uUmFy
ZURhdGEgYWxsb2NhdGlvbiB0aHJlYWQtc2FmZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzYxLDYgKzE3NjEsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSog
bwogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJl
Z2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgp
KQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxP
YmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0
YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7CisgICAgICAgIExpbmtUaW1lQ29uc3Rh
bnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOworICAgICAgICBpZiAo
dW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3RlckluZGV4
Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKKyAgICAgICAgICAgIG1fY29uc3RhbnRSZWdpc3Rl
cnNbcmVnaXN0ZXJJbmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2Jq
ZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKKyAgICB9CisKICAgICBtX2Z1
bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtl
ZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSwxMSBAQCBlbnVtIFBvaW50ZXIgewogfTsKIH0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKIAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKKyAgICBEZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uLAorfTsKK2NvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9
IDE7CisKIGlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50ZXIgcG9p
bnRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpU
YWJsZVNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjEsNiArMjYxLDggQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KFZNKgogICAgICwgbV9ieXRlY29kZUNvbW1lbnRJdGVyYXRvcigwKQogI2VuZGlmCiB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKQorICAg
ICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gMDsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiAr
MzMxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQorICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQg
dHlwZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRSZWdpc3Rl
cnMuc2l6ZSgpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSldID0gcmVzdWx0OworICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7CisgICAg
ICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudCB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpXTsKKyAgICB9CiAgICAgdW5zaWduZWQgYWRkT3JGaW5k
Q29uc3RhbnQoSlNWYWx1ZSk7CiAgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQog
ICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleF07IH0KQEAgLTU1Niw2ICs1NjksNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgc3Rk
OjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3Rh
bnRzOwogICAgIHR5cGVkZWYgVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4+IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvcjsKICAgICBGdW5jdGlvbkV4cHJlc3Np
b25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBt
X2Z1bmN0aW9uRXhwcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTgzMjI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2ICsxNDksOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAg
LCBtX3ZtKCZ2bSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25z
dGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tpXSA9
IG51bGxwdHI7CisKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxs
b2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CkBAIC0x
NzksNiArMTgyLDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgog
ICAgICwgbV92bSgmdm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNC
dWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1Rp
bWVDb25zdGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
c1tpXSA9IG51bGxwdHI7CisKICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAg
bV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwogICAgIApAQCAtNDk0LDYgKzUwMCw5IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAsIG1fY29kZVR5
cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBpKyspCisgICAgICAgIG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVyc1tpXSA9IG51bGxwdHI7CisKICAgICBtX3N5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOwogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCkBAIC05
ODQsNiArOTkzLDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGEK
ICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3Rl
cklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBjb25zdGFu
dEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOworICAgIGlmICghbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdKSB7CisgICAgICAgIGludCBpbmRleCA9
IG1fbmV4dENvbnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5h
cHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7
CisgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRDb25zdGFudCh0eXBlKTsKKyAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2Nv
bnN0YW50SW5kZXhdID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICB9CisK
KyAgICBlbWl0T3Bjb2RlKG9wX21vdik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gZHN0OworfQor
CiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhwKFJlZ0V4cCogcikKIHsKICAg
ICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZFJlZ0V4cChyKTsKQEAgLTE5NTAsNiArMTk3Nyw0MSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWCiAgICAgcmV0dXJuIGRz
dDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShS
ZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZVJlZ2lzdGVyLAorICAg
IFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9y
UmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7
CisgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgZW1pdERp
cmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29u
ZmlndXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Cisg
ICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdyaXRhYmxlKQorICAgICAgICBlbWl0RGlyZWN0UHV0
QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwg
dHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgIGVsc2UgaWYg
KHZhbHVlUmVnaXN0ZXIpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0
ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgZmFsc2UpOworICAgICAgICBlbWl0RGlyZWN0
UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJs
ZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICB9Cisg
ICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUVudW1lcmFibGUpCisgICAgICAgIGVtaXREaXJlY3RQ
dXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFi
bGUsIHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKworICAgIGlm
ICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVn
aXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVSZWdpc3RlciwgUHJvcGVy
dHlOb2RlOjpVbmtub3duKTsKKyAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCisgICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdl
dCwgZ2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgaWYgKHNldHRl
clJlZ2lzdGVyKQorICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6
OlVua25vd24pOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0
ZXIgPSBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29u
c3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworCisgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKKyAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBlbWl0TW92ZShjYWxsQXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7CisgICAgZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlcik7CisgICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0
ZXIuZ2V0KCkpOworCisgICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRlZmluZVByb3BlcnR5
UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgcG9zaXRp
b24sIHBvc2l0aW9uLCBwb3NpdGlvbik7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3Rv
cigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1OCw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIAorICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0
YW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQq
IGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKTsKIApAQCAtNDg5LDYgKzQ5MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogZnVuYywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJz
dFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICBlbnVtIFByb3BlcnR5RGVz
Y3JpcHRvck9wdGlvbiB7CisgICAgICAgICAgICBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSA9IDEsCisg
ICAgICAgICAgICBQcm9wZXJ0eVdyaXRhYmxlICAgICA9IDEgPDwgMSwKKyAgICAgICAgICAgIFBy
b3BlcnR5RW51bWVyYWJsZSAgID0gMSA8PCAyLAorICAgICAgICB9OworICAgICAgICB2b2lkIGVt
aXRDYWxsRGVmaW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eU5hbWVSZWdpc3RlciwKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3Rlciwg
dW5zaWduZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKwogICAgICAgICB2b2lk
IGVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2Rl
LCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrKTsKICAgICAgICAgCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKTsKQEAgLTcyMCw2
ICs3MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZh
bHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2Jq
ZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0
UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOwogCiAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCShyZXZpc2lvbiAxODMyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsOCBA
QCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUtPm1fYXNzaWduKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5uZWVkc1N1cGVyQmluZGluZygp
KQorICAgICAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkgPSBub2RlLT5uZWVkc1N1cGVyQmlu
ZGluZygpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkKICAgICAgICAgICAgICAg
ICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLCBkc3QpOwogCiAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgZ2V0L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMgZW50cnkgaW4gdGhlIG1h
cC4KQEAgLTQwMywxMCArNDA0LDE2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRCeXRlY28KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAg
ICAgICAgICAgIEFTU0VSVCghcGFpci5zZWNvbmQgfHwgaXNDbGFzc1Byb3BlcnR5ID09IHBhaXIu
c2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzUHJv
cGVydHkgJiYgcGFpci5zZWNvbmQpCiAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3Qo
Z2VuZXJhdG9yLCBzZWNvbmRSZWcsIGRzdCk7CiAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0R2V0dGVyU2V0dGVyKGRzdCwgKm5vZGUtPm5hbWUoKSwgZ2V0dGVyUmVnLmdldCgpLCBzZXR0
ZXJSZWcuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eSkgeworICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLT5uYW1lKCkpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGRzdCwgcHJv
cGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGdl
dHRlclJlZy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlDb25maWd1cmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZXR0ZXJTZXR0ZXIoZHN0LCAqbm9kZS0+bmFtZSgp
LCBnZXR0ZXJSZWcuZ2V0KCksIHNldHRlclJlZy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTQxNiw4ICs0MjMsMTkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5
dGVjbwogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9k
ZSYgbm9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobm9kZS5tX2Fzc2lnbik7Ci0gICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkK
KyAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKSB7CiAgICAgICAgIGVtaXRQdXRIb21l
T2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIG5ld09iaik7CisKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyOworICAgICAgICBpZiAobm9kZS5uYW1l
KCkpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9h
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUubV9leHByZXNzaW9uKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9w
ZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLAorICAgICAgICAgICAgdmFs
dWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAobm9kZS5uYW1lKCkpIHsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKG5ld09iaiwgKm5vZGUubmFtZSgpLCB2
YWx1ZS5nZXQoKSwgbm9kZS5wdXRUeXBlKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yODcxLDcg
KzI4ODksNiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAg
fQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yOwotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm90b3R5cGU7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgcHJvdG90eXBlIG5v
bi1jb25maWd1cmFibGUgJiBub24td3JpdGFibGUuCiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHBy
ZXNzaW9uKQpAQCAtMjg4MSw3ICsyODk4LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKAogICAgICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUpOwogICAgIH0KIAot
ICAgIHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSk7CisgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5l
bWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAKICAgICBpZiAoc3VwZXJj
bGFzcykgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG9QYXJlbnQgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC0yOTEwLDYgKzI5MjgsMTMgQEAgUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5l
cmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAorICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMuY29uc3RydWN0
b3IpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KHByb3RvdHlwZS5nZXQo
KSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLAorICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1
cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7
CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90
b3R5cGUpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9y
LmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CisKICAgICBpZiAobV9zdGF0aWNNZXRob2Rz
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGlj
TWV0aG9kcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NiArOTEsNyBAQAogICAgIG1hY3JvKGNvbnN0cnVjdG9yKSBcCiAgICAgbWFjcm8oY291bnQpIFwK
ICAgICBtYWNybyhjb3VudGVycykgXAorICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAg
bWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNy
byhkaXNwbGF5TmFtZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzIsNiArMzMyLDEwIEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGgK
ICAgICAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmpl
Y3RDb25zdHJ1Y3Rvcik7CisKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9u
ID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHkoZXhlYywgdGhpcyk7Cisg
ICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZGVmaW5lUHJvcGVydHlG
dW5jdGlvbik7CisKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAg
ICAgCkBAIC00NTgsNyArNDYyLDkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcgogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0g
bV9hcHBseUZ1bmN0aW9uLmdldCgpOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9i
amVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwogICAgIG1fc3BlY2lhbFBvaW50
ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLSAgICAK
KworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVydHlGdW5j
dGlvbi5nZXQoKTsKKwogICAgIENvbnNvbGVQcm90b3R5cGUqIGNvbnNvbGVQcm90b3R5cGUgPSBD
b25zb2xlUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIENvbnNvbGVQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Nv
bnNvbGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NvbnNvbGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgY29uc29sZVByb3RvdHlwZSkpOwogICAgIEpTQ29uc29sZSogY29uc29sZU9iamVj
dCA9IEpTQ29uc29sZTo6Y3JlYXRlKHZtLCBtX2NvbnNvbGVTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAt
NzE3LDYgKzcyMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMTgzMjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHByb3RlY3RlZDoK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9h
cnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4g
bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKIApAQCAtMjU3LDggKzI1OCw5IEBAIHByb3Rl
Y3RlZDoKICAgICB9OwogICAgIAogICAgIHN0ZDo6YXJyYXk8VHlwZWRBcnJheURhdGEsIE5VTUJF
Ul9PRl9UWVBFRF9BUlJBWV9UWVBFUz4gbV90eXBlZEFycmF5czsKLSAgICAgICAgCi0gICAgdm9p
ZCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2lu
dGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgorCisgICAgSlNDZWxsKiBtX3NwZWNpYWxQ
b2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkg
dGhlIExMSW50IGFuZCBKSVQuCisgICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRzW0xpbmtU
aW1lQ29uc3RhbnRDb3VudF07CiAKICAgICBTdHJpbmcgbV9uYW1lOwogCkBAIC00MDAsNiArNDAy
LDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9u
KiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9
CisgICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1
bmN0aW9uLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlcihWTSYgdm0pCiAgICAgewpAQCAtNTIzLDExICs1MjYsMTcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKSA9PSBzdHJ1Y3R1cmU7CiAgICAgfQog
Ci0gICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisg
ICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKICAg
ICB7CiAgICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwogICAgIH0KKyAgICBKU0NlbGwq
IGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Cisg
ICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7CisgICAgICAgIHJl
dHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICB9CiAKICAgICBXYXRjaHBvaW50
U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0KCk7IH0KICAgICBXYXRjaHBvaW50U2V0KiBo
YXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludC5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTgzMjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OCw2ICs5OCwxNCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWCiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImdldE93blByb3BlcnR5U3ltYm9scyIs
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBEb250RW51bSwgMSk7CiB9
CiAKK0pTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMt
PmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRFbnVtKTsKKyAgICBy
ZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKK30KKwogYm9vbCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewogICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIG9iamVjdENvbnN0cnVj
dG9yVGFibGUsIGpzQ2FzdDxPYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE4MzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYg
KzU0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgfQogCisgICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODMyMjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNC0yMyAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBjbGFzcyBtZXRob2RzIHNob3VsZCBiZSBub24tZW51
bWVyYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgQWxzbyBmaXhlZCBhIHRlc3QgdGhh
dCBwcmV2aW91c2x5IHJlbGllZCBvbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBiZWluZyB3cml0YWJs
ZQorICAgICAgICBzaW5jZSB0aGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KKworICAgICAgICAq
IGpzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9jbGFz
cy1zeW50YXgtcHJvdG90eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvY2xh
c3Mtc3ludGF4LXByb3RvdHlwZS5qczogQWRkZWQuCisKIDIwMTUtMDQtMjMgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBjb21wb3NpdGluZy9zY3Jv
bGxpbmcvdG91Y2gtc2Nyb2xsLXRvLWNsaXAuaHRtbCBmYWlscyBpbiBXSzEKSW5kZXg6IExheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4MzIyNikKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBQQVNTIHggPSBjbGFzcyBl
eHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvCiBQQVNTIHguX19wcm90b19fIGlzIEZ1bmN0aW9uLnBy
b3RvdHlwZQogUEFTUyB4ID0gY2xhc3MgZXh0ZW5kcyAzIHsgY29uc3RydWN0b3IoKSB7IH0gfTsg
eC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMg
bm90IGFuIG9iamVjdC4uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzICJhYmMiIHsgY29uc3RydWN0
b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIHN1
cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4uCi1QQVNTIGJhc2VXaXRoQmFkUHJvdG90eXBlID0g
Y2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgfSB9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5
cGUgPSAzIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBiYXNlV2l0aEJhZFByb3RvdHlw
ZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUgPSAzOyBu
ZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHgg
PSBjbGFzcyBleHRlbmRzIGJhc2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0g
fSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBp
cyBub3QgYW4gb2JqZWN0Li4KIFBBU1MgYmFzZVdpdGhCYWRQcm90b3R5cGUucHJvdG90eXBlID0g
ImFiYyIgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHggPSBjbGFzcyBleHRlbmRzIGJh
c2VXaXRoQmFkUHJvdG90eXBlIHsgY29uc3RydWN0b3IoKSB7IH0gfSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0Li4K
SW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXBy
b3RvdHlwZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorVGVz
dHMgZm9yIHRoZSBkZXNjcmlwdG9ycyBvZiB0aGUgcHJvcGVydGllcyBpbXBsaWNpdGx5IGRlZmlu
ZWQgYnkgRVM2IGNsYXNzIHN5bnRheAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBjbGFzcyBBIHt9OyBkZXNjcmlwdG9yKEEsICJwcm90b3R5cGUiKS53cml0YWJsZSBpcyBm
YWxzZQorUEFTUyBjbGFzcyBBIHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9
IDM7IEEucHJvdG90eXBlIGlzIHgKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJv
dG90eXBlIikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHt9OyBBLmZvbyA9ICJm
b28iOyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygiZm9vIikgaXMgdHJ1ZQorUEFT
UyBjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygicHJvdG90eXBl
IikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7fTsgZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIiku
Y29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEge307IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHku
LgorUEFTUyBjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIp
LndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBBLmZv
byA9IDM7IEEuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNj
cmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0
aWMgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlz
IGZhbHNlCitQQVNTIGNsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAi
Zm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBmb28oKSB7
fSB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5m
b28gaXMgImJhciIKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3Jp
cHRvcihBLCAiZm9vIikud3JpdGFibGUgaXMgdW5kZWZpbmVkCitQQVNTIGNsYXNzIEEgeyBzdGF0
aWMgZ2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5mb28gPSAzOyBBLmZvbyBpcyA1CitQQVNT
IGNsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmVu
dW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsg
ZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKG5ldyBB
KS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UKK1BBU1MgY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9v
KCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1Mg
Y2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEs
ICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vIGlzICJiYXIiCitQQVNTIGNsYXNzIEEgeyBm
b28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikud3JpdGFibGUgaXMgdHJ1
ZQorUEFTUyBjbGFzcyBBIHsgZm9vKCkge30gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90
b3R5cGUuZm9vIGlzIDMKK1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5w
cm90b3R5cGUsICJmb28iKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28o
KSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBLnByb3RvdHlwZSkuaW5jbHVkZXMoImZvbyIp
IGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGll
cyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBmb28oKSB7
fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlIGlzIHRydWUK
K1BBU1MgY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3Rv
dHlwZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vIGlzICJiYXIiCitQ
QVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZv
byIpLndyaXRhYmxlIGlzIHVuZGVmaW5lZAorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHsgcmV0
dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vIGlzIDUKK1BB
U1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9v
IikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGVu
dW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIikgaXMgZmFsc2UK
K1BBU1MgY2xhc3MgQSB7IGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcg
QSkuaW5jbHVkZXMoImZvbyIpIGlzIGZhbHNlCitQQVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30g
fTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIGNsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJv
dG90eXBlLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28gaXMgImJhciIK
K1BBU1MgY2xhc3MgQSB7IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIp
LndyaXRhYmxlIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IEEucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gMzsgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgMworUEFTUyBjbGFzcyBBIHsgfTsg
eCA9IHt9OyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7
IH07IChuZXcgQSkgaW5zdGFuY2VvZiBBIGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IH07IGRlc2Ny
aXB0b3IoQS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BB
U1MgY2xhc3MgQSB7IH07IGVudW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRl
cygiY29uc3RydWN0b3IiKSBpcyBmYWxzZQorUEFTUyBjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFBy
b3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpIGlzIGZhbHNlCitQQVNTIGNs
YXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5jb25maWd1
cmFibGUgaXMgdHJ1ZQorUEFTUyBjbGFzcyBBIHsgfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEu
cHJvdG90eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6ICJiYXIifSk7IEEucHJvdG90eXBlLmNv
bnN0cnVjdG9yIGlzICJiYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXByb3RvdHlw
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90b3R5
cGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1wcm90
b3R5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJv
dG90eXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMJKHJldmlzaW9u
IDE4MzIyNikKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0
ZW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBzaG91bGRCZSgneCA9IGNs
YXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0CiBzaG91bGRCZSgneC5fX3Byb3RvX18nLCAnRnVuY3Rp
b24ucHJvdG90eXBlJyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgMyB7IGNvbnN0
cnVjdG9yKCkgeyB9IH07IHguX19wcm90b19fJywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNz
IGlzIG5vdCBhbiBvYmplY3QuIicpOwogc2hvdWxkVGhyb3coJ3ggPSBjbGFzcyBleHRlbmRzICJh
YmMiIHsgY29uc3RydWN0b3IoKSB7IH0gfTsgeC5fX3Byb3RvX18nLCAnIlR5cGVFcnJvcjogVGhl
IHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7Ci1zaG91bGROb3RUaHJvdygnYmFzZVdp
dGhCYWRQcm90b3R5cGUgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyB9IH07IGJhc2VXaXRoQmFk
UHJvdG90eXBlLnByb3RvdHlwZSA9IDMnKTsKK3Nob3VsZE5vdFRocm93KCdiYXNlV2l0aEJhZFBy
b3RvdHlwZSA9IGZ1bmN0aW9uICgpIHt9OyBiYXNlV2l0aEJhZFByb3RvdHlwZS5wcm90b3R5cGUg
PSAzOyBuZXcgYmFzZVdpdGhCYWRQcm90b3R5cGUnKTsKIHNob3VsZFRocm93KCd4ID0gY2xhc3Mg
ZXh0ZW5kcyBiYXNlV2l0aEJhZFByb3RvdHlwZSB7IGNvbnN0cnVjdG9yKCkgeyB9IH0nLCAnIlR5
cGVFcnJvcjogVGhlIHN1cGVyY2xhc3NcJ3MgcHJvdG90eXBlIGlzIG5vdCBhbiBvYmplY3QuIicp
Owogc2hvdWxkTm90VGhyb3coJ2Jhc2VXaXRoQmFkUHJvdG90eXBlLnByb3RvdHlwZSA9ICJhYmMi
Jyk7CiBzaG91bGRUaHJvdygneCA9IGNsYXNzIGV4dGVuZHMgYmFzZVdpdGhCYWRQcm90b3R5cGUg
eyBjb25zdHJ1Y3RvcigpIHsgfSB9JywgJyJUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzXCdzIHBy
b3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0LiInKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtcHJvdG90eXBlLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1wcm90b3R5cGUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZv
ciB0aGUgZGVzY3JpcHRvcnMgb2YgdGhlIHByb3BlcnRpZXMgaW1wbGljaXRseSBkZWZpbmVkIGJ5
IEVTNiBjbGFzcyBzeW50YXgnKTsKKworZnVuY3Rpb24gZGVzY3JpcHRvcihvYmplY3QsIHByb3Bl
cnR5TmFtZSkgeworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgcHJvcGVydHlOYW1lKTsKK30KKworZnVuY3Rpb24gZW51bWVyYXRlZFByb3BlcnRpZXMo
b2JqZWN0KSB7CisgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKKyAgICBmb3IgKHZhciBwcm9wZXJ0
eU5hbWUgaW4gb2JqZWN0KQorICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gcHJvcGVydGllczsKK30KKworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7fTsg
ZGVzY3JpcHRvcihBLCAicHJvdG90eXBlIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBB
IHt9OyB2YXIgeCA9IEEucHJvdG90eXBlOyBBLnByb3RvdHlwZSA9IDM7IEEucHJvdG90eXBlJywg
J3gnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3RvdHlw
ZSIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlVHJ1ZSgnY2xhc3MgQSB7fTsgQS5mb28gPSAiZm9v
IjsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZUZh
bHNlKCdjbGFzcyBBIHt9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhBKS5pbmNsdWRlcygicHJvdG90
eXBlIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEge307IGRlc2NyaXB0b3IoQSwgInByb3Rv
dHlwZSIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkVGhyb3coJ2NsYXNzIEEge307IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShBLCAicHJvdG90eXBlIiwge3ZhbHVlOiAiZm9vIn0pJywgJyJUeXBlRXJy
b3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIicp
OworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgZGVzY3JpcHRv
cihBLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygp
IHt9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnMycpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7
IHN0YXRpYyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS5lbnVtZXJhYmxlJyk7Citz
aG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGZvbygpIHt9IH07IGVudW1lcmF0ZWRQcm9w
ZXJ0aWVzKEEpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsgc3Rh
dGljIGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hv
dWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEEsICJmb28iLCB7dmFsdWU6ICJiYXIifSk7IEEuZm9vJywgJyJiYXIiJyk7CisKK3Nob3VsZEJl
KCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEsICJmb28iKS53
cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBm
b28oKSB7IHJldHVybiA1OyB9IH07IEEuZm9vID0gMzsgQS5mb28nLCAnNScpOworc2hvdWxkQmVG
YWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLCAiZm9v
IikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IHN0YXRpYyBnZXQgZm9v
KCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91
bGRCZUZhbHNlKCdjbGFzcyBBIHsgc3RhdGljIGdldCBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJv
cGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEg
eyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQSwgImZvbyIpLmNvbmZpZ3VyYWJs
ZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBzdGF0aWMgZ2V0IGZvbygpIHt9IH07IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShBLCAiZm9vIiwge3ZhbHVlOiAiYmFyIn0pOyBBLmZvbycsICciYmFyIicp
OworCitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJv
dG90eXBlLCAiZm9vIikud3JpdGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgZm9vKCkge30g
fTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5cGUuZm9vJywgJzMnKTsKK3Nob3VsZEJl
RmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9v
IikuZW51bWVyYWJsZScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IGVu
dW1lcmF0ZWRQcm9wZXJ0aWVzKEEucHJvdG90eXBlKS5pbmNsdWRlcygiZm9vIiknKTsKK3Nob3Vs
ZEJlRmFsc2UoJ2NsYXNzIEEgeyBmb28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcg
QSkuaW5jbHVkZXMoImZvbyIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBmb28oKSB7fSB9
OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiZm9vIikuY29uZmlndXJhYmxlJyk7CitzaG91bGRC
ZSgnY2xhc3MgQSB7IGZvbygpIHt9IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlw
ZSwgImZvbyIsIHt2YWx1ZTogImJhciJ9KTsgQS5wcm90b3R5cGUuZm9vJywgJyJiYXIiJyk7CisK
K3Nob3VsZEJlKCdjbGFzcyBBIHsgZ2V0IGZvbygpIHt9IH07IGRlc2NyaXB0b3IoQS5wcm90b3R5
cGUsICJmb28iKS53cml0YWJsZScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsg
Z2V0IGZvbygpIHsgcmV0dXJuIDU7IH0gfTsgQS5wcm90b3R5cGUuZm9vID0gMzsgQS5wcm90b3R5
cGUuZm9vJywgJzUnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsg
ZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImZvbyIpLmVudW1lcmFibGUnKTsKK3Nob3VsZEJlRmFs
c2UoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5wcm90
b3R5cGUpLmluY2x1ZGVzKCJmb28iKScpOworc2hvdWxkQmVGYWxzZSgnY2xhc3MgQSB7IGdldCBm
b28oKSB7fSB9OyBlbnVtZXJhdGVkUHJvcGVydGllcyhuZXcgQSkuaW5jbHVkZXMoImZvbyIpJyk7
CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyBnZXQgZm9vKCkge30gfTsgZGVzY3JpcHRvcihBLnBy
b3RvdHlwZSwgImZvbyIpLmNvbmZpZ3VyYWJsZScpOworc2hvdWxkQmUoJ2NsYXNzIEEgeyBnZXQg
Zm9vKCkge30gfTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiZm9vIiwge3Zh
bHVlOiAiYmFyIn0pOyBBLnByb3RvdHlwZS5mb28nLCAnImJhciInKTsKKworc2hvdWxkQmVUcnVl
KCdjbGFzcyBBIHsgfTsgZGVzY3JpcHRvcihBLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIikud3Jp
dGFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsgQS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSAzOyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvcicsICczJyk7CitzaG91bGRCZVRydWUoJ2NsYXNz
IEEgeyB9OyB4ID0ge307IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4geDsgfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEnKTsKK3Nob3VsZEJlRmFsc2UoJ2NsYXNz
IEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKS5lbnVtZXJhYmxl
Jyk7CitzaG91bGRCZUZhbHNlKCdjbGFzcyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMoQS5w
cm90b3R5cGUpLmluY2x1ZGVzKCJjb25zdHJ1Y3RvciIpJyk7CitzaG91bGRCZUZhbHNlKCdjbGFz
cyBBIHsgfTsgZW51bWVyYXRlZFByb3BlcnRpZXMobmV3IEEpLmluY2x1ZGVzKCJjb25zdHJ1Y3Rv
ciIpJyk7CitzaG91bGRCZVRydWUoJ2NsYXNzIEEgeyB9OyBkZXNjcmlwdG9yKEEucHJvdG90eXBl
LCAiY29uc3RydWN0b3IiKS5jb25maWd1cmFibGUnKTsKK3Nob3VsZEJlKCdjbGFzcyBBIHsgfTsg
T2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAiY29uc3RydWN0b3IiLCB7dmFsdWU6
ICJiYXIifSk7IEEucHJvdG90eXBlLmNvbnN0cnVjdG9yJywgJyJiYXIiJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="276306"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>