<?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>184023</bug_id>
          
          <creation_ts>2018-03-26 14:20:47 -0700</creation_ts>
          <short_desc>Emit fjcvtzs on ARM64E on Darwin</short_desc>
          <delta_ts>2018-10-17 12:20:24 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185055</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409411</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 14:20:47 -0700</bug_when>
    <thetext>ARMv8.3-a adds a new instruction &quot;jscvt&quot;, which can be used for converting double to int32_t in JS semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409423</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 14:56:18 -0700</bug_when>
    <thetext>In Linux, we can use hwcap to detect this feature. https://github.com/torvalds/linux/blob/3b3b681097fae73b7f5dcdd42db6cfdf32943d4c/Documentation/arm64/elf_hwcaps.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409426</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-26 15:18:24 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #1)
&gt; In Linux, we can use hwcap to detect this feature.
&gt; https://github.com/torvalds/linux/blob/
&gt; 3b3b681097fae73b7f5dcdd42db6cfdf32943d4c/Documentation/arm64/elf_hwcaps.txt

This is necessary since ARM64 feature registers are only available in privileged mode. To detect features, some kernel support is necessary. In Linux, we can use auxiliary vector provided by the kernel&apos;s ELF loader. This includes hwcaps, which tells us whether the CPU features are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409427</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-26 15:21:38 -0700</bug_when>
    <thetext>Asking the kernel is best.

If you can&apos;t you can also sigsetjmp, try the instruction, and then siglongjmp. It&apos;ll sigill if not supported. Caveat is that the kernel may decide to emulate instead of sigill, and then it&apos;ll be super slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467004</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-08 00:33:50 -0700</bug_when>
    <thetext>Ima try to get to this this week</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468925</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-13 16:33:10 -0700</bug_when>
    <thetext>BTW, Linux MacroAssemblerARM64 already has &quot;s_jscvtCheckState&quot; state (runtime detection flag of jscvt availability).
If we emit jscvt based on this condition, we can support jscvt opcode on wider platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469042</commentid>
    <comment_count>6</comment_count>
      <attachid>352269</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 00:19:10 -0700</bug_when>
    <thetext>Created attachment 352269
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469043</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-14 00:21:40 -0700</bug_when>
    <thetext>Attachment 352269 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/MathCommon.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469060</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 11:37:56 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; BTW, Linux MacroAssemblerARM64 already has &quot;s_jscvtCheckState&quot; state
&gt; (runtime detection flag of jscvt availability).
&gt; If we emit jscvt based on this condition, we can support jscvt opcode on
&gt; wider platforms.

Yeah makes sense. I saw that. I haven&apos;t gotten to integrating that yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469067</commentid>
    <comment_count>9</comment_count>
      <attachid>352277</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 14:49:06 -0700</bug_when>
    <thetext>Created attachment 352277
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469068</commentid>
    <comment_count>10</comment_count>
      <attachid>352278</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 14:53:09 -0700</bug_when>
    <thetext>Created attachment 352278
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469069</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-14 14:54:45 -0700</bug_when>
    <thetext>Attachment 352278 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/MathCommon.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469070</commentid>
    <comment_count>12</comment_count>
      <attachid>352279</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 15:01:04 -0700</bug_when>
    <thetext>Created attachment 352279
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469071</commentid>
    <comment_count>13</comment_count>
      <attachid>352280</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-14 15:02:06 -0700</bug_when>
    <thetext>Created attachment 352280
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469073</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-14 15:05:53 -0700</bug_when>
    <thetext>Attachment 352280 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/MathCommon.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469187</commentid>
    <comment_count>15</comment_count>
      <attachid>352280</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-15 07:09:07 -0700</bug_when>
    <thetext>Comment on attachment 352280
patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14440
&gt; +#endif

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469195</commentid>
    <comment_count>16</comment_count>
      <attachid>352280</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-10-15 07:29:47 -0700</bug_when>
    <thetext>Comment on attachment 352280
patch

R=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469205</commentid>
    <comment_count>17</comment_count>
      <attachid>352280</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-15 07:59:12 -0700</bug_when>
    <thetext>Comment on attachment 352280
patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        This patch patch teaches JSC to use that instruction when possible.

duplicate &quot;patch&quot;.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:3764
&gt; +#if HAVE(FJCVTZS_INSTRUCTION)

Should this be &quot;HAVE(FJCVTZS_INSTRUCTION) &amp;&amp; !OS(LINUX)&quot;?  The code in MacroAssemblerARM64::collectCPUFeatures() implies that this is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469334</commentid>
    <comment_count>18</comment_count>
      <attachid>352280</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-15 11:08:40 -0700</bug_when>
    <thetext>Comment on attachment 352280
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        This patch patch teaches JSC to use that instruction when possible.
&gt; 
&gt; duplicate &quot;patch&quot;.

Will fix.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:3764
&gt;&gt; +#if HAVE(FJCVTZS_INSTRUCTION)
&gt; 
&gt; Should this be &quot;HAVE(FJCVTZS_INSTRUCTION) &amp;&amp; !OS(LINUX)&quot;?  The code in MacroAssemblerARM64::collectCPUFeatures() implies that this is needed.

HAVE(FJCVTZS) is only true on Darwin ATM. If it ever became true somewhere else at compile time, there’s be no need to make sure that we call that function on Linux, since it’s known based on the compile target that we’re going to have this instruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469343</commentid>
    <comment_count>19</comment_count>
      <attachid>352349</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-15 11:35:40 -0700</bug_when>
    <thetext>Created attachment 352349
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469348</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-15 11:38:40 -0700</bug_when>
    <thetext>Attachment 352349 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/MathCommon.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469402</commentid>
    <comment_count>21</comment_count>
      <attachid>352349</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-15 12:47:19 -0700</bug_when>
    <thetext>Comment on attachment 352349
patch for landing

Clearing flags on attachment: 352349

Committed r237136: &lt;https://trac.webkit.org/changeset/237136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469403</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-15 12:47:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469406</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-15 12:48:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/45281003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470216</commentid>
    <comment_count>24</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-17 11:28:00 -0700</bug_when>
    <thetext>This is a 0.5-1% progression on JetStream2 on our bots on devices that support this instruction.

As Yusuke predicted, these JetStream 2 subtests are improved:
- 15% better on stanford-crypto-aes
- 30% better on stanford-crypto-pbkf2
- 97% better on stanford-crypto-sha256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470233</commentid>
    <comment_count>25</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-17 11:48:13 -0700</bug_when>
    <thetext>Some devices show a 2% overall progression on JetStream 2. 

So it seems this is somewhere between a 0.5-2% progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470259</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-10-17 12:20:24 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #25)
&gt; Some devices show a 2% overall progression on JetStream 2. 
&gt; 
&gt; So it seems this is somewhere between a 0.5-2% progression.

Nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352269</attachid>
            <date>2018-10-14 00:19:10 -0700</date>
            <delta_ts>2018-10-14 14:49:18 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>8254</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzMyw2ICsyNTMzLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERB
VEFTSVpFX09GKHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3RzaXplKSwgRlBJbnRDb252T3BfVUNW
VEYsIHJuLCB2ZCkpOwogICAgIH0KIAorI2lmIEhBVkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZmpjdnR6cyhSZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVySUQg
ZG4pCisgICAgeworICAgICAgICBpbnNuKGZqY3Z0enNJbnNuKGRuLCByZCkpOworICAgIH0KKyNl
bmRpZgorCiAgICAgLy8gQWRtaW4gbWV0aG9kczoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpCkBAIC0zNzQ0LDcgKzM3NTEsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIDB4MDgwMDdjMDAgfCBzaXplIDw8IDMwIHwgcmVzdWx0IDw8
IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwgNSB8IHNyYzsKICAgICB9Ci0gICAgCisKKyNpZiBI
QVZFKEZKQ1ZUWlNfSU5TVFJVQ1RJT04pCisgICAgc3RhdGljIGludCBmamN2dHpzSW5zbihGUFJl
Z2lzdGVySUQgZG4sIFJlZ2lzdGVySUQgcmQpCisgICAgeworICAgICAgICByZXR1cm4gMHgxZTdl
MDAwMCB8IChkbiA8PCA1KSB8IHJkOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gV29ya2Fyb3Vu
ZCBmb3IgQ29ydGV4LUE1MyBlcnJhdHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0
aGUKICAgICAvLyBsYXN0IGluc3RydWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9y
ZSBvciBwcmVmZXRjaC4gTmVlZGVkCiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1
bXVsYXRlIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMzcwODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzc1OCw2ICszNzU4LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOwogICAgIH0KKworI2lmIEhB
VkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICB2b2lkIGNvbnZlcnREb3VibGVUb0ludDMyVXNp
bmdKYXZhU2NyaXB0U2VtYW50aWNzKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZqY3Z0enMoZGVzdCwgc3JjKTsgLy8gVGhpcyB6
ZXJvIGV4dGVuZHMuCisgICAgfQorI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKICAgICAvLyBUaGlzIHdpbGwgdXNlIHNjcmF0Y2ggcmVnaXN0ZXJzIGlmIHRoZSBvZmZzZXQg
aXMgbm90IGxlZ2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ0LDEx
ICsyMzQ0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBGUFJSZWcgZnByID0gb3AxLmZwcigpOwogICAgICAgICBHUFJSZWcgZ3ByID0gcmVz
dWx0LmdwcigpOworI2lmIFVTRShKQVZBU0NSSVBUX0NPTlZFUlRfSU5TVFJVQ1RJT04pCisgICAg
ICAgIG1faml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKGZw
ciwgZ3ByKTsKKyNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRv
SW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklU
Q29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAKICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhp
cywKICAgICAgICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSA/IG9wZXJhdGlvblRvSW50
MzJTZW5zaWJsZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdwciwgZnByKSk7Ci0gICAgICAgIAor
I2VuZGlmCiAgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMzk1LDExICsyMzk3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdl
IGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKICAgICAgICAgICAgIHVuYm94RG91
YmxlKGdwciwgcmVzdWx0R3ByLCBmcHIpOwotCisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9O
KQorICAgICAgICAgICAgbV9qaXQuY29udmVydERvdWJsZVRvSW50MzJVc2luZ0phdmFTY3JpcHRT
ZW1hbnRpY3MoZnByLCByZXN1bHRHcHIpOworI2Vsc2UKICAgICAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoKTsKLQorI2VuZGlmCiAgICAgICAgICAgICBjb252ZXJ0ZWQuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CiAKICAgICAgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0
RE9wY29kZS5jcHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOCw3
ICs4MTgsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2luCiAgICAg
ImZjdnRucyIsICJmY3Z0bnUiLCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIs
ICJmbW92IiwgImZtb3YiLAogICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZt
b3YiLCAiZm1vdiIsCiAgICAgImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAwLCAwLCAwLCAwLAot
ICAgICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAgICJmY3Z0enMiLCAi
ZmN2dHp1IiwgMCwgMCwgMCwgMCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25zdCBjaGFyKiBBNjRE
T3Bjb2RlRmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9w
Y29kZS5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNvbnN0IGNo
YXIqIGluc3RydWN0aW9uTmFtZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclByaW50ZigiICAgJS03
LjdzIiwgaW5zdHJ1Y3Rpb25OYW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTguOHMi
LCBpbnN0cnVjdGlvbk5hbWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUmVnaXN0ZXJOYW1l
KHVuc2lnbmVkIHJlZ2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9u
IDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MjcsMTEgKzE0NDI3LDIxIEBAIHByaXZhdGU6CiAgICAg
CiAgICAgTFZhbHVlIGRvdWJsZVRvSW50MzIoTFZhbHVlIGRvdWJsZVZhbHVlKQogICAgIHsKKyNp
ZiBIQVZFKEZKQ1ZUWlNfSU5TVFJVQ1RJT04pCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVlUmVwOjpTb21lUmVn
aXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICBqaXQuY29udmVydERvdWJsZVRvSW50MzJVc2luZ0phdmFTY3JpcHRTZW1hbnRpY3Mo
cGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CisjZWxzZQogICAgICAgICBpZiAoaGFzU2Vuc2libGVEb3VibGVUb0ludCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHNlbnNpYmxlRG91YmxlVG9JbnQzMihkb3VibGVWYWx1ZSk7CiAg
ICAgICAgIAogICAgICAgICBkb3VibGUgbGltaXQgPSBwb3coMiwgMzEpIC0gMTsKICAgICAgICAg
cmV0dXJuIGRvdWJsZVRvSW50MzIoZG91YmxlVmFsdWUsIC1saW1pdCwgbGltaXQpOworI2VuZGlm
CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzZW5zaWJsZURvdWJsZVRvSW50MzIoTFZhbHVlIGRv
dWJsZVZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw3ICs3MCwxMSBAQCB2b2lkIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzCiAgICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hJZk5v
dE51bWJlcihtX2xlZnQsIG1fc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQudW5ib3hE
b3VibGVOb25EZXN0cnVjdGl2ZShtX2xlZnQsIG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSLCBtX3Nj
cmF0Y2hGUFIpOworI2lmIEhBVkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICAgICAgICAgIGpp
dC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhtX2xlZnRGUFIs
IG1fc2NyYXRjaEdQUik7CisjZWxzZQogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFw
cGVuZChqaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKG1fbGVmdEZQUiwgbV9zY3JhdGNo
R1BSKSk7CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKHNoaWZ0QW1vdW50KSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0KQpAQCAtMTIyLDcgKzEyNiwx
MSBAQCB2b2lkIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzCiAKICAgICAgICAg
ICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVtYmVyKG1fbGVm
dCwgbV9zY3JhdGNoR1BSKSk7CiAgICAgICAgICAgICBqaXQudW5ib3hEb3VibGVOb25EZXN0cnVj
dGl2ZShtX2xlZnQsIG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSLCBtX3NjcmF0Y2hGUFIpOworI2lm
IEhBVkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICAgICAgICAgIGppdC5jb252ZXJ0RG91Ymxl
VG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUik7
CisjZWxzZQogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNo
VHJ1bmNhdGVEb3VibGVUb0ludDMyKG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSKSk7CisjZW5kaWYK
IAogICAgICAgICAgICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0KQogICAgICAgICAg
ICAgICAgIGppdC5yc2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgJKHJldmlz
aW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBBTFdBWVNfSU5MSU5FIGludDMy
X3QgdG9JbnQzMkludGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUgaW50MzJfdCB0b0ludDMyKGRv
dWJsZSBudW1iZXIpCiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIGludDMy
X3QgcmVzdWx0ID0gMDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAldzAsICVkMSIgOiAiPXIiIChy
ZXN1bHQpIDogInciIChudW1iZXIpIDogImNjIik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNl
CiAgICAgcmV0dXJuIHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2VuZXJpYz4obnVtYmVy
KTsKKyNlbmRpZgogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4g
RUNNQS0yNjIgOS42LgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQzLDYgKzEwNDMsMTAg
QEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBDUFUoQVJNNjRFKSAmJiBPUyhEQVJXSU4pCisjZGVm
aW5lIEhBVkVfRkpDVlRaU19JTlNUUlVDVElPTiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQogI2RlZmluZSBVU0VfUVVJQ0tfTE9PSyAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352277</attachid>
            <date>2018-10-14 14:49:06 -0700</date>
            <delta_ts>2018-10-14 14:53:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10873</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzMyw2ICsyNTMzLDExIEBA
