<?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>67354</bug_id>
          
          <creation_ts>2011-08-31 20:28:05 -0700</creation_ts>
          <short_desc>ValueProfile does not make it safe to introspect cell values after garbage collection</short_desc>
          <delta_ts>2011-09-02 23:59:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>460191</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 20:28:05 -0700</bug_when>
    <thetext>The ValueProfile class holds 8 recent values seen at a particular JavaScript bytecode site.  But if a value is a JSCell pointer, then after a garbage collection the pointer may no longer be valid.  This prevents clients of the profiler from doing introspection of values beyond checking if they are cells.  For example, it&apos;s not currently safe to check if a value is an array.

The ValueProfile should weakly reference JSCells, but should do it intelligently, so that if the JSCell is deleted by the collector, we still have some information about it: like, what was its structure, or if the structure is also deleted, then what is its class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460194</commentid>
    <comment_count>1</comment_count>
      <attachid>105892</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 20:32:20 -0700</bug_when>
    <thetext>Created attachment 105892
the patch

Still running tests, so this is somewhat of a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460195</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 20:34:02 -0700</bug_when>
    <thetext>Attachment 105892 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/Heap.cpp:591:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/heap/WeakReferenceHarvester.h:75:  &quot;stdint.h&quot; already included at Source/JavaScriptCore/heap/WeakReferenceHarvester.h:23  [build/include] [4]
Total errors found: 2 in 11 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>460197</commentid>
    <comment_count>3</comment_count>
      <attachid>105893</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 20:37:22 -0700</bug_when>
    <thetext>Created attachment 105893
the patch - fix style, build, conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460201</commentid>
    <comment_count>4</comment_count>
      <attachid>105893</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 21:02:47 -0700</bug_when>
    <thetext>Comment on attachment 105893
the patch - fix style, build, conflicts

Passes tests, and does not break the web.  Still plan to do some benchmarking and some more tests of various permutations of profiling enabled.  But it&apos;s ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460211</commentid>
    <comment_count>5</comment_count>
      <attachid>105893</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 21:42:10 -0700</bug_when>
    <thetext>Comment on attachment 105893
the patch - fix style, build, conflicts

Tests pass and the web is usable no matter what permutation of value profiling options I use.  One task left: check performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460220</commentid>
    <comment_count>6</comment_count>
      <attachid>105895</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 22:30:49 -0700</bug_when>
    <thetext>Created attachment 105895
the patch - simplifications

Simplified the WeakReferenceHarvester API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460222</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 22:31:32 -0700</bug_when>
    <thetext>This patch is performance-neutral.  Only differences are ~0.1% and not statistically significant.


Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/fromMiniMe/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;ValueProfileOff&quot; at /Volumes/Data/fromMiniMe/septenary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree            ValueProfileOff                                 
SunSpider:
   3d-cube                                8.2470+-0.0678    ?     8.2512+-0.0164       ?
   3d-morph                               8.1477+-0.0334          8.1383+-0.0191       
   3d-raytrace                            8.2481+-0.0654    ?     8.3196+-0.0619       ?
   access-binary-trees                    2.5407+-0.0381    ?     2.5602+-0.0468       ?
   access-fannkuch                       12.9529+-0.0845         12.9174+-0.0933       
   access-nbody                           4.9614+-0.0487          4.9296+-0.0202       
   access-nsieve                          3.0567+-0.0331    ?     3.0604+-0.0294       ?
   bitops-3bit-bits-in-byte               1.8573+-0.0223          1.8571+-0.0231       
   bitops-bits-in-byte                    5.6315+-0.1239          5.6254+-0.1335       
   bitops-bitwise-and                     4.0975+-0.0087          4.0974+-0.0040       
   bitops-nsieve-bits                     5.6903+-0.0320    ?     5.7280+-0.0336       ?
   controlflow-recursive                  2.2887+-0.0390    ?     2.2975+-0.0341       ?
   crypto-aes                             6.8440+-0.0369    ?     6.8944+-0.0393       ?
   crypto-md5                             3.0490+-0.0421          3.0027+-0.0277         might be 1.0154x faster
   crypto-sha1                            2.4497+-0.0374    ?     2.4579+-0.0359       ?
   date-format-tofte                     10.8528+-0.0671         10.8410+-0.0551       
   date-format-xparb                      9.5181+-0.1963    ?     9.5994+-0.1459       ?
   math-cordic                            7.1568+-0.0921    ?     7.1719+-0.1217       ?
   math-partial-sums                     10.6718+-0.0497    ?    10.6829+-0.0345       ?
   math-spectral-norm                     2.7385+-0.0336          2.7294+-0.0277       
   regexp-dna                            12.0845+-0.1535         12.0535+-0.1141       
   string-base64                          6.5590+-0.1419          6.4790+-0.0848         might be 1.0123x faster
   string-fasta                           8.2849+-0.0352    ?     8.3050+-0.0290       ?
   string-tagcloud                       15.0656+-0.0444         14.9926+-0.0728       
   string-unpack-code                    20.8166+-0.1082         20.7653+-0.0622       
   string-validate-input                  7.3637+-0.3009    ?     7.6644+-0.2635       ? might be 1.0408x slower

   &lt;arithmetic&gt;                           7.3529+-0.0327    ?     7.3624+-0.0254       ?
   &lt;geometric&gt;                            6.0956+-0.0316    ?     6.1052+-0.0280       ?
   &lt;harmonic&gt;                             4.9775+-0.0342    ?     4.9834+-0.0324       ?

                                            TipOfTree            ValueProfileOff                                 
V8:
   crypto                               102.7447+-0.2485    ?   103.1249+-0.2542       ?
   deltablue                            298.6366+-3.7481    ?   299.4765+-2.1650       ?
   earley-boyer                         123.2329+-0.4334        122.7717+-0.3203       
   raytrace                              87.9043+-0.9485         87.6650+-0.1515       
   regexp                               130.8935+-0.4964    !   131.9634+-0.1790       ! definitely 1.0082x slower
   richards                             302.3704+-1.4350    ?   302.8294+-1.5887       ?
   splay                                155.8481+-1.6318    ?   156.0731+-0.9100       ?

   &lt;arithmetic&gt;                         171.6615+-0.4166    ?   171.9863+-0.3329       ?
   &lt;geometric&gt;                          153.9464+-0.1610    ?   154.1990+-0.1916       ?
   &lt;harmonic&gt;                           140.1632+-0.2503    ?   140.3450+-0.1274       ?

                                            TipOfTree            ValueProfileOff                                 
Kraken:
   ai-astar                            1668.8957+-15.1645      1658.5114+-18.9078      
   audio-beat-detection                 542.8552+-3.1601        540.6212+-3.8099       
   audio-dft                            454.6839+-2.3303    ?   454.8397+-2.0129       ?
   audio-fft                            420.1154+-0.7348    !   423.3887+-1.6151       ! definitely 1.0078x slower
   audio-oscillator                     403.3020+-0.8085    ?   404.7480+-0.9289       ?
   imaging-darkroom                     600.3491+-16.2923   ?   613.3811+-10.6584      ? might be 1.0217x slower
   imaging-desaturate                   636.5449+-17.4696       636.1784+-17.4582      
   imaging-gaussian-blur               1859.3143+-3.9366       1855.5966+-4.3500       
   json-parse-financial                  61.4857+-0.2132    !    63.2649+-0.1963       ! definitely 1.0289x slower
   json-stringify-tinderbox              76.2311+-0.4255         75.8158+-0.2337       
   stanford-crypto-aes                  165.7540+-0.4441    ?   166.3629+-0.5324       ?
   stanford-crypto-ccm                  131.5271+-0.6480    ?   132.6696+-0.9418       ?
   stanford-crypto-pbkdf2               374.2624+-1.6078    ?   374.7365+-1.2595       ?
   stanford-crypto-sha256-iterative     144.7434+-0.6826        144.1186+-0.2453       

   &lt;arithmetic&gt;                         538.5760+-1.2589    ?   538.8738+-2.0228       ?
   &lt;geometric&gt;                          339.8348+-0.8563    ?   341.1243+-1.0454       ?
   &lt;harmonic&gt;                           212.5037+-0.4490    !   214.1243+-0.4311       ! definitely 1.0076x slower

                                            TipOfTree            ValueProfileOff                                 
All benchmarks:
   &lt;arithmetic&gt;                         190.0611+-0.3985    ?   190.2034+-0.5963       ?
   &lt;geometric&gt;                           32.6614+-0.1152    ?    32.7347+-0.1047       ?
   &lt;harmonic&gt;                             8.8026+-0.0593    ?     8.8137+-0.0562       ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460228</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 22:41:18 -0700</bug_when>
    <thetext>This is the overhead of value profiling with this patch, with DFG turned off.  As in, it&apos;s the overhead that baseline (before tier-up) code will experience.


Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/fromMiniMe/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;ValueProfileOff&quot; at /Volumes/Data/fromMiniMe/septenary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree            ValueProfileOff                                 
SunSpider:
   3d-cube                                8.8595+-0.0179    !     9.2453+-0.0312       ! definitely 1.0435x slower
   3d-morph                               8.1416+-0.0307    ?     8.2134+-0.0447       ?
   3d-raytrace                            9.4134+-0.0248    !    10.4939+-0.0476       ! definitely 1.1148x slower
   access-binary-trees                    2.2512+-0.0197    !     2.5353+-0.0231       ! definitely 1.1262x slower
   access-fannkuch                       12.9424+-0.0835    !    13.6188+-0.0511       ! definitely 1.0523x slower
   access-nbody                           7.4584+-0.0102    !     8.0224+-0.0572       ! definitely 1.0756x slower
   access-nsieve                          3.8109+-0.0260    ?     3.8529+-0.0177       ? might be 1.0110x slower
   bitops-3bit-bits-in-byte               2.5576+-0.0398    !     2.6751+-0.0281       ! definitely 1.0459x slower
   bitops-bits-in-byte                    6.6623+-0.1132    ^     6.0954+-0.1115       ^ definitely 1.0930x faster
   bitops-bitwise-and                     4.1196+-0.0338    ?     4.1530+-0.0457       ?
   bitops-nsieve-bits                     5.6830+-0.0388    !     5.9572+-0.0279       ! definitely 1.0482x slower
   controlflow-recursive                  2.2253+-0.0410    !     2.5391+-0.0337       ! definitely 1.1410x slower
   crypto-aes                             7.1616+-0.0281    !     7.6889+-0.0542       ! definitely 1.0736x slower
   crypto-md5                             3.1589+-0.0465    !     3.4858+-0.0329       ! definitely 1.1035x slower
   crypto-sha1                            2.6565+-0.0305    !     2.9111+-0.0303       ! definitely 1.0958x slower
   date-format-tofte                     11.7682+-0.0902    !    12.1948+-0.0730       ! definitely 1.0362x slower
   date-format-xparb                      9.6990+-0.1297    ?    10.0291+-0.2465       ? might be 1.0340x slower
   math-cordic                            7.3453+-0.3298    ?     7.3599+-0.0501       ?
   math-partial-sums                     10.4958+-0.0438         10.4889+-0.0372       
   math-spectral-norm                     4.4546+-0.0169    !     4.7794+-0.0634       ! definitely 1.0729x slower
   regexp-dna                            12.0460+-0.1184    ?    12.0732+-0.1311       ?
   string-base64                          5.7189+-0.0666    !     6.0201+-0.0766       ! definitely 1.0527x slower
   string-fasta                           7.9478+-0.0248    !     8.0574+-0.0268       ! definitely 1.0138x slower
   string-tagcloud                       15.2231+-0.0732    ?    15.3147+-0.0470       ?
   string-unpack-code                    20.5997+-0.0690    !    20.9489+-0.1046       ! definitely 1.0170x slower
   string-validate-input                  7.0806+-0.0941    ?     7.2559+-0.1048       ? might be 1.0247x slower

   &lt;arithmetic&gt;                           7.6724+-0.0358    !     7.9235+-0.0279       ! definitely 1.0327x slower
   &lt;geometric&gt;                            6.5102+-0.0354    !     6.7849+-0.0279       ! definitely 1.0422x slower
   &lt;harmonic&gt;                             5.4322+-0.0355    !     5.7459+-0.0297       ! definitely 1.0577x slower

                                            TipOfTree            ValueProfileOff                                 
V8:
   crypto                               206.8537+-0.4849    !   221.1158+-0.9468       ! definitely 1.0689x slower
   deltablue                            267.2850+-0.8388    !   318.9918+-1.8254       ! definitely 1.1935x slower
   earley-boyer                         126.5721+-0.3546    !   139.5270+-0.5612       ! definitely 1.1024x slower
   raytrace                              86.8362+-1.7937    !    93.1722+-0.8733       ! definitely 1.0730x slower
   regexp                               131.3743+-0.5879    ?   132.2735+-0.5262       ?
   richards                             279.6937+-0.7931    !   312.9718+-1.1768       ! definitely 1.1190x slower
   splay                                155.0793+-1.1745    ?   157.0248+-1.3658       ? might be 1.0125x slower

   &lt;arithmetic&gt;                         179.0992+-0.4639    !   196.4396+-0.5115       ! definitely 1.0968x slower
   &lt;geometric&gt;                          165.9162+-0.6798    !   179.3075+-0.4987       ! definitely 1.0807x slower
   &lt;harmonic&gt;                           153.3871+-0.9578    !   163.9957+-0.5743       ! definitely 1.0692x slower

                                            TipOfTree            ValueProfileOff                                 
Kraken:
   ai-astar                            2072.9013+-30.9877   !  2196.3937+-15.3871      ! definitely 1.0596x slower
   audio-beat-detection                 539.6634+-2.2724    !   568.2251+-1.1907       ! definitely 1.0529x slower
   audio-dft                            454.8677+-4.2642    !   488.1209+-3.1658       ! definitely 1.0731x slower
   audio-fft                            421.0421+-0.9320    !   442.3705+-0.5048       ! definitely 1.0507x slower
   audio-oscillator                     379.6714+-5.3440    !   411.9139+-1.8822       ! definitely 1.0849x slower
   imaging-darkroom                     590.8199+-7.1784    ?   597.6895+-3.8731       ? might be 1.0116x slower
   imaging-desaturate                   617.4223+-2.4087    !   649.5490+-4.5528       ! definitely 1.0520x slower
   imaging-gaussian-blur               2176.1665+-7.1226    !  2388.3892+-8.3513       ! definitely 1.0975x slower
   json-parse-financial                  61.9086+-0.2256    !    62.5446+-0.2643       ! definitely 1.0103x slower
   json-stringify-tinderbox              76.1372+-0.2654         75.5563+-0.3188       
   stanford-crypto-aes                  166.0477+-0.6312    !   181.3763+-0.5867       ! definitely 1.0923x slower
   stanford-crypto-ccm                  132.4801+-1.1672    !   143.9892+-0.2739       ! definitely 1.0869x slower
   stanford-crypto-pbkdf2               434.5020+-2.4759    !   441.8006+-2.5230       ! definitely 1.0168x slower
   stanford-crypto-sha256-iterative     160.7851+-0.5561    !   165.1758+-0.5175       ! definitely 1.0273x slower

   &lt;arithmetic&gt;                         591.7440+-2.0751    !   629.5067+-1.1978       ! definitely 1.0638x slower
   &lt;geometric&gt;                          353.0441+-0.4950    !   370.7383+-0.4695       ! definitely 1.0501x slower
   &lt;harmonic&gt;                           216.3901+-0.4013    !   223.6948+-0.3026       ! definitely 1.0338x slower

                                            TipOfTree            ValueProfileOff                                 
All benchmarks:
   &lt;arithmetic&gt;                         207.1828+-0.6364    !   221.1528+-0.3620       ! definitely 1.0674x slower
   &lt;geometric&gt;                           34.6434+-0.1193    !    36.3830+-0.0929       ! definitely 1.0502x slower
   &lt;harmonic&gt;                             9.5985+-0.0615    !    10.1506+-0.0515       ! definitely 1.0575x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460230</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 22:42:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt;                                             TipOfTree            ValueProfileOff                                 

That&apos;s a typo - it should be ValueProfileOn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460238</commentid>
    <comment_count>10</comment_count>
      <attachid>105895</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 22:59:16 -0700</bug_when>
    <thetext>Comment on attachment 105895
the patch - simplifications

Everything looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460263</commentid>
    <comment_count>11</comment_count>
      <attachid>105903</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-31 23:41:09 -0700</bug_when>
    <thetext>Created attachment 105903
the patch - fix a silly bug

Fixed a problem where numberOfSamples() neglected to count buckets that got weakened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461528</commentid>
    <comment_count>12</comment_count>
      <attachid>105903</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-02 14:30:54 -0700</bug_when>
    <thetext>Comment on attachment 105903
the patch - fix a silly bug

Per discussion please fix the two ptr&amp;flags types to work the same way, either +1/-1 or |1/&amp;~1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461602</commentid>
    <comment_count>13</comment_count>
      <attachid>106213</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-02 15:59:38 -0700</bug_when>
    <thetext>Created attachment 106213
the patch - fix review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461704</commentid>
    <comment_count>14</comment_count>
      <attachid>106239</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-02 19:42:48 -0700</bug_when>
    <thetext>Created attachment 106239
the patch - fix conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461705</commentid>
    <comment_count>15</comment_count>
      <attachid>106239</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-02 19:46:37 -0700</bug_when>
    <thetext>Comment on attachment 106239
the patch - fix conflict

Looks like tests are still passing and conflicts are resolved ... ready to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461718</commentid>
    <comment_count>16</comment_count>
      <attachid>106239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 21:02:29 -0700</bug_when>
    <thetext>Comment on attachment 106239
the patch - fix conflict

Rejecting attachment 106239 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
ommit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 64, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 57, in run
    if self._has_valid_reviewer(changelog_entry):
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 42, in _has_valid_reviewer
    if changelog_entry.reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;reviewer&apos;