IHB1YmxpYzoKICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERB
VEFTSVpFX09GKHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3RzaXplKSwgRlBJbnRDb252T3BfVUNW
VEYsIHJuLCB2ZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmamN2dHpzKFJl
Z2lzdGVySUQgcmQsIEZQUmVnaXN0ZXJJRCBkbikKKyAgICB7CisgICAgICAgIGluc24oZmpjdnR6
c0luc24oZG4sIHJkKSk7CisgICAgfQorCiAgICAgLy8gQWRtaW4gbWV0aG9kczoKIAogICAgIEFz
c2VtYmxlckxhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCkBAIC0zNzQ0LDcgKzM3NDks
MTIgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4MDgwMDdjMDAgfCBzaXpl
IDw8IDMwIHwgcmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwgNSB8IHNyYzsKICAg
ICB9Ci0gICAgCisKKyAgICBzdGF0aWMgaW50IGZqY3Z0enNJbnNuKEZQUmVnaXN0ZXJJRCBkbiwg
UmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDFlN2UwMDAwIHwgKGRuIDw8
IDUpIHwgcmQ7CisgICAgfQorCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ29ydGV4LUE1MyBlcnJh
dHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAgICAvLyBsYXN0IGluc3Ry
dWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBwcmVmZXRjaC4gTmVlZGVk
CiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRlIGluc3RydWN0aW9ucy4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMzLDkgKzUzMyw5IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5j
dGkKIAogdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdHVyZXMoKQogewor
I2lmIE9TKExJTlVYKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSNpZiBPUyhMSU5VWCkKICAgICAgICAgLy8gQSBy
ZWdpc3RlciBmb3IgZGVzY3JpYmluZyBBUk02NCBDUFUgZmVhdHVyZXMgYXJlIG9ubHkgYWNjZXNz
aWJsZSBpbiBrZXJuZWwgbW9kZS4KICAgICAgICAgLy8gVGh1cywgc29tZSBrZXJuZWwgc3VwcG9y
dCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBDUFUgZmVhdHVyZXMuIEluIExpbnV4LCB0aGUKICAg
ICAgICAgLy8ga2VybmVsIHBhc3NlcyBDUFUgZmVhdHVyZSBmbGFncyBpbiBBVF9IV0NBUCBhdXhp
bGlhcnkgdmVjdG9yIHdoaWNoIGlzIHBhc3NlZApAQCAtNTUxLDEwICs1NTEsMTIgQEAgdm9pZCBN
YWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdAogI2VuZGlmCiAKICAgICAgICAgc19q
c2N2dENoZWNrU3RhdGUgPSAoaHdjYXBzICYgSFdDQVBfSlNDVlQpID8gQ1BVSURDaGVja1N0YXRl
OjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgIH0pOworI2VsaWYgSEFWRShGSkNW
VFpTX0lOU1RSVUNUSU9OKQorICAgIHNfanNjdnRDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRl
OjpTZXQ7CiAjZWxzZQotICAgICAgICBzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0
ZTo6Q2xlYXI7CisgICAgc19qc2N2dENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6OkNsZWFy
OwogI2VuZGlmCi0gICAgfSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OkNQVUlEQ2hlY2tT
dGF0ZSBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tT
dGF0ZTo6Tm90Q2hlY2tlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzc1OCw2ICszNzU4LDIzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOwogICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgc3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5n
SmF2YVNjcmlwdFNlbWFudGljcygpCisgICAgeworI2lmIEhBVkUoRkpDVlRaU19JTlNUUlVDVElP
TikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICBpZiAoc19qc2N2dENoZWNr
U3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgY29sbGVj
dENQVUZlYXR1cmVzKCk7CisKKyAgICAgICAgcmV0dXJuIHNfanNjdnRDaGVja1N0YXRlID09IENQ
VUlEQ2hlY2tTdGF0ZTo6U2V0OworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91
YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5mamN2dHpzKGRlc3QsIHNy
Yyk7IC8vIFRoaXMgemVybyBleHRlbmRzLgorICAgIH0KICAgICAKICNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9m
ZnNldCBpcyBub3QgbGVnYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NDQsMTEgKzIzNDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQz
MgogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7CiAgICAgICAgIEdQUlJlZyBncHIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRv
SW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklU
Q29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAKLSAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhp
cywKLSAgICAgICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSA/IG9wZXJhdGlvblRvSW50
MzJTZW5zaWJsZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdwciwgZnByKSk7Ci0gICAgICAgIAor
I2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRz
RG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAg
ICAgICAgIG1faml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNz
KGZwciwgZ3ByKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywKKyAgICAgICAgICAgICAgICBoYXNTZW5zaWJs
ZURvdWJsZVRvSW50KCkgPyBvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93IDogb3BlcmF0aW9u
VG9JbnQzMiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTm90
TmVlZGVkLCBncHIsIGZwcikpOworICAgICAgICB9CiAgICAgICAgIGludDMyUmVzdWx0KGdwciwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzk1LDEwICsyNDAwLDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgLy8g
Rmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFs
dWUKICAgICAgICAgICAgIHVuYm94RG91YmxlKGdwciwgcmVzdWx0R3ByLCBmcHIpOwotCi0gICAg
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1bHRHcHIsIGZwcik7Ci0gICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAg
ICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNp
b25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgICAgICBtX2ppdC5jb252
ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhmcHIsIHJlc3VsdEdwcik7
CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOworICAgICAgICAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5j
cHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOCw3ICs4MTgsNyBA
QCBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2luCiAgICAgImZjdnRucyIs
ICJmY3Z0bnUiLCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIsICJmbW92Iiwg
ImZtb3YiLAogICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZtb3YiLCAiZm1v
diIsCiAgICAgImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgICJmY3Z0
enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAgICJmY3Z0enMiLCAiZmN2dHp1Iiwg
MCwgMCwgMCwgMCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxv
YXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0KCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCShy
ZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNvbnN0IGNoYXIqIGluc3Ry
dWN0aW9uTmFtZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclByaW50ZigiICAgJS03LjdzIiwgaW5z
dHJ1Y3Rpb25OYW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTguOHMiLCBpbnN0cnVj
dGlvbk5hbWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUmVnaXN0ZXJOYW1lKHVuc2lnbmVk
IHJlZ2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzNzA4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ0MjcsNiArMTQ0MjcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFs
dWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAgeworI2lmIENQVShBUk02
NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQz
MkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkgeworICAgICAgICAgICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQzMik7CisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShkb3VibGVWYWx1ZSwg
QjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9J
bnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhwYXJhbXNbMV0uZnByKCksIHBhcmFtc1swXS5n
cHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAg
ICAgfQorI2VuZGlmCisKICAgICAgICAgaWYgKGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBzZW5zaWJsZURvdWJsZVRvSW50MzIoZG91YmxlVmFsdWUpOwogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsMTQgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhcwog
ICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1i
ZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAgaml0LnVuYm94RG91Ymxl
Tm9uRGVzdHJ1Y3RpdmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUiwgbV9zY3JhdGNo
RlBSKTsKLSAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJs
ZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKCkpCisgICAgICAgICAg
ICAgICAgaml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKG1f
bGVmdEZQUiwgbV9zY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJy
YW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hpZnRBbW91bnQpIHsKICAgICAgICAgICAg
ICAgICBpZiAobV9zaGlmdFR5cGUgPT0gU2lnbmVkU2hpZnQpCkBAIC0xMjIsNyArMTI5LDE0IEBA
IHZvaWQgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXMKIAogICAgICAgICAgICAg
bV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBt
X3NjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIGppdC51bmJveERvdWJsZU5vbkRlc3RydWN0aXZl
KG1fbGVmdCwgbV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQUik7Ci0gICAgICAg
ICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRv
SW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAg
ICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJBUk02NDo6c3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVy
c2lvblVzaW5nSmF2YVNjcmlwdFNlbWFudGljcygpKQorICAgICAgICAgICAgICAgIGppdC5jb252
ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhtX2xlZnRGUFIsIG1fc2Ny
YXRjaEdQUik7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURv
dWJsZVRvSW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0KQogICAgICAgICAgICAg
ICAgIGppdC5yc2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgJKHJldmlzaW9u
IDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBBTFdBWVNfSU5MSU5FIGludDMyX3Qg
dG9JbnQzMkludGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUgaW50MzJfdCB0b0ludDMyKGRvdWJs
ZSBudW1iZXIpCiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIGludDMyX3Qg
cmVzdWx0ID0gMDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAldzAsICVkMSIgOiAiPXIiIChyZXN1
bHQpIDogInciIChudW1iZXIpIDogImNjIik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCiAg
ICAgcmV0dXJuIHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2VuZXJpYz4obnVtYmVyKTsK
KyNlbmRpZgogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNN
QS0yNjIgOS42LgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQzLDYgKzEwNDMsMTAgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKyNpZiBDUFUoQVJNNjRFKSAmJiBPUyhEQVJXSU4pCisjZGVmaW5l
IEhBVkVfRkpDVlRaU19JTlNUUlVDVElPTiAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAmJiAh
UExBVEZPUk0oSU9TTUFDKQogI2RlZmluZSBVU0VfUVVJQ0tfTE9PSyAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352278</attachid>
            <date>2018-10-14 14:53:09 -0700</date>
            <delta_ts>2018-10-14 15:01:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13178</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFyd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUk12OC4zIGludHJvZHVjZWQgdGhlIGZqY3Z0enMg
aW5zdHJ1Y3Rpb24gd2hpY2ggZG9lcyBkb3VibGUtPmludDMyCisgICAgICAgIGNvbnZlcnNpb24g
dXNpbmcgdGhlIHNlbWFudGljcyBkZWZpbmVkIGJ5IEphdmFTY3JpcHQ6CisgICAgICAgIGh0dHA6
Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRleC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmR1
aTA4MDFnL2hrbzE0Nzc1NjIxOTI4NjguaHRtbAorICAgICAgICBUaGlzIHBhdGNoIHBhdGNoIHRl
YWNoZXMgSlNDIHRvIHVzZSB0aGF0IGluc3RydWN0aW9uIHdoZW4gcG9zc2libGUuCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3Nl
bWJsZXI6OmZqY3Z0enMpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZmpjdnR6c0lu
c24pOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29sbGVjdENQVUZlYXR1cmVzKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZh
U2NyaXB0U2VtYW50aWNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29u
dmVydERvdWJsZVRvSW50MzJVc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9B
NjRET3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5o
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6YXBwZW5kSW5z
dHJ1Y3Rpb25OYW1lKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZG91YmxlVG9JbnQzMik6CisgICAgICAg
ICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBydW50aW1lL01h
dGhDb21tb24uaDoKKyAgICAgICAgKEpTQzo6dG9JbnQzMik6CisKIDIwMTgtMTAtMTIgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgR2FyZGVuaW5nOiBCdWls
ZCBmaXggYWZ0ZXIgcjIzNzA4NC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUzMyw2ICsyNTMzLDExIEBAIHB1YmxpYzoKICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50
SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09GKHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3Rz
aXplKSwgRlBJbnRDb252T3BfVUNWVEYsIHJuLCB2ZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBmamN2dHpzKFJlZ2lzdGVySUQgcmQsIEZQUmVnaXN0ZXJJRCBkbikKKyAgICB7
CisgICAgICAgIGluc24oZmpjdnR6c0luc24oZG4sIHJkKSk7CisgICAgfQorCiAgICAgLy8gQWRt
aW4gbWV0aG9kczoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50
cygpCkBAIC0zNzQ0LDcgKzM3NDksMTIgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0
dXJuIDB4MDgwMDdjMDAgfCBzaXplIDw8IDMwIHwgcmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUg
fCBkc3QgPDwgNSB8IHNyYzsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWMgaW50IGZqY3Z0enNJ
bnNuKEZQUmVnaXN0ZXJJRCBkbiwgUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIHJldHVy
biAweDFlN2UwMDAwIHwgKGRuIDw8IDUpIHwgcmQ7CisgICAgfQorCiAgICAgLy8gV29ya2Fyb3Vu
ZCBmb3IgQ29ydGV4LUE1MyBlcnJhdHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0
aGUKICAgICAvLyBsYXN0IGluc3RydWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9y
ZSBvciBwcmVmZXRjaC4gTmVlZGVkCiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1
bXVsYXRlIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkocmV2aXNpb24gMjM3MDg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDkgKzUzMyw5IEBAIHZvaWQgTWFjcm9Bc3NlbWJs
ZXI6OnByb2JlKFByb2JlOjpGdW5jdGkKIAogdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xs
ZWN0Q1BVRmVhdHVyZXMoKQogeworI2lmIE9TKExJTlVYKQogICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSNpZiBPUyhM
SU5VWCkKICAgICAgICAgLy8gQSByZWdpc3RlciBmb3IgZGVzY3JpYmluZyBBUk02NCBDUFUgZmVh
dHVyZXMgYXJlIG9ubHkgYWNjZXNzaWJsZSBpbiBrZXJuZWwgbW9kZS4KICAgICAgICAgLy8gVGh1
cywgc29tZSBrZXJuZWwgc3VwcG9ydCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBDUFUgZmVhdHVy
ZXMuIEluIExpbnV4LCB0aGUKICAgICAgICAgLy8ga2VybmVsIHBhc3NlcyBDUFUgZmVhdHVyZSBm
bGFncyBpbiBBVF9IV0NBUCBhdXhpbGlhcnkgdmVjdG9yIHdoaWNoIGlzIHBhc3NlZApAQCAtNTUx
LDEwICs1NTEsMTIgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdAog
I2VuZGlmCiAKICAgICAgICAgc19qc2N2dENoZWNrU3RhdGUgPSAoaHdjYXBzICYgSFdDQVBfSlND
VlQpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAg
IH0pOworI2VsaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIHNfanNjdnRDaGVja1N0
YXRlID0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAjZWxzZQotICAgICAgICBzX2pzY3Z0Q2hlY2tT
dGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgc19qc2N2dENoZWNrU3RhdGUgPSBD
UFVJRENoZWNrU3RhdGU6OkNsZWFyOwogI2VuZGlmCi0gICAgfSk7CiB9CiAKIE1hY3JvQXNzZW1i
bGVyQVJNNjQ6OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzX2pzY3Z0Q2hl
Y2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShy
ZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzc1OCw2ICszNzU4LDIzIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMp
OwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgc3VwcG9ydHNEb3VibGVU
b0ludDMyQ29udmVyc2lvblVzaW5nSmF2YVNjcmlwdFNlbWFudGljcygpCisgICAgeworI2lmIEhB
VkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
ICAgICBpZiAoc19qc2N2dENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
KQorICAgICAgICAgICAgY29sbGVjdENQVUZlYXR1cmVzKCk7CisKKyAgICAgICAgcmV0dXJuIHNf
anNjdnRDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworI2VuZGlmCisgICAgfQor
CisgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5mamN2dHpzKGRlc3QsIHNyYyk7IC8vIFRoaXMgemVybyBleHRlbmRzLgorICAgIH0KICAg
ICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRj
aCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM3
MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNDQsMTEgKzIzNDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7
CiAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91Ymxl
VG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwot
ICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRy
dW5jYXRlZFRvSW50ZWdlciwgdGhpcywKLSAgICAgICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9J
bnQoKSA/IG9wZXJhdGlvblRvSW50MzJTZW5zaWJsZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdw
ciwgZnByKSk7Ci0gICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3Jp
cHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgIG1faml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNp
bmdKYXZhU2NyaXB0U2VtYW50aWNzKGZwciwgZ3ByKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50
ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29t
cGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywKKyAgICAg
ICAgICAgICAgICBoYXNTZW5zaWJsZURvdWJsZVRvSW50KCkgPyBvcGVyYXRpb25Ub0ludDMyU2Vu
c2libGVTbG93IDogb3BlcmF0aW9uVG9JbnQzMiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTm90TmVlZGVkLCBncHIsIGZwcikpOworICAgICAgICB9CiAgICAg
ICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
Mzk1LDEwICsyNDAwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50
MzIKIAogICAgICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3Vi
bGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKICAgICAgICAgICAgIHVuYm94RG91YmxlKGdwciwgcmVz
dWx0R3ByLCBmcHIpOwotCi0gICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRHcHIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1
bHRHcHIsIGZwcik7Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRz
RG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAg
ICAgICAgICAgICBtX2ppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFu
dGljcyhmcHIsIHJlc3VsdEdwcik7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIp
OworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9JbnQzMiwgcmVzdWx0
R3ByLCBmcHIpOworICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERP
cGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgxOCw3ICs4MTgsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRp
bmdQb2luCiAgICAgImZjdnRucyIsICJmY3Z0bnUiLCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFz
IiwgImZjdnRhdSIsICJmbW92IiwgImZtb3YiLAogICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwg
MCwgMCwgMCwgImZtb3YiLCAiZm1vdiIsCiAgICAgImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAw
LCAwLCAwLCAwLAotICAgICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAg
ICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25z
dCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIv
QVJNNjQvQTY0RE9wY29kZS5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25O
YW1lKGNvbnN0IGNoYXIqIGluc3RydWN0aW9uTmFtZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclBy
aW50ZigiICAgJS03LjdzIiwgaW5zdHJ1Y3Rpb25OYW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRm
KCIgICAlLTguOHMiLCBpbnN0cnVjdGlvbk5hbWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
UmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MjcsNiArMTQ0MjcsMTggQEAgcHJp
dmF0ZToKICAgICAKICAgICBMVmFsdWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUp
CiAgICAgeworI2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3Mo
KSkgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0
Y2hwb2ludChJbnQzMik7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAg
IGppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhwYXJhbXNb
MV0uZnByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICByZXR1
cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgaWYgKGhhc1NlbnNp
YmxlRG91YmxlVG9JbnQoKSkKICAgICAgICAgICAgIHJldHVybiBzZW5zaWJsZURvdWJsZVRvSW50
MzIoZG91YmxlVmFsdWUpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MDg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsMTQgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhcwogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVu
ZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAg
ICAgICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1Y3RpdmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1f
c2NyYXRjaEdQUiwgbV9zY3JhdGNoRlBSKTsKLSAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlz
dC5hcHBlbmQoaml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2Ny
YXRjaEdQUikpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2Vt
YW50aWNzKCkpCisgICAgICAgICAgICAgICAgaml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdK
YXZhU2NyaXB0U2VtYW50aWNzKG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fc2xvd1BhdGhK
dW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIs
IG1fc2NyYXRjaEdQUikpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hpZnRB
bW91bnQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9zaGlmdFR5cGUgPT0gU2lnbmVkU2hpZnQp
CkBAIC0xMjIsNyArMTI5LDE0IEBAIHZvaWQgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXMKIAogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNo
SWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIGppdC51bmJv
eERvdWJsZU5vbkRlc3RydWN0aXZlKG1fbGVmdCwgbV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1f
c2NyYXRjaEZQUik7Ci0gICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5i
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJBUk02NDo6c3VwcG9y
dHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5nSmF2YVNjcmlwdFNlbWFudGljcygpKQorICAg
ICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFu
dGljcyhtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUik7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5k
KGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIp
KTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25l
ZFNoaWZ0KQogICAgICAgICAgICAgICAgIGppdC5yc2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIo
KSwgbV9zY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoQ29tbW9uLmgJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBB
TFdBWVNfSU5MSU5FIGludDMyX3QgdG9JbnQzMkludGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUg
aW50MzJfdCB0b0ludDMyKGRvdWJsZSBudW1iZXIpCiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RS
VUNUSU9OKQorICAgIGludDMyX3QgcmVzdWx0ID0gMDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAl
dzAsICVkMSIgOiAiPXIiIChyZXN1bHQpIDogInciIChudW1iZXIpIDogImNjIik7CisgICAgcmV0
dXJuIHJlc3VsdDsKKyNlbHNlCiAgICAgcmV0dXJuIHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9k
ZTo6R2VuZXJpYz4obnVtYmVyKTsKKyNlbmRpZgogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9V
SW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzA4OCkK
KysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTgtMTAtMTQgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW1pdCBmamN2dHpzIG9uIEFSTTY0RSBvbiBEYXJ3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTAtMTIg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBB
bGxvdyBlbmNvZGluZyBvZiBzbWFsbCBlbnVtIGNsYXNzZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2
aXNpb24gMjM3MDg4KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtMTA0Myw2ICsxMDQzLDEwIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYgQ1BVKEFSTTY0
RSkgJiYgT1MoREFSV0lOKQorI2RlZmluZSBIQVZFX0ZKQ1ZUWlNfSU5TVFJVQ1RJT04gMQorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykKICNkZWZpbmUgVVNFX1FV
SUNLX0xPT0sgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352279</attachid>
            <date>2018-10-14 15:01:04 -0700</date>
            <delta_ts>2018-10-14 15:02:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>14675</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzcwOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFyd2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwMjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9kb3VibGUt