Full output: http://queues.webkit.org/results/9583839</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461720</commentid>
    <comment_count>17</comment_count>
      <attachid>106242</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-02 21:06:46 -0700</bug_when>
    <thetext>Created attachment 106242
the patch - fix more conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461736</commentid>
    <comment_count>18</comment_count>
      <attachid>106242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 22:13:12 -0700</bug_when>
    <thetext>Comment on attachment 106242
the patch - fix more conflicts

Clearing flags on attachment: 106242

Committed r94477: &lt;http://trac.webkit.org/changeset/94477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461737</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 22:13:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461751</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-02 22:57:57 -0700</bug_when>
    <thetext>It seems like this broke a whole bunch of tests.
http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Tests%29/builds/1984
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/25709
http://build.webkit.org/builders/Qt%20Linux%20Release/builds/37117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461755</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-02 23:15:48 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; It seems like this broke a whole bunch of tests.
&gt; http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Tests%29/builds/1984
&gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/25709
&gt; http://build.webkit.org/builders/Qt%20Linux%20Release/builds/37117

It looks to me like the change started earlier, possibly r94457.
http://build.webkit.org/builders/Qt%20Linux%20Release?numbuilds=50</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461764</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-02 23:59:52 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; It seems like this broke a whole bunch of tests.
&gt; &gt; http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Tests%29/builds/1984
&gt; &gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/25709
&gt; &gt; http://build.webkit.org/builders/Qt%20Linux%20Release/builds/37117
&gt; 
&gt; It looks to me like the change started earlier, possibly r94457.
&gt; http://build.webkit.org/builders/Qt%20Linux%20Release?numbuilds=50

You&apos;re right. I was fooled about build failures. It appears that the failure is caused by http://trac.webkit.org/changeset/94453.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105892</attachid>
            <date>2011-08-31 20:32:20 -0700</date>
            <delta_ts>2011-08-31 20:37:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>weakrefvalueprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>24622</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tldHMg
YXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAgbGln
aHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBh
ZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwgc3Rv
cmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0aGVu
IHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBwb2lu
dGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBpcyB0
dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJbnQz
MnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6CisgICAg
ICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6
OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tl
dDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0NsYXNz
SW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5mbyk6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZvKToK
KyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAq
IGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmhhcnZl
c3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAg
ICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6CisgICAg
ICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVzdGVy
KToKKwogMjAxMS0wOC0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
Mjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0NzlCMTI2RTY5OEMwMEIzQUJG
NSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CkBAIC03MzYsNiArNzM3LDcgQEAKIAkJMEJE
RkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
NDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVj
aW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNp
bWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNSw2ICsxNTE3LDcgQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNw
ZWN0cnVtLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oICovLApAQCAtMjI0NSw2ICsyMjQ4LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAw
QjM0NDYwIC8qIEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0MjYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzMsMTkgKzE0MzMsMjEgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICNpZiBFTkFCTEUoVkVS
Qk9TRV9WQUxVRV9QUk9GSUxFKQotICAgIHByaW50ZigiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOworICAgIGZwcmludGYoc3RkZXJyLCAiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMo
KTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShp
KTsKICAgICAgICAgaWYgKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0IDwgMCkgewogICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
aW50ZigiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw
cmludGYoIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAg
cHJpbnRmKCJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRvdWJsZSA9ICV1LCBjZWxsID0gJXVc
biIsCi0gICAgICAgICAgICAgICBwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSwKLSAgICAgICAg
ICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigpLAotICAgICAgICAgICAgICAgcHJv
ZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgpLAotICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJv
YmFiaWxpdHlPZkNlbGwoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
CisgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUs
IGNlbGwgPSAldSwgYXJyYXkgPSAldVxuIiwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mSW50
MzIoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkNlbGwoKSwKKyAgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQXJyYXkoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTE1MTUsNiArMTUxNyw4IEBAIHZvaWQgRXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFYKIAogdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogeworICAgIGJvb2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSBmYWxzZTsKKyAgICAKICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZtX293
bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEpIHsKQEAgLTE1NjIsNiArMTU2Niw2
MyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVu
c2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIXByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdKQorICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKS5pc0NlbGwoKSkgewor
ICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IFZhbHVlUHJvZmls
ZTo6V2Vha0J1Y2tldCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBpZiAoaGFuZGxlV2Vha1JlZmVy
ZW5jZXMpCisgICAgICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcih0aGlzKTsK
K30KKworYm9vbCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKQor
eworICAgIGZvciAodW5zaWduZWQgcHJvZmlsZUluZGV4ID0gMDsgcHJvZmlsZUluZGV4IDwgbnVt
YmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsrcHJvZmlsZUluZGV4KSB7CisgICAgICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShwcm9maWxlSW5kZXgpOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgVmFsdWVQcm9maWxlOjpudW1i
ZXJPZkJ1Y2tldHM7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghIXByb2ZpbGUtPmJ1Y2tl
dHNbaW5kZXhdKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShwcm9maWxlLT5idWNrZXRzW2luZGV4XSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5i
dWNrZXRzW2luZGV4XSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IGNlbGwtPnN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGU6OldlYWtC
dWNrZXQgd2VhayA9IHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XTsKKyAgICAgICAgICAgIGlm
ICghd2VhayB8fCB3ZWFrLmlzQ2xhc3NJbmZvKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCh3ZWFrLmlzU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHdlYWsuYXNTdHJ1Y3R1cmUoKSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb2ZpbGUt
PndlYWtCdWNrZXRzW2luZGV4XSA9IHdlYWsuYXNTdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBIYW5kbGVySW5mbyogQ29k
ZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5vZGVzLmgiCiAj
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUg
IldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CkBAIC0yMDUsNyArMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogI2VuZGlmCiAKLSAg
ICBjbGFzcyBDb2RlQmxvY2sgeworICAgIGNsYXNzIENvZGVCbG9jazogcHVibGljIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwcm90ZWN0ZWQ6CkBAIC0yMTgsNiArMjE5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfkNvZGVCbG9jaygpOwogCiAgICAgICAg
IHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgYm9vbCB2aXNpdFdl
YWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0
YXRpc3RpY3MoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVl
UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gOTQyNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAK
ICNpZm5kZWYgVmFsdWVQcm9maWxlX2gKICNkZWZpbmUgVmFsdWVQcm9maWxlX2gKIAorI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXcml0ZUJh
cnJpZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NSw3ICs0NywxOCBAQCBzdHJ1Y3QgVmFs
dWVQcm9maWxlIHsKICAgICAgICAgOiBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsr
aSkKLSAgICAgICAgICAgIGJ1Y2tldHNbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVl
KCkpOworICAgICAgICAgICAgYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OworICAgIH0KKyAgICAKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBi
dWNrZXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISFidWNrZXRzW2J1Y2tldF0pIHsKKyAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0c1tidWNrZXRd
KTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gd2Vha0J1Y2tldHNbYnVja2V0
XS5nZXRDbGFzc0luZm8oKTsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTYW1w
bGVzKCkgY29uc3QKQEAgLTY5LDcgKzgyLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAg
ewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tl
dHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0ludDMyKCkpCisgICAgICAgICAgICBpZiAoISFi
dWNrZXRzW2ldICYmIEpTVmFsdWU6OmRlY29kZShidWNrZXRzW2ldKS5pc0ludDMyKCkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTc5LDcgKzkyLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVj
a2V0c1tpXS5nZXQoKS5pc0RvdWJsZSgpKQorICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAm
JiBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0c1tpXSkuaXNEb3VibGUoKSkKICAgICAgICAgICAgICAg
ICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODksNyAr
MTAyLDE3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVj
a2V0czsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0u
Z2V0KCkuaXNDZWxsKCkpCisgICAgICAgICAgICBpZiAoISFjbGFzc0luZm8oaSkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgCisgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheXMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NJbmZvKGkp
ID09ICZKU0FycmF5OjpzX2luZm8pCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTExNSw4ICsxMzgsNzcgQEAgc3RydWN0IFZh
bHVlUHJvZmlsZSB7CiAgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZD
ZWxscygpLCBudW1iZXJPZlNhbXBsZXMoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHBy
b2JhYmlsaXR5T2ZBcnJheSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZVBy
b2JhYmlsaXR5KG51bWJlck9mQXJyYXlzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICB9Cisg
ICAgCiAgICAgaW50IGJ5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+IGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAgICBFbmNv
ZGVkSlNWYWx1ZSBidWNrZXRzW251bWJlck9mQnVja2V0c107CisgICAgCisgICAgY2xhc3MgV2Vh
a0J1Y2tldCB7CisgICAgcHVibGljOgorICAgICAgICBXZWFrQnVja2V0KCkKKyAgICAgICAgICAg
IDogbV92YWx1ZSgwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdl
YWtCdWNrZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgV2Vha0J1Y2tldChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
bykKKyAgICAgICAgICAgIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2xh
c3NJbmZvKSArIDEpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fdmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgYm9vbCBpc0NsYXNzSW5mbygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAhIShtX3ZhbHVlICYgMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGJvb2wgaXNTdHJ1Y3R1cmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
IWlzRW1wdHkoKSAmJiAhaXNDbGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3RydWN0dXJlKiBhc1N0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChpc1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFN0cnVjdHVyZSo+KG1fdmFsdWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGFzQ2xhc3NJbmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGlzQ2xhc3NJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Q2xhc3NJbmZvKj4obV92YWx1ZSAtIDEpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGdldENsYXNzSW5mbygpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICBpZiAoaXNDbGFzc0luZm8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNDbGFz
c0luZm8oKTsKKyAgICAgICAgICAgIHJldHVybiBhc1N0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB1aW50cHRyX3QgbV92
YWx1ZTsKKyAgICB9OworICAgIAorICAgIFdlYWtCdWNrZXQgd2Vha0J1Y2tldHNbbnVtYmVyT2ZC
dWNrZXRzXTsgLy8gdGhpcyBpcyBub3QgY292ZXJlZCBieSBhIHdyaXRlIGJhcnJpZXIgYmVjYXVz
ZSBpdCBpcyBvbmx5IHNldCBmcm9tIEdDCiB9OwogCiBpbmxpbmUgaW50IGdldFZhbHVlUHJvZmls
ZUJ5dGVjb2RlT2Zmc2V0KFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDk0MjYzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMyw2ICs1MTMsMTEg
QEAgdm9pZCBIZWFwOjptYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VgogICAgIH0KIH0KIAor
dm9pZCBIZWFwOjpoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKQoreworICAgIG1fc2xvdFZpc2l0b3Iu
aGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7Cit9CisKIGlubGluZSBSZWdpc3RlckZpbGUmIEhlYXA6
OnJlZ2lzdGVyRmlsZSgpCiB7CiAgICAgcmV0dXJuIG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpOwpAQCAtNTgxLDYgKzU4NiwxMiBAQCB2b2lkIEhlYXA6Om1hcmtSb290
cygpCiAgICAgbV9oYW5kbGVTdGFjay52aXNpdChoZWFwUm9vdFZpc2l0b3IpOwogICAgIHZpc2l0
b3IuZHJhaW4oKTsKIAorICAgIC8vIFdlYWsgcmVmZXJlbmNlcyBhcmUgYSBzcGVjaWFsIGZvcm0g
b2YgZXBoZW1lcm9uIHVzZWQgZm9yIGludGVybmFsIFZNIGNhY2hpbmcuCisgICAgLy8gVGhleSBt
YXkgY2F1c2UgYWRkaXRpb25hbCBzdGF0ZSB0byBiZWNvbWUgbGl2ZSwgc28gdGhleSBhcmUgaGFu
ZGxlZCBiZWZvcmUKKyAgICAvLyB3ZWFrIGhhbmRsZXMuICBDb252ZXJzZWx5LCB0aGV5IG5ldmVy
IGRlcGVuZCBvbiB3ZWFrIGhhbmRsZXMsIGFuZCBzbyBpdCBpcworICAgIC8vIHNhZmUgdG8gcHJv
Y2VzcyB0aGVtIGZpcnN0LgorICAgIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworCiAgICAgLy8g
V2VhayBoYW5kbGVzIG11c3QgYmUgbWFya2VkIGxhc3QsIGJlY2F1c2UgdGhlaXIgb3duZXJzIHVz
ZSB0aGUgc2V0IG9mCiAgICAgLy8gb3BhcXVlIHJvb3RzIHRvIGRldGVybWluZSByZWFjaGFiaWxp
dHkuCiAgICAgaW50IGxhc3RPcGFxdWVSb290Q291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIG1hcmtSb290cygpOwogICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRP
YmplY3RzKEhlYXBSb290VmlzaXRvciYpOwogICAgICAgICB2b2lkIG1hcmtUZW1wU29ydFZlY3Rv
cnMoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2Vz
KCk7CiAKICAgICAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTmV3U3BhY2U6OlNpemVDbGFzcyYpOwog
ICAgICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gOTQy
NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MywxMyArODMsMTUgQEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0
Q2hpbGRyZW4oSgogICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogfQogCi12b2lkIFNs
b3RWaXNpdG9yOjpkcmFpbigpCitib29sIFNsb3RWaXNpdG9yOjpkcmFpbigpCiB7CisgICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQVNTRVJUKCFtX2lz
RHJhaW5pbmcpOwogICAgIG1faXNEcmFpbmluZyA9IHRydWU7CiAjZW5kaWYKICAgICB3aGlsZSAo
IW1fbWFya1NldHMuaXNFbXB0eSgpIHx8ICFtX3ZhbHVlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgd2hpbGUgKCFtX21hcmtTZXRzLmlzRW1wdHkoKSAmJiBt
X3ZhbHVlcy5zaXplKCkgPCA1MCkgewogICAgICAgICAgICAgQVNTRVJUKCFtX21hcmtTZXRzLmlz
RW1wdHkoKSk7CiAgICAgICAgICAgICBNYXJrU2V0JiBjdXJyZW50ID0gbV9tYXJrU2V0cy5sYXN0
KCk7CkBAIC0xMzQsNiArMTM2LDI0IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgbV9pc0RyYWluaW5nID0gZmFsc2U7CiAjZW5kaWYKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIFNsb3RWaXNpdG9yOjpoYXJ2ZXN0V2Vha1JlZmVyZW5j
ZXMoKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgCisgICAgd2hpbGUgKG1fZmly
c3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKSB7CisgICAgICAgIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIqIGN1cnJlbnQgPSBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcjsKKyAgICAgICAgV2Vh
a1JlZmVyZW5jZUhhcnZlc3RlciogbmV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha1JlZmVyZW5j
ZUhhcnZlc3Rlcio+KGN1cnJlbnQtPm1fbmV4dEFuZEZsYWcgJiB+MSk7CisgICAgICAgIGlmIChj
dXJyZW50LT52aXNpdFdlYWtSZWZlcmVuY2VzKCp0aGlzKSkKKyAgICAgICAgICAgIGRyYWluKCk7
CisgICAgICAgIGN1cnJlbnQtPm1fbmV4dEFuZEZsYWcgPSAwOworICAgICAgICBtX2ZpcnN0V2Vh
a1JlZmVyZW5jZUhhcnZlc3RlciA9IG5leHQ7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAg
fQorICAgIAorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCShyZXZpc2lvbiA5
NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiVlRhYmxlU3BlY3RydW0uaCIKKyNpbmNsdWRlICJXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkzLDYgKzk0LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7CiAgICAgICAgIGlubGluZSB2b2lkIGFw
cGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKICAg
ICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIGlubGluZSB2b2lk
IGFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiopOworICAgICAgICAKICAgICAgICAgYm9vbCBh
ZGRPcGFxdWVSb290KHZvaWQqKTsKICAgICAgICAgYm9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9p
ZCopOwogICAgICAgICBpbnQgb3BhcXVlUm9vdENvdW50KCk7CkBAIC0xMDMsNiArMTA3LDE0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291
bnRzOwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqIHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrUmVmZXJlbmNlSGFydmVzdGVyLT5tX25leHRBbmRGbGFnICYg
MSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB3ZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLT5tX25leHRBbmRGbGFnID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fZmly
c3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKSB8IDE7CisgICAgICAgICAgICBtX2ZpcnN0V2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlciA9IHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CisgICAgICAgIH0KKwog
ICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgc3RhdGlj
IHZvaWQgdmFsaWRhdGVTZXQoSlNWYWx1ZSosIHNpemVfdCk7CkBAIC0xMjAsNiArMTMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtTdGFja0FycmF5PE1hcmtTZXQ+IG1fbWFya1Nl
dHM7CiAgICAgICAgIE1hcmtTdGFja0FycmF5PEpTQ2VsbCo+IG1fdmFsdWVzOwogICAgICAgICBI
YXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJvb3RzOyAvLyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0
dXJlcyBub3QgdmlzaWJsZSB0byB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisgICAgICAgIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIqIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyOwogICAgICAg
ICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgcHVibGljOgpAQCAtMTMwLDYgKzE0Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKHZvaWQq
IGpzQXJyYXlWUHRyKQogICAgICAgICA6IG1fanNBcnJheVZQdHIoanNBcnJheVZQdHIpCisgICAg
ICAgICwgbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoMCkKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgICwgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2Up
CiAgICAgICAgICwgbV9pc0RyYWluaW5nKGZhbHNlKQpAQCAtMjU1LDYgKzI2OSwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHNs
b3QsIHNsb3QgKyBjb3VudCkpOwogICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoqIHNs
b3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEpTQ2VsbCogdmFsdWUg
PSAqc2xvdDsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQo
dmFsdWUpOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjph
cHBlbmQoSlNWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCShyZXZpc2lvbiA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDkgQEAg
Y2xhc3MgU2xvdFZpc2l0b3IgOiBwdWJsaWMgTWFya1N0YWNrIHsKIHB1YmxpYzoKICAgICBTbG90
VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0cik7CiAKLSAgICB2b2lkIGRyYWluKCk7Ci0KKyAgICBi
b29sIGRyYWluKCk7CisgICAgYm9vbCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKKyAgICAKIHBy
aXZhdGU6CiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCopOwogfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
X2gKKyNkZWZpbmUgV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCisKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hcmtTdGFjazsKK2NsYXNzIFNsb3RWaXNp
dG9yOworCitjbGFzcyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKK3B1YmxpYzoKKyAgICAvLyBN
dXN0IHJldHVybiB0cnVlIGlmIHRoZSBzbG90IHZpc2l0b3Igc2hvdWxkIGJlIGRyYWluZWQuCisg
ICAgdmlydHVhbCBib29sIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSA9IDA7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpCisgICAgICAgIDog
bV9uZXh0QW5kRmxhZygwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+V2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlcigpIHsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNYXJr
U3RhY2s7CisgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgIAorICAgIHVpbnRwdHJf
dCBtX25leHRBbmRGbGFnOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyX2gKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoK
KyAqLworCisjaWZuZGVmIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJfaAorI2RlZmluZSBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyX2gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgTWFya1N0YWNrOworY2xhc3MgU2xvdFZpc2l0b3I7CisKK2NsYXNzIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtS
ZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgPSAwOworICAgIAorcHJvdGVjdGVkOgorICAgIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIoKQorICAgICAgICA6IG1fbmV4dEFuZEZsYWcoMCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgfldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKSB7IH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWFya1N0YWNrOworICAgIGZyaWVuZCBjbGFzcyBT
bG90VmlzaXRvcjsKKyAgICAKKyAgICB1aW50cHRyX3QgbV9uZXh0QW5kRmxhZzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105893</attachid>
            <date>2011-08-31 20:37:22 -0700</date>
            <delta_ts>2011-08-31 22:30:49 -0700</delta_ts>
            <desc>the patch - fix style, build, conflicts</desc>
            <filename>weakrefvalueprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>23257</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tldHMg
YXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAgbGln
aHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBh
ZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwgc3Rv
cmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0aGVu
IHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBwb2lu
dGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBpcyB0
dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJbnQz
MnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6CisgICAg
ICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6
OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tl
dDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0NsYXNz
SW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5mbyk6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZvKToK
KyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAq
IGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmhhcnZl
c3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAg
ICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6CisgICAg
ICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVzdGVy
KToKKwogMjAxMS0wOC0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
Mjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0NzlCMTI2RTY5OEMwMEIzQUJG
NSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CkBAIC03MzYsNiArNzM3LDcgQEAKIAkJMEJE
RkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
NDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVj
aW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNp
bWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNSw2ICsxNTE3LDcgQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNw
ZWN0cnVtLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oICovLApAQCAtMjI0NSw2ICsyMjQ4LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAw
QjM0NDYwIC8qIEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0MjYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzMsMTkgKzE0MzMsMjEgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICNpZiBFTkFCTEUoVkVS
Qk9TRV9WQUxVRV9QUk9GSUxFKQotICAgIHByaW50ZigiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOworICAgIGZwcmludGYoc3RkZXJyLCAiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMo
KTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShp
KTsKICAgICAgICAgaWYgKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0IDwgMCkgewogICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
aW50ZigiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw
cmludGYoIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAg
cHJpbnRmKCJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRvdWJsZSA9ICV1LCBjZWxsID0gJXVc
biIsCi0gICAgICAgICAgICAgICBwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSwKLSAgICAgICAg
ICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigpLAotICAgICAgICAgICAgICAgcHJv
ZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgpLAotICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJv
YmFiaWxpdHlPZkNlbGwoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
CisgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUs
IGNlbGwgPSAldSwgYXJyYXkgPSAldVxuIiwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mSW50
MzIoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkNlbGwoKSwKKyAgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQXJyYXkoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTE1MTUsNiArMTUxNyw4IEBAIHZvaWQgRXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFYKIAogdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogeworICAgIGJvb2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSBmYWxzZTsKKyAgICAKICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZtX293
bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEpIHsKQEAgLTE1NjIsNiArMTU2Niw2
NSBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVu
c2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIXByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdKQorICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKS5pc0NlbGwoKSkgewor
ICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IFZhbHVlUHJvZmls
ZTo6V2Vha0J1Y2tldCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBpZiAoaGFuZGxlV2Vha1JlZmVy
ZW5jZXMpCisgICAgICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcih0aGlzKTsK
K30KKworYm9vbCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKQor
eworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVuc2lnbmVkIHByb2ZpbGVJ
bmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK3Byb2Zp
bGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUo
cHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBpZiAoISFwcm9maWxlLT5idWNrZXRzW2luZGV4XSkgeworICAgICAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUocHJvZmlsZS0+YnVja2V0c1tpbmRleF0p
OworICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgcHJvZmlsZS0+YnVja2V0c1tpbmRleF0gPSBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRl
eF0gPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgVmFsdWVQcm9maWxlOjpXZWFrQnVja2V0IHdlYWsgPSBwcm9maWxlLT53ZWFrQnVj
a2V0c1tpbmRleF07CisgICAgICAgICAgICBpZiAoIXdlYWsgfHwgd2Vhay5pc0NsYXNzSW5mbygp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
U1NFUlQod2Vhay5pc1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZCh3ZWFrLmFzU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF0gPSB3ZWFrLmFz
U3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5NDI2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0
LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0yMDUsNyArMjA2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfQogI2VuZGlmCiAKLSAgICBjbGFzcyBDb2RlQmxvY2sgewor
ICAgIGNsYXNzIENvZGVCbG9jazogcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICBwcm90ZWN0ZWQ6CkBAIC0yMTgsNiArMjE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZpcnR1YWwgfkNvZGVCbG9jaygpOwogCiAgICAgICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0b3ImKTsKKyAgICAgICAgYm9vbCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNp
dG9yJik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNp
b24gOTQyNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZm5kZWYgVmFsdWVQcm9maWxl
X2gKICNkZWZpbmUgVmFsdWVQcm9maWxlX2gKIAorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC00NSw3ICs0NywxOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAg
OiBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIGJ1Y2tl
dHNbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOworICAgICAgICAgICAgYnVj
a2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIH0KKyAgICAKKyAgICBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoISFidWNrZXRzW2J1Y2tldF0pIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0c1tidWNrZXRdKTsKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gd2Vha0J1Y2tldHNbYnVja2V0XS5nZXRDbGFzc0luZm8oKTsKICAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKQEAgLTY5LDcg
KzgyLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNr
ZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5n
ZXQoKS5pc0ludDMyKCkpCisgICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIEpTVmFsdWU6
OmRlY29kZShidWNrZXRzW2ldKS5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc5LDcgKzkyLDcgQEAgc3Ry
dWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsK
LSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0RvdWJs
ZSgpKQorICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBKU1ZhbHVlOjpkZWNvZGUoYnVj
a2V0c1tpXSkuaXNEb3VibGUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODksNyArMTAyLDE3IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNDZWxsKCkpCisgICAg
ICAgICAgICBpZiAoISFjbGFzc0luZm8oaSkpCisgICAgICAgICAgICAgICAgcmVzdWx0Kys7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZBcnJheXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsg
KytpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NJbmZvKGkpID09ICZKU0FycmF5OjpzX2luZm8p
CiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTExNSw4ICsxMzgsNzcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAg
IHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZDZWxscygpLCBudW1iZXJPZlNhbXBs
ZXMoKSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHByb2JhYmlsaXR5T2ZBcnJheSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZVByb2JhYmlsaXR5KG51bWJlck9mQXJy
YXlzKCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCiAgICAgaW50IGJ5dGVjb2Rl
T2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
IGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBidWNrZXRzW251
bWJlck9mQnVja2V0c107CisgICAgCisgICAgY2xhc3MgV2Vha0J1Y2tldCB7CisgICAgcHVibGlj
OgorICAgICAgICBXZWFrQnVja2V0KCkKKyAgICAgICAgICAgIDogbV92YWx1ZSgwKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdlYWtCdWNrZXQoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHN0cnVjdHVyZSkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
V2Vha0J1Y2tldChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICAgICAgICAgIDogbV92
YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2xhc3NJbmZvKSArIDEpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fdmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiAhbV92YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Ns
YXNzSW5mbygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhIShtX3ZhbHVl
ICYgMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTdHJ1Y3R1cmUoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIWlzRW1wdHkoKSAmJiAhaXNDbGFz
c0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RydWN0dXJlKiBhc1N0cnVj
dHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc1N0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KG1fdmFs
dWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBDbGFzc0luZm8qIGFzQ2xh
c3NJbmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzQ2xhc3NJbmZv
KCkpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2xhc3NJbmZvKj4obV92
YWx1ZSAtIDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGdldENsYXNzSW5mbygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDbGFzc0lu
Zm8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNDbGFzc0luZm8oKTsKKyAgICAgICAgICAg
IHJldHVybiBhc1N0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICBwcml2YXRlOgorICAgICAgICB1aW50cHRyX3QgbV92YWx1ZTsKKyAgICB9OworICAgIAor
ICAgIFdlYWtCdWNrZXQgd2Vha0J1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsgLy8gdGhpcyBpcyBu
b3QgY292ZXJlZCBieSBhIHdyaXRlIGJhcnJpZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHNldCBmcm9t
IEdDCiB9OwogCiBpbmxpbmUgaW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFZhbHVl
UHJvZmlsZSogdmFsdWVQcm9maWxlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDk0MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMyw2ICs1MTMsMTEgQEAgdm9pZCBIZWFwOjptYXJrVGVt
cFNvcnRWZWN0b3JzKEhlYXBSb290VgogICAgIH0KIH0KIAordm9pZCBIZWFwOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoKQoreworICAgIG1fc2xvdFZpc2l0b3IuaGFydmVzdFdlYWtSZWZlcmVuY2Vz
KCk7Cit9CisKIGlubGluZSBSZWdpc3RlckZpbGUmIEhlYXA6OnJlZ2lzdGVyRmlsZSgpCiB7CiAg
ICAgcmV0dXJuIG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwpAQCAt
NTgxLDYgKzU4NiwxMiBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgbV9oYW5kbGVTdGFj
ay52aXNpdChoZWFwUm9vdFZpc2l0b3IpOwogICAgIHZpc2l0b3IuZHJhaW4oKTsKIAorICAgIC8v
IFdlYWsgcmVmZXJlbmNlcyBhcmUgYSBzcGVjaWFsIGZvcm0gb2YgZXBoZW1lcm9uIHVzZWQgZm9y
IGludGVybmFsIFZNIGNhY2hpbmcuCisgICAgLy8gVGhleSBtYXkgY2F1c2UgYWRkaXRpb25hbCBz
dGF0ZSB0byBiZWNvbWUgbGl2ZSwgc28gdGhleSBhcmUgaGFuZGxlZCBiZWZvcmUKKyAgICAvLyB3
ZWFrIGhhbmRsZXMuIENvbnZlcnNlbHksIHRoZXkgbmV2ZXIgZGVwZW5kIG9uIHdlYWsgaGFuZGxl
cywgYW5kIHNvIGl0IGlzCisgICAgLy8gc2FmZSB0byBwcm9jZXNzIHRoZW0gZmlyc3QuCisgICAg
aGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CisKICAgICAvLyBXZWFrIGhhbmRsZXMgbXVzdCBiZSBt
YXJrZWQgbGFzdCwgYmVjYXVzZSB0aGVpciBvd25lcnMgdXNlIHRoZSBzZXQgb2YKICAgICAvLyBv
cGFxdWUgcm9vdHMgdG8gZGV0ZXJtaW5lIHJlYWNoYWJpbGl0eS4KICAgICBpbnQgbGFzdE9wYXF1
ZVJvb3RDb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDk0
MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNiArMTQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFya1Jv
b3RzKCk7CiAgICAgICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9y
Jik7CiAgICAgICAgIHZvaWQgbWFya1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3ImKTsK
KyAgICAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKIAogICAgICAgICB2b2lkKiB0
cnlBbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRl
U2xvd0Nhc2UoTmV3U3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiA5NDI2MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4Mywx
NSBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKCiAgICAgY2VsbC0+
dmlzaXRDaGlsZHJlbigqdGhpcyk7CiB9CiAKLXZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKK2Jv
b2wgU2xvdFZpc2l0b3I6OmRyYWluKCkKIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICBBU1NFUlQoIW1faXNEcmFpbmluZyk7CiAgICAgbV9pc0Ry
YWluaW5nID0gdHJ1ZTsKICNlbmRpZgogICAgIHdoaWxlICghbV9tYXJrU2V0cy5pc0VtcHR5KCkg
fHwgIW1fdmFsdWVzLmlzRW1wdHkoKSkgeworICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAg
ICB3aGlsZSAoIW1fbWFya1NldHMuaXNFbXB0eSgpICYmIG1fdmFsdWVzLnNpemUoKSA8IDUwKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIW1fbWFya1NldHMuaXNFbXB0eSgpKTsKICAgICAgICAgICAg
IE1hcmtTZXQmIGN1cnJlbnQgPSBtX21hcmtTZXRzLmxhc3QoKTsKQEAgLTEzNCw2ICsxMzYsMjQg
QEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBt
X2lzRHJhaW5pbmcgPSBmYWxzZTsKICNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jv
b2wgU2xvdFZpc2l0b3I6OmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpCit7CisgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKKyAgICAKKyAgICB3aGlsZSAobV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIpIHsKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogY3VycmVudCA9IG1fZmlyc3RX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyOworICAgICAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiBu
ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxXZWFrUmVmZXJlbmNlSGFydmVzdGVyKj4oY3VycmVudC0+
bV9uZXh0QW5kRmxhZyAmIH4xKTsKKyAgICAgICAgaWYgKGN1cnJlbnQtPnZpc2l0V2Vha1JlZmVy
ZW5jZXMoKnRoaXMpKQorICAgICAgICAgICAgZHJhaW4oKTsKKyAgICAgICAgY3VycmVudC0+bV9u
ZXh0QW5kRmxhZyA9IDA7CisgICAgICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyID0g
bmV4dDsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDk0MjYzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRl
ICJWVGFibGVTcGVjdHJ1bS5oIgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTMsNiArOTQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYXBwZW5kKFdyaXRlQmFycmll
ckJhc2U8VD4qKTsKICAgICAgICAgaW5saW5lIHZvaWQgYXBwZW5kVmFsdWVzKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qLCBzaXplX3QgY291bnQpOwogICAgICAgICAKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICAgICAgaW5saW5lIHZvaWQgYXBwZW5kVW5iYXJyaWVyZWRQb2lu
dGVyKFQqKik7CisgICAgICAgIAogICAgICAgICBib29sIGFkZE9wYXF1ZVJvb3Qodm9pZCopOwog
ICAgICAgICBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKik7CiAgICAgICAgIGludCBvcGFx
dWVSb290Q291bnQoKTsKQEAgLTEwMyw2ICsxMDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFZUYWJsZVNwZWN0cnVtIG1fdmlzaXRlZFR5cGVDb3VudHM7CiAjZW5kaWYKIAorICAgICAg
ICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5jZUhhcnZlc3Rlciog
d2Vha1JlZmVyZW5jZUhhcnZlc3RlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXItPm1fbmV4dEFuZEZsYWcgJiAxKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXItPm1fbmV4dEFuZEZsYWcg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIpIHwgMTsKKyAgICAgICAgICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyID0gd2Vh
a1JlZmVyZW5jZUhhcnZlc3RlcjsKKyAgICAgICAgfQorCiAgICAgcHJvdGVjdGVkOgogI2lmIEVO
QUJMRShHQ19WQUxJREFUSU9OKQogICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVNldChKU1Zh
bHVlKiwgc2l6ZV90KTsKQEAgLTEyMCw2ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFya1N0YWNrQXJyYXk8TWFya1NldD4gbV9tYXJrU2V0czsKICAgICAgICAgTWFya1N0YWNr
QXJyYXk8SlNDZWxsKj4gbV92YWx1ZXM7CiAgICAgICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVl
Um9vdHM7IC8vIEhhbmRsZS1vd25pbmcgZGF0YSBzdHJ1Y3R1cmVzIG5vdCB2aXNpYmxlIHRvIHRo
ZSBnYXJiYWdlIGNvbGxlY3Rvci4KKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogbV9m
aXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBwdWJsaWM6CkBAIC0xMzAsNiArMTQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBpbmxpbmUgTWFya1N0YWNrOjpNYXJrU3RhY2sodm9pZCoganNBcnJheVZQdHIpCiAgICAgICAg
IDogbV9qc0FycmF5VlB0cihqc0FycmF5VlB0cikKKyAgICAgICAgLCBtX2ZpcnN0V2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcigwKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBtX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2lzRHJhaW5p
bmcoZmFsc2UpCkBAIC0yNTUsNiArMjY5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAg
ICAgICAgIG1fbWFya1NldHMuYXBwZW5kKE1hcmtTZXQoc2xvdCwgc2xvdCArIGNvdW50KSk7CiAg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgdm9pZCBNYXJrU3Rh
Y2s6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiogc2xvdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChzbG90KTsKKyAgICAgICAgSlNDZWxsKiB2YWx1ZSA9ICpzbG90OworICAgICAgICBpZiAo
dmFsdWUpCisgICAgICAgICAgICBpbnRlcm5hbEFwcGVuZCh2YWx1ZSk7CisgICAgfQogICAgIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1ZhbHVlKiB2YWx1ZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJl
dmlzaW9uIDk0MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOSBAQCBjbGFzcyBTbG90VmlzaXRvciA6IHB1
YmxpYyBNYXJrU3RhY2sgewogcHVibGljOgogICAgIFNsb3RWaXNpdG9yKHZvaWQqIGpzQXJyYXlW
UHRyKTsKIAotICAgIHZvaWQgZHJhaW4oKTsKLQorICAgIGJvb2wgZHJhaW4oKTsKKyAgICBib29s
IGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKik7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICov
CisKKyNpZm5kZWYgV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCisjZGVmaW5lIFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXJfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBNYXJrU3RhY2s7CitjbGFzcyBTbG90VmlzaXRvcjsKKworY2xhc3MgV2Vha1JlZmVy
ZW5jZUhhcnZlc3RlciB7CitwdWJsaWM6CisgICAgLy8gTXVzdCByZXR1cm4gdHJ1ZSBpZiB0aGUg
c2xvdCB2aXNpdG9yIHNob3VsZCBiZSBkcmFpbmVkLgorICAgIHZpcnR1YWwgYm9vbCB2aXNpdFdl
YWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgPSAwOworICAgIAorcHJvdGVjdGVkOgorICAgIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKQorICAgICAgICA6IG1fbmV4dEFuZEZsYWcoMCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgfldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKSB7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWFya1N0YWNrOworICAgIGZyaWVuZCBjbGFz
cyBTbG90VmlzaXRvcjsKKyAgICAKKyAgICB1aW50cHRyX3QgbV9uZXh0QW5kRmxhZzsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105895</attachid>
            <date>2011-08-31 22:30:49 -0700</date>
            <delta_ts>2011-08-31 23:41:09 -0700</delta_ts>
            <desc>the patch - simplifications</desc>
            <filename>weakrefvalueprofile_patch_3.diff</filename>
            <type>text/plain</type>
            <size>22203</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tldHMg
YXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAgbGln
aHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBh
ZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwgc3Rv
cmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0aGVu
IHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBwb2lu
dGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBpcyB0
dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJbnQz
MnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6CisgICAg
ICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6
OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tl
dDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0NsYXNz
SW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5mbyk6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZvKToK
KyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAq
IGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmhhcnZl
c3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAg
ICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6CisgICAg
ICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVzdGVy
KToKKwogMjAxMS0wOC0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA5NDI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
Mjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0NzlCMTI2RTY5OEMwMEIzQUJG
NSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CkBAIC03MzYsNiArNzM3LDcgQEAKIAkJMEJE
RkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
NDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVj
aW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNp
bWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNSw2ICsxNTE3LDcgQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNw
ZWN0cnVtLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oICovLApAQCAtMjI0NSw2ICsyMjQ4LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAw
QjM0NDYwIC8qIEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0MjY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzMsMTkgKzE0MzMsMjEgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICNpZiBFTkFCTEUoVkVS
Qk9TRV9WQUxVRV9QUk9GSUxFKQotICAgIHByaW50ZigiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOworICAgIGZwcmludGYoc3RkZXJyLCAiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMo
KTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShp
KTsKICAgICAgICAgaWYgKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0IDwgMCkgewogICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
aW50ZigiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw
cmludGYoIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAg
cHJpbnRmKCJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRvdWJsZSA9ICV1LCBjZWxsID0gJXVc
biIsCi0gICAgICAgICAgICAgICBwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSwKLSAgICAgICAg
ICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigpLAotICAgICAgICAgICAgICAgcHJv
ZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgpLAotICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJv
YmFiaWxpdHlPZkNlbGwoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
CisgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUs
IGNlbGwgPSAldSwgYXJyYXkgPSAldVxuIiwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mSW50
MzIoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkNlbGwoKSwKKyAgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQXJyYXkoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTE1MTUsNiArMTUxNyw4IEBAIHZvaWQgRXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFYKIAogdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogeworICAgIGJvb2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSBmYWxzZTsKKyAgICAKICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZtX293
bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEpIHsKQEAgLTE1NjIsNiArMTU2Niw2
NCBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVu
c2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIXByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdKQorICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKS5pc0NlbGwoKSkgewor
ICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IFZhbHVlUHJvZmls
ZTo6V2Vha0J1Y2tldCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBpZiAoaGFuZGxlV2Vha1JlZmVy
ZW5jZXMpCisgICAgICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcih0aGlzKTsK
K30KKwordm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKQor
eworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVuc2lnbmVkIHByb2ZpbGVJ
bmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK3Byb2Zp
bGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUo
cHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBpZiAoISFwcm9maWxlLT5idWNrZXRzW2luZGV4XSkgeworICAgICAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUocHJvZmlsZS0+YnVja2V0c1tpbmRleF0p
OworICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgcHJvZmlsZS0+YnVja2V0c1tpbmRleF0gPSBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRl
eF0gPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgVmFsdWVQcm9maWxlOjpXZWFrQnVja2V0IHdlYWsgPSBwcm9maWxlLT53ZWFrQnVj
a2V0c1tpbmRleF07CisgICAgICAgICAgICBpZiAoIXdlYWsgfHwgd2Vhay5pc0NsYXNzSW5mbygp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
U1NFUlQod2Vhay5pc1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZCh3ZWFrLmFzU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF0gPSB3ZWFrLmFz
U3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAK
IEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDk0MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJVU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogI2luY2x1ZGUgIlZh
bHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTIwNSw3ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9CiAjZW5kaWYKIAotICAgIGNsYXNzIENvZGVCbG9jayB7CisgICAgY2xhc3MgQ29kZUJsb2Nr
OiBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHByb3RlY3RlZDoKQEAg
LTIxOCw2ICsyMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB+Q29kZUJs
b2NrKCk7CiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAg
ICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBz
dGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiA5NDI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksOCBAQAogI2lmbmRlZiBWYWx1ZVByb2ZpbGVfaAogI2RlZmluZSBWYWx1ZVBy
b2ZpbGVfaAogCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ1LDcgKzQ3
LDE4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQnVja2V0czsgKytpKQotICAgICAgICAgICAgYnVja2V0c1tpXS5zZXRXaXRob3V0V3Jp
dGVCYXJyaWVyKEpTVmFsdWUoKSk7CisgICAgICAgICAgICBidWNrZXRzW2ldID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgfQorICAgIAorICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKHVuc2lnbmVkIGJ1Y2tldCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghIWJ1Y2tl
dHNbYnVja2V0XSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShidWNrZXRzW2J1Y2tldF0pOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB3
ZWFrQnVja2V0c1tidWNrZXRdLmdldENsYXNzSW5mbygpOwogICAgIH0KICAgICAKICAgICB1bnNp
Z25lZCBudW1iZXJPZlNhbXBsZXMoKSBjb25zdApAQCAtNjksNyArODIsNyBAQCBzdHJ1Y3QgVmFs
dWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzSW50MzIoKSkKKyAg
ICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgSlNWYWx1ZTo6ZGVjb2RlKGJ1Y2tldHNbaV0p
LmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNzksNyArOTIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsK
ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEh
YnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisgICAgICAgICAgICBp
ZiAoISFidWNrZXRzW2ldICYmIEpTVmFsdWU6OmRlY29kZShidWNrZXRzW2ldKS5pc0RvdWJsZSgp
KQogICAgICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC04OSw3ICsxMDIsMTcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewog
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNb
aV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0NlbGwoKSkKKyAgICAgICAgICAgIGlmICghIWNsYXNz
SW5mbyhpKSkKKyAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5cygp
IGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChjbGFzc0luZm8oaSkgPT0gJkpTQXJyYXk6OnNfaW5mbykKICAgICAgICAgICAgICAgICBy
ZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE1LDggKzEz
OCw3NyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9i
YWJpbGl0eShudW1iZXJPZkNlbGxzKCksIG51bWJlck9mU2FtcGxlcygpKTsKICAgICB9CiAgICAg
CisgICAgdW5zaWduZWQgcHJvYmFiaWxpdHlPZkFycmF5KCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZBcnJheXMoKSwgbnVtYmVyT2ZTYW1w
bGVzKCkpOworICAgIH0KKyAgICAKICAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBw
cm9sb2d1ZQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gYnVja2V0c1tudW1iZXJPZkJ1
Y2tldHNdOworICAgIEVuY29kZWRKU1ZhbHVlIGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAg
ICAKKyAgICBjbGFzcyBXZWFrQnVja2V0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdlYWtCdWNr
ZXQoKQorICAgICAgICAgICAgOiBtX3ZhbHVlKDApCisgICAgICAgIHsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgV2Vha0J1Y2tldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
ICAgIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBXZWFrQnVja2V0KGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihjbGFzc0luZm8pICsgMSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAhbV92YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFtX3ZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzQ2xhc3NJbmZvKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEhKG1fdmFsdWUgJiAxKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgYm9vbCBpc1N0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiAhaXNFbXB0eSgpICYmICFpc0NsYXNzSW5mbygpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBTdHJ1Y3R1cmUqIGFzU3RydWN0dXJlKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlKCkpOworICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4obV92YWx1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogYXNDbGFzc0luZm8oKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNDbGFzc0luZm8oKSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDbGFzc0luZm8qPihtX3ZhbHVlIC0gMSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogZ2V0Q2xhc3NJbmZvKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzSW5mbygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBhc0NsYXNzSW5mbygpOworICAgICAgICAgICAgcmV0dXJuIGFzU3RydWN0dXJl
KCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAg
ICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworICAgIH07CisgICAgCisgICAgV2Vha0J1Y2tldCB3ZWFr
QnVja2V0c1tudW1iZXJPZkJ1Y2tldHNdOyAvLyB0aGlzIGlzIG5vdCBjb3ZlcmVkIGJ5IGEgd3Jp
dGUgYmFycmllciBiZWNhdXNlIGl0IGlzIG9ubHkgc2V0IGZyb20gR0MKIH07CiAKIGlubGluZSBp
bnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2Zp
bGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gOTQyNjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEzLDYgKzUxMywxMSBAQCB2b2lkIEhlYXA6Om1hcmtUZW1wU29ydFZlY3RvcnMoSGVhcFJv
b3RWCiAgICAgfQogfQogCit2b2lkIEhlYXA6OmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpCit7Cisg
ICAgbV9zbG90VmlzaXRvci5oYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKK30KKwogaW5saW5lIFJl
Z2lzdGVyRmlsZSYgSGVhcDo6cmVnaXN0ZXJGaWxlKCkKIHsKICAgICByZXR1cm4gbV9nbG9iYWxE
YXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7CkBAIC01ODEsNiArNTg2LDggQEAgdm9p
ZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIG1faGFuZGxlU3RhY2sudmlzaXQoaGVhcFJvb3RWaXNp
dG9yKTsKICAgICB2aXNpdG9yLmRyYWluKCk7CiAKKyAgICBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMo
KTsKKwogICAgIC8vIFdlYWsgaGFuZGxlcyBtdXN0IGJlIG1hcmtlZCBsYXN0LCBiZWNhdXNlIHRo
ZWlyIG93bmVycyB1c2UgdGhlIHNldCBvZgogICAgIC8vIG9wYXF1ZSByb290cyB0byBkZXRlcm1p
bmUgcmVhY2hhYmlsaXR5LgogICAgIGludCBsYXN0T3BhcXVlUm9vdENvdW50OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2ICsxNDksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKICAgICAgICAgdm9pZCBt
YXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCBtYXJr
VGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB2b2lkIGhhcnZlc3RX
ZWFrUmVmZXJlbmNlcygpOwogCiAgICAgICAgIHZvaWQqIHRyeUFsbG9jYXRlKE5ld1NwYWNlOjpT
aXplQ2xhc3MmKTsKICAgICAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShOZXdTcGFjZTo6U2l6
ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJ
KHJldmlzaW9uIDk0MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lkIFNsb3RWaXNpdG9y
OjpkcmFpbigpCiAjZW5kaWYKIH0KIAordm9pZCBTbG90VmlzaXRvcjo6aGFydmVzdFdlYWtSZWZl
cmVuY2VzKCkKK3sKKyAgICB3aGlsZSAobV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpIHsK
KyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogY3VycmVudCA9IG1fZmlyc3RXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyOworICAgICAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiBuZXh0ID0g
cmVpbnRlcnByZXRfY2FzdDxXZWFrUmVmZXJlbmNlSGFydmVzdGVyKj4oY3VycmVudC0+bV9uZXh0
QW5kRmxhZyAmIH4xKTsKKyAgICAgICAgY3VycmVudC0+bV9uZXh0QW5kRmxhZyA9IDA7CisgICAg
ICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyID0gbmV4dDsKKyAgICAgICAgY3VycmVu
dC0+dmlzaXRXZWFrUmVmZXJlbmNlcygqdGhpcyk7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCiB2b2lkIE1hcmtTdGFjazo6dmFsaWRhdGVTZXQoSlNWYWx1ZSogdmFsdWVz
LCBzaXplX3QgY291bnQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suaAkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlZUYWJsZVNwZWN0cnVtLmgi
CisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC05Myw2ICs5NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOwogICAgICAg
ICBpbmxpbmUgdm9pZCBhcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiosIHNp
emVfdCBjb3VudCk7CiAgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
ICAgICBpbmxpbmUgdm9pZCBhcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoqKTsKKyAgICAgICAg
CiAgICAgICAgIGJvb2wgYWRkT3BhcXVlUm9vdCh2b2lkKik7CiAgICAgICAgIGJvb2wgY29udGFp
bnNPcGFxdWVSb290KHZvaWQqKTsKICAgICAgICAgaW50IG9wYXF1ZVJvb3RDb3VudCgpOwpAQCAt
MTAzLDYgKzEwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVlRhYmxlU3BlY3RydW0g
bV92aXNpdGVkVHlwZUNvdW50czsKICNlbmRpZgogCisgICAgICAgIHZvaWQgYWRkV2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcihXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiB3ZWFrUmVmZXJlbmNlSGFydmVz
dGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+
bV9uZXh0QW5kRmxhZyAmIDEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
d2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+bV9uZXh0QW5kRmxhZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcikgfCAxOworICAgICAgICAg
ICAgbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgPSB3ZWFrUmVmZXJlbmNlSGFydmVzdGVy
OworICAgICAgICB9CisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04p
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAt
MTIwLDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxN
YXJrU2V0PiBtX21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3Zh
bHVlczsKICAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93
bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9y
LgorICAgICAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhh
cnZlc3RlcjsKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHB1YmxpYzoKQEAg
LTEzMCw2ICsxNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBNYXJrU3RhY2s6
Ok1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0cikKICAgICAgICAgOiBtX2pzQXJyYXlWUHRyKGpz
QXJyYXlWUHRyKQorICAgICAgICAsIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKDApCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uKGZhbHNlKQogICAgICAgICAsIG1faXNEcmFpbmluZyhmYWxzZSkKQEAgLTI1NSw2
ICsyNjksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgbV9tYXJrU2V0cy5h
cHBlbmQoTWFya1NldChzbG90LCBzbG90ICsgY291bnQpKTsKICAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kVW5iYXJyaWVy
ZWRQb2ludGVyKFQqKiBzbG90KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNsb3QpOworICAgICAg
ICBKU0NlbGwqIHZhbHVlID0gKnNsb3Q7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAg
IGludGVybmFsQXBwZW5kKHZhbHVlKTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gOTQyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAgICBTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0
cik7CiAKICAgICB2b2lkIGRyYWluKCk7Ci0KKyAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNl
cygpOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKik7CiB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpZm5kZWYgV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlcl9oCisjZGVmaW5lIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJfaAorCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXJrU3RhY2s7Citj
bGFzcyBTbG90VmlzaXRvcjsKKworY2xhc3MgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSA9
IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpCisgICAg
ICAgIDogbV9uZXh0QW5kRmxhZygwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+
V2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpIHsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBNYXJrU3RhY2s7CisgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgIAorICAgIHVp
bnRwdHJfdCBtX25leHRBbmRGbGFnOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105903</attachid>
            <date>2011-08-31 23:41:09 -0700</date>
            <delta_ts>2011-09-02 15:59:38 -0700</delta_ts>
            <desc>the patch - fix a silly bug</desc>
            <filename>weakrefvalueprofile_patch_4.diff</filename>
            <type>text/plain</type>
            <size>22443</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tldHMg
YXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAgbGln
aHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBh
ZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwgc3Rv
cmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0aGVu
IHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBwb2lu
dGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBpcyB0
dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJbnQz
MnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6CisgICAg
ICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6
OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tl
dDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojpp
c0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0NsYXNz
SW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5mbyk6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZvKToK
KyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAq
IGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmhhcnZl
c3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAg
ICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6CisgICAg
ICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVzdGVy
KToKKwogMjAxMS0wOC0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA5NDI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
Mjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjk0NzlCMTI2RTY5OEMwMEIzQUJG
NSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLzsgfTsKIAkJMEY3NzAwOTAxNDAyRkRFNDAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CkBAIC03MzYsNiArNzM3LDcgQEAKIAkJMEJE
RkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
NDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVj
aW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNp
bWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNSw2ICsxNTE3LDcgQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNw
ZWN0cnVtLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oICovLApAQCAtMjI0NSw2ICsyMjQ4LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAw
QjM0NDYwIC8qIEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0MjY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzMsMTkgKzE0MzMsMjEgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogbwogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICNpZiBFTkFCTEUoVkVS
Qk9TRV9WQUxVRV9QUk9GSUxFKQotICAgIHByaW50ZigiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOworICAgIGZwcmludGYoc3RkZXJyLCAiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMo
KTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShp
KTsKICAgICAgICAgaWYgKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0IDwgMCkgewogICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
aW50ZigiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw
cmludGYoIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAg
cHJpbnRmKCJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRvdWJsZSA9ICV1LCBjZWxsID0gJXVc
biIsCi0gICAgICAgICAgICAgICBwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSwKLSAgICAgICAg
ICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigpLAotICAgICAgICAgICAgICAgcHJv
ZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgpLAotICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJv
YmFiaWxpdHlPZkNlbGwoKSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
CisgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUs
IGNlbGwgPSAldSwgYXJyYXkgPSAldVxuIiwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mSW50
MzIoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mRG91YmxlKCksCisg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkNlbGwoKSwKKyAgICAgICAgICAg
ICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQXJyYXkoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTE1MTUsNiArMTUxNyw4IEBAIHZvaWQgRXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFYKIAogdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogeworICAgIGJvb2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSBmYWxzZTsKKyAgICAKICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZtX293
bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEpIHsKQEAgLTE1NjIsNiArMTU2Niw2
NCBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVu
c2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIXByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdKQorICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKS5pc0NlbGwoKSkgewor
ICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IFZhbHVlUHJvZmls
ZTo6V2Vha0J1Y2tldCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBpZiAoaGFuZGxlV2Vha1JlZmVy
ZW5jZXMpCisgICAgICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcih0aGlzKTsK
K30KKwordm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKQor
eworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVuc2lnbmVkIHByb2ZpbGVJ
bmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK3Byb2Zp
bGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUo
cHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBpZiAoISFwcm9maWxlLT5idWNrZXRzW2luZGV4XSkgeworICAgICAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUocHJvZmlsZS0+YnVja2V0c1tpbmRleF0p
OworICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgcHJvZmlsZS0+YnVja2V0c1tpbmRleF0gPSBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRl
eF0gPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgVmFsdWVQcm9maWxlOjpXZWFrQnVja2V0IHdlYWsgPSBwcm9maWxlLT53ZWFrQnVj
a2V0c1tpbmRleF07CisgICAgICAgICAgICBpZiAoIXdlYWsgfHwgd2Vhay5pc0NsYXNzSW5mbygp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
U1NFUlQod2Vhay5pc1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZCh3ZWFrLmFzU3RydWN0dXJlKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF0gPSB3ZWFrLmFz
U3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAK
IEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDk0MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJVU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogI2luY2x1ZGUgIlZh
bHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTIwNSw3ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9CiAjZW5kaWYKIAotICAgIGNsYXNzIENvZGVCbG9jayB7CisgICAgY2xhc3MgQ29kZUJsb2Nr
OiBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHByb3RlY3RlZDoKQEAg
LTIxOCw2ICsyMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB+Q29kZUJs
b2NrKCk7CiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAg
ICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBz
dGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiA5NDI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksOCBAQAogI2lmbmRlZiBWYWx1ZVByb2ZpbGVfaAogI2RlZmluZSBWYWx1ZVBy
b2ZpbGVfaAogCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ1LDE0ICs0
NywyNSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgOiBieXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIGJ1Y2tldHNbaV0uc2V0V2l0aG91dFdy
aXRlQmFycmllcihKU1ZhbHVlKCkpOworICAgICAgICAgICAgYnVja2V0c1tpXSA9IEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISFidWNr
ZXRzW2J1Y2tldF0pIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoYnVja2V0c1tidWNrZXRdKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
d2Vha0J1Y2tldHNbYnVja2V0XS5nZXRDbGFzc0luZm8oKTsKICAgICB9CiAgICAgCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tl
dHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSkKKyAgICAgICAgICAgIGlm
ICghIWJ1Y2tldHNbaV0gfHwgISF3ZWFrQnVja2V0c1tpXSkKICAgICAgICAgICAgICAgICByZXN1
bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArODIsNyBA
QCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsr
aSkgewotICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlz
SW50MzIoKSkKKyAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgSlNWYWx1ZTo6ZGVjb2Rl
KGJ1Y2tldHNbaV0pLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzksNyArOTIsNyBAQCBzdHJ1Y3QgVmFs
dWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzRG91YmxlKCkpCisg
ICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIEpTVmFsdWU6OmRlY29kZShidWNrZXRzW2ld
KS5pc0RvdWJsZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC04OSw3ICsxMDIsMTcgQEAgc3RydWN0IFZhbHVlUHJvZmls
ZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0NlbGwoKSkKKyAgICAgICAgICAg
IGlmICghIWNsYXNzSW5mbyhpKSkKKyAgICAgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZkFycmF5cygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChjbGFzc0luZm8oaSkgPT0gJkpTQXJyYXk6OnNfaW5mbykKICAgICAg
ICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTE1LDggKzEzOCw3NyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAgICAgcmV0dXJu
IGNvbXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkNlbGxzKCksIG51bWJlck9mU2FtcGxlcygpKTsK
ICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgcHJvYmFiaWxpdHlPZkFycmF5KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZBcnJheXMoKSwg
bnVtYmVyT2ZTYW1wbGVzKCkpOworICAgIH0KKyAgICAKICAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7
IC8vIC0xIGZvciBwcm9sb2d1ZQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gYnVja2V0
c1tudW1iZXJPZkJ1Y2tldHNdOworICAgIEVuY29kZWRKU1ZhbHVlIGJ1Y2tldHNbbnVtYmVyT2ZC
dWNrZXRzXTsKKyAgICAKKyAgICBjbGFzcyBXZWFrQnVja2V0IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFdlYWtCdWNrZXQoKQorICAgICAgICAgICAgOiBtX3ZhbHVlKDApCisgICAgICAgIHsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2Vha0J1Y2tldChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgICAgIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc3Ry
dWN0dXJlKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBXZWFrQnVj
a2V0KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjbGFzc0luZm8pICsgMSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
ICFtX3ZhbHVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzQ2xhc3NJbmZv
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEhKG1fdmFsdWUgJiAxKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc1N0cnVjdHVyZSgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhaXNFbXB0eSgpICYmICFpc0NsYXNzSW5mbygp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJ1Y3R1cmUqIGFzU3RydWN0dXJlKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4obV92YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogYXNDbGFzc0luZm8o
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNDbGFzc0luZm8oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDbGFzc0luZm8qPihtX3ZhbHVlIC0g
MSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogZ2V0Q2xh
c3NJbmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzSW5mbygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBhc0NsYXNzSW5mbygpOworICAgICAgICAgICAgcmV0dXJu
IGFzU3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgICAgIAorICAgIHBy
aXZhdGU6CisgICAgICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworICAgIH07CisgICAgCisgICAgV2Vh
a0J1Y2tldCB3ZWFrQnVja2V0c1tudW1iZXJPZkJ1Y2tldHNdOyAvLyB0aGlzIGlzIG5vdCBjb3Zl
cmVkIGJ5IGEgd3JpdGUgYmFycmllciBiZWNhdXNlIGl0IGlzIG9ubHkgc2V0IGZyb20gR0MKIH07
CiAKIGlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQoVmFsdWVQcm9maWxl
KiB2YWx1ZVByb2ZpbGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gOTQyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEzLDYgKzUxMywxMSBAQCB2b2lkIEhlYXA6Om1hcmtUZW1wU29ydFZl
Y3RvcnMoSGVhcFJvb3RWCiAgICAgfQogfQogCit2b2lkIEhlYXA6OmhhcnZlc3RXZWFrUmVmZXJl
bmNlcygpCit7CisgICAgbV9zbG90VmlzaXRvci5oYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKK30K
KwogaW5saW5lIFJlZ2lzdGVyRmlsZSYgSGVhcDo6cmVnaXN0ZXJGaWxlKCkKIHsKICAgICByZXR1
cm4gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7CkBAIC01ODEsNiAr
NTg2LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIG1faGFuZGxlU3RhY2sudmlzaXQo
aGVhcFJvb3RWaXNpdG9yKTsKICAgICB2aXNpdG9yLmRyYWluKCk7CiAKKyAgICBoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoKTsKKwogICAgIC8vIFdlYWsgaGFuZGxlcyBtdXN0IGJlIG1hcmtlZCBsYXN0
LCBiZWNhdXNlIHRoZWlyIG93bmVycyB1c2UgdGhlIHNldCBvZgogICAgIC8vIG9wYXF1ZSByb290
cyB0byBkZXRlcm1pbmUgcmVhY2hhYmlsaXR5LgogICAgIGludCBsYXN0T3BhcXVlUm9vdENvdW50
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTQyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2
ICsxNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKICAg
ICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICAg
ICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB2
b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogCiAgICAgICAgIHZvaWQqIHRyeUFsbG9jYXRl
KE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKICAgICAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShO
ZXdTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5jcHAJKHJldmlzaW9uIDk0MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lk
IFNsb3RWaXNpdG9yOjpkcmFpbigpCiAjZW5kaWYKIH0KIAordm9pZCBTbG90VmlzaXRvcjo6aGFy
dmVzdFdlYWtSZWZlcmVuY2VzKCkKK3sKKyAgICB3aGlsZSAobV9maXJzdFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIpIHsKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogY3VycmVudCA9IG1f
Zmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyOworICAgICAgICBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyKiBuZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxXZWFrUmVmZXJlbmNlSGFydmVzdGVyKj4oY3Vy
cmVudC0+bV9uZXh0QW5kRmxhZyAmIH4xKTsKKyAgICAgICAgY3VycmVudC0+bV9uZXh0QW5kRmxh
ZyA9IDA7CisgICAgICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyID0gbmV4dDsKKyAg
ICAgICAgY3VycmVudC0+dmlzaXRXZWFrUmVmZXJlbmNlcygqdGhpcyk7CisgICAgfQorfQorCiAj
aWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiB2b2lkIE1hcmtTdGFjazo6dmFsaWRhdGVTZXQoSlNW
YWx1ZSogdmFsdWVzLCBzaXplX3QgY291bnQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrU3RhY2suaAkocmV2aXNpb24gOTQyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlZUYWJs
ZVNwZWN0cnVtLmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC05Myw2ICs5NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxU
PiopOwogICAgICAgICBpbmxpbmUgdm9pZCBhcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiosIHNpemVfdCBjb3VudCk7CiAgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgICAgICBpbmxpbmUgdm9pZCBhcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoq
KTsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkT3BhcXVlUm9vdCh2b2lkKik7CiAgICAgICAg
IGJvb2wgY29udGFpbnNPcGFxdWVSb290KHZvaWQqKTsKICAgICAgICAgaW50IG9wYXF1ZVJvb3RD
b3VudCgpOwpAQCAtMTAzLDYgKzEwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVlRh
YmxlU3BlY3RydW0gbV92aXNpdGVkVHlwZUNvdW50czsKICNlbmRpZgogCisgICAgICAgIHZvaWQg
YWRkV2Vha1JlZmVyZW5jZUhhcnZlc3RlcihXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiB3ZWFrUmVm
ZXJlbmNlSGFydmVzdGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2Vha1JlZmVyZW5j
ZUhhcnZlc3Rlci0+bV9uZXh0QW5kRmxhZyAmIDEpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgd2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+bV9uZXh0QW5kRmxhZyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcikgfCAx
OworICAgICAgICAgICAgbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgPSB3ZWFrUmVmZXJl
bmNlSGFydmVzdGVyOworICAgICAgICB9CisKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCiAgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlU2V0KEpTVmFsdWUqLCBz
aXplX3QpOwpAQCAtMTIwLDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJr
U3RhY2tBcnJheTxNYXJrU2V0PiBtX21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxK
U0NlbGwqPiBtX3ZhbHVlczsKICAgICAgICAgSGFzaFNldDx2b2lkKj4gbV9vcGFxdWVSb290czsg
Ly8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZpc2libGUgdG8gdGhlIGdhcmJh
Z2UgY29sbGVjdG9yLgorICAgICAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKiBtX2ZpcnN0V2Vh
a1JlZmVyZW5jZUhhcnZlc3RlcjsKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IHB1YmxpYzoKQEAgLTEzMCw2ICsxNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGlu
ZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0cikKICAgICAgICAgOiBtX2pz
QXJyYXlWUHRyKGpzQXJyYXlWUHRyKQorICAgICAgICAsIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyKDApCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAsIG1faXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAgICAgICAsIG1faXNEcmFpbmluZyhmYWxz
ZSkKQEAgLTI1NSw2ICsyNjksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAg
bV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldChzbG90LCBzbG90ICsgY291bnQpKTsKICAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKiBzbG90KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNs
b3QpOworICAgICAgICBKU0NlbGwqIHZhbHVlID0gKnNsb3Q7CisgICAgICAgIGlmICh2YWx1ZSkK
KyAgICAgICAgICAgIGludGVybmFsQXBwZW5kKHZhbHVlKTsKKyAgICB9CiAgICAgCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUqIHZhbHVlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24g
OTQyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAgICBTbG90VmlzaXRvcih2b2lk
KiBqc0FycmF5VlB0cik7CiAKICAgICB2b2lkIGRyYWluKCk7Ci0KKyAgICB2b2lkIGhhcnZlc3RX
ZWFrUmVmZXJlbmNlcygpOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKik7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpZm5k
ZWYgV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCisjZGVmaW5lIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXJfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBN
YXJrU3RhY2s7CitjbGFzcyBTbG90VmlzaXRvcjsKKworY2xhc3MgV2Vha1JlZmVyZW5jZUhhcnZl
c3RlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xv
dFZpc2l0b3ImKSA9IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgV2Vha1JlZmVyZW5jZUhhcnZl
c3RlcigpCisgICAgICAgIDogbV9uZXh0QW5kRmxhZygwKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCB+V2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpIHsgfQorCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBNYXJrU3RhY2s7CisgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwor
ICAgIAorICAgIHVpbnRwdHJfdCBtX25leHRBbmRGbGFnOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyX2gK
</data>
<flag name="review"
          id="102196"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="102197"
          type_id="3"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106213</attachid>
            <date>2011-09-02 15:59:38 -0700</date>
            <delta_ts>2011-09-02 19:42:48 -0700</delta_ts>
            <desc>the patch - fix review</desc>
            <filename>weakrefvalueprofile_patch_5.diff</filename>
            <type>text/plain</type>
            <size>22529</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ0NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tl
dHMgYXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAg
bGlnaHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxz
byBhZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwg
c3RvcmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0
aGVuIHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBw
b2ludGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBp
cyB0dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVBy
b2ZpbGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJ
bnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6Cisg
ICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6
OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vh
a0J1Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0
Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0Ns
YXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5m
byk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZv
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAg
KEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Omhh
cnZlc3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAg
ICAgKEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFw
cGVuZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgor
ICAgICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6Cisg
ICAgICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVz
dGVyKToKKwogMjAxMS0wOS0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIERGRyBncmFwaCBoYXMgbm8gd2F5IG9mIGRpc3Rpbmd1aXNoaW5nIG9yIHJlY29uY2ls
aW5nIGJldHdlZW4gc3RhdGljCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gOTQ0NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAog
CQkwQkRGRkFFMDBGQzYxOTI5MDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFENDBGQzYx
NzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0
IC8qIE93bkZhc3RNYWxsb2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJG
MjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEyNkU2OThDMDBC
M0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CiAJCTBGNzcwMDkwMTQwMkZERTQwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
Rjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwpAQCAtNzM2LDYgKzczNyw3IEBACiAJ
CTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RNYWxsb2NQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFk
UmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVh
ZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEz
M0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyOTQ3OUIxMjZFNjk4QzAwQjNBQkY1IC8q
IERlY2ltYWxOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVjaW1hbE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhF
MTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTUsNiArMTUxNyw3IEBACiAJCTE0MkUz
MTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oICovLAogCQkJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFi
bGVTcGVjdHJ1bS5oICovLAogCQkJCTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVT
cGVjdHJ1bS5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFy
cmllclN1cHBvcnQuaCAqLywKQEAgLTIyNDUsNiArMjI0OCw3IEBACiAJCQlpc2EgPSBQQlhIZWFk
ZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKKwkJCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U0MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBBbHdheXNJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5NDQ1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMzLDE5ICsxNDMzLDIxIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7CiAjaWYgRU5BQkxF
KFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKLSAgICBwcmludGYoIlZhbHVlUHJvZmlsZSBmb3IgJXA6
XG4iLCB0aGlzKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4i
LCB0aGlzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCk7ICsraSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2Zp
bGUoaSk7CiAgICAgICAgIGlmIChwcm9maWxlLT5ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAg
ICBwcmludGYoIiAgIGFyZyA9ICV1OiAiLCBpICsgMSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgIGFyZyA9ICV1OiAiLCBpICsgMSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcHJpbnRmKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLT5ieXRlY29kZU9mZnNldCk7Ci0gICAg
ICAgIHByaW50Zigic2FtcGxlcyA9ICV1LCBpbnQzMiA9ICV1LCBkb3VibGUgPSAldSwgY2VsbCA9
ICV1XG4iLAotICAgICAgICAgICAgICAgcHJvZmlsZS0+bnVtYmVyT2ZTYW1wbGVzKCksCi0gICAg
ICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mSW50MzIoKSwKLSAgICAgICAgICAgICAg
IHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZEb3VibGUoKSwKLSAgICAgICAgICAgICAgIHByb2ZpbGUt
PnByb2JhYmlsaXR5T2ZDZWxsKCkpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLT5ieXRlY29kZU9mZnNldCk7CisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLAorICAgICAgICAgICAgICAgICJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRvdWJsZSA9
ICV1LCBjZWxsID0gJXUsIGFycmF5ID0gJXVcbiIsCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
bnVtYmVyT2ZTYW1wbGVzKCksCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlP
ZkludDMyKCksCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgp
LAorICAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZDZWxsKCksCisgICAgICAg
ICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkFycmF5KCkpOwogICAgIH0KICNlbmRpZgog
CkBAIC0xNTE1LDYgKzE1MTcsOCBAQCB2b2lkIEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRl
KFNsb3RWCiAKIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKKyAgICBib29sIGhhbmRsZVdlYWtSZWZlcmVuY2VzID0gZmFsc2U7CisgICAgCiAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fZ2xvYmFsT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
bV9vd25lckV4ZWN1dGFibGUpOwogICAgIGlmIChtX3JhcmVEYXRhKSB7CkBAIC0xNTYyLDYgKzE1
NjYsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdAogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgZm9y
ICh1bnNpZ25lZCBwcm9maWxlSW5kZXggPSAwOyBwcm9maWxlSW5kZXggPCBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytwcm9maWxlSW5kZXgpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gdmFsdWVQcm9maWxlKHByb2ZpbGVJbmRleCk7CisgICAgICAgIAorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0
czsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFwcm9maWxlLT5idWNrZXRzW2luZGV4XSkg
eworICAgICAgICAgICAgICAgIGlmICghIXByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSkKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoIUpTVmFsdWU6OmRlY29kZShwcm9maWxlLT5idWNrZXRzW2luZGV4XSkuaXNDZWxsKCkp
IHsKKyAgICAgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF0gPSBWYWx1ZVBy
b2ZpbGU6OldlYWtCdWNrZXQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSB0
cnVlOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgCisgICAgaWYgKGhhbmRsZVdlYWtS
ZWZlcmVuY2VzKQorICAgICAgICB2aXNpdG9yLmFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIodGhp
cyk7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
JikKK3sKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgZm9yICh1bnNpZ25lZCBwcm9m
aWxlSW5kZXggPSAwOyBwcm9maWxlSW5kZXggPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytw
cm9maWxlSW5kZXgpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9m
aWxlKHByb2ZpbGVJbmRleCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgKytpbmRleCkgewor
ICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+YnVja2V0c1tpbmRleF0pIHsKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNbaW5k
ZXhdKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNN
YXJrZWQoY2VsbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS0+d2Vha0J1Y2tldHNb
aW5kZXhdID0gY2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIFZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldCB3ZWFrID0gcHJvZmlsZS0+d2Vh
a0J1Y2tldHNbaW5kZXhdOworICAgICAgICAgICAgaWYgKCF3ZWFrIHx8IHdlYWsuaXNDbGFzc0lu
Zm8oKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgQVNTRVJUKHdlYWsuaXNTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNN
YXJrZWQod2Vhay5hc1N0cnVjdHVyZSgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdID0gd2Vh
ay5hc1N0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgog
fQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5NDQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAi
VVN0cmluZy5oIgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKICNpbmNsdWRl
ICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0yMDUsNyArMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfQogI2VuZGlmCiAKLSAgICBjbGFzcyBDb2RlQmxvY2sgeworICAgIGNsYXNzIENvZGVC
bG9jazogcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwcm90ZWN0ZWQ6
CkBAIC0yMTgsNiArMjE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfkNv
ZGVCbG9jaygpOwogCiAgICAgICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsK
KyAgICAgICAgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAKICAgICAg
ICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gOTQ0NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZm5kZWYgVmFsdWVQcm9maWxlX2gKICNkZWZpbmUgVmFs
dWVQcm9maWxlX2gKIAorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NSwx
NCArNDcsMjUgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAgIDogYnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpCi0gICAgICAgICAgICBidWNrZXRzW2ldLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgIGJ1Y2tldHNbaV0gPSBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8odW5zaWduZWQgYnVja2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCEh
YnVja2V0c1tidWNrZXRdKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJ1Y2tldHNbYnVja2V0XSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHdlYWtCdWNrZXRzW2J1Y2tldF0uZ2V0Q2xhc3NJbmZvKCk7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG51bWJlck9mU2FtcGxlcygpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZC
dWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0pCisgICAgICAgICAg
ICBpZiAoISFidWNrZXRzW2ldIHx8ICEhd2Vha0J1Y2tldHNbaV0pCiAgICAgICAgICAgICAgICAg
cmVzdWx0Kys7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzgy
LDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRz
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQo
KS5pc0ludDMyKCkpCisgICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIEpTVmFsdWU6OmRl
Y29kZShidWNrZXRzW2ldKS5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc5LDcgKzkyLDcgQEAgc3RydWN0
IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAg
ICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5pc0RvdWJsZSgp
KQorICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0
c1tpXSkuaXNEb3VibGUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODksNyArMTAyLDE3IEBAIHN0cnVjdCBWYWx1ZVBy
b2ZpbGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7Ci0gICAgICAgICAg
ICBpZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNDZWxsKCkpCisgICAgICAg
ICAgICBpZiAoISFjbGFzc0luZm8oaSkpCisgICAgICAgICAgICAgICAgcmVzdWx0Kys7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcnJheXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytp
KSB7CisgICAgICAgICAgICBpZiAoY2xhc3NJbmZvKGkpID09ICZKU0FycmF5OjpzX2luZm8pCiAg
ICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTExNSw4ICsxMzgsNzcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAgIHJl
dHVybiBjb21wdXRlUHJvYmFiaWxpdHkobnVtYmVyT2ZDZWxscygpLCBudW1iZXJPZlNhbXBsZXMo
KSk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIHByb2JhYmlsaXR5T2ZBcnJheSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZVByb2JhYmlsaXR5KG51bWJlck9mQXJyYXlz
KCksIG51bWJlck9mU2FtcGxlcygpKTsKKyAgICB9CisgICAgCiAgICAgaW50IGJ5dGVjb2RlT2Zm
c2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IGJ1
Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBidWNrZXRzW251bWJl
ck9mQnVja2V0c107CisgICAgCisgICAgY2xhc3MgV2Vha0J1Y2tldCB7CisgICAgcHVibGljOgor
ICAgICAgICBXZWFrQnVja2V0KCkKKyAgICAgICAgICAgIDogbV92YWx1ZSgwKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdlYWtCdWNrZXQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHN0cnVjdHVyZSkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2Vh
a0J1Y2tldChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICAgICAgICAgIDogbV92YWx1
ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2xhc3NJbmZvKSB8IDEpCisgICAgICAgIHsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiAhbV92YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0NsYXNz
SW5mbygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhIShtX3ZhbHVlICYg
MSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTdHJ1Y3R1cmUoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIWlzRW1wdHkoKSAmJiAhaXNDbGFzc0lu
Zm8oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RydWN0dXJlKiBhc1N0cnVjdHVy
ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc1N0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KG1fdmFsdWUp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBDbGFzc0luZm8qIGFzQ2xhc3NJ
bmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzQ2xhc3NJbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2xhc3NJbmZvKj4obV92YWx1
ZSAmIH5zdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBnZXRDbGFzc0luZm8oKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgaWYgKGlzQ2xhc3NJbmZvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzQ2xh
c3NJbmZvKCk7CisgICAgICAgICAgICByZXR1cm4gYXNTdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgdWludHB0cl90IG1f
dmFsdWU7CisgICAgfTsKKyAgICAKKyAgICBXZWFrQnVja2V0IHdlYWtCdWNrZXRzW251bWJlck9m
QnVja2V0c107IC8vIHRoaXMgaXMgbm90IGNvdmVyZWQgYnkgYSB3cml0ZSBiYXJyaWVyIGJlY2F1
c2UgaXQgaXMgb25seSBzZXQgZnJvbSBHQwogfTsKIAogaW5saW5lIGludCBnZXRWYWx1ZVByb2Zp
bGVCeXRlY29kZU9mZnNldChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiA5NDQ1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNiArNTEzLDEx
IEBAIHZvaWQgSGVhcDo6bWFya1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFYKICAgICB9CiB9CiAK
K3ZvaWQgSGVhcDo6aGFydmVzdFdlYWtSZWZlcmVuY2VzKCkKK3sKKyAgICBtX3Nsb3RWaXNpdG9y
LmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworfQorCiBpbmxpbmUgUmVnaXN0ZXJGaWxlJiBIZWFw
OjpyZWdpc3RlckZpbGUoKQogewogICAgIHJldHVybiBtX2dsb2JhbERhdGEtPmludGVycHJldGVy
LT5yZWdpc3RlckZpbGUoKTsKQEAgLTU4MSw2ICs1ODYsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290
cygpCiAgICAgbV9oYW5kbGVTdGFjay52aXNpdChoZWFwUm9vdFZpc2l0b3IpOwogICAgIHZpc2l0
b3IuZHJhaW4oKTsKIAorICAgIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworCiAgICAgLy8gV2Vh
ayBoYW5kbGVzIG11c3QgYmUgbWFya2VkIGxhc3QsIGJlY2F1c2UgdGhlaXIgb3duZXJzIHVzZSB0
aGUgc2V0IG9mCiAgICAgLy8gb3BhcXVlIHJvb3RzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHku
CiAgICAgaW50IGxhc3RPcGFxdWVSb290Q291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiA5NDQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIG1hcmtSb290cygpOwogICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmpl
Y3RzKEhlYXBSb290VmlzaXRvciYpOwogICAgICAgICB2b2lkIG1hcmtUZW1wU29ydFZlY3RvcnMo
SGVhcFJvb3RWaXNpdG9yJik7CisgICAgICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7
CiAKICAgICAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTmV3U3BhY2U6OlNpemVDbGFzcyYpOwogICAg
ICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gOTQ0NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsNiArMTM2LDE3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICNlbmRp
ZgogfQogCit2b2lkIFNsb3RWaXNpdG9yOjpoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKQoreworICAg
IHdoaWxlIChtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcikgeworICAgICAgICBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyKiBjdXJyZW50ID0gbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7
CisgICAgICAgIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqIG5leHQgPSByZWludGVycHJldF9jYXN0
PFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqPihjdXJyZW50LT5tX25leHRBbmRGbGFnICYgfjEpOwor
ICAgICAgICBjdXJyZW50LT5tX25leHRBbmRGbGFnID0gMDsKKyAgICAgICAgbV9maXJzdFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIgPSBuZXh0OworICAgICAgICBjdXJyZW50LT52aXNpdFdlYWtSZWZl
cmVuY2VzKCp0aGlzKTsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKIHZv
aWQgTWFya1N0YWNrOjp2YWxpZGF0ZVNldChKU1ZhbHVlKiB2YWx1ZXMsIHNpemVfdCBjb3VudCkK
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCShyZXZpc2lvbiA5
NDQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiVlRhYmxlU3BlY3RydW0uaCIKKyNpbmNsdWRlICJXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkzLDYgKzk0LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7CiAgICAgICAgIGlubGluZSB2b2lkIGFw
cGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKICAg
ICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIGlubGluZSB2b2lk
IGFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiopOworICAgICAgICAKICAgICAgICAgYm9vbCBh
ZGRPcGFxdWVSb290KHZvaWQqKTsKICAgICAgICAgYm9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9p
ZCopOwogICAgICAgICBpbnQgb3BhcXVlUm9vdENvdW50KCk7CkBAIC0xMDMsNiArMTA3LDE0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291
bnRzOwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqIHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrUmVmZXJlbmNlSGFydmVzdGVyLT5tX25leHRBbmRGbGFnICYg
MSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB3ZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLT5tX25leHRBbmRGbGFnID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fZmly
c3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKSB8IDE7CisgICAgICAgICAgICBtX2ZpcnN0V2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlciA9IHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CisgICAgICAgIH0KKwog
ICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgc3RhdGlj
IHZvaWQgdmFsaWRhdGVTZXQoSlNWYWx1ZSosIHNpemVfdCk7CkBAIC0xMjAsNiArMTMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtTdGFja0FycmF5PE1hcmtTZXQ+IG1fbWFya1Nl
dHM7CiAgICAgICAgIE1hcmtTdGFja0FycmF5PEpTQ2VsbCo+IG1fdmFsdWVzOwogICAgICAgICBI
YXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJvb3RzOyAvLyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0
dXJlcyBub3QgdmlzaWJsZSB0byB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisgICAgICAgIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIqIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyOwogICAgICAg
ICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgcHVibGljOgpAQCAtMTMwLDYgKzE0Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKHZvaWQq
IGpzQXJyYXlWUHRyKQogICAgICAgICA6IG1fanNBcnJheVZQdHIoanNBcnJheVZQdHIpCisgICAg
ICAgICwgbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoMCkKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgICwgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2Up
CiAgICAgICAgICwgbV9pc0RyYWluaW5nKGZhbHNlKQpAQCAtMjU1LDYgKzI2OSwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHNs
b3QsIHNsb3QgKyBjb3VudCkpOwogICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoqIHNs
b3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEpTQ2VsbCogdmFsdWUg
PSAqc2xvdDsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQo
dmFsdWUpOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjph
cHBlbmQoSlNWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCShyZXZpc2lvbiA5NDQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAg
cHVibGljOgogICAgIFNsb3RWaXNpdG9yKHZvaWQqIGpzQXJyYXlWUHRyKTsKIAogICAgIHZvaWQg
ZHJhaW4oKTsKLQorICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CisgICAgCiBwcml2
YXRlOgogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqKTsKIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyX2gK
KyNkZWZpbmUgV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hcmtTdGFjazsKK2NsYXNzIFNsb3RWaXNpdG9y
OworCitjbGFzcyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpID0gMDsKKyAgICAKK3Byb3Rl
Y3RlZDoKKyAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKCkKKyAgICAgICAgOiBtX25leHRBbmRG
bGFnKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5XZWFrUmVmZXJlbmNlSGFy
dmVzdGVyKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1hcmtTdGFjazsKKyAg
ICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CisgICAgCisgICAgdWludHB0cl90IG1fbmV4dEFu
ZEZsYWc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106239</attachid>
            <date>2011-09-02 19:42:48 -0700</date>
            <delta_ts>2011-09-02 21:06:46 -0700</delta_ts>
            <desc>the patch - fix conflict</desc>
            <filename>weakrefvalueprofile_patch_6.diff</filename>
            <type>text/plain</type>
            <size>22831</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAK
Kzw8PDw8PDwgLm1pbmUKKzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBWYWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJv
c3BlY3QgY2VsbCB2YWx1ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAKKyAgICAgICAgVmFs
dWVQcm9maWxlIGJ1Y2tldHMgYXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVz
aW5nIGEKKyAgICAgICAgbGlnaHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0
IHRoaXMgcGF0Y2ggYWxzbyBhZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
cikuICBJZiBhIGNlbGwgc3RvcmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBp
cyBub3QgbWFya2VkLCB0aGVuIHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVj
dHVyZQorICAgICAgICBwb2ludGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVp
dGhlciwgdGhlbiBpdCBpcyB0dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVy
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJv
ZmlsZTo6bnVtYmVyT2ZJbnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJl
ck9mRG91Ymxlcyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAo
SlNDOjpWYWx1ZVByb2ZpbGU6OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZh
bHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVl
UHJvZmlsZTo6V2Vha0J1Y2tldDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlOjpXZWFrQnVja2V0Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpX
ZWFrQnVja2V0Ojppc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vh
a0J1Y2tldDo6aXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtC
dWNrZXQ6OmFzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVj
a2V0Ojphc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tl
dDo6Z2V0Q2xhc3NJbmZvKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjpoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNr
LmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmhhcnZlc3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJr
U3RhY2suaDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVz
dGVyKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlND
OjpNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9T
bG90VmlzaXRvci5oOgorICAgICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5j
ZUhhcnZlc3Rlcik6CisgICAgICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFr
UmVmZXJlbmNlSGFydmVzdGVyKToKKworPT09PT09PQogMjAxMS0wOS0wMiAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGxvY2FsIGltcGxlbWVu
dGF0aW9uIG9mIHN0cmluZyBlcXVhbHMoKSBtZXRob2RzIHdpdGggVVN0cmluZyB2ZXJzaW9ucwpA
QCAtMTIzLDYgKzE3OCw3IEBACiAgICAgICAgIChXVEY6Om9wZXJhdG9yLSk6CiAgICAgICAgIChX
VEY6Om9wZXJhdG9yKik6CiAKKz4+Pj4+Pj4gLnI5NDQ3NgogMjAxMS0wOC0zMCAgTWF0dGhldyBE
ZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWQgb3V0IG9mIGJvdW5k
cyBpbiBzVW5wcmVtdWx0aXBseURhdGFfUkdCQTg4ODggLyBJbWFnZUJ1ZmZlckRhdGE6OmdldERh
dGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDQ3NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAJCTBCREZGQUUwMEZDNjE5
MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAwMEQ2OUVGNCAvKiBD
cm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyogT3duRmFzdE1hbGxv
Y1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJE
RkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2
MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAg
Ki87IH07CisJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0
MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZG
M0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBs
aW5nQ291bnRlci5jcHAgKi87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1
ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBD
RkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFy
cmllclN1cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzcwLDYgKzc3MSw3IEBACiAJCTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBP
d25GYXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZh
c3RNYWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2
MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk2M0IzNjEzRkM2RkRFMDAw
MkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4Nyw2ICsx
NTg5LDcgQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdB
REQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4
RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBD
RkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLApAQCAtMjM1Niw2ICsyMzU5LDcgQEAK
IAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4
M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEMzRTQwRTE2RjVDRDAwQjM0NDYwIC8qIEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzMsMTkgKzE0MzMsMjEgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogQ29kZUJsb2NrOjp+Q29kZUJsb2Nr
KCkKIHsKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQotICAgIHByaW50ZigiVmFs
dWVQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAgIGZwcmludGYoc3RkZXJyLCAiVmFsdWVQ
cm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IHZhbHVlUHJvZmlsZShpKTsKICAgICAgICAgaWYgKHByb2ZpbGUtPmJ5dGVjb2RlT2Zm
c2V0IDwgMCkgewogICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0ID09
IC0xKTsKLSAgICAgICAgICAgIHByaW50ZigiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKKyAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgYXJnID0gJXU6ICIsIGkgKyAxKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBwcmludGYoIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVj
b2RlT2Zmc2V0KTsKLSAgICAgICAgcHJpbnRmKCJzYW1wbGVzID0gJXUsIGludDMyID0gJXUsIGRv
dWJsZSA9ICV1LCBjZWxsID0gJXVcbiIsCi0gICAgICAgICAgICAgICBwcm9maWxlLT5udW1iZXJP
ZlNhbXBsZXMoKSwKLSAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigp
LAotICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkRvdWJsZSgpLAotICAgICAg
ICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlPZkNlbGwoKSk7CisgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPmJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgaW50
MzIgPSAldSwgZG91YmxlID0gJXUsIGNlbGwgPSAldSwgYXJyYXkgPSAldVxuIiwKKyAgICAgICAg
ICAgICAgICBwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSwKKyAgICAgICAgICAgICAgICBwcm9m
aWxlLT5wcm9iYWJpbGl0eU9mSW50MzIoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9i
YWJpbGl0eU9mRG91YmxlKCksCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+cHJvYmFiaWxpdHlP
ZkNlbGwoKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQXJyYXkoKSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTE1MTUsNiArMTUxNyw4IEBAIHZvaWQgRXZhbENvZGVDYWNo
ZTo6dmlzaXRBZ2dyZWdhdGUoU2xvdFYKIAogdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRl
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogeworICAgIGJvb2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMg
PSBmYWxzZTsKKyAgICAKICAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZtX293bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEp
IHsKQEAgLTE1NjIsNiArMTU2Niw2NCBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKKyAgICBmb3IgKHVuc2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRl
eCA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAg
ICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIXByb2ZpbGUt
PmJ1Y2tldHNbaW5kZXhdKSB7CisgICAgICAgICAgICAgICAgaWYgKCEhcHJvZmlsZS0+d2Vha0J1
Y2tldHNbaW5kZXhdKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9
IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICghSlNWYWx1ZTo6ZGVjb2RlKHByb2ZpbGUtPmJ1Y2tldHNb
aW5kZXhdKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRz
W2luZGV4XSA9IFZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldCgpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBoYW5kbGVX
ZWFrUmVmZXJlbmNlcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAoaGFuZGxlV2Vha1JlZmVyZW5jZXMpCisgICAgICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlcih0aGlzKTsKK30KKwordm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVy
ZW5jZXMoU2xvdFZpc2l0b3ImKQoreworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBm
b3IgKHVuc2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFs
dWVQcm9maWxlcygpOyArK3Byb2ZpbGVJbmRleCkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSB2YWx1ZVByb2ZpbGUocHJvZmlsZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoISFwcm9maWxlLT5idWNrZXRzW2luZGV4
XSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUocHJv
ZmlsZS0+YnVja2V0c1tpbmRleF0pOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICAgICAg
ICAgIGlmIChIZWFwOjppc01hcmtlZChjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+YnVja2V0c1tp
bmRleF0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwcm9m
aWxlLT53ZWFrQnVja2V0c1tpbmRleF0gPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWVQcm9maWxlOjpXZWFrQnVja2V0IHdl
YWsgPSBwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF07CisgICAgICAgICAgICBpZiAoIXdlYWsg
fHwgd2Vhay5pc0NsYXNzSW5mbygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBBU1NFUlQod2Vhay5pc1N0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgIGlmIChIZWFwOjppc01hcmtlZCh3ZWFrLmFzU3RydWN0dXJlKCkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcm9maWxlLT53ZWFrQnVj
a2V0c1tpbmRleF0gPSB3ZWFrLmFzU3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9
CisgICAgfQorI2VuZGlmCiB9CiAKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDk0NDc2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTIwNSw3ICsyMDYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAgIGNsYXNzIENvZGVCbG9jayB7
CisgICAgY2xhc3MgQ29kZUJsb2NrOiBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgIHByb3RlY3RlZDoKQEAgLTIxOCw2ICsyMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAKICAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYpOworICAgICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZp
c2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZp
c2lvbiA5NDQ3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2lmbmRlZiBWYWx1ZVByb2Zp
bGVfaAogI2RlZmluZSBWYWx1ZVByb2ZpbGVfaAogCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQ1LDE0ICs0NywyNSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAg
ICAgOiBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIGJ1
Y2tldHNbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOworICAgICAgICAgICAg
YnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIH0KKyAgICAKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoISFidWNrZXRzW2J1Y2tldF0pIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0c1tidWNrZXRdKTsKKyAgICAgICAgICAgIGlm
ICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gd2Vha0J1Y2tldHNbYnVja2V0XS5nZXRDbGFzc0luZm8oKTsK
ICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhYnVja2V0
c1tpXSkKKyAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gfHwgISF3ZWFrQnVja2V0c1tpXSkK
ICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtNjksNyArODIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAm
JiBidWNrZXRzW2ldLmdldCgpLmlzSW50MzIoKSkKKyAgICAgICAgICAgIGlmICghIWJ1Y2tldHNb
aV0gJiYgSlNWYWx1ZTo6ZGVjb2RlKGJ1Y2tldHNbaV0pLmlzSW50MzIoKSkKICAgICAgICAgICAg
ICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzks
NyArOTIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1
Y2tldHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBidWNrZXRzW2ld
LmdldCgpLmlzRG91YmxlKCkpCisgICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIEpTVmFs
dWU6OmRlY29kZShidWNrZXRzW2ldKS5pc0RvdWJsZSgpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCsrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OSw3ICsxMDIsMTcg
QEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgYnVja2V0c1tpXS5nZXQoKS5p
c0NlbGwoKSkKKyAgICAgICAgICAgIGlmICghIWNsYXNzSW5mbyhpKSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5cygpIGNvbnN0CisgICAgeworICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZCdWNrZXRzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjbGFzc0luZm8oaSkgPT0gJkpT
QXJyYXk6OnNfaW5mbykKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE1LDggKzEzOCw3NyBAQCBzdHJ1Y3QgVmFsdWVQcm9m
aWxlIHsKICAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkNlbGxzKCks
IG51bWJlck9mU2FtcGxlcygpKTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgcHJvYmFiaWxp
dHlPZkFycmF5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxp
dHkobnVtYmVyT2ZBcnJheXMoKSwgbnVtYmVyT2ZTYW1wbGVzKCkpOworICAgIH0KKyAgICAKICAg
ICBpbnQgYnl0ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQotICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4gYnVja2V0c1tudW1iZXJPZkJ1Y2tldHNdOworICAgIEVuY29kZWRKU1Zh
bHVlIGJ1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsKKyAgICAKKyAgICBjbGFzcyBXZWFrQnVja2V0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdlYWtCdWNrZXQoKQorICAgICAgICAgICAgOiBtX3Zh
bHVlKDApCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2Vha0J1Y2tl
dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogbV92YWx1ZShyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBXZWFrQnVja2V0KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAg
ICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjbGFzc0luZm8p
IHwgMSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuICFtX3ZhbHVlOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBib29sIGlzQ2xhc3NJbmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuICEhKG1fdmFsdWUgJiAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBp
c1N0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhaXNFbXB0
eSgpICYmICFpc0NsYXNzSW5mbygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJ1
Y3R1cmUqIGFzU3RydWN0dXJlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGlzU3RydWN0dXJlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3Ry
dWN0dXJlKj4obV92YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogYXNDbGFzc0luZm8oKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoaXNDbGFzc0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxD
bGFzc0luZm8qPihtX3ZhbHVlICYgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBDbGFzc0luZm8qIGdldENsYXNzSW5mbygpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDbGFzc0luZm8oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYXNDbGFzc0luZm8oKTsKKyAgICAgICAgICAgIHJldHVybiBhc1N0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICB1aW50cHRyX3QgbV92YWx1ZTsKKyAgICB9OworICAgIAorICAgIFdlYWtCdWNrZXQgd2Vh
a0J1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsgLy8gdGhpcyBpcyBub3QgY292ZXJlZCBieSBhIHdy
aXRlIGJhcnJpZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHNldCBmcm9tIEdDCiB9OwogCiBpbmxpbmUg
aW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFZhbHVlUHJvZmlsZSogdmFsdWVQcm9m
aWxlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDk0NDc2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxMyw2ICs1MTMsMTEgQEAgdm9pZCBIZWFwOjptYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBS
b290VgogICAgIH0KIH0KIAordm9pZCBIZWFwOjpoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKQorewor
ICAgIG1fc2xvdFZpc2l0b3IuaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7Cit9CisKIGlubGluZSBS
ZWdpc3RlckZpbGUmIEhlYXA6OnJlZ2lzdGVyRmlsZSgpCiB7CiAgICAgcmV0dXJuIG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwpAQCAtNTgxLDYgKzU4Niw4IEBAIHZv
aWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KGhlYXBSb290Vmlz
aXRvcik7CiAgICAgdmlzaXRvci5kcmFpbigpOwogCisgICAgaGFydmVzdFdlYWtSZWZlcmVuY2Vz
KCk7CisKICAgICAvLyBXZWFrIGhhbmRsZXMgbXVzdCBiZSBtYXJrZWQgbGFzdCwgYmVjYXVzZSB0
aGVpciBvd25lcnMgdXNlIHRoZSBzZXQgb2YKICAgICAvLyBvcGFxdWUgcm9vdHMgdG8gZGV0ZXJt
aW5lIHJlYWNoYWJpbGl0eS4KICAgICBpbnQgbGFzdE9wYXF1ZVJvb3RDb3VudDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFya1Jvb3RzKCk7CiAgICAgICAgIHZvaWQg
bWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgbWFy
a1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICAgICAgdm9pZCBoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMoKTsKIAogICAgICAgICB2b2lkKiB0cnlBbGxvY2F0ZShOZXdTcGFjZTo6
U2l6ZUNsYXNzJik7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTmV3U3BhY2U6OlNp
emVDbGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CShyZXZpc2lvbiA5NDQ3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTcgQEAgdm9pZCBTbG90VmlzaXRv
cjo6ZHJhaW4oKQogI2VuZGlmCiB9CiAKK3ZvaWQgU2xvdFZpc2l0b3I6OmhhcnZlc3RXZWFrUmVm
ZXJlbmNlcygpCit7CisgICAgd2hpbGUgKG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKSB7
CisgICAgICAgIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqIGN1cnJlbnQgPSBtX2ZpcnN0V2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlcjsKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogbmV4dCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcio+KGN1cnJlbnQtPm1fbmV4
dEFuZEZsYWcgJiB+MSk7CisgICAgICAgIGN1cnJlbnQtPm1fbmV4dEFuZEZsYWcgPSAwOworICAg
ICAgICBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlciA9IG5leHQ7CisgICAgICAgIGN1cnJl
bnQtPnZpc2l0V2Vha1JlZmVyZW5jZXMoKnRoaXMpOworICAgIH0KK30KKwogI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQogdm9pZCBNYXJrU3RhY2s6OnZhbGlkYXRlU2V0KEpTVmFsdWUqIHZhbHVl
cywgc2l6ZV90IGNvdW50KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJWVGFibGVTcGVjdHJ1bS5o
IgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtOTMsNiArOTQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgYXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qKTsKICAgICAg
ICAgaW5saW5lIHZvaWQgYXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qLCBz
aXplX3QgY291bnQpOwogICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICAgICAgaW5saW5lIHZvaWQgYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKik7CisgICAgICAg
IAogICAgICAgICBib29sIGFkZE9wYXF1ZVJvb3Qodm9pZCopOwogICAgICAgICBib29sIGNvbnRh
aW5zT3BhcXVlUm9vdCh2b2lkKik7CiAgICAgICAgIGludCBvcGFxdWVSb290Q291bnQoKTsKQEAg
LTEwMyw2ICsxMDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZUYWJsZVNwZWN0cnVt
IG1fdmlzaXRlZFR5cGVDb3VudHM7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIGFkZFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5jZUhhcnZlc3Rlciogd2Vha1JlZmVyZW5jZUhhcnZl
c3RlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIt
Pm1fbmV4dEFuZEZsYWcgJiAxKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXItPm1fbmV4dEFuZEZsYWcgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpIHwgMTsKKyAgICAgICAg
ICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyID0gd2Vha1JlZmVyZW5jZUhhcnZlc3Rl
cjsKKyAgICAgICAgfQorCiAgICAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQogICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVNldChKU1ZhbHVlKiwgc2l6ZV90KTsKQEAg
LTEyMCw2ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFya1N0YWNrQXJyYXk8
TWFya1NldD4gbV9tYXJrU2V0czsKICAgICAgICAgTWFya1N0YWNrQXJyYXk8SlNDZWxsKj4gbV92
YWx1ZXM7CiAgICAgICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7IC8vIEhhbmRsZS1v
d25pbmcgZGF0YSBzdHJ1Y3R1cmVzIG5vdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rv
ci4KKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogbV9maXJzdFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXI7CiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBwdWJsaWM6CkBA
IC0xMzAsNiArMTQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgTWFya1N0YWNr
OjpNYXJrU3RhY2sodm9pZCoganNBcnJheVZQdHIpCiAgICAgICAgIDogbV9qc0FycmF5VlB0cihq
c0FycmF5VlB0cikKKyAgICAgICAgLCBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcigwKQog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2lzRHJhaW5pbmcoZmFsc2UpCkBAIC0yNTUs
NiArMjY5LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIG1fbWFya1NldHMu
YXBwZW5kKE1hcmtTZXQoc2xvdCwgc2xvdCArIGNvdW50KSk7CiAgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmll
cmVkUG9pbnRlcihUKiogc2xvdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICAg
ICAgSlNDZWxsKiB2YWx1ZSA9ICpzbG90OworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAg
ICBpbnRlcm5hbEFwcGVuZCh2YWx1ZSk7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1ZhbHVlKiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDk0NDc2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsOCBAQCBwdWJsaWM6CiAgICAgU2xvdFZpc2l0b3Iodm9pZCoganNBcnJheVZQ
dHIpOwogCiAgICAgdm9pZCBkcmFpbigpOwotCisgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5j
ZXMoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCopOwog
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrUmVmZXJl
bmNlSGFydmVzdGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaWZuZGVmIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXJfaAorI2RlZmluZSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyX2gKKworI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFya1N0YWNrOwor
Y2xhc3MgU2xvdFZpc2l0b3I7CisKK2NsYXNzIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikg
PSAwOworICAgIAorcHJvdGVjdGVkOgorICAgIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKQorICAg
ICAgICA6IG1fbmV4dEFuZEZsYWcoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
fldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoKSB7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTWFya1N0YWNrOworICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKKyAgICAKKyAgICB1
aW50cHRyX3QgbV9uZXh0QW5kRmxhZzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCg==
</data>
<flag name="commit-queue"
          id="102612"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106242</attachid>
            <date>2011-09-02 21:06:46 -0700</date>
            <delta_ts>2011-09-02 22:13:11 -0700</delta_ts>
            <desc>the patch - fix more conflicts</desc>
            <filename>weakrefvalueprofile_patch_6.diff</filename>
            <type>text/plain</type>
            <size>22575</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGUgZG9lcyBub3QgbWFrZSBpdCBzYWZlIHRvIGludHJvc3BlY3QgY2VsbCB2YWx1
ZXMKKyAgICAgICAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAKKyAgICAgICAgVmFsdWVQcm9maWxlIGJ1Y2tl
dHMgYXJlIG5vdyB3ZWFrIHJlZmVyZW5jZXMsIGltcGxlbWVudGVkIHVzaW5nIGEKKyAgICAgICAg
bGlnaHQtd2VpZ2h0IHdlYWsgcmVmZXJlbmNlIG1lY2hhbmlzbSB0aGF0IHRoaXMgcGF0Y2ggYWxz
byBhZGRzICh0aGUKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcikuICBJZiBhIGNlbGwg
c3RvcmVkIGluIGEgVmFsdWVQcm9maWxlIGJ1Y2tldAorICAgICAgICBpcyBub3QgbWFya2VkLCB0
aGVuIHRoZSBidWNrZXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIFN0cnVjdHVyZQorICAgICAgICBw
b2ludGVyLiAgSWYgdGhlIFN0cnVjdHVyZSBpcyBub3QgbWFya2VkIGVpdGhlciwgdGhlbiBpdCBp
cyB0dXJuZWQKKyAgICAgICAgaW50byBhIENsYXNzSW5mbyBwb2ludGVyLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVBy
b2ZpbGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZJ
bnQzMnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mRG91Ymxlcyk6Cisg
ICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZDZWxscyk6CisgICAgICAgIChKU0M6
OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZBcnJheXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2Zp
bGU6OnByb2JhYmlsaXR5T2ZBcnJheSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vh
a0J1Y2tldDo6V2Vha0J1Y2tldCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1
Y2tldDo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0
Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojppc0Ns
YXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6aXNTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQ6OmFzU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpXZWFrQnVja2V0Ojphc0NsYXNzSW5m
byk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6V2Vha0J1Y2tldDo6Z2V0Q2xhc3NJbmZv
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAg
KEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Omhh
cnZlc3RXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAg
ICAgKEpTQzo6TWFya1N0YWNrOjphZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKToKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjpNYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmFw
cGVuZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgor
ICAgICAgICAqIGhlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcik6Cisg
ICAgICAgIChKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI6On5XZWFrUmVmZXJlbmNlSGFydmVz
dGVyKToKKwogMjAxMS0wOS0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXBsYWNlIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIHN0cmluZyBlcXVhbHMo
KSBtZXRob2RzIHdpdGggVVN0cmluZyB2ZXJzaW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCREZGQUUxMEZD
NjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBENjlFRjQgLyogT3du
RmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYyNDJEQTcxM0YzQjFFODAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3
MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY5
NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8q
IFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGQzgxNTBBMTQwNDNCRjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUw
OTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAsNiArNzcxLDcgQEAKIAkJ
MEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRS
ZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
UmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMz
REMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBs
aW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJG
RjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTg3LDYgKzE1ODksNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2
MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaCAqLywKIAkJCQkwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0u
aCAqLywKIAkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3Bw
ICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0
LmggKi8sCkBAIC0yMzU2LDYgKzIzNTksNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJ
MEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNDBFMTZGNUNEMDBCMzQ0NjAg
LyogQWx3YXlzSW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNTBFMTZGNUNEMDBC
MzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQzMywxOSArMTQzMywyMSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRh
YmxlKiBvCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewogI2lmIEVOQUJMRShWRVJCT1NFX1ZB
TFVFX1BST0ZJTEUpCi0gICAgcHJpbnRmKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7
CisgICAgZnByaW50ZihzdGRlcnIsICJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kp
IHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOwogICAg
ICAgICBpZiAocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPCAwKSB7CiAgICAgICAgICAgICBBU1NF
UlQocHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJpbnRmKCIg
ICBhcmcgPSAldTogIiwgaSArIDEpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICBh
cmcgPSAldTogIiwgaSArIDEpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByaW50Zigi
ICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBwcmludGYo
InNhbXBsZXMgPSAldSwgaW50MzIgPSAldSwgZG91YmxlID0gJXUsIGNlbGwgPSAldVxuIiwKLSAg
ICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpLAotICAgICAgICAgICAgICAg
cHJvZmlsZS0+cHJvYmFiaWxpdHlPZkludDMyKCksCi0gICAgICAgICAgICAgICBwcm9maWxlLT5w
cm9iYWJpbGl0eU9mRG91YmxlKCksCi0gICAgICAgICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0
eU9mQ2VsbCgpKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgYmMgPSAlZDogIiwg
cHJvZmlsZS0+Ynl0ZWNvZGVPZmZzZXQpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAg
ICAgICAgICAgICAic2FtcGxlcyA9ICV1LCBpbnQzMiA9ICV1LCBkb3VibGUgPSAldSwgY2VsbCA9
ICV1LCBhcnJheSA9ICV1XG4iLAorICAgICAgICAgICAgICAgIHByb2ZpbGUtPm51bWJlck9mU2Ft
cGxlcygpLAorICAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZJbnQzMigpLAor
ICAgICAgICAgICAgICAgIHByb2ZpbGUtPnByb2JhYmlsaXR5T2ZEb3VibGUoKSwKKyAgICAgICAg
ICAgICAgICBwcm9maWxlLT5wcm9iYWJpbGl0eU9mQ2VsbCgpLAorICAgICAgICAgICAgICAgIHBy
b2ZpbGUtPnByb2JhYmlsaXR5T2ZBcnJheSgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTUxNSw2
ICsxNTE3LDggQEAgdm9pZCBFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VgogCiB2
b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Cisg
ICAgYm9vbCBoYW5kbGVXZWFrUmVmZXJlbmNlcyA9IGZhbHNlOworICAgIAogICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQoJm1fb3duZXJFeGVj
dXRhYmxlKTsKICAgICBpZiAobV9yYXJlRGF0YSkgewpAQCAtMTU2Miw2ICsxNTY2LDY0IEBAIHZv
aWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQKICAgICAgICAgfQogICAgIH0K
ICNlbmRpZgorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGZvciAodW5zaWduZWQg
cHJvZmlsZUluZGV4ID0gMDsgcHJvZmlsZUluZGV4IDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7
ICsrcHJvZmlsZUluZGV4KSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVl
UHJvZmlsZShwcm9maWxlSW5kZXgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7ICsraW5kZXgp
IHsKKyAgICAgICAgICAgIGlmICghcHJvZmlsZS0+YnVja2V0c1tpbmRleF0pIHsKKyAgICAgICAg
ICAgICAgICBpZiAoISFwcm9maWxlLT53ZWFrQnVja2V0c1tpbmRleF0pCisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZVdlYWtSZWZlcmVuY2VzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFKU1Zh
bHVlOjpkZWNvZGUocHJvZmlsZS0+YnVja2V0c1tpbmRleF0pLmlzQ2VsbCgpKSB7CisgICAgICAg
ICAgICAgICAgcHJvZmlsZS0+d2Vha0J1Y2tldHNbaW5kZXhdID0gVmFsdWVQcm9maWxlOjpXZWFr
QnVja2V0KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGhhbmRsZVdlYWtSZWZlcmVuY2VzID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZgorICAgIAorICAgIGlmIChoYW5kbGVXZWFrUmVmZXJlbmNlcykK
KyAgICAgICAgdmlzaXRvci5hZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKHRoaXMpOworfQorCit2
b2lkIENvZGVCbG9jazo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpCit7CisjaWYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGZvciAodW5zaWduZWQgcHJvZmlsZUluZGV4ID0g
MDsgcHJvZmlsZUluZGV4IDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsrcHJvZmlsZUluZGV4
KSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShwcm9maWxl
SW5kZXgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IGlmICghIXByb2ZpbGUtPmJ1Y2tldHNbaW5kZXhdKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShwcm9maWxlLT5idWNrZXRzW2luZGV4XSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0g
dmFsdWUuYXNDZWxsKCk7CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBwcm9maWxlLT5idWNrZXRzW2luZGV4XSA9IEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IGNl
bGwtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBWYWx1ZVByb2ZpbGU6OldlYWtCdWNrZXQgd2VhayA9IHByb2ZpbGUtPndlYWtCdWNrZXRzW2lu
ZGV4XTsKKyAgICAgICAgICAgIGlmICghd2VhayB8fCB3ZWFrLmlzQ2xhc3NJbmZvKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCh3
ZWFrLmlzU3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHdlYWsu
YXNTdHJ1Y3R1cmUoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHByb2ZpbGUtPndlYWtCdWNrZXRzW2luZGV4XSA9IHdlYWsuYXNTdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogSGFuZGxl
ckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJO
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIK
KyNpbmNsdWRlICJXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9m
aWxlLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgpAQCAtMjA1LDcgKzIwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KICNl
bmRpZgogCi0gICAgY2xhc3MgQ29kZUJsb2NrIHsKKyAgICBjbGFzcyBDb2RlQmxvY2s6IHB1Ymxp
YyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHJvdGVjdGVkOgpAQCAtMjE4LDYg
KzIxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsK
IAogICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgICAgIHZv
aWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw4IEBACiAjaWZuZGVmIFZhbHVlUHJvZmlsZV9oCiAjZGVmaW5lIFZhbHVlUHJvZmlsZV9o
CiAKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDUsMTQgKzQ3LDI1IEBA
IHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
QnVja2V0czsgKytpKQotICAgICAgICAgICAgYnVja2V0c1tpXS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKEpTVmFsdWUoKSk7CisgICAgICAgICAgICBidWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CisgICAgfQorICAgIAorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KHVuc2lnbmVkIGJ1Y2tldCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghIWJ1Y2tldHNbYnVj
a2V0XSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShidWNr
ZXRzW2J1Y2tldF0pOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB3ZWFrQnVj
a2V0c1tidWNrZXRdLmdldENsYXNzSW5mbygpOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBu
dW1iZXJPZlNhbXBsZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldKQorICAgICAgICAgICAgaWYgKCEhYnVj
a2V0c1tpXSB8fCAhIXdlYWtCdWNrZXRzW2ldKQogICAgICAgICAgICAgICAgIHJlc3VsdCsrOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs4Miw3IEBAIHN0cnVj
dCBWYWx1ZVByb2ZpbGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNJbnQzMigp
KQorICAgICAgICAgICAgaWYgKCEhYnVja2V0c1tpXSAmJiBKU1ZhbHVlOjpkZWNvZGUoYnVja2V0
c1tpXSkuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03OSw3ICs5Miw3IEBAIHN0cnVjdCBWYWx1ZVByb2Zp
bGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoISFidWNrZXRzW2ldICYmIGJ1Y2tldHNbaV0uZ2V0KCkuaXNEb3VibGUoKSkKKyAgICAgICAg
ICAgIGlmICghIWJ1Y2tldHNbaV0gJiYgSlNWYWx1ZTo6ZGVjb2RlKGJ1Y2tldHNbaV0pLmlzRG91
YmxlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTg5LDcgKzEwMiwxNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhYnVj
a2V0c1tpXSAmJiBidWNrZXRzW2ldLmdldCgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgaWYgKCEh
Y2xhc3NJbmZvKGkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mQXJy
YXlzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgeworICAgICAg
ICAgICAgaWYgKGNsYXNzSW5mbyhpKSA9PSAmSlNBcnJheTo6c19pbmZvKQogICAgICAgICAgICAg
ICAgIHJlc3VsdCsrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTUs
OCArMTM4LDc3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICByZXR1cm4gY29tcHV0
ZVByb2JhYmlsaXR5KG51bWJlck9mQ2VsbHMoKSwgbnVtYmVyT2ZTYW1wbGVzKCkpOwogICAgIH0K
ICAgICAKKyAgICB1bnNpZ25lZCBwcm9iYWJpbGl0eU9mQXJyYXkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eShudW1iZXJPZkFycmF5cygpLCBudW1iZXJP
ZlNhbXBsZXMoKSk7CisgICAgfQorICAgIAogICAgIGludCBieXRlY29kZU9mZnNldDsgLy8gLTEg
Zm9yIHByb2xvZ3VlCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBidWNrZXRzW251bWJl
ck9mQnVja2V0c107CisgICAgRW5jb2RlZEpTVmFsdWUgYnVja2V0c1tudW1iZXJPZkJ1Y2tldHNd
OworICAgIAorICAgIGNsYXNzIFdlYWtCdWNrZXQgeworICAgIHB1YmxpYzoKKyAgICAgICAgV2Vh
a0J1Y2tldCgpCisgICAgICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICAgICAgeworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBXZWFrQnVja2V0KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
ICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUp
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdlYWtCdWNrZXQoY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCisgICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNsYXNzSW5mbykgfCAxKQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuICFtX3ZhbHVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fdmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNDbGFzc0luZm8oKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gISEobV92YWx1ZSAmIDEpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU3RydWN0dXJlKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuICFpc0VtcHR5KCkgJiYgIWlzQ2xhc3NJbmZvKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cnVjdHVyZSogYXNTdHJ1Y3R1cmUoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPihtX3ZhbHVlKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBhc0NsYXNzSW5mbygpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0NsYXNzSW5mbygpKTsKKyAgICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENsYXNzSW5mbyo+KG1fdmFsdWUgJiB+c3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0
IENsYXNzSW5mbyogZ2V0Q2xhc3NJbmZvKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlm
IChpc0NsYXNzSW5mbygpKQorICAgICAgICAgICAgICAgIHJldHVybiBhc0NsYXNzSW5mbygpOwor
ICAgICAgICAgICAgcmV0dXJuIGFzU3RydWN0dXJlKCktPmNsYXNzSW5mbygpOworICAgICAgICB9
CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworICAg
IH07CisgICAgCisgICAgV2Vha0J1Y2tldCB3ZWFrQnVja2V0c1tudW1iZXJPZkJ1Y2tldHNdOyAv
LyB0aGlzIGlzIG5vdCBjb3ZlcmVkIGJ5IGEgd3JpdGUgYmFycmllciBiZWNhdXNlIGl0IGlzIG9u
bHkgc2V0IGZyb20gR0MKIH07CiAKIGlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVP
ZmZzZXQoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEzLDYgKzUxMywxMSBAQCB2b2lkIEhl
YXA6Om1hcmtUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RWCiAgICAgfQogfQogCit2b2lkIEhlYXA6
OmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpCit7CisgICAgbV9zbG90VmlzaXRvci5oYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoKTsKK30KKwogaW5saW5lIFJlZ2lzdGVyRmlsZSYgSGVhcDo6cmVnaXN0ZXJG
aWxlKCkKIHsKICAgICByZXR1cm4gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCk7CkBAIC01ODEsNiArNTg2LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIG1f
aGFuZGxlU3RhY2sudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICB2aXNpdG9yLmRyYWluKCk7
CiAKKyAgICBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKKwogICAgIC8vIFdlYWsgaGFuZGxlcyBt
dXN0IGJlIG1hcmtlZCBsYXN0LCBiZWNhdXNlIHRoZWlyIG93bmVycyB1c2UgdGhlIHNldCBvZgog
ICAgIC8vIG9wYXF1ZSByb290cyB0byBkZXRlcm1pbmUgcmVhY2hhYmlsaXR5LgogICAgIGludCBs
YXN0T3BhcXVlUm9vdENvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gOTQ0NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBtYXJrUm9vdHMoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9v
dFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290Vmlz
aXRvciYpOworICAgICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogCiAgICAgICAg
IHZvaWQqIHRyeUFsbG9jYXRlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKICAgICAgICAgdm9pZCog
YWxsb2NhdGVTbG93Q2FzZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDk0NDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDYgKzEzNiwxNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAjZW5kaWYKIH0KIAordm9p
ZCBTbG90VmlzaXRvcjo6aGFydmVzdFdlYWtSZWZlcmVuY2VzKCkKK3sKKyAgICB3aGlsZSAobV9m
aXJzdFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIpIHsKKyAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZl
c3RlciogY3VycmVudCA9IG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyOworICAgICAgICBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyKiBuZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxXZWFrUmVmZXJl
bmNlSGFydmVzdGVyKj4oY3VycmVudC0+bV9uZXh0QW5kRmxhZyAmIH4xKTsKKyAgICAgICAgY3Vy
cmVudC0+bV9uZXh0QW5kRmxhZyA9IDA7CisgICAgICAgIG1fZmlyc3RXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyID0gbmV4dDsKKyAgICAgICAgY3VycmVudC0+dmlzaXRXZWFrUmVmZXJlbmNlcygqdGhp
cyk7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiB2b2lkIE1hcmtTdGFj
azo6dmFsaWRhdGVTZXQoSlNWYWx1ZSogdmFsdWVzLCBzaXplX3QgY291bnQpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAkocmV2aXNpb24gOTQ0NzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5o
IgogI2luY2x1ZGUgIlZUYWJsZVNwZWN0cnVtLmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05Myw2ICs5NCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhcHBlbmQo
V3JpdGVCYXJyaWVyQmFzZTxUPiopOwogICAgICAgICBpbmxpbmUgdm9pZCBhcHBlbmRWYWx1ZXMo
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiosIHNpemVfdCBjb3VudCk7CiAgICAgICAgIAorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBpbmxpbmUgdm9pZCBhcHBlbmRVbmJh
cnJpZXJlZFBvaW50ZXIoVCoqKTsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkT3BhcXVlUm9v
dCh2b2lkKik7CiAgICAgICAgIGJvb2wgY29udGFpbnNPcGFxdWVSb290KHZvaWQqKTsKICAgICAg
ICAgaW50IG9wYXF1ZVJvb3RDb3VudCgpOwpAQCAtMTAzLDYgKzEwNywxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgVlRhYmxlU3BlY3RydW0gbV92aXNpdGVkVHlwZUNvdW50czsKICNlbmRp
ZgogCisgICAgICAgIHZvaWQgYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3RlcihXZWFrUmVmZXJlbmNl
SGFydmVzdGVyKiB3ZWFrUmVmZXJlbmNlSGFydmVzdGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+bV9uZXh0QW5kRmxhZyAmIDEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1JlZmVyZW5jZUhhcnZlc3Rlci0+bV9u
ZXh0QW5kRmxhZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2ZpcnN0V2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcikgfCAxOworICAgICAgICAgICAgbV9maXJzdFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIgPSB3ZWFrUmVmZXJlbmNlSGFydmVzdGVyOworICAgICAgICB9CisKICAgICBwcm90ZWN0
ZWQ6CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlk
YXRlU2V0KEpTVmFsdWUqLCBzaXplX3QpOwpAQCAtMTIwLDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBtX21hcmtTZXRzOwogICAgICAg
ICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAgICAgICAgSGFzaFNldDx2b2lk
Kj4gbV9vcGFxdWVSb290czsgLy8gSGFuZGxlLW93bmluZyBkYXRhIHN0cnVjdHVyZXMgbm90IHZp
c2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorICAgICAgICBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyKiBtX2ZpcnN0V2Vha1JlZmVyZW5jZUhhcnZlc3RlcjsKICAgICAgICAgCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgIHB1YmxpYzoKQEAgLTEzMCw2ICsxNDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0
cikKICAgICAgICAgOiBtX2pzQXJyYXlWUHRyKGpzQXJyYXlWUHRyKQorICAgICAgICAsIG1fZmly
c3RXZWFrUmVmZXJlbmNlSGFydmVzdGVyKDApCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAgICAgICAs
IG1faXNEcmFpbmluZyhmYWxzZSkKQEAgLTI1NSw2ICsyNjksMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZW5kaWYKICAgICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldChzbG90LCBzbG90ICsg
Y291bnQpKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGlubGluZSB2
b2lkIE1hcmtTdGFjazo6YXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKiBzbG90KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHNsb3QpOworICAgICAgICBKU0NlbGwqIHZhbHVlID0gKnNsb3Q7Cisg
ICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIGludGVybmFsQXBwZW5kKHZhbHVlKTsKKyAg
ICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFs
dWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuaAkocmV2aXNpb24gOTQ0NzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIHB1YmxpYzoKICAg
ICBTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0cik7CiAKICAgICB2b2lkIGRyYWluKCk7Ci0K
KyAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworICAgIAogcHJpdmF0ZToKICAgICB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKik7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKgorICovCisKKyNpZm5kZWYgV2Vha1JlZmVyZW5jZUhhcnZlc3Rlcl9oCisjZGVmaW5lIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXJfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBNYXJrU3RhY2s7CitjbGFzcyBTbG90VmlzaXRvcjsKKworY2xhc3Mg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSA9IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpCisgICAgICAgIDogbV9uZXh0QW5kRmxhZygwKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+V2Vha1JlZmVyZW5jZUhhcnZlc3RlcigpIHsg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2s7CisgICAgZnJpZW5kIGNs
YXNzIFNsb3RWaXNpdG9yOworICAgIAorICAgIHVpbnRwdHJfdCBtX25leHRBbmRGbGFnOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>