dG8taW50MzItTmFOLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorCiAyMDE4LTEwLTA4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5v
cmc+CiAKICAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlICJwYXJzZUZ1bmN0aW9uIiB0byBv
cHRpbWl6ZSBGdW5jdGlvbiBjb25zdHJ1Y3RvcgpJbmRleDogSlNUZXN0cy9zdHJlc3MvZG91Ymxl
LXRvLWludDMyLU5hTi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kb3VibGUtdG8t
aW50MzItTmFOLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2RvdWJsZS10by1p
bnQzMi1OYU4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVu
Y3Rpb24gZm9vKHZpZXcpIHsKKyAgICBsZXQgeCA9IHZpZXcuZ2V0RmxvYXQ2NCgwKTsKKyAgICBy
ZXR1cm4gW3gsIHggfCAwXTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBidWZmZXIgPSBuZXcg
QXJyYXlCdWZmZXIoOCk7CitsZXQgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDg7
ICsraSkgeworICAgICAgICB2aWV3LnNldEludDgoaSwgTWF0aC5yYW5kb20oKSAqIDI1NSk7Cisg
ICAgfQorCisgICAgbGV0IFthLCBiXSA9IGZvbyh2aWV3KTsKKyAgICBpZiAoaXNOYU4oYSkpCisg
ICAgICAgIGFzc2VydChiID09PSAwKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjM3MDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFy
d2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQw
MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUk12
OC4zIGludHJvZHVjZWQgdGhlIGZqY3Z0enMgaW5zdHJ1Y3Rpb24gd2hpY2ggZG9lcyBkb3VibGUt
PmludDMyCisgICAgICAgIGNvbnZlcnNpb24gdXNpbmcgdGhlIHNlbWFudGljcyBkZWZpbmVkIGJ5
IEphdmFTY3JpcHQ6CisgICAgICAgIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRl
eC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmR1aTA4MDFnL2hrbzE0Nzc1NjIxOTI4NjguaHRtbAor
ICAgICAgICBUaGlzIHBhdGNoIHBhdGNoIHRlYWNoZXMgSlNDIHRvIHVzZSB0aGF0IGluc3RydWN0
aW9uIHdoZW4gcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmZqY3Z0enMpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6ZmpjdnR6c0luc24pOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
Y29sbGVjdENQVUZlYXR1cmVzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJs
ZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29udmVydERvdWJsZVRvSW50MzJVc2luZ0phdmFTY3Jp
cHRTZW1hbnRpY3MpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAg
ICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZTo6YXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6ZG91YmxlVG9JbnQzMik6CisgICAgICAgICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAgKEpTQzo6dG9J
bnQzMik6CisKIDIwMTgtMTAtMTIgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgR2FyZGVuaW5nOiBCdWlsZCBmaXggYWZ0ZXIgcjIzNzA4NC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJl
dmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzMyw2ICsyNTMzLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09G
KHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3RzaXplKSwgRlBJbnRDb252T3BfVUNWVEYsIHJuLCB2
ZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmamN2dHpzKFJlZ2lzdGVySUQg
cmQsIEZQUmVnaXN0ZXJJRCBkbikKKyAgICB7CisgICAgICAgIGluc24oZmpjdnR6c0luc24oZG4s
IHJkKSk7CisgICAgfQorCiAgICAgLy8gQWRtaW4gbWV0aG9kczoKIAogICAgIEFzc2VtYmxlckxh
YmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCkBAIC0zNzQ0LDcgKzM3NDksMTIgQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4MDgwMDdjMDAgfCBzaXplIDw8IDMwIHwg
cmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwgNSB8IHNyYzsKICAgICB9Ci0gICAg
CisKKyAgICBzdGF0aWMgaW50IGZqY3Z0enNJbnNuKEZQUmVnaXN0ZXJJRCBkbiwgUmVnaXN0ZXJJ
RCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDFlN2UwMDAwIHwgKGRuIDw8IDUpIHwgcmQ7
CisgICAgfQorCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ29ydGV4LUE1MyBlcnJhdHVtICg4MzU3
NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAgICAvLyBsYXN0IGluc3RydWN0aW9uIGlu
IHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBwcmVmZXRjaC4gTmVlZGVkCiAgICAgLy8g
YmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRlIGluc3RydWN0aW9ucy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDkg
KzUzMyw5IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGkKIAogdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdHVyZXMoKQogeworI2lmIE9TKExJ
TlVYKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFtdIHsKLSNpZiBPUyhMSU5VWCkKICAgICAgICAgLy8gQSByZWdpc3RlciBm
b3IgZGVzY3JpYmluZyBBUk02NCBDUFUgZmVhdHVyZXMgYXJlIG9ubHkgYWNjZXNzaWJsZSBpbiBr
ZXJuZWwgbW9kZS4KICAgICAgICAgLy8gVGh1cywgc29tZSBrZXJuZWwgc3VwcG9ydCBpcyBuZWNl
c3NhcnkgdG8gY29sbGVjdCBDUFUgZmVhdHVyZXMuIEluIExpbnV4LCB0aGUKICAgICAgICAgLy8g
a2VybmVsIHBhc3NlcyBDUFUgZmVhdHVyZSBmbGFncyBpbiBBVF9IV0NBUCBhdXhpbGlhcnkgdmVj
dG9yIHdoaWNoIGlzIHBhc3NlZApAQCAtNTUxLDEwICs1NTEsMTIgQEAgdm9pZCBNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdAogI2VuZGlmCiAKICAgICAgICAgc19qc2N2dENoZWNr
U3RhdGUgPSAoaHdjYXBzICYgSFdDQVBfSlNDVlQpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBD
UFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgIH0pOworI2VsaWYgSEFWRShGSkNWVFpTX0lOU1RS
VUNUSU9OKQorICAgIHNfanNjdnRDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAj
ZWxzZQotICAgICAgICBzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7
CisgICAgc19qc2N2dENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogI2VuZGlm
Ci0gICAgfSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OkNQVUlEQ2hlY2tTdGF0ZSBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90
Q2hlY2tlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzc1OCw2ICszNzU4LDIzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgc3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5nSmF2YVNjcmlw
dFNlbWFudGljcygpCisgICAgeworI2lmIEhBVkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICBpZiAoc19qc2N2dENoZWNrU3RhdGUgPT0g
Q1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgY29sbGVjdENQVUZlYXR1
cmVzKCk7CisKKyAgICAgICAgcmV0dXJuIHNfanNjdnRDaGVja1N0YXRlID09IENQVUlEQ2hlY2tT
dGF0ZTo6U2V0OworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9JbnQz
MlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5mamN2dHpzKGRlc3QsIHNyYyk7IC8vIFRo
aXMgemVybyBleHRlbmRzLgorICAgIH0KICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQog
ICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBu
b3QgbGVnYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNDQsMTEgKzIz
NDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7CiAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9
IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6
OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywKLSAgICAg
ICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSA/IG9wZXJhdGlvblRvSW50MzJTZW5zaWJs
ZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdwciwgZnByKSk7Ci0gICAgICAgIAorI2lmIENQVShB
Uk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9J
bnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgIG1f
aml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKGZwciwgZ3By
KTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQp
OworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5j
YXRlZFRvSW50ZWdlciwgdGhpcywKKyAgICAgICAgICAgICAgICBoYXNTZW5zaWJsZURvdWJsZVRv
SW50KCkgPyBvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93IDogb3BlcmF0aW9uVG9JbnQzMiwg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTm90TmVlZGVkLCBn
cHIsIGZwcikpOworICAgICAgICB9CiAgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzk1LDEwICsyNDAwLDE2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgLy8gRmlyc3QsIGlm
IHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKICAgICAg
ICAgICAgIHVuYm94RG91YmxlKGdwciwgcmVzdWx0R3ByLCBmcHIpOwotCi0gICAgICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1bHRHcHIsIGZwcik7Ci0gICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0ph
dmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RG91Ymxl
VG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhmcHIsIHJlc3VsdEdwcik7CisgICAgICAg
ICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOworICAgICAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29u
dmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHJldmlz
aW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOCw3ICs4MTgsNyBAQCBjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2luCiAgICAgImZjdnRucyIsICJmY3Z0bnUi
LCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIsICJmbW92IiwgImZtb3YiLAog
ICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZtb3YiLCAiZm1vdiIsCiAgICAg
ImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgICJmY3Z0enMiLCAiZmN2
dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAgICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwg
MCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2lu
dEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCShyZXZpc2lvbiAy
MzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERP
cGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNvbnN0IGNoYXIqIGluc3RydWN0aW9uTmFt
ZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclByaW50ZigiICAgJS03LjdzIiwgaW5zdHJ1Y3Rpb25O
YW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTguOHMiLCBpbnN0cnVjdGlvbk5hbWUp
OwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVy
TnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0MjcsNiArMTQ0MjcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFsdWUgZG91Ymxl
VG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAgeworI2lmIENQVShBUk02NCkKKyAgICAg
ICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNp
b25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQzMik7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5n
SmF2YVNjcmlwdFNlbWFudGljcyhwYXJhbXNbMV0uZnByKCksIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3Rz
Ojpub25lKCk7CisgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorI2Vu
ZGlmCisKICAgICAgICAgaWYgKGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSkKICAgICAgICAgICAg
IHJldHVybiBzZW5zaWJsZURvdWJsZVRvSW50MzIoZG91YmxlVmFsdWUpOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
MTQgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhcwogICAgICAgICAg
ICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0
LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1
Y3RpdmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUiwgbV9zY3JhdGNoRlBSKTsKLSAg
ICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJD
b252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKCkpCisgICAgICAgICAgICAgICAgaml0
LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKG1fbGVmdEZQUiwg
bV9zY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRydW5j
YXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoc2hpZnRBbW91bnQpIHsKICAgICAgICAgICAgICAgICBpZiAo
bV9zaGlmdFR5cGUgPT0gU2lnbmVkU2hpZnQpCkBAIC0xMjIsNyArMTI5LDE0IEBAIHZvaWQgSklU
UmlnaHRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXMKIAogICAgICAgICAgICAgbV9zbG93UGF0
aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hH
UFIpKTsKICAgICAgICAgICAgIGppdC51bmJveERvdWJsZU5vbkRlc3RydWN0aXZlKG1fbGVmdCwg
bV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQUik7Ci0gICAgICAgICAgICBtX3Ns
b3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIobV9s
ZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAo
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5n
SmF2YVNjcmlwdFNlbWFudGljcygpKQorICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91Ymxl
VG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUik7
CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50
MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0KQogICAgICAgICAgICAgICAgIGppdC5y
c2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgJKHJldmlzaW9uIDIzNzA4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBBTFdBWVNfSU5MSU5FIGludDMyX3QgdG9JbnQzMklu
dGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSBudW1iZXIp
CiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIGludDMyX3QgcmVzdWx0ID0g
MDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAldzAsICVkMSIgOiAiPXIiIChyZXN1bHQpIDogInci
IChudW1iZXIpIDogImNjIik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCiAgICAgcmV0dXJu
IHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2VuZXJpYz4obnVtYmVyKTsKKyNlbmRpZgog
fQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42
LgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMTQgIFNhYW0gYmFyYXRpICA8c2Jh
cmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRW1pdCBmamN2dHpzIG9uIEFSTTY0RSBvbiBEYXJ3
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDAy
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisKKzIwMTgtMTAtMTQgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgRW1pdCBmamN2dHpzIG9uIEFSTTY0RSBvbiBEYXJ3aW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDAyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisKIDIwMTgtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBbGxvdyBlbmNvZGluZyBvZiBzbWFsbCBlbnVtIGNsYXNzZXMKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw2ICsxMDQzLDEwIEBACiAjZW5kaWYKICNlbmRpZgog
CisjaWYgQ1BVKEFSTTY0RSkgJiYgT1MoREFSV0lOKQorI2RlZmluZSBIQVZFX0ZKQ1ZUWlNfSU5T
VFJVQ1RJT04gMQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmICFQTEFU
Rk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykK
ICNkZWZpbmUgVVNFX1FVSUNLX0xPT0sgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352280</attachid>
            <date>2018-10-14 15:02:06 -0700</date>
            <delta_ts>2018-10-15 11:35:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>14459</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzcwOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFyd2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwMjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9kb3VibGUt
dG8taW50MzItTmFOLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChmb28p
OgorCiAyMDE4LTEwLTA4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5v
cmc+CiAKICAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlICJwYXJzZUZ1bmN0aW9uIiB0byBv
cHRpbWl6ZSBGdW5jdGlvbiBjb25zdHJ1Y3RvcgpJbmRleDogSlNUZXN0cy9zdHJlc3MvZG91Ymxl
LXRvLWludDMyLU5hTi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kb3VibGUtdG8t
aW50MzItTmFOLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2RvdWJsZS10by1p
bnQzMi1OYU4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KKworZnVu
Y3Rpb24gZm9vKHZpZXcpIHsKKyAgICBsZXQgeCA9IHZpZXcuZ2V0RmxvYXQ2NCgwKTsKKyAgICBy
ZXR1cm4gW3gsIHggfCAwXTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBidWZmZXIgPSBuZXcg
QXJyYXlCdWZmZXIoOCk7CitsZXQgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDg7
ICsraSkgeworICAgICAgICB2aWV3LnNldEludDgoaSwgTWF0aC5yYW5kb20oKSAqIDI1NSk7Cisg
ICAgfQorCisgICAgbGV0IFthLCBiXSA9IGZvbyh2aWV3KTsKKyAgICBpZiAoaXNOYU4oYSkpCisg
ICAgICAgIGFzc2VydChiID09PSAwKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjM3MDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFy
d2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQw
MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUk12
OC4zIGludHJvZHVjZWQgdGhlIGZqY3Z0enMgaW5zdHJ1Y3Rpb24gd2hpY2ggZG9lcyBkb3VibGUt
PmludDMyCisgICAgICAgIGNvbnZlcnNpb24gdXNpbmcgdGhlIHNlbWFudGljcyBkZWZpbmVkIGJ5
IEphdmFTY3JpcHQ6CisgICAgICAgIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRl
eC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmR1aTA4MDFnL2hrbzE0Nzc1NjIxOTI4NjguaHRtbAor
ICAgICAgICBUaGlzIHBhdGNoIHBhdGNoIHRlYWNoZXMgSlNDIHRvIHVzZSB0aGF0IGluc3RydWN0
aW9uIHdoZW4gcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmZqY3Z0enMpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6ZmpjdnR6c0luc24pOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
Y29sbGVjdENQVUZlYXR1cmVzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJs
ZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29udmVydERvdWJsZVRvSW50MzJVc2luZ0phdmFTY3Jp
cHRTZW1hbnRpY3MpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAg
ICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAgICAgICAgKiBkaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZTo6YXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6ZG91YmxlVG9JbnQzMik6CisgICAgICAgICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAgKEpTQzo6dG9J
bnQzMik6CisKIDIwMTgtMTAtMTIgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgR2FyZGVuaW5nOiBCdWlsZCBmaXggYWZ0ZXIgcjIzNzA4NC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJl
dmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzMyw2ICsyNTMzLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09G
KHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3RzaXplKSwgRlBJbnRDb252T3BfVUNWVEYsIHJuLCB2
ZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmamN2dHpzKFJlZ2lzdGVySUQg
cmQsIEZQUmVnaXN0ZXJJRCBkbikKKyAgICB7CisgICAgICAgIGluc24oZmpjdnR6c0luc24oZG4s
IHJkKSk7CisgICAgfQorCiAgICAgLy8gQWRtaW4gbWV0aG9kczoKIAogICAgIEFzc2VtYmxlckxh
YmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCkBAIC0zNzQ0LDcgKzM3NDksMTIgQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4MDgwMDdjMDAgfCBzaXplIDw8IDMwIHwg
cmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwgNSB8IHNyYzsKICAgICB9Ci0gICAg
CisKKyAgICBzdGF0aWMgaW50IGZqY3Z0enNJbnNuKEZQUmVnaXN0ZXJJRCBkbiwgUmVnaXN0ZXJJ
RCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDFlN2UwMDAwIHwgKGRuIDw8IDUpIHwgcmQ7
CisgICAgfQorCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ29ydGV4LUE1MyBlcnJhdHVtICg4MzU3
NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAgICAvLyBsYXN0IGluc3RydWN0aW9uIGlu
IHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBwcmVmZXRjaC4gTmVlZGVkCiAgICAgLy8g
YmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRlIGluc3RydWN0aW9ucy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDkg
KzUzMyw5IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGkKIAogdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdHVyZXMoKQogeworI2lmIE9TKExJ
TlVYKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFtdIHsKLSNpZiBPUyhMSU5VWCkKICAgICAgICAgLy8gQSByZWdpc3RlciBm
b3IgZGVzY3JpYmluZyBBUk02NCBDUFUgZmVhdHVyZXMgYXJlIG9ubHkgYWNjZXNzaWJsZSBpbiBr
ZXJuZWwgbW9kZS4KICAgICAgICAgLy8gVGh1cywgc29tZSBrZXJuZWwgc3VwcG9ydCBpcyBuZWNl
c3NhcnkgdG8gY29sbGVjdCBDUFUgZmVhdHVyZXMuIEluIExpbnV4LCB0aGUKICAgICAgICAgLy8g
a2VybmVsIHBhc3NlcyBDUFUgZmVhdHVyZSBmbGFncyBpbiBBVF9IV0NBUCBhdXhpbGlhcnkgdmVj
dG9yIHdoaWNoIGlzIHBhc3NlZApAQCAtNTUxLDEwICs1NTEsMTIgQEAgdm9pZCBNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdAogI2VuZGlmCiAKICAgICAgICAgc19qc2N2dENoZWNr
U3RhdGUgPSAoaHdjYXBzICYgSFdDQVBfSlNDVlQpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBD
UFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgIH0pOworI2VsaWYgSEFWRShGSkNWVFpTX0lOU1RS
VUNUSU9OKQorICAgIHNfanNjdnRDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAj
ZWxzZQotICAgICAgICBzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7
CisgICAgc19qc2N2dENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogI2VuZGlm
Ci0gICAgfSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OkNQVUlEQ2hlY2tTdGF0ZSBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzX2pzY3Z0Q2hlY2tTdGF0ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90
Q2hlY2tlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMzcwODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzc1OCw2ICszNzU4LDIzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgc3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5nSmF2YVNjcmlw
dFNlbWFudGljcygpCisgICAgeworI2lmIEhBVkUoRkpDVlRaU19JTlNUUlVDVElPTikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICBpZiAoc19qc2N2dENoZWNrU3RhdGUgPT0g
Q1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgY29sbGVjdENQVUZlYXR1
cmVzKCk7CisKKyAgICAgICAgcmV0dXJuIHNfanNjdnRDaGVja1N0YXRlID09IENQVUlEQ2hlY2tT
dGF0ZTo6U2V0OworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9JbnQz
MlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5mamN2dHpzKGRlc3QsIHNyYyk7IC8vIFRo
aXMgemVybyBleHRlbmRzLgorICAgIH0KICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQog
ICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBu
b3QgbGVnYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNDQsMTEgKzIz
NDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7CiAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9
IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6
OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywKLSAgICAg
ICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSA/IG9wZXJhdGlvblRvSW50MzJTZW5zaWJs
ZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdwciwgZnByKSk7Ci0gICAgICAgIAorI2lmIENQVShB
Uk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9J
bnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgIG1f
aml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKGZwciwgZ3By
KTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQp
OworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5j
YXRlZFRvSW50ZWdlciwgdGhpcywKKyAgICAgICAgICAgICAgICBoYXNTZW5zaWJsZURvdWJsZVRv
SW50KCkgPyBvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93IDogb3BlcmF0aW9uVG9JbnQzMiwg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTm90TmVlZGVkLCBn
cHIsIGZwcikpOworICAgICAgICB9CiAgICAgICAgIGludDMyUmVzdWx0KGdwciwgbm9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzk1LDEwICsyNDAwLDE2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgLy8gRmlyc3QsIGlm
IHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKICAgICAg
ICAgICAgIHVuYm94RG91YmxlKGdwciwgcmVzdWx0R3ByLCBmcHIpOwotCi0gICAgICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1bHRHcHIsIGZwcik7Ci0gICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0ph
dmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RG91Ymxl
VG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhmcHIsIHJlc3VsdEdwcik7CisgICAgICAg
ICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOworICAgICAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29u
dmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHJldmlz
aW9uIDIzNzA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOCw3ICs4MTgsNyBAQCBjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2luCiAgICAgImZjdnRucyIsICJmY3Z0bnUi
LCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIsICJmbW92IiwgImZtb3YiLAog
ICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZtb3YiLCAiZm1vdiIsCiAgICAg
ImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgICJmY3Z0enMiLCAiZmN2
dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAgICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwg
MCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2lu
dEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCShyZXZpc2lvbiAy
MzcwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERP
cGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNvbnN0IGNoYXIqIGluc3RydWN0aW9uTmFt
ZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclByaW50ZigiICAgJS03LjdzIiwgaW5zdHJ1Y3Rpb25O
YW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTguOHMiLCBpbnN0cnVjdGlvbk5hbWUp
OwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVy
TnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0MjcsNiArMTQ0MjcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFsdWUgZG91Ymxl
VG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAgeworI2lmIENQVShBUk02NCkKKyAgICAg
ICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNp
b25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQzMik7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5n
SmF2YVNjcmlwdFNlbWFudGljcyhwYXJhbXNbMV0uZnByKCksIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3Rz
Ojpub25lKCk7CisgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorI2Vu
ZGlmCisKICAgICAgICAgaWYgKGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSkKICAgICAgICAgICAg
IHJldHVybiBzZW5zaWJsZURvdWJsZVRvSW50MzIoZG91YmxlVmFsdWUpOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
MTQgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhcwogICAgICAgICAg
ICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0
LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1
Y3RpdmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUiwgbV9zY3JhdGNoRlBSKTsKLSAg
ICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJD
b252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKCkpCisgICAgICAgICAgICAgICAgaml0
LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNzKG1fbGVmdEZQUiwg
bV9zY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFRydW5j
YXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUikpOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoc2hpZnRBbW91bnQpIHsKICAgICAgICAgICAgICAgICBpZiAo
bV9zaGlmdFR5cGUgPT0gU2lnbmVkU2hpZnQpCkBAIC0xMjIsNyArMTI5LDE0IEBAIHZvaWQgSklU
UmlnaHRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXMKIAogICAgICAgICAgICAgbV9zbG93UGF0
aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hH
UFIpKTsKICAgICAgICAgICAgIGppdC51bmJveERvdWJsZU5vbkRlc3RydWN0aXZlKG1fbGVmdCwg
bV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQUik7Ci0gICAgICAgICAgICBtX3Ns
b3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIobV9s
ZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBpZiAo
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3VwcG9ydHNEb3VibGVUb0ludDMyQ29udmVyc2lvblVzaW5n
SmF2YVNjcmlwdFNlbWFudGljcygpKQorICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91Ymxl
VG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUik7
CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50
MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0KQogICAgICAgICAgICAgICAgIGppdC5y
c2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgJKHJldmlzaW9uIDIzNzA4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBBTFdBWVNfSU5MSU5FIGludDMyX3QgdG9JbnQzMklu
dGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSBudW1iZXIp
CiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIGludDMyX3QgcmVzdWx0ID0g
MDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAldzAsICVkMSIgOiAiPXIiIChyZXN1bHQpIDogInci
IChudW1iZXIpIDogImNjIik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCiAgICAgcmV0dXJu
IHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2VuZXJpYz4obnVtYmVyKTsKKyNlbmRpZgog
fQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42
LgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIzNzA4OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTAtMTQgIFNhYW0gYmFyYXRpICA8c2Jh
cmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRW1pdCBmamN2dHpzIG9uIEFSTTY0RSBvbiBEYXJ3
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDAy
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisKIDIwMTgtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGxvdyBlbmNvZGluZyBvZiBzbWFsbCBlbnVtIGNs
YXNzZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjM3MDg4KQorKysgU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw2ICsxMDQzLDEwIEBACiAjZW5k
aWYKICNlbmRpZgogCisjaWYgQ1BVKEFSTTY0RSkgJiYgT1MoREFSV0lOKQorI2RlZmluZSBIQVZF
X0ZKQ1ZUWlNfSU5TVFJVQ1RJT04gMQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRG
T1JNKElPU01BQykKICNkZWZpbmUgVVNFX1FVSUNLX0xPT0sgMQo=
</data>
<flag name="review"
          id="369575"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352349</attachid>
            <date>2018-10-15 11:35:40 -0700</date>
            <delta_ts>2018-10-15 12:47:19 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14498</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzcwOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBvbiBBUk02NEUgb24gRGFyd2luCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwMjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBGaWxpcCBQaXpsby4KKworICAgICAgICAq
IHN0cmVzcy9kb3VibGUtdG8taW50MzItTmFOLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChmb28pOgorCiAyMDE4LTEwLTA4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6
dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlICJwYXJz
ZUZ1bmN0aW9uIiB0byBvcHRpbWl6ZSBGdW5jdGlvbiBjb25zdHJ1Y3RvcgpJbmRleDogSlNUZXN0
cy9zdHJlc3MvZG91YmxlLXRvLWludDMyLU5hTi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9kb3VibGUtdG8taW50MzItTmFOLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3Ry
ZXNzL2RvdWJsZS10by1pbnQzMi1OYU4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBA
QAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcjsKK30KKworZnVuY3Rpb24gZm9vKHZpZXcpIHsKKyAgICBsZXQgeCA9IHZpZXcuZ2V0Rmxv
YXQ2NCgwKTsKKyAgICByZXR1cm4gW3gsIHggfCAwXTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xl
dCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgdmlldyA9IG5ldyBEYXRhVmlldyhi
dWZmZXIpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICB2aWV3LnNldEludDgoaSwgTWF0aC5yYW5k
b20oKSAqIDI1NSk7CisgICAgfQorCisgICAgbGV0IFthLCBiXSA9IGZvbyh2aWV3KTsKKyAgICBp
ZiAoaXNOYU4oYSkpCisgICAgICAgIGFzc2VydChiID09PSAwKTsKK30KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE0ICBT
YWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEVtaXQgZmpjdnR6cyBv
biBBUk02NEUgb24gRGFyd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFu
ZCBGaWxpcCBQaXpsby4KKworICAgICAgICBBUk12OC4zIGludHJvZHVjZWQgdGhlIGZqY3Z0enMg
aW5zdHJ1Y3Rpb24gd2hpY2ggZG9lcyBkb3VibGUtPmludDMyCisgICAgICAgIGNvbnZlcnNpb24g
dXNpbmcgdGhlIHNlbWFudGljcyBkZWZpbmVkIGJ5IEphdmFTY3JpcHQ6CisgICAgICAgIGh0dHA6
Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRleC5qc3A/dG9waWM9L2NvbS5hcm0uZG9jLmR1
aTA4MDFnL2hrbzE0Nzc1NjIxOTI4NjguaHRtbAorICAgICAgICBUaGlzIHBhdGNoIHRlYWNoZXMg
SlNDIHRvIHVzZSB0aGF0IGluc3RydWN0aW9uIHdoZW4gcG9zc2libGUuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OmZqY3Z0enMpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZmpjdnR6c0luc24pOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29sbGVjdENQVUZlYXR1cmVzKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0
U2VtYW50aWNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y29udmVydERv
dWJsZVRvSW50MzJVc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bj
b2RlLmNwcDoKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAg
ICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6YXBwZW5kSW5zdHJ1Y3Rp
b25OYW1lKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZG91YmxlVG9JbnQzMik6CisgICAgICAgICogaml0
L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6dG9JbnQzMik6CisKIDIwMTgtMTAtMTIgIFRhZGV1IFphZ2Fs
bG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgR2FyZGVuaW5nOiBCdWlsZCBmaXgg
YWZ0ZXIgcjIzNzA4NC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
NjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNzA5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUz
Myw2ICsyNTMzLDExIEBAIHB1YmxpYzoKICAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdl
ckNvbnZlcnNpb25zKERBVEFTSVpFX09GKHNyY3NpemUpLCBEQVRBU0laRV9PRihkc3RzaXplKSwg
RlBJbnRDb252T3BfVUNWVEYsIHJuLCB2ZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBmamN2dHpzKFJlZ2lzdGVySUQgcmQsIEZQUmVnaXN0ZXJJRCBkbikKKyAgICB7CisgICAg
ICAgIGluc24oZmpjdnR6c0luc24oZG4sIHJkKSk7CisgICAgfQorCiAgICAgLy8gQWRtaW4gbWV0
aG9kczoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCkBA
IC0zNzQ0LDcgKzM3NDksMTIgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4
MDgwMDdjMDAgfCBzaXplIDw8IDMwIHwgcmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3Qg
PDwgNSB8IHNyYzsKICAgICB9Ci0gICAgCisKKyAgICBzdGF0aWMgaW50IGZqY3Z0enNJbnNuKEZQ
UmVnaXN0ZXJJRCBkbiwgUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDFl
N2UwMDAwIHwgKGRuIDw8IDUpIHwgcmQ7CisgICAgfQorCiAgICAgLy8gV29ya2Fyb3VuZCBmb3Ig
Q29ydGV4LUE1MyBlcnJhdHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAg
ICAvLyBsYXN0IGluc3RydWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBw
cmVmZXRjaC4gTmVlZGVkCiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRl
IGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkocmV2aXNpb24gMjM3MDkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMzLDkgKzUzMyw5IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnBy
b2JlKFByb2JlOjpGdW5jdGkKIAogdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BV
RmVhdHVyZXMoKQogeworI2lmIE9TKExJTlVYKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSNpZiBPUyhMSU5VWCkK
ICAgICAgICAgLy8gQSByZWdpc3RlciBmb3IgZGVzY3JpYmluZyBBUk02NCBDUFUgZmVhdHVyZXMg
YXJlIG9ubHkgYWNjZXNzaWJsZSBpbiBrZXJuZWwgbW9kZS4KICAgICAgICAgLy8gVGh1cywgc29t
ZSBrZXJuZWwgc3VwcG9ydCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBDUFUgZmVhdHVyZXMuIElu
IExpbnV4LCB0aGUKICAgICAgICAgLy8ga2VybmVsIHBhc3NlcyBDUFUgZmVhdHVyZSBmbGFncyBp
biBBVF9IV0NBUCBhdXhpbGlhcnkgdmVjdG9yIHdoaWNoIGlzIHBhc3NlZApAQCAtNTUxLDEwICs1
NTEsMTIgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpjb2xsZWN0Q1BVRmVhdAogI2VuZGlm
CiAKICAgICAgICAgc19qc2N2dENoZWNrU3RhdGUgPSAoaHdjYXBzICYgSFdDQVBfSlNDVlQpID8g
Q1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOworICAgIH0pOwor
I2VsaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9OKQorICAgIHNfanNjdnRDaGVja1N0YXRlID0g
Q1BVSURDaGVja1N0YXRlOjpTZXQ7CiAjZWxzZQotICAgICAgICBzX2pzY3Z0Q2hlY2tTdGF0ZSA9
IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgc19qc2N2dENoZWNrU3RhdGUgPSBDUFVJRENo
ZWNrU3RhdGU6OkNsZWFyOwogI2VuZGlmCi0gICAgfSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQVJN
NjQ6OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzX2pzY3Z0Q2hlY2tTdGF0
ZSA9IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lv
biAyMzcwOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzc1OCw2ICszNzU4LDIzIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOwogICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgc3VwcG9ydHNEb3VibGVUb0ludDMy
Q29udmVyc2lvblVzaW5nSmF2YVNjcmlwdFNlbWFudGljcygpCisgICAgeworI2lmIEhBVkUoRkpD
VlRaU19JTlNUUlVDVElPTikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICBp
ZiAoc19qc2N2dENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAg
ICAgICAgICAgY29sbGVjdENQVUZlYXR1cmVzKCk7CisKKyAgICAgICAgcmV0dXJuIHNfanNjdnRD
aGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworI2VuZGlmCisgICAgfQorCisgICAg
dm9pZCBjb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhGUFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5m
amN2dHpzKGRlc3QsIHNyYyk7IC8vIFRoaXMgemVybyBleHRlbmRzLgorICAgIH0KICAgICAKICNp
ZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdp
c3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM3MDkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzNDQsMTEgKzIzNDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlVG9JbnQzMgogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7CiAgICAg
ICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdFRydW5jYXRlZFRvSW50ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQz
MihmcHIsIGdwciwgSklUQ29tcGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOwotICAgICAg
ICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRl
ZFRvSW50ZWdlciwgdGhpcywKLSAgICAgICAgICAgIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSA/
IG9wZXJhdGlvblRvSW50MzJTZW5zaWJsZVNsb3cgOiBvcGVyYXRpb25Ub0ludDMyLCBOZWVkVG9T
cGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQsIGdwciwgZnBy
KSk7Ci0gICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVy
QVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1h
bnRpY3MoKSkKKyAgICAgICAgICAgIG1faml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZh
U2NyaXB0U2VtYW50aWNzKGZwciwgZ3ByKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAg
IHsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFRydW5jYXRlZFRvSW50ZWdlciA9
IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29tcGlsZXI6
OkJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywKKyAgICAgICAgICAg
ICAgICBoYXNTZW5zaWJsZURvdWJsZVRvSW50KCkgPyBvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVT
bG93IDogb3BlcmF0aW9uVG9JbnQzMiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTm90TmVlZGVkLCBncHIsIGZwcikpOworICAgICAgICB9CiAgICAgICAgIGlu
dDMyUmVzdWx0KGdwciwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzk1LDEw
ICsyNDAwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAog
ICAgICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5j
b2RlZCBhcyBhIEpTVmFsdWUKICAgICAgICAgICAgIHVuYm94RG91YmxlKGdwciwgcmVzdWx0R3By
LCBmcHIpOwotCi0gICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIp
OwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1bHRHcHIs
IGZwcik7Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91Ymxl
VG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkKKyAgICAgICAgICAg
ICAgICBtX2ppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhm
cHIsIHJlc3VsdEdwcik7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9JbnQzMiwgcmVzdWx0R3ByLCBm
cHIpOworICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJN
NjQvQTY0RE9wY29kZS5jcHAJKHJldmlzaW9uIDIzNzA5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgxOCw3ICs4MTgsNyBAQCBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2lu
CiAgICAgImZjdnRucyIsICJmY3Z0bnUiLCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZj
dnRhdSIsICJmbW92IiwgImZtb3YiLAogICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwg
MCwgImZtb3YiLCAiZm1vdiIsCiAgICAgImZjdnRtcyIsICJmY3Z0bXUiLCAwLCAwLCAwLCAwLCAw
LCAwLAotICAgICJmY3Z0enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgMCwgMAorICAgICJmY3Z0
enMiLCAiZmN2dHp1IiwgMCwgMCwgMCwgMCwgImZqY3Z0enMiLCAwCiB9OwogCiBjb25zdCBjaGFy
KiBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9uczo6Zm9ybWF0KCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5oCShyZXZpc2lvbiAyMzcwOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcg
KzExNSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNv
bnN0IGNoYXIqIGluc3RydWN0aW9uTmFtZSkKICAgICB7Ci0gICAgICAgIGJ1ZmZlclByaW50Zigi
ICAgJS03LjdzIiwgaW5zdHJ1Y3Rpb25OYW1lKTsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAl
LTguOHMiLCBpbnN0cnVjdGlvbk5hbWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUmVnaXN0
ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJl
dmlzaW9uIDIzNzA5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MjcsNiArMTQ0MjcsMTggQEAgcHJpdmF0ZToK
ICAgICAKICAgICBMVmFsdWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAg
eworI2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN1cHBv
cnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MoKSkgewor
ICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2lu
dChJbnQzMik7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5j
b252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyhwYXJhbXNbMV0uZnBy
KCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgaWYgKGhhc1NlbnNpYmxlRG91
YmxlVG9JbnQoKSkKICAgICAgICAgICAgIHJldHVybiBzZW5zaWJsZURvdWJsZVRvSW50MzIoZG91
YmxlVmFsdWUpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UmlnaHRTaGlmdEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjM3MDkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsMTQgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9y
OjpnZW5lcmF0ZUZhcwogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQu
YnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAg
aml0LnVuYm94RG91YmxlTm9uRGVzdHJ1Y3RpdmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRj
aEdQUiwgbV9zY3JhdGNoRlBSKTsKLSAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBl
bmQoaml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2NyYXRjaEdQ
UikpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdXBwb3J0c0RvdWJsZVRvSW50MzJDb252ZXJzaW9uVXNpbmdKYXZhU2NyaXB0U2VtYW50aWNz
KCkpCisgICAgICAgICAgICAgICAgaml0LmNvbnZlcnREb3VibGVUb0ludDMyVXNpbmdKYXZhU2Ny
aXB0U2VtYW50aWNzKG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGVsc2UK
KyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlz
dC5hcHBlbmQoaml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihtX2xlZnRGUFIsIG1fc2Ny
YXRjaEdQUikpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hpZnRBbW91bnQp
IHsKICAgICAgICAgICAgICAgICBpZiAobV9zaGlmdFR5cGUgPT0gU2lnbmVkU2hpZnQpCkBAIC0x
MjIsNyArMTI5LDE0IEBAIHZvaWQgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXMK
IAogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RO
dW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIGppdC51bmJveERvdWJs
ZU5vbkRlc3RydWN0aXZlKG1fbGVmdCwgbV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRj
aEZQUik7Ci0gICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hU
cnVuY2F0ZURvdWJsZVRvSW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyNpZiBDUFUo
QVJNNjQpCisgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJBUk02NDo6c3VwcG9ydHNEb3Vi
bGVUb0ludDMyQ29udmVyc2lvblVzaW5nSmF2YVNjcmlwdFNlbWFudGljcygpKQorICAgICAgICAg
ICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9JbnQzMlVzaW5nSmF2YVNjcmlwdFNlbWFudGljcyht
X2xlZnRGUFIsIG1fc2NyYXRjaEdQUik7CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5i
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIobV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIpKTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1fc2hpZnRUeXBlID09IFNpZ25lZFNoaWZ0
KQogICAgICAgICAgICAgICAgIGppdC5yc2hpZnQzMihtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9z
Y3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21t
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmgJKHJldmlzaW9uIDIzNzA5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSwxMyBAQCBBTFdBWVNf
SU5MSU5FIGludDMyX3QgdG9JbnQzMkludGVybmFsKGRvCiAKIEFMV0FZU19JTkxJTkUgaW50MzJf
dCB0b0ludDMyKGRvdWJsZSBudW1iZXIpCiB7CisjaWYgSEFWRShGSkNWVFpTX0lOU1RSVUNUSU9O
KQorICAgIGludDMyX3QgcmVzdWx0ID0gMDsKKyAgICBfX2FzbV9fICgiZmpjdnR6cyAldzAsICVk
MSIgOiAiPXIiIChyZXN1bHQpIDogInciIChudW1iZXIpIDogImNjIik7CisgICAgcmV0dXJuIHJl
c3VsdDsKKyNlbHNlCiAgICAgcmV0dXJuIHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2Vu
ZXJpYz4obnVtYmVyKTsKKyNlbmRpZgogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIs
IGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzA5MSkKKysrIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgt
MTAtMTQgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRW1pdCBm
amN2dHpzIG9uIEFSTTY0RSBvbiBEYXJ3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIw
MTgtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBbGxvdyBlbmNvZGluZyBvZiBzbWFsbCBlbnVtIGNsYXNzZXMKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gMjM3MDkxKQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29y
a2luZyBjb3B5KQpAQCAtMTA0Myw2ICsxMDQzLDEwIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYg
Q1BVKEFSTTY0RSkgJiYgT1MoREFSV0lOKQorI2RlZmluZSBIQVZFX0ZKQ1ZUWlNfSU5TVFJVQ1RJ
T04gMQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmICFQTEFURk9STShX
QVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKElPU01BQykKICNkZWZp
bmUgVVNFX1FVSUNLX0xPT0sgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>