<?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>80571</bug_id>
          
          <creation_ts>2012-03-07 22:07:09 -0800</creation_ts>
          <short_desc>[mac] Restore color space switching code to run-webkit-tests</short_desc>
          <delta_ts>2012-03-20 15:33:05 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>dpranke</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573598</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-07 22:07:09 -0800</bug_when>
    <thetext>Mac/CG pixel results on Lion vary if the display color space is changed.

The attached patch will fix this by returning to our old behavior of setting the systemwide color profile. However, it will address the two concerns from https://bugs.webkit.org/show_bug.cgi?id=72424 by using the new (to us) LayoutTestHelper hooks in run-webkit-tests.

With this patch applied, pixel results from WkTR and DRT match both between each other, and between any chosen system color space.

We should probably find a way to share LayoutTestHelper source with the Chromium port (they&apos;re still using deprecated ColorSync API in order to support Leopard), though I&apos;m not sure where to put the code if we do. We&apos;ll have to work that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573599</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-03-07 22:07:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/11008529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573607</commentid>
    <comment_count>2</comment_count>
      <attachid>130771</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-07 22:14:52 -0800</bug_when>
    <thetext>Created attachment 130771
patch

Patch, but needs more testing (especially that colors output match chromium as much as possible, otherwise required rebaselines will be even more significant). In either case, many mac baselines committed between https://bugs.webkit.org/show_bug.cgi?id=75662 landing and now will probably need to be regenerated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573612</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 22:17:08 -0800</bug_when>
    <thetext>Attachment 130771 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/D...&quot; exit_code: 1
Tools/Scripts/webkitpy/layout_tests/port/mac.py:150:  trailing whitespace  [pep8/W291] [5]
Total errors found: 1 in 7 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>573616</commentid>
    <comment_count>4</comment_count>
      <attachid>130771</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-07 22:24:52 -0800</bug_when>
    <thetext>Comment on attachment 130771
patch

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

&gt; Tools/ChangeLog:11
&gt; +        causes system color profile to not affect results on Lion.

_the_ system color profile?

I&apos;d call it the display color profile, too.

&gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:58
&gt; +    CFUUIDRef displayRef = CGDisplayCreateUUIDFromDisplayID(CGMainDisplayID());
&gt; +    
&gt; +    if (!sInitialProfileURL) {
&gt; +        CFDictionaryRef deviceInfo = ColorSyncDeviceCopyDeviceInfo(kColorSyncDisplayDeviceClass, displayRef);
&gt; +        CFDictionaryRef profileInfo = (CFDictionaryRef)CFDictionaryGetValue(deviceInfo, kColorSyncCustomProfiles);
&gt; +        if (profileInfo)
&gt; +            sInitialProfileURL = (CFURLRef)CFDictionaryGetValue(profileInfo, CFSTR(&quot;1&quot;));
&gt; +    }

I guess it doesn&apos;t really matter that this function leaks like a sieve?

&gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:56
&gt; -    RetainPtr&lt;CGColorSpaceRef&gt; colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB());
&gt; +    // Creating this bitmap in generic RGB (which matches the device color space as we have set it) prevents any color conversion when the image of the web view is drawn into it.
&gt; +    RetainPtr&lt;CGColorSpaceRef&gt; colorSpace(AdoptCF, CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB));

Hrm, are these changes necessary? Will they affect existing pixel results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573626</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-07 22:38:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 130771 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130771&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        causes system color profile to not affect results on Lion.
&gt; 
&gt; _the_ system color profile?
&gt; 
&gt; I&apos;d call it the display color profile, too.

*Main* display, even.

&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:58
&gt; &gt; +    CFUUIDRef displayRef = CGDisplayCreateUUIDFromDisplayID(CGMainDisplayID());
&gt; &gt; +    
&gt; &gt; +    if (!sInitialProfileURL) {
&gt; &gt; +        CFDictionaryRef deviceInfo = ColorSyncDeviceCopyDeviceInfo(kColorSyncDisplayDeviceClass, displayRef);
&gt; &gt; +        CFDictionaryRef profileInfo = (CFDictionaryRef)CFDictionaryGetValue(deviceInfo, kColorSyncCustomProfiles);
&gt; &gt; +        if (profileInfo)
&gt; &gt; +            sInitialProfileURL = (CFURLRef)CFDictionaryGetValue(profileInfo, CFSTR(&quot;1&quot;));
&gt; &gt; +    }
&gt; 
&gt; I guess it doesn&apos;t really matter that this function leaks like a sieve?

Not really? But, we might as well clean up anyway.

&gt; &gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:56
&gt; &gt; -    RetainPtr&lt;CGColorSpaceRef&gt; colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB());
&gt; &gt; +    // Creating this bitmap in generic RGB (which matches the device color space as we have set it) prevents any color conversion when the image of the web view is drawn into it.
&gt; &gt; +    RetainPtr&lt;CGColorSpaceRef&gt; colorSpace(AdoptCF, CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB));
&gt; 
&gt; Hrm, are these changes necessary? Will they affect existing pixel results?

I expect they could be necessary in the case where interpretation of deviceRGB (which is unfortunately not actually defined to mean anything specific) changes, causing conversion between data in other color spaces and this to be different. It&apos;s one dimension I haven&apos;t had a chance to double check yet (and one of the reasons I didn&apos;t set r? yet). The old code (before https://bugs.webkit.org/show_bug.cgi?id=75662) also used Generic RGB here, just in a slightly more roundabout way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574118</commentid>
    <comment_count>6</comment_count>
      <attachid>130886</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-08 13:11:38 -0800</bug_when>
    <thetext>Created attachment 130886
patch for safekeeping

Patch, but still needs investigation of buffer colorspace choice vs. Chromium and going forward; just for safekeeping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574820</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-09 05:06:19 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=130886) [details]
&gt; patch for safekeeping
&gt; 
&gt; Patch, but still needs investigation of buffer colorspace choice vs. Chromium and going forward; just for safekeeping.

I&apos;ve generated most results of the SVG pixel tests by forcing Generic RGB profile on my iMac before.
I&apos;ve rebaselined to trunk, and here are my findings:

- When I switch to Generic RGB profile manually, all tests pass, except the ones you&apos;ve added to platform/mac/test_expectations.txt (they&apos;re now failing)
- When I switch to iMac profile, more tests are failing, but also including those that you marked as IMAGE failing in the test_expectations.txt file on mac.

It&apos;s quite frustrating for me, as the trunk pixel test baseline (before the recent changes) passed with tolerance 0 on my both 64 bit machines, one running Lion, one running SL, and I&apos;m used to test this way.
Anyhow, now it&apos;s broken and I don&apos;t know which route to take to fix it.
What&apos;s your plan to move on here? Why can&apos;t we add this now for Mac, until we find consensus with the cr guys on how to hook it into their TestShell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574838</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-09 05:32:22 -0800</bug_when>
    <thetext>(In reply to comment #7)
Okay, I partly have to take back what I wrote: It&apos;s partly related to Ojans massive rebaselining, which moved dozens of platform/mac/svg results to platform/mac-future/svg/, which is wrong. I&apos;ll restore some results, to clean up this mess. Mailed Ojan about this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574849</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-09 06:15:22 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; Okay, I partly have to take back what I wrote: It&apos;s partly related to Ojans massive rebaselining, which moved dozens of platform/mac/svg results to platform/mac-future/svg/, which is wrong. I&apos;ll restore some results, to clean up this mess. Mailed Ojan about this as well.
I fixed the SVG pixel test baseline on Lion - generated all results using the Generic RGB profile where needed (I already did that before for most of them) in r10292. No more skipped svg/ tests because of this bug, still some filters/ test need rebaselines.

Anyhow just wanted to let you know that I rebaselined everything in Generic RGB. If you want to run tests, you have to manually switch to Generic RGB profile on mac now, as long as this bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575157</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-09 13:28:03 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=130886) [details] [details]
&gt; &gt; patch for safekeeping
&gt; &gt; 
&gt; &gt; Patch, but still needs investigation of buffer colorspace choice vs. Chromium and going forward; just for safekeeping.
&gt; 
&gt; I&apos;ve generated most results of the SVG pixel tests by forcing Generic RGB profile on my iMac before.
&gt; I&apos;ve rebaselined to trunk, and here are my findings:
&gt; 
&gt; - When I switch to Generic RGB profile manually, all tests pass, except the ones you&apos;ve added to platform/mac/test_expectations.txt (they&apos;re now failing)
&gt; - When I switch to iMac profile, more tests are failing, but also including those that you marked as IMAGE failing in the test_expectations.txt file on mac.
&gt; 
&gt; It&apos;s quite frustrating for me, as the trunk pixel test baseline (before the recent changes) passed with tolerance 0 on my both 64 bit machines, one running Lion, one running SL, and I&apos;m used to test this way.
&gt; Anyhow, now it&apos;s broken and I don&apos;t know which route to take to fix it.
&gt; What&apos;s your plan to move on here? Why can&apos;t we add this now for Mac, until we find consensus with the cr guys on how to hook it into their TestShell.

My plan to move on here is to make sure that our results match cr-mac in the very simplest of cases, and then go with it! This is one of my plans for today.

I agree that it&apos;s very unfortunate, that&apos;s why I brought it up and am fixing it :-D

Thanks for rebaselining all of the tests, by the way! Hopefully those results will stay stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583315</commentid>
    <comment_count>11</comment_count>
      <attachid>132867</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 11:55:47 -0700</bug_when>
    <thetext>Created attachment 132867
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583316</commentid>
    <comment_count>12</comment_count>
      <attachid>132868</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 11:56:32 -0700</bug_when>
    <thetext>Created attachment 132868
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583353</commentid>
    <comment_count>13</comment_count>
      <attachid>132868</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-20 12:31:16 -0700</bug_when>
    <thetext>Comment on attachment 132868
patch

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

&gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:38
&gt; +// This is a simple helper app that changes the ColorSync profile to the

I think the comment should say &quot;the color profile for the main display&quot;.

&gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:51
&gt; +    CFUUIDRef mainDisplay = CGDisplayCreateUUIDFromDisplayID(CGMainDisplayID());

mainDisplayID would be a better name.

&gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:84
&gt; +        fprintf(stderr, &quot;Failed to set color profile for main display!  Many pixel tests may fail as a result.\n&quot;);

One space after the ! pls.

&gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:117
&gt; +    exit(128 + sig);

What is 128 + sig?

&gt; Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:59
&gt; -    [m_window setColorSpace:[[NSScreen mainScreen] colorSpace]];
&gt; +    [m_window setColorSpace:[NSColorSpace genericRGBColorSpace]];

Does DRT need a similar change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583357</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 12:36:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestHelper.m:117
&gt; &gt; +    exit(128 + sig);
&gt; 
&gt; What is 128 + sig?

Those are the error codes reserved for death-by-signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583364</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 12:49:30 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:59
&gt; &gt; -    [m_window setColorSpace:[[NSScreen mainScreen] colorSpace]];
&gt; &gt; +    [m_window setColorSpace:[NSColorSpace genericRGBColorSpace]];
&gt; 
&gt; Does DRT need a similar change?

Actually, WKTR doesn&apos;t need that change, since the color space of the main screen *is* GenericRGB. Tests continue to pass without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583378</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 12:58:36 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/111429</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583495</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 14:57:13 -0700</bug_when>
    <thetext>This broke SL tools build because it uses API that was made public in Lion. I have an ugly patch that basically #ifdefs the whole file to use the old API if on SL or below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583500</commentid>
    <comment_count>18</comment_count>
      <attachid>132908</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 15:00:18 -0700</bug_when>
    <thetext>Created attachment 132908
ugly, dirty patch (not tested on SL! however, very similar code is in DRT/chromium tree so it should be ok)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583513</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-20 15:33:05 -0700</bug_when>
    <thetext>Follow up SL DRT build fix in http://trac.webkit.org/changeset/111452.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130771</attachid>
            <date>2012-03-07 22:14:52 -0800</date>
            <delta_ts>2012-03-08 13:11:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lth.diff</filename>
            <type>text/plain</type>
            <size>22498</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYjM4
ZmRjLi5mYjk5Y2ZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDMtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gUmVzdG9yZSBjb2xvciBzcGFjZSBz
d2l0Y2hpbmcgY29kZSB0byBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTEwMDg1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgdGhlIGxheW91dCB0ZXN0IGhlbHBlciBob29rcyB0byByZXN0b3JlIHRo
ZSBNYWMgc3lzdGVtLXdpZGUKKyAgICAgICAgY29sb3IgcHJvZmlsZSBzd2l0Y2hpbmcgY29kZS4g
VGhpcyBtYWtlcyBXa1RSIGFuZCBEUlQgcmVzdWx0cyBtYXRjaCwgYW5kCisgICAgICAgIGNhdXNl
cyBzeXN0ZW0gY29sb3IgcHJvZmlsZSB0byBub3QgYWZmZWN0IHJlc3VsdHMgb24gTGlvbi4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIu
bTogQWRkZWQuCisgICAgICAgIChpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmlsZSk6CisgICAg
ICAgIChyZXN0b3JlVXNlckNvbG9yUHJvZmlsZSk6CisgICAgICAgIChzaW1wbGVTaWduYWxIYW5k
bGVyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAg
IChNYWNQb3J0LnJlbGVhc2VfaHR0cF9sb2NrKToKKyAgICAgICAgKE1hY1BvcnQpOgorICAgICAg
ICAoTWFjUG9ydC5fcGF0aF90b19oZWxwZXIpOgorICAgICAgICAoTWFjUG9ydC5zdGFydF9oZWxw
ZXIpOgorICAgICAgICAoTWFjUG9ydC5zdG9wX2hlbHBlcik6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlQ0dD
b250ZXh0RnJvbUltYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9y
bVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1X
ZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKToKKwogMjAxMi0wMy0wNiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNp
b24ubW9iaT4KIAogICAgICAgICB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIEpTQzo6SWRlbnRpZmll
clRhYmxlOjp+SWRlbnRpZmllclRhYmxlKCkgb24gRUZMIHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDJmMTI0ZTcuLmRlMGRhOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTMsNiArMTMsNyBAQAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5k
ZW5jaWVzID0gKAorCQkJCTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAogCQkJCUE4NEY2MDkxMDhCMTM3MEUwMEU5NzQ1RiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAogCQkJCUE4NEY2MDhGMDhCMTM3MEUwMEU5NzQ1RiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAogCQkJCTE0MUJGMjM4MDk2QTQ1MUUwMEUwNzUzQyAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLApAQCAtNTUsNiArNTYsMTAgQEAKIAkJMjlDRkJBMTAxMjI3MzZFNjAwQkMzMEMw
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEwRTEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaCAqLzsgfTsKIAkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMwIC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHAgKi87IH07CiAJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlck1hYy5tbSAqLzsgfTsKKwkJMkQ0MDNGMDUxNTA4NzFGOTAwNTM1OEQyIC8qIENh
cmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRTgyNTdFRjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZyYW1ld29yayAqLzsg
fTsKKwkJMkQ0MDNGMDYxNTA4NzFGOTAwNTM1OEQyIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEY2MDg5MDhCMTM2
REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CisJCTJENDAzRjA4MTUwODcxRjkw
MDUzNThEMiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjNCQ0I4OEYwRUE1NzYyMzAwM0M2Mjg5IC8qIE9wZW5HTC5m
cmFtZXdvcmsgKi87IH07CisJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0
SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwogCQkz
QTU2MjZDQjEzMUNBMDJBMDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBNTYyNkMxMTMxQzhC
MTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLm1tICovOyB9OwogCQkzQTU2MjZD
QzEzMUNBMDM2MDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0E1NjI2QzAxMzFDOEIxNzAwMkJF
NkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNDE3REFBMUQxMzdCM0Uy
NDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REFBMUMxMzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNv
cmVUZXN0U3VwcG9ydC5oICovOyB9OwpAQCAtMTYzLDYgKzE2OCwxMyBAQAogCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSAxNDFCRjIxRTA5NkE0NDFEMDBFMDc1M0M7CiAJCQlyZW1vdGVJbmZvID0g
VGVzdE5ldHNjYXBlUGx1Z0luOwogCQl9OworCQkyRDQwM0YyMDE1MDg3MzZDMDA1MzU4RDIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyOworCQkJcmVtb3RlSW5mbyA9IExheW91dFRl
c3RIZWxwZXI7CisJCX07CiAJCTVEQzgyQTZGMTAyM0M5M0QwMEZEMUQzQiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC0yMzgsNiArMjUwLDggQEAKIAkJMjlDRkJBMEUxMjI3MzZFNjAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0ZCQTJEMTIyNzNB
MTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1t
OyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhl
bHBlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBMYXlvdXRUZXN0SGVs
cGVyLm07IHBhdGggPSBtYWMvTGF5b3V0VGVzdEhlbHBlci5tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gTGF5b3V0VGVz
dEhlbHBlcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMzJBNzBBQUIw
MzcwNUUxRjAwQzkxNzgzIC8qIER1bXBSZW5kZXJUcmVlUHJlZml4LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3NUYwOTcxMERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9IGZv
bnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNzVGMDk3MjBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50
dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRX
ZWlnaHRXYXRjaGVyMjAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MCw2
ICszNzQsMTYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKKwkJMkQ0MDNGMDMxNTA4NzFGOTAwNTM1OEQyIC8qIEZyYW1ld29ya3MgKi8g
PSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkyRDQwM0YwNTE1MDg3MUY5MDA1MzU4
RDIgLyogQ2FyYm9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTJENDAzRjA2MTUw
ODcxRjkwMDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQky
RDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OwogCQk5MzQwOTk0RjA4NTQwQ0FFMDA3RjNCQzggLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKQEAgLTQxMyw2ICs0MzcsNyBAQAogCQkJCUE4QjkxQUQyMENGM0IzMDUwMDhGOTFG
RiAvKiBBcHBLaXQgT3ZlcnJpZGVzICovLAogCQkJCUE4QjkxQUM0MENGM0IxNzAwMDhGOTFGRiAv
KiBPYmpDUGx1Z2luICovLAogCQkJCTE0MUJGMUY1MDk2QTQzOTgwMEUwNzUzQyAvKiBUZXN0TmV0
c2NhcGVQbHVnSW4gKi8sCisJCQkJMkQ0MDNFQTAxNTA4NzEzNTAwNTM1OEQyIC8qIExheW91dFRl
c3RIZWxwZXIgKi8sCiAJCQkJOTM0NTIyOUIwQkQxMkIyQzAwODZFREEwIC8qIFJlc291cmNlcyAq
LywKIAkJCQk0MTdEQTkxODEzNzM2NzREMDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICov
LAogCQkJCUE4MDNGRjY0MDlDQUFDQzEwMDlCMkEzNyAvKiBGcmFtZXdvcmtzICovLApAQCAtNTMy
LDYgKzU1NywxNCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTJENDAzRUEwMTUwODcxMzUwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDQwM0VBMjE1
MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovLAorCQkJKTsKKwkJCW5hbWUg
PSBMYXlvdXRUZXN0SGVscGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
NDE3REE5MTgxMzczNjc0RDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01NDYsNiArNTc5LDcgQEAKIAkJ
CQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8sCiAJCQkJQjVB
NzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkxNDFCRjIzMzA5NkE0
NENGMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnBsdWdpbiAqLywKKwkJCQkyRDQwM0Yx
OTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLywKIAkJCSk7CiAJCQluYW1l
ID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzM0LDYgKzc2OCwy
MyBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MUJGMjMzMDk2QTQ0Q0YwMEUwNzUzQyAvKiBU
ZXN0TmV0c2NhcGVQbHVnSW4ucGx1Z2luICovOwogCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxl
LnByb2R1Y3QtdHlwZS5idW5kbGUiOwogCQl9OworCQkyRDQwM0VCMjE1MDg3MUY5MDA1MzU4RDIg
LyogTGF5b3V0VGVzdEhlbHBlciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAyRDQwM0YxNTE1MDg3MUY5MDA1MzU4RDIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkxheW91dFRlc3RIZWxw
ZXIiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMkQ0MDNFRDgxNTA4NzFGOTAwNTM1OEQy
IC8qIFNvdXJjZXMgKi8sCisJCQkJMkQ0MDNGMDMxNTA4NzFGOTAwNTM1OEQyIC8qIEZyYW1ld29y
a3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkpOworCQkJbmFtZSA9IExheW91dFRlc3RIZWxwZXI7CisJCQlwcm9kdWN0SW5zdGFs
bFBhdGggPSAiJChIT01FKS9iaW4iOworCQkJcHJvZHVjdE5hbWUgPSBEdW1wUmVuZGVyVHJlZTsK
KwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0
VGVzdEhlbHBlciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUu
dG9vbCI7CisJCX07CiAJCTkzNDA5OTRBMDg1NDBDQUUwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJl
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNDlDMjlCRjA4OTAyQzZEMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkR1bXBSZW5kZXJUcmVlIiAqLzsKQEAgLTc5Niw2ICs4
NDcsNyBAQAogCQkJCUI1QTc1MjVBMDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYgKi8sCiAJ
CQkJMTQxQkYyMUUwOTZBNDQxRDAwRTA3NTNDIC8qIFRlc3ROZXRzY2FwZVBsdWdJbiAqLywKIAkJ
CQk1REM4MkE2NjEwMjNDOERFMDBGRDFEM0IgLyogRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0
ICovLAorCQkJCTJENDAzRUIyMTUwODcxRjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICov
LAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTg0MSw2ICs4
OTMsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKKwkJMkQ0MDNFRDgxNTA4NzFGOTAwNTM1OEQyIC8qIFNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkyRDQwM0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5
b3V0VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTkzNDA5OTREMDg1NDBDQUUwMDdGM0JD
OCAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtOTA2LDYgKzk2NiwxMSBAQAogCQkJdGFy
Z2V0ID0gMTQxQkYyMUUwOTZBNDQxRDAwRTA3NTNDIC8qIFRlc3ROZXRzY2FwZVBsdWdJbiAqLzsK
IAkJCXRhcmdldFByb3h5ID0gMTQxQkYyMzcwOTZBNDUxRTAwRTA3NTNDIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKIAkJfTsKKwkJMkQ0MDNGMjExNTA4NzM2QzAwNTM1OEQyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi87
CisJCQl0YXJnZXRQcm94eSA9IDJENDAzRjIwMTUwODczNkMwMDUzNThEMiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTVEQzgyQTcwMTAyM0M5M0QwMEZEMUQzQiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJ
CXRhcmdldCA9IDVEQzgyQTY2MTAyM0M4REUwMEZEMUQzQiAvKiBEdW1wUmVuZGVyVHJlZSBQZXJs
IFN1cHBvcnQgKi87CkBAIC05NjksNiArMTAzNCwzMiBAQAogCQkJfTsKIAkJCW5hbWUgPSBSZWxl
YXNlOwogCQl9OworCQkyRDQwM0YxNjE1MDg3MUY5MDA1MzU4RDIgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gQkNCMjgxRjAwQ0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBMYXlvdXRUZXN0
SGVscGVyOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMkQ0MDNGMTcxNTA4NzFG
OTAwNTM1OEQyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgxRjAwQ0ZBNzEzRDAwN0U1
MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSBMYXlvdXRUZXN0SGVscGVyOworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworCQkyRDQwM0YxODE1MDg3MUY5MDA1MzU4RDIgLyogUHJvZHVjdGlvbiAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQ0IyODFGMDBDRkE3MTNEMDA3RTUzM0UgLyogRHVtcFJlbmRlclRyZWUu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUlOU1RBTExfUEFUSCA9ICIk
KFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8kKFdFQktJVF9GUkFNRVdPUktfUkVTT1VS
Q0VTX1BBVEgpIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBMYXlvdXRUZXN0SGVscGVyOworCQkJCVNL
SVBfSU5TVEFMTCA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk1
REM4MkE2NzEwMjNDOERFMDBGRDFEM0IgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0xMTE3LDYgKzEyMDgsMTYg
QEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTJENDAzRjE1MTUwODcxRjkwMDUz
NThEMiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTGF5
b3V0VGVzdEhlbHBlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkyRDQwM0YxNjE1MDg3MUY5MDA1MzU4RDIgLyog
RGVidWcgKi8sCisJCQkJMkQ0MDNGMTcxNTA4NzFGOTAwNTM1OEQyIC8qIFJlbGVhc2UgKi8sCisJ
CQkJMkQ0MDNGMTgxNTA4NzFGOTAwNTM1OEQyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNURDODJBNkUxMDIzQzkyQTAwRkQxRDNCIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTGVnYWN5VGFyZ2V0ICJEdW1wUmVuZGVy
VHJlZSBQZXJsIFN1cHBvcnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RIZWxwZXIubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA0
OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RIZWxwZXIubQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CisjaW1wb3J0IDxBcHBsaWNhdGlvblNlcnZp
Y2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRl
IDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisvLyBUaGlzIGlzIGEgc2ltcGxlIGhl
bHBlciBhcHAgdGhhdCBjaGFuZ2VzIHRoZSBDb2xvclN5bmMgcHJvZmlsZSB0byB0aGUKKy8vIGdl
bmVyaWMgcHJvZmlsZSBhbmQgYmFjayB3aGVuIGRvbmUuICBUaGlzIHByb2dyYW0gaXMgbWFuYWdl
ZCBieSB0aGUgbGF5b3V0CisvLyB0ZXN0IHNjcmlwdCwgc28gaXQgY2FuIGRvIHRoZSBqb2IgZm9y
IG11bHRpcGxlIER1bXBSZW5kZXJUcmVlIHdoaWxlIHRoZXkgYXJlCisvLyBydW5uaW5nIGxheW91
dCB0ZXN0cy4KKworc3RhdGljIENGVVJMUmVmIHNJbml0aWFsUHJvZmlsZVVSTDsKKworc3RhdGlj
IHZvaWQgaW5zdGFsbExheW91dFRlc3RDb2xvclByb2ZpbGUoKQoreworICAgIC8vIFRvIG1ha2Ug
c3VyZSB3ZSBnZXQgY29uc2lzdGVudCBjb2xvcnMgKG5vdCBkZXBlbmRlbnQgb24gdGhlIG1haW4g
ZGlzcGxheSksCisgICAgLy8gd2UgZm9yY2UgdGhlIGdlbmVyaWMgUkdCIGNvbG9yIHByb2ZpbGUu
ICBUaGlzIGNhdXNlcyBhIGNoYW5nZSB0aGUgdXNlciBjYW4KKyAgICAvLyBzZWUuCisgICAgCisg
ICAgQ0ZVVUlEUmVmIGRpc3BsYXlSZWYgPSBDR0Rpc3BsYXlDcmVhdGVVVUlERnJvbURpc3BsYXlJ
RChDR01haW5EaXNwbGF5SUQoKSk7CisgICAgCisgICAgaWYgKCFzSW5pdGlhbFByb2ZpbGVVUkwp
IHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRldmljZUluZm8gPSBDb2xvclN5bmNEZXZpY2VD
b3B5RGV2aWNlSW5mbyhrQ29sb3JTeW5jRGlzcGxheURldmljZUNsYXNzLCBkaXNwbGF5UmVmKTsK
KyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvID0gKENGRGljdGlvbmFyeVJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkZXZpY2VJbmZvLCBrQ29sb3JTeW5jQ3VzdG9tUHJvZmlsZXMp
OworICAgICAgICBpZiAocHJvZmlsZUluZm8pCisgICAgICAgICAgICBzSW5pdGlhbFByb2ZpbGVV
UkwgPSAoQ0ZVUkxSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZUluZm8sIENGU1RSKCIx
IikpOworICAgIH0KKworICAgIENvbG9yU3luY1Byb2ZpbGVSZWYgZ2VuZXJpY0dSQlByb2ZpbGVS
ZWYgPSBDb2xvclN5bmNQcm9maWxlQ3JlYXRlV2l0aE5hbWUoa0NvbG9yU3luY0dlbmVyaWNSR0JQ
cm9maWxlKTsKKyAgICBDRkVycm9yUmVmIGVycm9yOworICAgIENGVVJMUmVmIHByb2ZpbGVVUkwg
PSBDb2xvclN5bmNQcm9maWxlR2V0VVJMKGdlbmVyaWNHUkJQcm9maWxlUmVmLCAmZXJyb3IpOwor
ICAgIGlmICghcHJvZmlsZVVSTCkgeworICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBnZXQgVVJM
IG9mIEdlbmVyaWMgUkdCIGNvbG9yIHByb2ZpbGUhIE1hbnkgcGl4ZWwgdGVzdHMgbWF5IGZhaWwg
YXMgYSByZXN1bHQuIEVycm9yOiAlQCIsIGVycm9yKTsKKyAgICAgICAgc0luaXRpYWxQcm9maWxl
VVJMID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBwcm9maWxlSW5mbyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvZmlsZUluZm8sIGtDb2xvclN5bmNEZXZpY2VEZWZhdWx0UHJvZmlsZUlELCBwcm9maWxlVVJM
KTsKKyAgICAKKyAgICBpZiAoIUNvbG9yU3luY0RldmljZVNldEN1c3RvbVByb2ZpbGVzKGtDb2xv
clN5bmNEaXNwbGF5RGV2aWNlQ2xhc3MsIGRpc3BsYXlSZWYsIHByb2ZpbGVJbmZvKSkgeworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZXQgY29sb3IgcHJvZmlsZSBmb3IgbWFp
biBkaXNwbGF5ISAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC5cbiIpOwor
ICAgICAgICBzSW5pdGlhbFByb2ZpbGVVUkwgPSAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
cmVzdG9yZVVzZXJDb2xvclByb2ZpbGUodm9pZCkKK3sKKyAgICAvLyBUaGlzIGlzIHVzZWQgYXMg
YSBzaWduYWwgaGFuZGxlciwgYW5kIHRodXMgdGhlIGNhbGxzIGludG8gQ29sb3JTeW5jIGFyZSB1
bnNhZmUuCisgICAgLy8gQnV0IHdlIG1pZ2h0IGFzIHdlbGwgdHJ5IHRvIHJlc3RvcmUgdGhlIHVz
ZXIncyBjb2xvciBwcm9maWxlLCB3ZSdyZSBnb2luZyBkb3duIGFueXdheS4uLgorICAgIAorICAg
IGlmICghc0luaXRpYWxQcm9maWxlVVJMKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0ZV
VUlEUmVmIGRpc3BsYXlSZWYgPSBDR0Rpc3BsYXlDcmVhdGVVVUlERnJvbURpc3BsYXlJRChDR01h
aW5EaXNwbGF5SUQoKSk7CisgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9maWxlSW5mbyA9
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvZmlsZUluZm8sIGtDb2xvclN5bmNEZXZp
Y2VEZWZhdWx0UHJvZmlsZUlELCBzSW5pdGlhbFByb2ZpbGVVUkwpOworICAgIENvbG9yU3luY0Rl
dmljZVNldEN1c3RvbVByb2ZpbGVzKGtDb2xvclN5bmNEaXNwbGF5RGV2aWNlQ2xhc3MsIGRpc3Bs
YXlSZWYsIHByb2ZpbGVJbmZvKTsKK30KKworc3RhdGljIHZvaWQgc2ltcGxlU2lnbmFsSGFuZGxl
cihpbnQgc2lnKQoreworICAgIC8vIFRyeSB0byByZXN0b3JlIHRoZSBjb2xvciBwcm9maWxlIGFu
ZCB0cnkgdG8gZ28gZG93biBjbGVhbmx5CisgICAgcmVzdG9yZVVzZXJDb2xvclByb2ZpbGUoKTsK
KyAgICBleGl0KDEyOCArIHNpZyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCit7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKKworICAgIC8vIEhvb2tzIHRoZSB3YXlzIHdlIG1pZ2h0IGdldCB0b2xk
IHRvIGNsZWFuIHVwLi4uCisgICAgc2lnbmFsKFNJR0lOVCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7
CisgICAgc2lnbmFsKFNJR0hVUCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7CisgICAgc2lnbmFsKFNJ
R1RFUk0sIHNpbXBsZVNpZ25hbEhhbmRsZXIpOworCisgICAgLy8gU2F2ZSBvZmYgdGhlIGN1cnJl
bnQgcHJvZmlsZSwgYW5kIHRoZW4gaW5zdGFsbCB0aGUgbGF5b3V0IHRlc3QgcHJvZmlsZS4KKyAg
ICBpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmlsZSgpOworCisgICAgLy8gTGV0IHRoZSBzY3Jp
cHQga25vdyB3ZSdyZSByZWFkeQorICAgIHByaW50ZigicmVhZHlcbiIpOworICAgIGZmbHVzaChz
dGRvdXQpOworCisgICAgLy8gV2FpdCBmb3IgYW55IGtleSAob3Igc2lnbmFsKQorICAgIGdldGNo
YXIoKTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHByb2ZpbGUKKyAgICByZXN0b3JlVXNlckNvbG9y
UHJvZmlsZSgpOworCisgICAgW3Bvb2wgcmVsZWFzZV07CisgICAgcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmluZGV4IGVh
ZWYwZDUuLmFjODhjOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1h
cENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUsIHNpemVfdCBw
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIC8vIENyZWF0
aW5nIHRoaXMgYml0bWFwIGluIHRoZSBkZXZpY2UgY29sb3Igc3BhY2UgcHJldmVudHMgYW55IGNv
bG9yIGNvbnZlcnNpb24gd2hlbiB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGlu
dG8gaXQuCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENG
LCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgLy8gQ3JlYXRpbmcgdGhpcyBi
aXRtYXAgaW4gZ2VuZXJpYyBSR0IgKHdoaWNoIG1hdGNoZXMgdGhlIGRldmljZSBjb2xvciBzcGFj
ZSBhcyB3ZSBoYXZlIHNldCBpdCkgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hlbiB0
aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCisgICAgUmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQikpOwogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGln
aCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOyAvLyBVc2UgQVJHQjggb24gUFBD
IG9yIEJHUkE4IG9uIFg4NiB0byBpbXByb3ZlIENHIHBlcmZvcm1hbmNlCiAgICAgaWYgKCFjb250
ZXh0KSB7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggODI5Yjg5Ni4uZDNlN2RkNyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nl
c3MKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5hcHBsZSBpbXBvcnQgQXBwbGVQ
b3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmxlYWtkZXRlY3RvciBpbXBvcnQg
TGVha0RldGVjdG9yCkBAIC0xNDYsMyArMTQ3LDI1IEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0
KToKIAogICAgIGRlZiByZWxlYXNlX2h0dHBfbG9jayhzZWxmKToKICAgICAgICAgcGFzcworICAg
ICAgICAKKyAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgorICAgICAgICBiaW5hcnlfbmFt
ZSA9ICdMYXlvdXRUZXN0SGVscGVyJworICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChi
aW5hcnlfbmFtZSkKKworICAgIGRlZiBzdGFydF9oZWxwZXIoc2VsZik6CisgICAgICAgIGhlbHBl
cl9wYXRoID0gc2VsZi5fcGF0aF90b19oZWxwZXIoKQorICAgICAgICBpZiBoZWxwZXJfcGF0aDoK
KyAgICAgICAgICAgIF9sb2cuZGVidWcoIlN0YXJ0aW5nIGxheW91dCBoZWxwZXIgJXMiICUgaGVs
cGVyX3BhdGgpCisgICAgICAgICAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKKyAgICAgICAgICAgIHNlbGYuX2hlbHBlciA9IHN1YnBy
b2Nlc3MuUG9wZW4oW2hlbHBlcl9wYXRoXSwKKyAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9j
ZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1Ob25lKQorICAgICAgICAg
ICAgaXNfcmVhZHkgPSBzZWxmLl9oZWxwZXIuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAg
IGlmIG5vdCBpc19yZWFkeS5zdGFydHN3aXRoKCdyZWFkeScpOgorICAgICAgICAgICAgICAgIF9s
b2cuZXJyb3IoIkxheW91dFRlc3RIZWxwZXIgZmFpbGVkIHRvIGJlIHJlYWR5IikKKworICAgIGRl
ZiBzdG9wX2hlbHBlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGVscGVyOgorICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygiU3RvcHBpbmcgTGF5b3V0VGVzdEhlbHBlciIpCisgICAgICAgICAgICBz
ZWxmLl9oZWxwZXIuc3RkaW4ud3JpdGUoInhcbiIpCisgICAgICAgICAgICBzZWxmLl9oZWxwZXIu
c3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5faGVscGVyLndhaXQoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXggNzhiODcxMC4u
Mjg1NjE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2Nh
dGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9u
Q0cuY3BwCkBAIC01OSw4ICs1OSw4IEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250
ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSwgRmxpcEdyYXBoaWNzQ29uCiAgICAgc2l6
ZV90IHJvd0J5dGVzID0gKDQgKiBwaXhlbHNXaWRlICsgNjMpICYgfjYzOwogICAgIHZvaWQqIGJ1
ZmZlciA9IGNhbGxvYyhwaXhlbHNIaWdoLCByb3dCeXRlcyk7CiAKLSAgICAvLyBDcmVhdGluZyB0
aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBj
b2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBp
bnRvIGl0LgotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRD
RiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIC8vIENyZWF0aW5nIHRoaXMg
Yml0bWFwIGluIHRoZSBnZW5lcmljIFJHQiBjb2xvciBzcGFjZSB3aWxsIGVuc3VyZSB0aGF0IHJl
c3VsdHMgbWF0Y2ggRHVtcFJlbmRlclRyZWUuCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlR2VuZXJpY1JHQikpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMs
IGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkhvc3QpOwogICAgIAogICAgIGlmIChmbGlwID09IEZsaXBHcmFwaGlj
c0NvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbQppbmRleCBlYjdlOThiLi4yMDc3NmRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBAIC01Niw3ICs1Niw3IEBAIFBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvCiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJl
Y3QocmVjdCwgLTEwMDAwLCBbKE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RB
dEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7
CiAgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKICAgICBtX3dpbmRvdy5w
bGF0Zm9ybVdlYlZpZXcgPSB0aGlzOwotICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNlOltbTlNT
Y3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgIFttX3dpbmRvdyBzZXRDb2xvclNw
YWNlOltOU0NvbG9yU3BhY2UgZ2VuZXJpY1JHQkNvbG9yU3BhY2VdXTsKICAgICBbW21fd2luZG93
IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107CiAgICAgW21fd2luZG93IG9yZGVyQmFj
azpuaWxdOwogICAgIFttX3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwpAQCAtMTMy
LDkgKzEzMiw3IEBAIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2lu
ZG93U25hcHNob3RJbWFnZSgpCiB7CiAgICAgW21fdmlldyBkaXNwbGF5XTsKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gd2luZG93U25hcHNob3RJbWFnZShBZG9wdENGLCBDR1dpbmRvd0xpc3RD
cmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93
LCBbbV93aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VCb3VuZHNJZ25vcmVGcmFt
aW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9wYXF1ZSkpOwotICAgIAotICAgIC8vIHdpbmRv
d1NuYXBzaG90SW1hZ2Ugd2lsbCBiZSBpbiB0aGUgZGlzcGxheSdzIGNvbG9yIHNwYWNlLCBidXQg
V0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKCkgd2lsbCBkcmF3Ci0gICAgLy8gdGhpcyBpbWFnZSBp
bnRvIGEgR2VuZXJpY1JHQiBiaXRtYXAgY29udGV4dCwgc28gdGhlIHJldHVybmVkIGltYWdlIGlz
IEdlbmVyaWNSR0IuCisKICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130886</attachid>
            <date>2012-03-08 13:11:38 -0800</date>
            <delta_ts>2012-03-20 11:55:47 -0700</delta_ts>
            <desc>patch for safekeeping</desc>
            <filename>80571.diff</filename>
            <type>text/plain</type>
            <size>23095</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYjM4
ZmRjLi41NWI2OTA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDMtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gUmVzdG9yZSBjb2xvciBzcGFjZSBz
d2l0Y2hpbmcgY29kZSB0byBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTEwMDg1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgdGhlIGxheW91dCB0ZXN0IGhlbHBlciBob29rcyB0byByZXN0b3JlIHRo
ZSBNYWMgc3lzdGVtLXdpZGUKKyAgICAgICAgY29sb3IgcHJvZmlsZSBzd2l0Y2hpbmcgY29kZS4g
VGhpcyBtYWtlcyBXa1RSIGFuZCBEUlQgcmVzdWx0cyBtYXRjaCwgYW5kCisgICAgICAgIGNhdXNl
cyB0aGUgbWFpbiBkaXNwbGF5J3MgY29sb3IgcHJvZmlsZSB0byBub3QgYWZmZWN0IHJlc3VsdHMg
b24gTGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RIZWxwZXIubTogQWRkZWQuCisgICAgICAgIChpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChyZXN0b3JlVXNlckNvbG9yUHJvZmlsZSk6CisgICAgICAgIChzaW1w
bGVTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29u
dGV4dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMu
cHk6CisgICAgICAgIChNYWNQb3J0LnJlbGVhc2VfaHR0cF9sb2NrKToKKyAgICAgICAgKE1hY1Bv
cnQpOgorICAgICAgICAoTWFjUG9ydC5fcGF0aF90b19oZWxwZXIpOgorICAgICAgICAoTWFjUG9y
dC5zdGFydF9oZWxwZXIpOgorICAgICAgICAoTWFjUG9ydC5zdG9wX2hlbHBlcik6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdU
Ujo6Y3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmll
dzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKToKKwogMjAxMi0wMy0wNiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIEpT
Qzo6SWRlbnRpZmllclRhYmxlOjp+SWRlbnRpZmllclRhYmxlKCkgb24gRUZMIHBvcnQKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmMTI0ZTcuLmRlMGRhOGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTMsNiArMTMsNyBAQAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkp
OwogCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUE4NEY2MDkxMDhCMTM3MEUwMEU5NzQ1RiAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUE4NEY2MDhGMDhCMTM3MEUwMEU5NzQ1RiAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTE0MUJGMjM4MDk2QTQ1MUUwMEUwNzUzQyAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLApAQCAtNTUsNiArNTYsMTAgQEAKIAkJMjlDRkJBMTAxMjI3
MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEwRTEyMjczNkU2MDBCQzMwQzAg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLzsgfTsKIAkJMjlDRkJBMTExMjI3MzZFNjAw
QkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi87IH07CiAJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJD
MzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLzsgfTsKKwkJMkQ0MDNGMDUxNTA4NzFGOTAw
NTM1OEQyIC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRTgyNTdFRjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZy
YW1ld29yayAqLzsgfTsKKwkJMkQ0MDNGMDYxNTA4NzFGOTAwNTM1OEQyIC8qIENvY29hLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CisJCTJENDAz
RjA4MTUwODcxRjkwMDUzNThEMiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjNCQ0I4OEYwRUE1NzYyMzAwM0M2Mjg5
IC8qIE9wZW5HTC5mcmFtZXdvcmsgKi87IH07CisJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAv
KiBMYXlvdXRUZXN0SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5t
ICovOyB9OwogCQkzQTU2MjZDQjEzMUNBMDJBMDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNB
NTYyNkMxMTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLm1tICovOyB9
OwogCQkzQTU2MjZDQzEzMUNBMDM2MDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0E1NjI2QzAx
MzFDOEIxNzAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNDE3
REFBMUQxMzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REFBMUMxMzdCM0UyNDAwN0M1
N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovOyB9OwpAQCAtMTYzLDYgKzE2OCwxMyBAQAog
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxNDFCRjIxRTA5NkE0NDFEMDBFMDc1M0M7CiAJCQly
ZW1vdGVJbmZvID0gVGVzdE5ldHNjYXBlUGx1Z0luOwogCQl9OworCQkyRDQwM0YyMDE1MDg3MzZD
MDA1MzU4RDIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyOworCQkJcmVtb3RlSW5m
byA9IExheW91dFRlc3RIZWxwZXI7CisJCX07CiAJCTVEQzgyQTZGMTAyM0M5M0QwMEZEMUQzQiAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi87CkBAIC0yMzgsNiArMjUwLDggQEAKIAkJMjlDRkJBMEUxMjI3MzZF
NjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyog
TGF5b3V0VGVzdEhlbHBlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBM
YXlvdXRUZXN0SGVscGVyLm07IHBhdGggPSBtYWMvTGF5b3V0VGVzdEhlbHBlci5tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0
VGVzdEhlbHBlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gTGF5b3V0VGVzdEhlbHBlcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJMzJBNzBBQUIwMzcwNUUxRjAwQzkxNzgzIC8qIER1bXBSZW5kZXJUcmVlUHJlZml4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlUHJlZml4Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NUYwOTcxMERBQzNDQjYwMEM4QjRFNSAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0
ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzVGMDk3MjBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjIwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHBhdGggPSBm
b250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTM2MCw2ICszNzQsMTYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJMkQ0MDNGMDMxNTA4NzFGOTAwNTM1OEQyIC8qIEZy
YW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkyRDQwM0YwNTE1
MDg3MUY5MDA1MzU4RDIgLyogQ2FyYm9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJ
CTJENDAzRjA2MTUwODcxRjkwMDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKKwkJCQkyRDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQk5MzQwOTk0RjA4NTQwQ0FFMDA3RjNCQzggLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTQxMyw2ICs0MzcsNyBAQAogCQkJCUE4QjkxQUQyMENG
M0IzMDUwMDhGOTFGRiAvKiBBcHBLaXQgT3ZlcnJpZGVzICovLAogCQkJCUE4QjkxQUM0MENGM0Ix
NzAwMDhGOTFGRiAvKiBPYmpDUGx1Z2luICovLAogCQkJCTE0MUJGMUY1MDk2QTQzOTgwMEUwNzUz
QyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4gKi8sCisJCQkJMkQ0MDNFQTAxNTA4NzEzNTAwNTM1OEQy
IC8qIExheW91dFRlc3RIZWxwZXIgKi8sCiAJCQkJOTM0NTIyOUIwQkQxMkIyQzAwODZFREEwIC8q
IFJlc291cmNlcyAqLywKIAkJCQk0MTdEQTkxODEzNzM2NzREMDA3QzU3RkIgLyogV2ViQ29yZVRl
c3RTdXBwb3J0ICovLAogCQkJCUE4MDNGRjY0MDlDQUFDQzEwMDlCMkEzNyAvKiBGcmFtZXdvcmtz
ICovLApAQCAtNTMyLDYgKzU1NywxNCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCTJENDAzRUEwMTUwODcxMzUwMDUzNThEMiAvKiBMYXlvdXRU
ZXN0SGVscGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBMYXlvdXRUZXN0SGVscGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJNDE3REE5MTgxMzczNjc0RDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9y
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01NDYsNiAr
NTc5LDcgQEAKIAkJCQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUg
Ki8sCiAJCQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkx
NDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnBsdWdpbiAqLywK
KwkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLywKIAkJ
CSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
NzM0LDYgKzc2OCwyMyBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MUJGMjMzMDk2QTQ0Q0Yw
MEUwNzUzQyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4ucGx1Z2luICovOwogCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5idW5kbGUiOwogCQl9OworCQkyRDQwM0VCMjE1MDg3
MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAyRDQwM0YxNTE1MDg3MUY5MDA1
MzU4RDIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkxh
eW91dFRlc3RIZWxwZXIiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMkQ0MDNFRDgxNTA4
NzFGOTAwNTM1OEQyIC8qIFNvdXJjZXMgKi8sCisJCQkJMkQ0MDNGMDMxNTA4NzFGOTAwNTM1OEQy
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlk
ZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IExheW91dFRlc3RIZWxwZXI7CisJCQlw
cm9kdWN0SW5zdGFsbFBhdGggPSAiJChIT01FKS9iaW4iOworCQkJcHJvZHVjdE5hbWUgPSBEdW1w
UmVuZGVyVHJlZTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAyRDQwM0YxOTE1MDg3MUY5MDA1MzU4
RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTkzNDA5OTRBMDg1NDBDQUUwMDdGM0JDOCAvKiBE
dW1wUmVuZGVyVHJlZSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjlCRjA4OTAyQzZEMDA4QTlFRkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkR1bXBSZW5kZXJUcmVlIiAqLzsK
QEAgLTc5Niw2ICs4NDcsNyBAQAogCQkJCUI1QTc1MjVBMDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFn
ZURpZmYgKi8sCiAJCQkJMTQxQkYyMUUwOTZBNDQxRDAwRTA3NTNDIC8qIFRlc3ROZXRzY2FwZVBs
dWdJbiAqLywKIAkJCQk1REM4MkE2NjEwMjNDOERFMDBGRDFEM0IgLyogRHVtcFJlbmRlclRyZWUg
UGVybCBTdXBwb3J0ICovLAorCQkJCTJENDAzRUIyMTUwODcxRjkwMDUzNThEMiAvKiBMYXlvdXRU
ZXN0SGVscGVyICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
QEAgLTg0MSw2ICs4OTMsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJMkQ0MDNFRDgxNTA4NzFGOTAwNTM1OEQyIC8qIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkyRDQwM0YxQjE1MDg3MjA5MDA1
MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTkzNDA5OTREMDg1
NDBDQUUwMDdGM0JDOCAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtOTA2LDYgKzk2Niwx
MSBAQAogCQkJdGFyZ2V0ID0gMTQxQkYyMUUwOTZBNDQxRDAwRTA3NTNDIC8qIFRlc3ROZXRzY2Fw
ZVBsdWdJbiAqLzsKIAkJCXRhcmdldFByb3h5ID0gMTQxQkYyMzcwOTZBNDUxRTAwRTA3NTNDIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKKwkJMkQ0MDNGMjExNTA4NzM2QzAwNTM1
OEQyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBl
bmRlbmN5OworCQkJdGFyZ2V0ID0gMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRl
c3RIZWxwZXIgKi87CisJCQl0YXJnZXRQcm94eSA9IDJENDAzRjIwMTUwODczNkMwMDUzNThEMiAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTVEQzgyQTcwMTAyM0M5M0QwMEZE
MUQzQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKIAkJCXRhcmdldCA9IDVEQzgyQTY2MTAyM0M4REUwMEZEMUQzQiAvKiBEdW1wUmVu
ZGVyVHJlZSBQZXJsIFN1cHBvcnQgKi87CkBAIC05NjksNiArMTAzNCwzMiBAQAogCQkJfTsKIAkJ
CW5hbWUgPSBSZWxlYXNlOwogCQl9OworCQkyRDQwM0YxNjE1MDg3MUY5MDA1MzU4RDIgLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgxRjAwQ0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJU
cmVlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSBMYXlvdXRUZXN0SGVscGVyOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMkQ0
MDNGMTcxNTA4NzFGOTAwNTM1OEQyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgxRjAw
Q0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBMYXlvdXRUZXN0SGVscGVyOworCQkJfTsK
KwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkyRDQwM0YxODE1MDg3MUY5MDA1MzU4RDIgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQ0IyODFGMDBDRkE3MTNEMDA3RTUzM0UgLyogRHVt
cFJlbmRlclRyZWUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUlOU1RB
TExfUEFUSCA9ICIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8kKFdFQktJVF9GUkFN
RVdPUktfUkVTT1VSQ0VTX1BBVEgpIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBMYXlvdXRUZXN0SGVs
cGVyOworCQkJCVNLSVBfSU5TVEFMTCA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OwogCQk1REM4MkE2NzEwMjNDOERFMDBGRDFEM0IgLyogRGVidWcgKi8gPSB7CiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0xMTE3
LDYgKzEyMDgsMTYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTJENDAzRjE1
MTUwODcxRjkwMDUzNThEMiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiTGF5b3V0VGVzdEhlbHBlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkyRDQwM0YxNjE1MDg3MUY5
MDA1MzU4RDIgLyogRGVidWcgKi8sCisJCQkJMkQ0MDNGMTcxNTA4NzFGOTAwNTM1OEQyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMkQ0MDNGMTgxNTA4NzFGOTAwNTM1OEQyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNURDODJBNkUxMDIzQzky
QTAwRkQxRDNCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTGVnYWN5VGFyZ2V0
ICJEdW1wUmVuZGVyVHJlZSBQZXJsIFN1cHBvcnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jNzM5ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RIZWxwZXIubQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CisjaW1wb3J0IDxBcHBs
aWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNpbmNsdWRlIDxzaWduYWwu
aD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisvLyBUaGlzIGlz
IGEgc2ltcGxlIGhlbHBlciBhcHAgdGhhdCBjaGFuZ2VzIHRoZSBDb2xvclN5bmMgcHJvZmlsZSB0
byB0aGUKKy8vIGdlbmVyaWMgcHJvZmlsZSBhbmQgYmFjayB3aGVuIGRvbmUuICBUaGlzIHByb2dy
YW0gaXMgbWFuYWdlZCBieSB0aGUgbGF5b3V0CisvLyB0ZXN0IHNjcmlwdCwgc28gaXQgY2FuIGRv
IHRoZSBqb2IgZm9yIG11bHRpcGxlIER1bXBSZW5kZXJUcmVlIHdoaWxlIHRoZXkgYXJlCisvLyBy
dW5uaW5nIGxheW91dCB0ZXN0cy4KKworc3RhdGljIENGVVJMUmVmIHNVc2VyQ29sb3JQcm9maWxl
VVJMOworCitzdGF0aWMgdm9pZCBpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmlsZSgpCit7Cisg
ICAgLy8gVG8gbWFrZSBzdXJlIHdlIGdldCBjb25zaXN0ZW50IGNvbG9ycyAobm90IGRlcGVuZGVu
dCBvbiB0aGUgY2hvc2VuIGNvbG9yCisgICAgLy8gc3BhY2Ugb2YgdGhlIG1haW4gZGlzcGxheSks
IHdlIGZvcmNlIHRoZSBnZW5lcmljIFJHQiBjb2xvciBwcm9maWxlLgorICAgIC8vIFRoaXMgY2F1
c2VzIGEgY2hhbmdlIHRoZSB1c2VyIGNhbiBzZWUuCisgICAgCisgICAgQ0ZVVUlEUmVmIG1haW5E
aXNwbGF5ID0gQ0dEaXNwbGF5Q3JlYXRlVVVJREZyb21EaXNwbGF5SUQoQ0dNYWluRGlzcGxheUlE
KCkpOworICAgIAorICAgIGlmICghc1VzZXJDb2xvclByb2ZpbGVVUkwpIHsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5UmVmIGRldmljZUluZm8gPSBDb2xvclN5bmNEZXZpY2VDb3B5RGV2aWNlSW5mbyhr
Q29sb3JTeW5jRGlzcGxheURldmljZUNsYXNzLCBtYWluRGlzcGxheSk7CisgICAgICAgIENGRGlj
dGlvbmFyeVJlZiBwcm9maWxlSW5mbyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGV2aWNlSW5mbywga0NvbG9yU3luY0N1c3RvbVByb2ZpbGVzKTsKKyAgICAgICAgaWYg
KHByb2ZpbGVJbmZvKSB7CisgICAgICAgICAgICBzVXNlckNvbG9yUHJvZmlsZVVSTCA9IChDRlVS
TFJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlSW5mbywgQ0ZTVFIoIjEiKSk7CisgICAg
ICAgICAgICBDRlJldGFpbihzVXNlckNvbG9yUHJvZmlsZVVSTCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIENGUmVsZWFzZShkZXZpY2VJbmZvKTsKKyAgICB9CisKKyAgICBDb2xvclN5
bmNQcm9maWxlUmVmIGdlbmVyaWNSR0JQcm9maWxlID0gQ29sb3JTeW5jUHJvZmlsZUNyZWF0ZVdp
dGhOYW1lKGtDb2xvclN5bmNHZW5lcmljUkdCUHJvZmlsZSk7CisgICAgQ0ZFcnJvclJlZiBlcnJv
cjsKKyAgICBDRlVSTFJlZiBwcm9maWxlVVJMID0gQ29sb3JTeW5jUHJvZmlsZUdldFVSTChnZW5l
cmljUkdCUHJvZmlsZSwgJmVycm9yKTsKKyAgICBpZiAoIXByb2ZpbGVVUkwpIHsKKyAgICAgICAg
TlNMb2coQCJGYWlsZWQgdG8gZ2V0IFVSTCBvZiBHZW5lcmljIFJHQiBjb2xvciBwcm9maWxlISBN
YW55IHBpeGVsIHRlc3RzIG1heSBmYWlsIGFzIGEgcmVzdWx0LiBFcnJvcjogJUAiLCBlcnJvcik7
CisgICAgICAgIAorICAgICAgICBpZiAoc1VzZXJDb2xvclByb2ZpbGVVUkwpIHsKKyAgICAgICAg
ICAgIENGUmVsZWFzZShzVXNlckNvbG9yUHJvZmlsZVVSTCk7CisgICAgICAgICAgICBzVXNlckNv
bG9yUHJvZmlsZVVSTCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENGUmVsZWFz
ZShnZW5lcmljUkdCUHJvZmlsZSk7CisgICAgICAgIENGUmVsZWFzZShtYWluRGlzcGxheSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgcHJvZmlsZUluZm8gPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb2ZpbGVJbmZv
LCBrQ29sb3JTeW5jRGV2aWNlRGVmYXVsdFByb2ZpbGVJRCwgcHJvZmlsZVVSTCk7CisgICAgCisg
ICAgaWYgKCFDb2xvclN5bmNEZXZpY2VTZXRDdXN0b21Qcm9maWxlcyhrQ29sb3JTeW5jRGlzcGxh
eURldmljZUNsYXNzLCBtYWluRGlzcGxheSwgcHJvZmlsZUluZm8pKSB7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiRmFpbGVkIHRvIHNldCBjb2xvciBwcm9maWxlIGZvciBtYWluIGRpc3BsYXkh
ICBNYW55IHBpeGVsIHRlc3RzIG1heSBmYWlsIGFzIGEgcmVzdWx0LlxuIik7CisgICAgICAgIAor
ICAgICAgICBpZiAoc1VzZXJDb2xvclByb2ZpbGVVUkwpIHsKKyAgICAgICAgICAgIENGUmVsZWFz
ZShzVXNlckNvbG9yUHJvZmlsZVVSTCk7CisgICAgICAgICAgICBzVXNlckNvbG9yUHJvZmlsZVVS
TCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQ0ZSZWxlYXNlKHByb2ZpbGVJbmZv
KTsKKyAgICBDRlJlbGVhc2UoZ2VuZXJpY1JHQlByb2ZpbGUpOworICAgIENGUmVsZWFzZShtYWlu
RGlzcGxheSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVVc2VyQ29sb3JQcm9maWxlKHZvaWQp
Cit7CisgICAgLy8gVGhpcyBpcyB1c2VkIGFzIGEgc2lnbmFsIGhhbmRsZXIsIGFuZCB0aHVzIHRo
ZSBjYWxscyBpbnRvIENvbG9yU3luYyBhcmUgdW5zYWZlLgorICAgIC8vIEJ1dCB3ZSBtaWdodCBh
cyB3ZWxsIHRyeSB0byByZXN0b3JlIHRoZSB1c2VyJ3MgY29sb3IgcHJvZmlsZSwgd2UncmUgZ29p
bmcgZG93biBhbnl3YXkuLi4KKyAgICAKKyAgICBpZiAoIXNVc2VyQ29sb3JQcm9maWxlVVJMKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0ZVVUlEUmVmIG1haW5EaXNwbGF5ID0gQ0dEaXNw
bGF5Q3JlYXRlVVVJREZyb21EaXNwbGF5SUQoQ0dNYWluRGlzcGxheUlEKCkpOworICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgcHJvZmlsZUluZm8gPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb2ZpbGVJbmZvLCBrQ29sb3JTeW5jRGV2aWNlRGVmYXVsdFByb2ZpbGVJRCwgc1VzZXJD
b2xvclByb2ZpbGVVUkwpOworICAgIENvbG9yU3luY0RldmljZVNldEN1c3RvbVByb2ZpbGVzKGtD
b2xvclN5bmNEaXNwbGF5RGV2aWNlQ2xhc3MsIG1haW5EaXNwbGF5LCBwcm9maWxlSW5mbyk7Cisg
ICAgQ0ZSZWxlYXNlKG1haW5EaXNwbGF5KTsKKyAgICBDRlJlbGVhc2UocHJvZmlsZUluZm8pOwor
fQorCitzdGF0aWMgdm9pZCBzaW1wbGVTaWduYWxIYW5kbGVyKGludCBzaWcpCit7CisgICAgLy8g
VHJ5IHRvIHJlc3RvcmUgdGhlIGNvbG9yIHByb2ZpbGUgYW5kIHRyeSB0byBnbyBkb3duIGNsZWFu
bHkKKyAgICByZXN0b3JlVXNlckNvbG9yUHJvZmlsZSgpOworICAgIGV4aXQoMTI4ICsgc2lnKTsK
K30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBOU0F1dG9yZWxl
YXNlUG9vbCogcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworCisgICAg
Ly8gSG9va3MgdGhlIHdheXMgd2UgbWlnaHQgZ2V0IHRvbGQgdG8gY2xlYW4gdXAuLi4KKyAgICBz
aWduYWwoU0lHSU5ULCBzaW1wbGVTaWduYWxIYW5kbGVyKTsKKyAgICBzaWduYWwoU0lHSFVQLCBz
aW1wbGVTaWduYWxIYW5kbGVyKTsKKyAgICBzaWduYWwoU0lHVEVSTSwgc2ltcGxlU2lnbmFsSGFu
ZGxlcik7CisKKyAgICAvLyBTYXZlIG9mZiB0aGUgY3VycmVudCBwcm9maWxlLCBhbmQgdGhlbiBp
bnN0YWxsIHRoZSBsYXlvdXQgdGVzdCBwcm9maWxlLgorICAgIGluc3RhbGxMYXlvdXRUZXN0Q29s
b3JQcm9maWxlKCk7CisKKyAgICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93IHdlJ3JlIHJlYWR5Cisg
ICAgcHJpbnRmKCJyZWFkeVxuIik7CisgICAgZmZsdXNoKHN0ZG91dCk7CisKKyAgICAvLyBXYWl0
IGZvciBhbnkga2V5IChvciBzaWduYWwpCisgICAgZ2V0Y2hhcigpOworCisgICAgLy8gUmVzdG9y
ZSB0aGUgcHJvZmlsZQorICAgIHJlc3RvcmVVc2VyQ29sb3JQcm9maWxlKCk7CisKKyAgICBbcG9v
bCByZWxlYXNlXTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KaW5kZXggZWFlZjBkNS4uYWM4OGM5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTUy
LDggKzUyLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dChzaXplX3QgcGl4ZWxzV2lkZSwgc2l6ZV90IHAKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhl
IGRldmljZSBjb2xvciBzcGFjZSBwcmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRo
ZSBpbWFnZSBvZiB0aGUgd2ViIHZpZXcgaXMgZHJhd24gaW50byBpdC4KLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZVJHQigpKTsKKyAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiBnZW5lcmljIFJHQiAo
d2hpY2ggbWF0Y2hlcyB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIGFzIHdlIGhhdmUgc2V0IGl0KSBw
cmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBvZiB0aGUgd2ViIHZp
ZXcgaXMgZHJhd24gaW50byBpdC4KKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VH
ZW5lcmljUkdCKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRD
cmVhdGUoYnVmZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JT
cGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCk7IC8vIFVzZSBBUkdCOCBvbiBQUEMgb3IgQkdSQTggb24gWDg2IHRvIGlt
cHJvdmUgQ0cgcGVyZm9ybWFuY2UKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgZnJlZShi
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Yy5weQppbmRleCA4MjliODk2Li4xZmIyY2Y2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQpAQCAtMjgsNiArMjgsNyBAQAogCiBpbXBvcnQg
bG9nZ2luZwogaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LmFwcGxlIGltcG9ydCBBcHBsZVBvcnQKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQubGVha2RldGVjdG9yIGltcG9ydCBMZWFrRGV0ZWN0b3IKQEAgLTE0Niwz
ICsxNDcsMjUgQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQpOgogCiAgICAgZGVmIHJlbGVhc2Vf
aHR0cF9sb2NrKHNlbGYpOgogICAgICAgICBwYXNzCisKKyAgICBkZWYgX3BhdGhfdG9faGVscGVy
KHNlbGYpOgorICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRUZXN0SGVscGVyJworICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKKworICAgIGRlZiBzdGFydF9o
ZWxwZXIoc2VsZik6CisgICAgICAgIGhlbHBlcl9wYXRoID0gc2VsZi5fcGF0aF90b19oZWxwZXIo
KQorICAgICAgICBpZiBoZWxwZXJfcGF0aDoKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIlN0YXJ0
aW5nIGxheW91dCBoZWxwZXIgJXMiICUgaGVscGVyX3BhdGgpCisgICAgICAgICAgICAjIE5vdGU6
IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKKyAgICAg
ICAgICAgIHNlbGYuX2hlbHBlciA9IHN1YnByb2Nlc3MuUG9wZW4oW2hlbHBlcl9wYXRoXSwKKyAg
ICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsIHN0ZGVycj1Ob25lKQorICAgICAgICAgICAgaXNfcmVhZHkgPSBzZWxmLl9oZWxwZXIuc3Rk
b3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIG5vdCBpc19yZWFkeS5zdGFydHN3aXRoKCdy
ZWFkeScpOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxheW91dFRlc3RIZWxwZXIgZmFp
bGVkIHRvIGJlIHJlYWR5IikKKworICAgIGRlZiBzdG9wX2hlbHBlcihzZWxmKToKKyAgICAgICAg
aWYgc2VsZi5faGVscGVyOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiU3RvcHBpbmcgTGF5b3V0
VGVzdEhlbHBlciIpCisgICAgICAgICAgICBzZWxmLl9oZWxwZXIuc3RkaW4ud3JpdGUoInhcbiIp
CisgICAgICAgICAgICBzZWxmLl9oZWxwZXIuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2Vs
Zi5faGVscGVyLndhaXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9U
ZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9j
YXRpb25DRy5jcHAKaW5kZXggNzhiODcxMC4uMjg1NjE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBAIC01OSw4ICs1OSw4IEBAIHN0YXRp
YyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFn
ZSwgRmxpcEdyYXBoaWNzQ29uCiAgICAgc2l6ZV90IHJvd0J5dGVzID0gKDQgKiBwaXhlbHNXaWRl
ICsgNjMpICYgfjYzOwogICAgIHZvaWQqIGJ1ZmZlciA9IGNhbGxvYyhwaXhlbHNIaWdoLCByb3dC
eXRlcyk7CiAKLSAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9y
IHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdl
IG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgotICAgIFJldGFpblB0cjxDR0NvbG9y
U3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdC
KCkpOworICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGluIHRoZSBnZW5lcmljIFJHQiBjb2xv
ciBzcGFjZSB3aWxsIGVuc3VyZSB0aGF0IHJlc3VsdHMgbWF0Y2ggRHVtcFJlbmRlclRyZWUuCisg
ICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQikpOwogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lk
ZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOwogICAgIAog
ICAgIGlmIChmbGlwID09IEZsaXBHcmFwaGljc0NvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBlYjdlOThiLi4yMDc3
NmRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3
TWFjLm1tCkBAIC01Niw3ICs1Niw3IEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvCiAgICAgTlNS
ZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbKE5TU2NyZWVuICop
W1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAt
IHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CiAgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RS
dW5uZXJXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6WUVTXTsKICAgICBtX3dpbmRvdy5wbGF0Zm9ybVdlYlZpZXcgPSB0aGlzOwotICAgIFtt
X3dpbmRvdyBzZXRDb2xvclNwYWNlOltbTlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1d
OworICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNlOltOU0NvbG9yU3BhY2UgZ2VuZXJpY1JHQkNv
bG9yU3BhY2VdXTsKICAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmll
d107CiAgICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOwogICAgIFttX3dpbmRvdyBzZXRSZWxl
YXNlZFdoZW5DbG9zZWQ6Tk9dOwpAQCAtMTMyLDkgKzEzMiw3IEBAIFdLUmV0YWluUHRyPFdLSW1h
Z2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7CiAgICAgW21f
dmlldyBkaXNwbGF5XTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gd2luZG93U25hcHNob3RJ
bWFnZShBZG9wdENGLCBDR1dpbmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5k
b3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93LCBbbV93aW5kb3cgd2luZG93TnVtYmVyXSwga0NH
V2luZG93SW1hZ2VCb3VuZHNJZ25vcmVGcmFtaW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9w
YXF1ZSkpOwotICAgIAotICAgIC8vIHdpbmRvd1NuYXBzaG90SW1hZ2Ugd2lsbCBiZSBpbiB0aGUg
ZGlzcGxheSdzIGNvbG9yIHNwYWNlLCBidXQgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKCkgd2ls
bCBkcmF3Ci0gICAgLy8gdGhpcyBpbWFnZSBpbnRvIGEgR2VuZXJpY1JHQiBiaXRtYXAgY29udGV4
dCwgc28gdGhlIHJldHVybmVkIGltYWdlIGlzIEdlbmVyaWNSR0IuCisKICAgICByZXR1cm4gYWRv
cHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwg
MCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132867</attachid>
            <date>2012-03-20 11:55:47 -0700</date>
            <delta_ts>2012-03-20 11:56:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>colorspaces.diff</filename>
            <type>text/plain</type>
            <size>20719</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZWYy
NzRlLi43NzcxZGRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDMtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gUmVzdG9yZSBjb2xvciBzcGFjZSBz
d2l0Y2hpbmcgY29kZSB0byBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTEwMDg1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgdGhlIGxheW91dCB0ZXN0IGhlbHBlciBob29rcyB0byByZXN0b3JlIHRo
ZSBNYWMgc3lzdGVtLXdpZGUKKyAgICAgICAgY29sb3IgcHJvZmlsZSBzd2l0Y2hpbmcgY29kZS4g
VGhpcyBtYWtlcyBXa1RSIGFuZCBEUlQgcmVzdWx0cyBtYXRjaCwgYW5kCisgICAgICAgIGNhdXNl
cyB0aGUgbWFpbiBkaXNwbGF5J3MgY29sb3IgcHJvZmlsZSB0byBub3QgYWZmZWN0IHJlc3VsdHMg
b24gTGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RIZWxwZXIubTogQWRkZWQuCisgICAgICAgIChpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChyZXN0b3JlVXNlckNvbG9yUHJvZmlsZSk6CisgICAgICAgIChzaW1w
bGVTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5yZWxlYXNl
X2h0dHBfbG9jayk6CisgICAgICAgIChNYWNQb3J0KToKKyAgICAgICAgKE1hY1BvcnQuX3BhdGhf
dG9faGVscGVyKToKKyAgICAgICAgKE1hY1BvcnQuc3RhcnRfaGVscGVyKToKKyAgICAgICAgKE1h
Y1BvcnQuc3RvcF9oZWxwZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9y
bVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UpOgorCiAyMDEyLTAzLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIG5ldyBRdC1XSzIgcGVyZm9ybWFuY2UgdGVzdGVyIGJvdCB0byBi
dWlsZC53ZWJraXQub3JnCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MmM5M2RmLi5i
MWY1Y2IwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzLDYgKzEzLDcgQEAKIAkJ
CWJ1aWxkUGhhc2VzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkyRDQwM0Yy
MTE1MDg3MzZDMDA1MzU4RDIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlBODRGNjA5
MTA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlBODRGNjA4
RjA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQkxNDFCRjIz
ODA5NkE0NTFFMDBFMDc1M0MgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKQEAgLTU1LDYgKzU2
LDEwIEBACiAJCTI5Q0ZCQTEwMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlD
RkJBMEUxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi87IH07
CiAJCTI5Q0ZCQTExMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEw
RjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovOyB9Owog
CQkyOUNGQkEyRTEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEy
RDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi87IH07
CisJCTJENDAzRjA1MTUwODcxRjkwMDUzNThEMiAvKiBDYXJib24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUU4MjU3RUYwOEQyMjM4
OTAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsgKi87IH07CisJCTJENDAzRjA2MTUwODcxRjkw
MDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJh
bWV3b3JrICovOyB9OworCQkyRDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIz
QkNCODhGMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OworCQkyRDQw
M0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQy
IC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsgfTsKIAkJM0E1NjI2Q0IxMzFDQTAyQTAwMkJFNkQ5
IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQTU2MjZDMTEzMUM4QjE3MDAyQkU2RDkgLyogU3RvcmFnZVRy
YWNrZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJM0E1NjI2Q0MxMzFDQTAzNjAwMkJFNkQ5IC8qIFN0
b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNBNTYyNkMwMTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRl
bGVnYXRlLmggKi87IH07CiAJCTQxN0RBQTFEMTM3QjNFMjQwMDdDNTdGQiAvKiBXZWJDb3JlVGVz
dFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxN0RBQTFDMTM3QjNFMjQwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLzsgfTsK
QEAgLTE2MSw2ICsxNjYsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMTQxQkYyMUUw
OTZBNDQxRDAwRTA3NTNDOwogCQkJcmVtb3RlSW5mbyA9IFRlc3ROZXRzY2FwZVBsdWdJbjsKIAkJ
fTsKKwkJMkQ0MDNGMjAxNTA4NzM2QzAwNTM1OEQyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDJENDAzRUIyMTUwODcxRjkw
MDUzNThEMjsKKwkJCXJlbW90ZUluZm8gPSBMYXlvdXRUZXN0SGVscGVyOworCQl9OwogCQk1REM4
MkE2RjEwMjNDOTNEMDBGRDFEM0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3
OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMjM2LDYgKzI0OCw4
IEBACiAJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEwRjEyMjczNkU2MDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ0MDNF
QTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91
dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ0MDNGMTkxNTA4
NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVGMDk3
MTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVy
MTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1RjA5NzIwREFDM0NCNjAw
QzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdh
dGNoZXIyMDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTYsNiArMzcwLDE2IEBACiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTJENDAzRjAz
MTUwODcxRjkwMDUzNThEMiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkJMkQ0MDNGMDUxNTA4NzFGOTAwNTM1OEQyIC8qIENhcmJvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRDQwM0YwNjE1MDg3MUY5MDA1MzU4RDIgLyogQ29jb2Eu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkQ0MDNGMDgxNTA4NzFGOTAwNTM1OEQy
IC8qIE9wZW5HTC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJOTM0MDk5NEYwODU0MENB
RTAwN0YzQkM4IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC00MDksNiArNDMz
LDcgQEAKIAkJCQlBOEI5MUFEMjBDRjNCMzA1MDA4RjkxRkYgLyogQXBwS2l0IE92ZXJyaWRlcyAq
LywKIAkJCQlBOEI5MUFDNDBDRjNCMTcwMDA4RjkxRkYgLyogT2JqQ1BsdWdpbiAqLywKIAkJCQkx
NDFCRjFGNTA5NkE0Mzk4MDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luICovLAorCQkJCTJE
NDAzRUEwMTUwODcxMzUwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovLAogCQkJCTkzNDUy
MjlCMEJEMTJCMkMwMDg2RURBMCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNDE3REE5MTgxMzczNjc0
RDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKIAkJCQlBODAzRkY2NDA5Q0FBQ0Mx
MDA5QjJBMzcgLyogRnJhbWV3b3JrcyAqLywKQEAgLTUyNiw2ICs1NTEsMTQgQEAKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyRDQwM0VBMDE1MDg3
MTM1MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91
dFRlc3RIZWxwZXIubSAqLywKKwkJCSk7CisJCQluYW1lID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQxN0RBOTE4MTM3MzY3NEQwMDdDNTdG
QiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtNTQwLDYgKzU3Myw3IEBACiAJCQkJOTM0MDk5NTQwODU0MENBRjAwN0Yz
QkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAogCQkJCUI1QTc1MjY3MDhBRjRBNEEwMDEzOEU0NSAv
KiBJbWFnZURpZmYgKi8sCiAJCQkJMTQxQkYyMzMwOTZBNDRDRjAwRTA3NTNDIC8qIFRlc3ROZXRz
Y2FwZVBsdWdJbi5wbHVnaW4gKi8sCisJCQkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExh
eW91dFRlc3RIZWxwZXIgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcyNyw2ICs3NjEsMjMgQEAKIAkJCXByb2R1Y3RSZWZlcmVu
Y2UgPSAxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnBsdWdp
biAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsK
IAkJfTsKKwkJMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8g
PSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMkQ0MDNGMTUxNTA4NzFGOTAwNTM1OEQyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJMYXlvdXRUZXN0SGVscGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2Vz
ID0gKAorCQkJCTJENDAzRUQ4MTUwODcxRjkwMDUzNThEMiAvKiBTb3VyY2VzICovLAorCQkJCTJE
NDAzRjAzMTUwODcxRjkwMDUzNThEMiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBM
YXlvdXRUZXN0SGVscGVyOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvYmluIjsK
KwkJCXByb2R1Y3ROYW1lID0gRHVtcFJlbmRlclRyZWU7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0g
MkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi87CisJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQk5MzQwOTk0
QTA4NTQwQ0FFMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5QkYwODkwMkM2
RDAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJEdW1wUmVuZGVyVHJlZSIgKi87CkBAIC03ODksNiArODQwLDcgQEAKIAkJCQlCNUE3NTI1QTA4
QUY0QTRBMDAxMzhFNDUgLyogSW1hZ2VEaWZmICovLAogCQkJCTE0MUJGMjFFMDk2QTQ0MUQwMEUw
NzUzQyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4gKi8sCiAJCQkJNURDODJBNjYxMDIzQzhERTAwRkQx
RDNCIC8qIER1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9ydCAqLywKKwkJCQkyRDQwM0VCMjE1MDg3
MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQg
UEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC04MzQsNiArODg2LDE0IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTJENDAzRUQ4MTUw
ODcxRjkwMDUzNThEMiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMkQ0MDNGMUIxNTA4NzIwOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSBpbiBTb3Vy
Y2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OwogCQk5MzQwOTk0RDA4NTQwQ0FFMDA3RjNCQzggLyogU291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTg5OCw2ICs5NTgsMTEgQEAKIAkJCXRhcmdldCA9IDE0MUJGMjFFMDk2QTQ0MUQw
MEUwNzUzQyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4gKi87CiAJCQl0YXJnZXRQcm94eSA9IDE0MUJG
MjM3MDk2QTQ1MUUwMEUwNzUzQyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJ
CTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDJENDAzRUIyMTUwODcx
RjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovOworCQkJdGFyZ2V0UHJveHkgPSAyRDQw
M0YyMDE1MDg3MzZDMDA1MzU4RDIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9Owog
CQk1REM4MkE3MDEwMjNDOTNEMDBGRDFEM0IgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
IAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA1REM4MkE2NjEwMjND
OERFMDBGRDFEM0IgLyogRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0ICovOwpAQCAtOTYxLDYg
KzEwMjYsMzIgQEAKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKKwkJMkQ0MDNGMTYx
NTA4NzFGOTAwNTM1OEQyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQjI4MUYwMENGQTcxM0Qw
MDdFNTMzRSAvKiBEdW1wUmVuZGVyVHJlZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTJENDAzRjE3MTUwODcxRjkwMDUzNThEMiAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDQjI4MUYwMENGQTcxM0QwMDdFNTMzRSAvKiBEdW1wUmVuZGVyVHJlZS54
Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gTGF5
b3V0VGVzdEhlbHBlcjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMkQ0MDNG
MTgxNTA4NzFGOTAwNTM1OEQyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgxRjAw
Q0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlJTlNUQUxMX1BBVEggPSAiJChTWVNURU1fTElCUkFSWV9ESVIpL0Zy
YW1ld29ya3MvJChXRUJLSVRfRlJBTUVXT1JLX1JFU09VUkNFU19QQVRIKSI7CisJCQkJUFJPRFVD
VF9OQU1FID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJCQlTS0lQX0lOU1RBTEwgPSBOTzsKKwkJCX07
CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNURDODJBNjcxMDIzQzhERTAwRkQxRDNC
IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWls
ZFNldHRpbmdzID0gewpAQCAtMTEwOSw2ICsxMjAwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OworCQkyRDQwM0YxNTE1MDg3MUY5MDA1MzU4RDIgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkxheW91dFRlc3RIZWxwZXIiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJMkQ0MDNGMTYxNTA4NzFGOTAwNTM1OEQyIC8qIERlYnVnICovLAorCQkJCTJENDAzRjE3
MTUwODcxRjkwMDUzNThEMiAvKiBSZWxlYXNlICovLAorCQkJCTJENDAzRjE4MTUwODcxRjkwMDUz
NThEMiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJ
CX07CiAJCTVEQzgyQTZFMTAyM0M5MkEwMEZEMUQzQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWExlZ2FjeVRhcmdldCAiRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0IiAqLyA9
IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxw
ZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzczOTgyNAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0KQEAgLTAsMCArMSwx
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8QXBwS2l0L0Fw
cEtpdC5oPgorI2ltcG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KKworLy8gVGhpcyBpcyBhIHNpbXBsZSBoZWxwZXIgYXBwIHRoYXQgY2hhbmdlcyB0
aGUgQ29sb3JTeW5jIHByb2ZpbGUgdG8gdGhlCisvLyBnZW5lcmljIHByb2ZpbGUgYW5kIGJhY2sg
d2hlbiBkb25lLiAgVGhpcyBwcm9ncmFtIGlzIG1hbmFnZWQgYnkgdGhlIGxheW91dAorLy8gdGVz
dCBzY3JpcHQsIHNvIGl0IGNhbiBkbyB0aGUgam9iIGZvciBtdWx0aXBsZSBEdW1wUmVuZGVyVHJl
ZSB3aGlsZSB0aGV5IGFyZQorLy8gcnVubmluZyBsYXlvdXQgdGVzdHMuCisKK3N0YXRpYyBDRlVS
TFJlZiBzVXNlckNvbG9yUHJvZmlsZVVSTDsKKworc3RhdGljIHZvaWQgaW5zdGFsbExheW91dFRl
c3RDb2xvclByb2ZpbGUoKQoreworICAgIC8vIFRvIG1ha2Ugc3VyZSB3ZSBnZXQgY29uc2lzdGVu
dCBjb2xvcnMgKG5vdCBkZXBlbmRlbnQgb24gdGhlIGNob3NlbiBjb2xvcgorICAgIC8vIHNwYWNl
IG9mIHRoZSBtYWluIGRpc3BsYXkpLCB3ZSBmb3JjZSB0aGUgZ2VuZXJpYyBSR0IgY29sb3IgcHJv
ZmlsZS4KKyAgICAvLyBUaGlzIGNhdXNlcyBhIGNoYW5nZSB0aGUgdXNlciBjYW4gc2VlLgorICAg
IAorICAgIENGVVVJRFJlZiBtYWluRGlzcGxheSA9IENHRGlzcGxheUNyZWF0ZVVVSURGcm9tRGlz
cGxheUlEKENHTWFpbkRpc3BsYXlJRCgpKTsKKyAgICAKKyAgICBpZiAoIXNVc2VyQ29sb3JQcm9m
aWxlVVJMKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBkZXZpY2VJbmZvID0gQ29sb3JTeW5j
RGV2aWNlQ29weURldmljZUluZm8oa0NvbG9yU3luY0Rpc3BsYXlEZXZpY2VDbGFzcywgbWFpbkRp
c3BsYXkpOworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcHJvZmlsZUluZm8gPSAoQ0ZEaWN0aW9u
YXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGRldmljZUluZm8sIGtDb2xvclN5bmNDdXN0b21Q
cm9maWxlcyk7CisgICAgICAgIGlmIChwcm9maWxlSW5mbykgeworICAgICAgICAgICAgc1VzZXJD
b2xvclByb2ZpbGVVUkwgPSAoQ0ZVUkxSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZUlu
Zm8sIENGU1RSKCIxIikpOworICAgICAgICAgICAgQ0ZSZXRhaW4oc1VzZXJDb2xvclByb2ZpbGVV
UkwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDRlJlbGVhc2UoZGV2aWNlSW5mbyk7
CisgICAgfQorCisgICAgQ29sb3JTeW5jUHJvZmlsZVJlZiBnZW5lcmljUkdCUHJvZmlsZSA9IENv
bG9yU3luY1Byb2ZpbGVDcmVhdGVXaXRoTmFtZShrQ29sb3JTeW5jR2VuZXJpY1JHQlByb2ZpbGUp
OworICAgIENGRXJyb3JSZWYgZXJyb3I7CisgICAgQ0ZVUkxSZWYgcHJvZmlsZVVSTCA9IENvbG9y
U3luY1Byb2ZpbGVHZXRVUkwoZ2VuZXJpY1JHQlByb2ZpbGUsICZlcnJvcik7CisgICAgaWYgKCFw
cm9maWxlVVJMKSB7CisgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIGdldCBVUkwgb2YgR2VuZXJp
YyBSR0IgY29sb3IgcHJvZmlsZSEgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3Vs
dC4gRXJyb3I6ICVAIiwgZXJyb3IpOworICAgICAgICAKKyAgICAgICAgaWYgKHNVc2VyQ29sb3JQ
cm9maWxlVVJMKSB7CisgICAgICAgICAgICBDRlJlbGVhc2Uoc1VzZXJDb2xvclByb2ZpbGVVUkwp
OworICAgICAgICAgICAgc1VzZXJDb2xvclByb2ZpbGVVUkwgPSAwOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBDRlJlbGVhc2UoZ2VuZXJpY1JHQlByb2ZpbGUpOworICAgICAgICBDRlJl
bGVhc2UobWFpbkRpc3BsYXkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShwcm9maWxlSW5mbywga0NvbG9yU3luY0RldmljZURlZmF1bHRQcm9maWxlSUQs
IHByb2ZpbGVVUkwpOworICAgIAorICAgIGlmICghQ29sb3JTeW5jRGV2aWNlU2V0Q3VzdG9tUHJv
ZmlsZXMoa0NvbG9yU3luY0Rpc3BsYXlEZXZpY2VDbGFzcywgbWFpbkRpc3BsYXksIHByb2ZpbGVJ
bmZvKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZXQgY29sb3IgcHJv
ZmlsZSBmb3IgbWFpbiBkaXNwbGF5ISAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJl
c3VsdC5cbiIpOworICAgICAgICAKKyAgICAgICAgaWYgKHNVc2VyQ29sb3JQcm9maWxlVVJMKSB7
CisgICAgICAgICAgICBDRlJlbGVhc2Uoc1VzZXJDb2xvclByb2ZpbGVVUkwpOworICAgICAgICAg
ICAgc1VzZXJDb2xvclByb2ZpbGVVUkwgPSAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IENGUmVsZWFzZShwcm9maWxlSW5mbyk7CisgICAgQ0ZSZWxlYXNlKGdlbmVyaWNSR0JQcm9maWxl
KTsKKyAgICBDRlJlbGVhc2UobWFpbkRpc3BsYXkpOworfQorCitzdGF0aWMgdm9pZCByZXN0b3Jl
VXNlckNvbG9yUHJvZmlsZSh2b2lkKQoreworICAgIC8vIFRoaXMgaXMgdXNlZCBhcyBhIHNpZ25h
bCBoYW5kbGVyLCBhbmQgdGh1cyB0aGUgY2FsbHMgaW50byBDb2xvclN5bmMgYXJlIHVuc2FmZS4K
KyAgICAvLyBCdXQgd2UgbWlnaHQgYXMgd2VsbCB0cnkgdG8gcmVzdG9yZSB0aGUgdXNlcidzIGNv
bG9yIHByb2ZpbGUsIHdlJ3JlIGdvaW5nIGRvd24gYW55d2F5Li4uCisgICAgCisgICAgaWYgKCFz
VXNlckNvbG9yUHJvZmlsZVVSTCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENGVVVJRFJl
ZiBtYWluRGlzcGxheSA9IENHRGlzcGxheUNyZWF0ZVVVSURGcm9tRGlzcGxheUlEKENHTWFpbkRp
c3BsYXlJRCgpKTsKKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
KyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9maWxlSW5mbywga0NvbG9yU3luY0RldmljZURl
ZmF1bHRQcm9maWxlSUQsIHNVc2VyQ29sb3JQcm9maWxlVVJMKTsKKyAgICBDb2xvclN5bmNEZXZp
Y2VTZXRDdXN0b21Qcm9maWxlcyhrQ29sb3JTeW5jRGlzcGxheURldmljZUNsYXNzLCBtYWluRGlz
cGxheSwgcHJvZmlsZUluZm8pOworICAgIENGUmVsZWFzZShtYWluRGlzcGxheSk7CisgICAgQ0ZS
ZWxlYXNlKHByb2ZpbGVJbmZvKTsKK30KKworc3RhdGljIHZvaWQgc2ltcGxlU2lnbmFsSGFuZGxl
cihpbnQgc2lnKQoreworICAgIC8vIFRyeSB0byByZXN0b3JlIHRoZSBjb2xvciBwcm9maWxlIGFu
ZCB0cnkgdG8gZ28gZG93biBjbGVhbmx5CisgICAgcmVzdG9yZVVzZXJDb2xvclByb2ZpbGUoKTsK
KyAgICBleGl0KDEyOCArIHNpZyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCit7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKKworICAgIC8vIEhvb2tzIHRoZSB3YXlzIHdlIG1pZ2h0IGdldCB0b2xk
IHRvIGNsZWFuIHVwLi4uCisgICAgc2lnbmFsKFNJR0lOVCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7
CisgICAgc2lnbmFsKFNJR0hVUCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7CisgICAgc2lnbmFsKFNJ
R1RFUk0sIHNpbXBsZVNpZ25hbEhhbmRsZXIpOworCisgICAgLy8gU2F2ZSBvZmYgdGhlIGN1cnJl
bnQgcHJvZmlsZSwgYW5kIHRoZW4gaW5zdGFsbCB0aGUgbGF5b3V0IHRlc3QgcHJvZmlsZS4KKyAg
ICBpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmlsZSgpOworCisgICAgLy8gTGV0IHRoZSBzY3Jp
cHQga25vdyB3ZSdyZSByZWFkeQorICAgIHByaW50ZigicmVhZHlcbiIpOworICAgIGZmbHVzaChz
dGRvdXQpOworCisgICAgLy8gV2FpdCBmb3IgYW55IGtleSAob3Igc2lnbmFsKQorICAgIGdldGNo
YXIoKTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHByb2ZpbGUKKyAgICByZXN0b3JlVXNlckNvbG9y
UHJvZmlsZSgpOworCisgICAgW3Bvb2wgcmVsZWFzZV07CisgICAgcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDVh
YTk4MjYuLmE5MGNiMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CkBAIC0yOCw2ICsyOCw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQuYXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC5sZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3RvcgpAQCAtMTU4LDMgKzE1OSwyNSBAQCBj
bGFzcyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAKICAgICBkZWYgcmVsZWFzZV9odHRwX2xvY2soc2Vs
Zik6CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CisgICAg
ICAgIGJpbmFyeV9uYW1lID0gJ0xheW91dFRlc3RIZWxwZXInCisgICAgICAgIHJldHVybiBzZWxm
Ll9idWlsZF9wYXRoKGJpbmFyeV9uYW1lKQorCisgICAgZGVmIHN0YXJ0X2hlbHBlcihzZWxmKToK
KyAgICAgICAgaGVscGVyX3BhdGggPSBzZWxmLl9wYXRoX3RvX2hlbHBlcigpCisgICAgICAgIGlm
IGhlbHBlcl9wYXRoOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgbGF5b3V0IGhl
bHBlciAlcyIgJSBoZWxwZXJfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBz
YWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAorICAgICAgICAgICAgc2VsZi5f
aGVscGVyID0gc3VicHJvY2Vzcy5Qb3BlbihbaGVscGVyX3BhdGhdLAorICAgICAgICAgICAgICAg
IHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPU5v
bmUpCisgICAgICAgICAgICBpc19yZWFkeSA9IHNlbGYuX2hlbHBlci5zdGRvdXQucmVhZGxpbmUo
KQorICAgICAgICAgICAgaWYgbm90IGlzX3JlYWR5LnN0YXJ0c3dpdGgoJ3JlYWR5Jyk6CisgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcigiTGF5b3V0VGVzdEhlbHBlciBmYWlsZWQgdG8gYmUgcmVh
ZHkiKQorCisgICAgZGVmIHN0b3BfaGVscGVyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9oZWxw
ZXI6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCJTdG9wcGluZyBMYXlvdXRUZXN0SGVscGVyIikK
KyAgICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi53cml0ZSgieFxuIikKKyAgICAgICAgICAg
IHNlbGYuX2hlbHBlci5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9oZWxwZXIud2Fp
dCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMu
bW0KaW5kZXggZWI3ZTk4Yi4uNGRiNjU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtNTYsNyArNTYsNyBAQCBQbGF0Zm9ybVdl
YlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdybwogICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gTlNPZmZzZXRSZWN0KHJlY3Qs
IC0xMDAwMCwgWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDow
XSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDApOwogICAgIG1f
d2luZG93ID0gW1tXZWJLaXRUZXN0UnVubmVyV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107CiAgICAgbV93aW5kb3cucGxhdGZvcm1X
ZWJWaWV3ID0gdGhpczsKLSAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1h
aW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsKKyAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbTlND
b2xvclNwYWNlIGdlbmVyaWNSR0JDb2xvclNwYWNlXV07CiAgICAgW1ttX3dpbmRvdyBjb250ZW50
Vmlld10gYWRkU3VidmlldzptX3ZpZXddOwogICAgIFttX3dpbmRvdyBvcmRlckJhY2s6bmlsXTsK
ICAgICBbbV93aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKQEAgLTEzMiw5ICsxMzIs
OCBAQCBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBz
aG90SW1hZ2UoKQogewogICAgIFttX3ZpZXcgZGlzcGxheV07CiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IHdpbmRvd1NuYXBzaG90SW1hZ2UoQWRvcHRDRiwgQ0dXaW5kb3dMaXN0Q3JlYXRlSW1h
Z2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGluZ1dpbmRvdywgW21fd2lu
ZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtD
R1dpbmRvd0ltYWdlU2hvdWxkQmVPcGFxdWUpKTsKLSAgICAKLSAgICAvLyB3aW5kb3dTbmFwc2hv
dEltYWdlIHdpbGwgYmUgaW4gdGhlIGRpc3BsYXkncyBjb2xvciBzcGFjZSwgYnV0IFdLSW1hZ2VD
cmVhdGVGcm9tQ0dJbWFnZSgpIHdpbGwgZHJhdwotICAgIC8vIHRoaXMgaW1hZ2UgaW50byBhIEdl
bmVyaWNSR0IgYml0bWFwIGNvbnRleHQsIHNvIHRoZSByZXR1cm5lZCBpbWFnZSBpcyBHZW5lcmlj
UkdCLgorCisgICAgLy8gd2luZG93U25hcHNob3RJbWFnZSB3aWxsIGJlIGluIEdlbmVyaWNSR0Is
IGFzIHdlJ3ZlIHNldCB0aGUgbWFpbiBkaXNwbGF5J3MgY29sb3Igc3BhY2UgdG8gR2VuZXJpY1JH
Qi4KICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uod2luZG93U25h
cHNob3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132868</attachid>
            <date>2012-03-20 11:56:32 -0700</date>
            <delta_ts>2012-03-20 12:31:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>colorspaces.diff</filename>
            <type>text/plain</type>
            <size>20716</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZWYy
NzRlLi43NzcxZGRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDMtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gUmVzdG9yZSBjb2xvciBzcGFjZSBz
d2l0Y2hpbmcgY29kZSB0byBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTEwMDg1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSB1c2Ugb2YgdGhlIGxheW91dCB0ZXN0IGhlbHBlciBob29rcyB0byByZXN0b3JlIHRo
ZSBNYWMgc3lzdGVtLXdpZGUKKyAgICAgICAgY29sb3IgcHJvZmlsZSBzd2l0Y2hpbmcgY29kZS4g
VGhpcyBtYWtlcyBXa1RSIGFuZCBEUlQgcmVzdWx0cyBtYXRjaCwgYW5kCisgICAgICAgIGNhdXNl
cyB0aGUgbWFpbiBkaXNwbGF5J3MgY29sb3IgcHJvZmlsZSB0byBub3QgYWZmZWN0IHJlc3VsdHMg
b24gTGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RIZWxwZXIubTogQWRkZWQuCisgICAgICAgIChpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChyZXN0b3JlVXNlckNvbG9yUHJvZmlsZSk6CisgICAgICAgIChzaW1w
bGVTaWduYWxIYW5kbGVyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5yZWxlYXNl
X2h0dHBfbG9jayk6CisgICAgICAgIChNYWNQb3J0KToKKyAgICAgICAgKE1hY1BvcnQuX3BhdGhf
dG9faGVscGVyKToKKyAgICAgICAgKE1hY1BvcnQuc3RhcnRfaGVscGVyKToKKyAgICAgICAgKE1h
Y1BvcnQuc3RvcF9oZWxwZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9y
bVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UpOgorCiAyMDEyLTAzLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIG5ldyBRdC1XSzIgcGVyZm9ybWFuY2UgdGVzdGVyIGJvdCB0byBi
dWlsZC53ZWJraXQub3JnCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MmM5M2RmLi5i
MWY1Y2IwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzLDYgKzEzLDcgQEAKIAkJ
CWJ1aWxkUGhhc2VzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkyRDQwM0Yy
MTE1MDg3MzZDMDA1MzU4RDIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlBODRGNjA5
MTA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlBODRGNjA4
RjA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQkxNDFCRjIz
ODA5NkE0NTFFMDBFMDc1M0MgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKQEAgLTU1LDYgKzU2
LDEwIEBACiAJCTI5Q0ZCQTEwMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlD
RkJBMEUxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi87IH07
CiAJCTI5Q0ZCQTExMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEw
RjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovOyB9Owog
CQkyOUNGQkEyRTEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEy
RDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi87IH07
CisJCTJENDAzRjA1MTUwODcxRjkwMDUzNThEMiAvKiBDYXJib24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUU4MjU3RUYwOEQyMjM4
OTAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsgKi87IH07CisJCTJENDAzRjA2MTUwODcxRjkw
MDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJh
bWV3b3JrICovOyB9OworCQkyRDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIz
QkNCODhGMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OworCQkyRDQw
M0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQy
IC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsgfTsKIAkJM0E1NjI2Q0IxMzFDQTAyQTAwMkJFNkQ5
IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQTU2MjZDMTEzMUM4QjE3MDAyQkU2RDkgLyogU3RvcmFnZVRy
YWNrZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJM0E1NjI2Q0MxMzFDQTAzNjAwMkJFNkQ5IC8qIFN0
b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNBNTYyNkMwMTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRl
bGVnYXRlLmggKi87IH07CiAJCTQxN0RBQTFEMTM3QjNFMjQwMDdDNTdGQiAvKiBXZWJDb3JlVGVz
dFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxN0RBQTFDMTM3QjNFMjQwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLzsgfTsK
QEAgLTE2MSw2ICsxNjYsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMTQxQkYyMUUw
OTZBNDQxRDAwRTA3NTNDOwogCQkJcmVtb3RlSW5mbyA9IFRlc3ROZXRzY2FwZVBsdWdJbjsKIAkJ
fTsKKwkJMkQ0MDNGMjAxNTA4NzM2QzAwNTM1OEQyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDJENDAzRUIyMTUwODcxRjkw
MDUzNThEMjsKKwkJCXJlbW90ZUluZm8gPSBMYXlvdXRUZXN0SGVscGVyOworCQl9OwogCQk1REM4
MkE2RjEwMjNDOTNEMDBGRDFEM0IgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3
OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMjM2LDYgKzI0OCw4
IEBACiAJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEwRjEyMjczNkU2MDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ0MDNF
QTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91
dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ0MDNGMTkxNTA4
NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVGMDk3
MTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVy
MTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1RjA5NzIwREFDM0NCNjAw
QzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdh
dGNoZXIyMDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTYsNiArMzcwLDE2IEBACiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTJENDAzRjAz
MTUwODcxRjkwMDUzNThEMiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkJMkQ0MDNGMDUxNTA4NzFGOTAwNTM1OEQyIC8qIENhcmJvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQkyRDQwM0YwNjE1MDg3MUY5MDA1MzU4RDIgLyogQ29jb2Eu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkQ0MDNGMDgxNTA4NzFGOTAwNTM1OEQy
IC8qIE9wZW5HTC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJOTM0MDk5NEYwODU0MENB
RTAwN0YzQkM4IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC00MDksNiArNDMz
LDcgQEAKIAkJCQlBOEI5MUFEMjBDRjNCMzA1MDA4RjkxRkYgLyogQXBwS2l0IE92ZXJyaWRlcyAq
LywKIAkJCQlBOEI5MUFDNDBDRjNCMTcwMDA4RjkxRkYgLyogT2JqQ1BsdWdpbiAqLywKIAkJCQkx
NDFCRjFGNTA5NkE0Mzk4MDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luICovLAorCQkJCTJE
NDAzRUEwMTUwODcxMzUwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovLAogCQkJCTkzNDUy
MjlCMEJEMTJCMkMwMDg2RURBMCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNDE3REE5MTgxMzczNjc0
RDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKIAkJCQlBODAzRkY2NDA5Q0FBQ0Mx
MDA5QjJBMzcgLyogRnJhbWV3b3JrcyAqLywKQEAgLTUyNiw2ICs1NTEsMTQgQEAKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyRDQwM0VBMDE1MDg3
MTM1MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91
dFRlc3RIZWxwZXIubSAqLywKKwkJCSk7CisJCQluYW1lID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQxN0RBOTE4MTM3MzY3NEQwMDdDNTdG
QiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtNTQwLDYgKzU3Myw3IEBACiAJCQkJOTM0MDk5NTQwODU0MENBRjAwN0Yz
QkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAogCQkJCUI1QTc1MjY3MDhBRjRBNEEwMDEzOEU0NSAv
KiBJbWFnZURpZmYgKi8sCiAJCQkJMTQxQkYyMzMwOTZBNDRDRjAwRTA3NTNDIC8qIFRlc3ROZXRz
Y2FwZVBsdWdJbi5wbHVnaW4gKi8sCisJCQkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExh
eW91dFRlc3RIZWxwZXIgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcyNyw2ICs3NjEsMjMgQEAKIAkJCXByb2R1Y3RSZWZlcmVu
Y2UgPSAxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnBsdWdp
biAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsK
IAkJfTsKKwkJMkQ0MDNFQjIxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8g
PSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMkQ0MDNGMTUxNTA4NzFGOTAwNTM1OEQyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJMYXlvdXRUZXN0SGVscGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2Vz
ID0gKAorCQkJCTJENDAzRUQ4MTUwODcxRjkwMDUzNThEMiAvKiBTb3VyY2VzICovLAorCQkJCTJE
NDAzRjAzMTUwODcxRjkwMDUzNThEMiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBM
YXlvdXRUZXN0SGVscGVyOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvYmluIjsK
KwkJCXByb2R1Y3ROYW1lID0gRHVtcFJlbmRlclRyZWU7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0g
MkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi87CisJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQk5MzQwOTk0
QTA4NTQwQ0FFMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5QkYwODkwMkM2
RDAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJEdW1wUmVuZGVyVHJlZSIgKi87CkBAIC03ODksNiArODQwLDcgQEAKIAkJCQlCNUE3NTI1QTA4
QUY0QTRBMDAxMzhFNDUgLyogSW1hZ2VEaWZmICovLAogCQkJCTE0MUJGMjFFMDk2QTQ0MUQwMEUw
NzUzQyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4gKi8sCiAJCQkJNURDODJBNjYxMDIzQzhERTAwRkQx
RDNCIC8qIER1bXBSZW5kZXJUcmVlIFBlcmwgU3VwcG9ydCAqLywKKwkJCQkyRDQwM0VCMjE1MDg3
MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQg
UEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC04MzQsNiArODg2LDE0IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTJENDAzRUQ4MTUw
ODcxRjkwMDUzNThEMiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMkQ0MDNGMUIxNTA4NzIwOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSBpbiBTb3Vy
Y2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OwogCQk5MzQwOTk0RDA4NTQwQ0FFMDA3RjNCQzggLyogU291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTg5OCw2ICs5NTgsMTEgQEAKIAkJCXRhcmdldCA9IDE0MUJGMjFFMDk2QTQ0MUQw
MEUwNzUzQyAvKiBUZXN0TmV0c2NhcGVQbHVnSW4gKi87CiAJCQl0YXJnZXRQcm94eSA9IDE0MUJG
MjM3MDk2QTQ1MUUwMEUwNzUzQyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJ
CTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDJENDAzRUIyMTUwODcx
RjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovOworCQkJdGFyZ2V0UHJveHkgPSAyRDQw
M0YyMDE1MDg3MzZDMDA1MzU4RDIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9Owog
CQk1REM4MkE3MDEwMjNDOTNEMDBGRDFEM0IgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
IAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA1REM4MkE2NjEwMjND
OERFMDBGRDFEM0IgLyogRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0ICovOwpAQCAtOTYxLDYg
KzEwMjYsMzIgQEAKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKKwkJMkQ0MDNGMTYx
NTA4NzFGOTAwNTM1OEQyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQjI4MUYwMENGQTcxM0Qw
MDdFNTMzRSAvKiBEdW1wUmVuZGVyVHJlZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTJENDAzRjE3MTUwODcxRjkwMDUzNThEMiAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDQjI4MUYwMENGQTcxM0QwMDdFNTMzRSAvKiBEdW1wUmVuZGVyVHJlZS54
Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gTGF5
b3V0VGVzdEhlbHBlcjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMkQ0MDNG
MTgxNTA4NzFGOTAwNTM1OEQyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgxRjAw
Q0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlJTlNUQUxMX1BBVEggPSAiJChTWVNURU1fTElCUkFSWV9ESVIpL0Zy
YW1ld29ya3MvJChXRUJLSVRfRlJBTUVXT1JLX1JFU09VUkNFU19QQVRIKSI7CisJCQkJUFJPRFVD
VF9OQU1FID0gTGF5b3V0VGVzdEhlbHBlcjsKKwkJCQlTS0lQX0lOU1RBTEwgPSBOTzsKKwkJCX07
CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNURDODJBNjcxMDIzQzhERTAwRkQxRDNC
IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWls
ZFNldHRpbmdzID0gewpAQCAtMTEwOSw2ICsxMjAwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OworCQkyRDQwM0YxNTE1MDg3MUY5MDA1MzU4RDIgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkxheW91dFRlc3RIZWxwZXIiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJMkQ0MDNGMTYxNTA4NzFGOTAwNTM1OEQyIC8qIERlYnVnICovLAorCQkJCTJENDAzRjE3
MTUwODcxRjkwMDUzNThEMiAvKiBSZWxlYXNlICovLAorCQkJCTJENDAzRjE4MTUwODcxRjkwMDUz
NThEMiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJ
CX07CiAJCTVEQzgyQTZFMTAyM0M5MkEwMEZEMUQzQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWExlZ2FjeVRhcmdldCAiRHVtcFJlbmRlclRyZWUgUGVybCBTdXBwb3J0IiAqLyA9
IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxw
ZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM3Yzc2NgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0KQEAgLTAsMCArMSwx
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8QXBwS2l0L0Fw
cEtpdC5oPgorI2ltcG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CisjaW1wb3J0IDxzaWduYWwuaD4KKyNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDxzdGRs
aWIuaD4KKworLy8gVGhpcyBpcyBhIHNpbXBsZSBoZWxwZXIgYXBwIHRoYXQgY2hhbmdlcyB0aGUg
Q29sb3JTeW5jIHByb2ZpbGUgdG8gdGhlCisvLyBnZW5lcmljIHByb2ZpbGUgYW5kIGJhY2sgd2hl
biBkb25lLiAgVGhpcyBwcm9ncmFtIGlzIG1hbmFnZWQgYnkgdGhlIGxheW91dAorLy8gdGVzdCBz
Y3JpcHQsIHNvIGl0IGNhbiBkbyB0aGUgam9iIGZvciBtdWx0aXBsZSBEdW1wUmVuZGVyVHJlZSB3
aGlsZSB0aGV5IGFyZQorLy8gcnVubmluZyBsYXlvdXQgdGVzdHMuCisKK3N0YXRpYyBDRlVSTFJl
ZiBzVXNlckNvbG9yUHJvZmlsZVVSTDsKKworc3RhdGljIHZvaWQgaW5zdGFsbExheW91dFRlc3RD
b2xvclByb2ZpbGUoKQoreworICAgIC8vIFRvIG1ha2Ugc3VyZSB3ZSBnZXQgY29uc2lzdGVudCBj
b2xvcnMgKG5vdCBkZXBlbmRlbnQgb24gdGhlIGNob3NlbiBjb2xvcgorICAgIC8vIHNwYWNlIG9m
IHRoZSBtYWluIGRpc3BsYXkpLCB3ZSBmb3JjZSB0aGUgZ2VuZXJpYyBSR0IgY29sb3IgcHJvZmls
ZS4KKyAgICAvLyBUaGlzIGNhdXNlcyBhIGNoYW5nZSB0aGUgdXNlciBjYW4gc2VlLgorICAgIAor
ICAgIENGVVVJRFJlZiBtYWluRGlzcGxheSA9IENHRGlzcGxheUNyZWF0ZVVVSURGcm9tRGlzcGxh
eUlEKENHTWFpbkRpc3BsYXlJRCgpKTsKKyAgICAKKyAgICBpZiAoIXNVc2VyQ29sb3JQcm9maWxl
VVJMKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBkZXZpY2VJbmZvID0gQ29sb3JTeW5jRGV2
aWNlQ29weURldmljZUluZm8oa0NvbG9yU3luY0Rpc3BsYXlEZXZpY2VDbGFzcywgbWFpbkRpc3Bs
YXkpOworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcHJvZmlsZUluZm8gPSAoQ0ZEaWN0aW9uYXJ5
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGRldmljZUluZm8sIGtDb2xvclN5bmNDdXN0b21Qcm9m
aWxlcyk7CisgICAgICAgIGlmIChwcm9maWxlSW5mbykgeworICAgICAgICAgICAgc1VzZXJDb2xv
clByb2ZpbGVVUkwgPSAoQ0ZVUkxSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZUluZm8s
IENGU1RSKCIxIikpOworICAgICAgICAgICAgQ0ZSZXRhaW4oc1VzZXJDb2xvclByb2ZpbGVVUkwp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDRlJlbGVhc2UoZGV2aWNlSW5mbyk7Cisg
ICAgfQorCisgICAgQ29sb3JTeW5jUHJvZmlsZVJlZiBnZW5lcmljUkdCUHJvZmlsZSA9IENvbG9y
U3luY1Byb2ZpbGVDcmVhdGVXaXRoTmFtZShrQ29sb3JTeW5jR2VuZXJpY1JHQlByb2ZpbGUpOwor
ICAgIENGRXJyb3JSZWYgZXJyb3I7CisgICAgQ0ZVUkxSZWYgcHJvZmlsZVVSTCA9IENvbG9yU3lu
Y1Byb2ZpbGVHZXRVUkwoZ2VuZXJpY1JHQlByb2ZpbGUsICZlcnJvcik7CisgICAgaWYgKCFwcm9m
aWxlVVJMKSB7CisgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIGdldCBVUkwgb2YgR2VuZXJpYyBS
R0IgY29sb3IgcHJvZmlsZSEgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4g
RXJyb3I6ICVAIiwgZXJyb3IpOworICAgICAgICAKKyAgICAgICAgaWYgKHNVc2VyQ29sb3JQcm9m
aWxlVVJMKSB7CisgICAgICAgICAgICBDRlJlbGVhc2Uoc1VzZXJDb2xvclByb2ZpbGVVUkwpOwor
ICAgICAgICAgICAgc1VzZXJDb2xvclByb2ZpbGVVUkwgPSAwOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBDRlJlbGVhc2UoZ2VuZXJpY1JHQlByb2ZpbGUpOworICAgICAgICBDRlJlbGVh
c2UobWFpbkRpc3BsYXkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9maWxlSW5mbywga0NvbG9yU3luY0RldmljZURlZmF1bHRQcm9maWxlSUQsIHBy
b2ZpbGVVUkwpOworICAgIAorICAgIGlmICghQ29sb3JTeW5jRGV2aWNlU2V0Q3VzdG9tUHJvZmls
ZXMoa0NvbG9yU3luY0Rpc3BsYXlEZXZpY2VDbGFzcywgbWFpbkRpc3BsYXksIHByb2ZpbGVJbmZv
KSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZXQgY29sb3IgcHJvZmls
ZSBmb3IgbWFpbiBkaXNwbGF5ISAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3Vs
dC5cbiIpOworICAgICAgICAKKyAgICAgICAgaWYgKHNVc2VyQ29sb3JQcm9maWxlVVJMKSB7Cisg
ICAgICAgICAgICBDRlJlbGVhc2Uoc1VzZXJDb2xvclByb2ZpbGVVUkwpOworICAgICAgICAgICAg
c1VzZXJDb2xvclByb2ZpbGVVUkwgPSAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIENG
UmVsZWFzZShwcm9maWxlSW5mbyk7CisgICAgQ0ZSZWxlYXNlKGdlbmVyaWNSR0JQcm9maWxlKTsK
KyAgICBDRlJlbGVhc2UobWFpbkRpc3BsYXkpOworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlVXNl
ckNvbG9yUHJvZmlsZSh2b2lkKQoreworICAgIC8vIFRoaXMgaXMgdXNlZCBhcyBhIHNpZ25hbCBo
YW5kbGVyLCBhbmQgdGh1cyB0aGUgY2FsbHMgaW50byBDb2xvclN5bmMgYXJlIHVuc2FmZS4KKyAg
ICAvLyBCdXQgd2UgbWlnaHQgYXMgd2VsbCB0cnkgdG8gcmVzdG9yZSB0aGUgdXNlcidzIGNvbG9y
IHByb2ZpbGUsIHdlJ3JlIGdvaW5nIGRvd24gYW55d2F5Li4uCisgICAgCisgICAgaWYgKCFzVXNl
ckNvbG9yUHJvZmlsZVVSTCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENGVVVJRFJlZiBt
YWluRGlzcGxheSA9IENHRGlzcGxheUNyZWF0ZVVVSURGcm9tRGlzcGxheUlEKENHTWFpbkRpc3Bs
YXlJRCgpKTsKKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb2ZpbGVJbmZvID0gQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9maWxlSW5mbywga0NvbG9yU3luY0RldmljZURlZmF1
bHRQcm9maWxlSUQsIHNVc2VyQ29sb3JQcm9maWxlVVJMKTsKKyAgICBDb2xvclN5bmNEZXZpY2VT
ZXRDdXN0b21Qcm9maWxlcyhrQ29sb3JTeW5jRGlzcGxheURldmljZUNsYXNzLCBtYWluRGlzcGxh
eSwgcHJvZmlsZUluZm8pOworICAgIENGUmVsZWFzZShtYWluRGlzcGxheSk7CisgICAgQ0ZSZWxl
YXNlKHByb2ZpbGVJbmZvKTsKK30KKworc3RhdGljIHZvaWQgc2ltcGxlU2lnbmFsSGFuZGxlcihp
bnQgc2lnKQoreworICAgIC8vIFRyeSB0byByZXN0b3JlIHRoZSBjb2xvciBwcm9maWxlIGFuZCB0
cnkgdG8gZ28gZG93biBjbGVhbmx5CisgICAgcmVzdG9yZVVzZXJDb2xvclByb2ZpbGUoKTsKKyAg
ICBleGl0KDEyOCArIHNpZyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
Cit7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKKworICAgIC8vIEhvb2tzIHRoZSB3YXlzIHdlIG1pZ2h0IGdldCB0b2xkIHRv
IGNsZWFuIHVwLi4uCisgICAgc2lnbmFsKFNJR0lOVCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7Cisg
ICAgc2lnbmFsKFNJR0hVUCwgc2ltcGxlU2lnbmFsSGFuZGxlcik7CisgICAgc2lnbmFsKFNJR1RF
Uk0sIHNpbXBsZVNpZ25hbEhhbmRsZXIpOworCisgICAgLy8gU2F2ZSBvZmYgdGhlIGN1cnJlbnQg
cHJvZmlsZSwgYW5kIHRoZW4gaW5zdGFsbCB0aGUgbGF5b3V0IHRlc3QgcHJvZmlsZS4KKyAgICBp
bnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmlsZSgpOworCisgICAgLy8gTGV0IHRoZSBzY3JpcHQg
a25vdyB3ZSdyZSByZWFkeQorICAgIHByaW50ZigicmVhZHlcbiIpOworICAgIGZmbHVzaChzdGRv
dXQpOworCisgICAgLy8gV2FpdCBmb3IgYW55IGtleSAob3Igc2lnbmFsKQorICAgIGdldGNoYXIo
KTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHByb2ZpbGUKKyAgICByZXN0b3JlVXNlckNvbG9yUHJv
ZmlsZSgpOworCisgICAgW3Bvb2wgcmVsZWFzZV07CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDVhYTk4
MjYuLmE5MGNiMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvbWFjLnB5CkBAIC0yOCw2ICsyOCw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
cmUKK2ltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
YXBwbGUgaW1wb3J0IEFwcGxlUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5s
ZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3RvcgpAQCAtMTU4LDMgKzE1OSwyNSBAQCBjbGFz
cyBNYWNQb3J0KEFwcGxlUG9ydCk6CiAKICAgICBkZWYgcmVsZWFzZV9odHRwX2xvY2soc2VsZik6
CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CisgICAgICAg
IGJpbmFyeV9uYW1lID0gJ0xheW91dFRlc3RIZWxwZXInCisgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoKGJpbmFyeV9uYW1lKQorCisgICAgZGVmIHN0YXJ0X2hlbHBlcihzZWxmKToKKyAg
ICAgICAgaGVscGVyX3BhdGggPSBzZWxmLl9wYXRoX3RvX2hlbHBlcigpCisgICAgICAgIGlmIGhl
bHBlcl9wYXRoOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgbGF5b3V0IGhlbHBl
ciAlcyIgJSBoZWxwZXJfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZl
OiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAorICAgICAgICAgICAgc2VsZi5faGVs
cGVyID0gc3VicHJvY2Vzcy5Qb3BlbihbaGVscGVyX3BhdGhdLAorICAgICAgICAgICAgICAgIHN0
ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPU5vbmUp
CisgICAgICAgICAgICBpc19yZWFkeSA9IHNlbGYuX2hlbHBlci5zdGRvdXQucmVhZGxpbmUoKQor
ICAgICAgICAgICAgaWYgbm90IGlzX3JlYWR5LnN0YXJ0c3dpdGgoJ3JlYWR5Jyk6CisgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcigiTGF5b3V0VGVzdEhlbHBlciBmYWlsZWQgdG8gYmUgcmVhZHki
KQorCisgICAgZGVmIHN0b3BfaGVscGVyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9oZWxwZXI6
CisgICAgICAgICAgICBfbG9nLmRlYnVnKCJTdG9wcGluZyBMYXlvdXRUZXN0SGVscGVyIikKKyAg
ICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi53cml0ZSgieFxuIikKKyAgICAgICAgICAgIHNl
bGYuX2hlbHBlci5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9oZWxwZXIud2FpdCgp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
aW5kZXggZWI3ZTk4Yi4uNGRiNjU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtNTYsNyArNTYsNyBAQCBQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdybwogICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0x
MDAwMCwgWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBm
cmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDApOwogICAgIG1fd2lu
ZG93ID0gW1tXZWJLaXRUZXN0UnVubmVyV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0Jh
Y2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107CiAgICAgbV93aW5kb3cucGxhdGZvcm1XZWJW
aWV3ID0gdGhpczsKLSAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1haW5T
Y3JlZW5dIGNvbG9yU3BhY2VdXTsKKyAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbTlNDb2xv
clNwYWNlIGdlbmVyaWNSR0JDb2xvclNwYWNlXV07CiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmll
d10gYWRkU3VidmlldzptX3ZpZXddOwogICAgIFttX3dpbmRvdyBvcmRlckJhY2s6bmlsXTsKICAg
ICBbbV93aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKQEAgLTEzMiw5ICsxMzIsOCBA
QCBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UoKQogewogICAgIFttX3ZpZXcgZGlzcGxheV07CiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHdpbmRvd1NuYXBzaG90SW1hZ2UoQWRvcHRDRiwgQ0dXaW5kb3dMaXN0Q3JlYXRlSW1hZ2Uo
Q0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGluZ1dpbmRvdywgW21fd2luZG93
IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dp
bmRvd0ltYWdlU2hvdWxkQmVPcGFxdWUpKTsKLSAgICAKLSAgICAvLyB3aW5kb3dTbmFwc2hvdElt
YWdlIHdpbGwgYmUgaW4gdGhlIGRpc3BsYXkncyBjb2xvciBzcGFjZSwgYnV0IFdLSW1hZ2VDcmVh
dGVGcm9tQ0dJbWFnZSgpIHdpbGwgZHJhdwotICAgIC8vIHRoaXMgaW1hZ2UgaW50byBhIEdlbmVy
aWNSR0IgYml0bWFwIGNvbnRleHQsIHNvIHRoZSByZXR1cm5lZCBpbWFnZSBpcyBHZW5lcmljUkdC
LgorCisgICAgLy8gd2luZG93U25hcHNob3RJbWFnZSB3aWxsIGJlIGluIEdlbmVyaWNSR0IsIGFz
IHdlJ3ZlIHNldCB0aGUgbWFpbiBkaXNwbGF5J3MgY29sb3Igc3BhY2UgdG8gR2VuZXJpY1JHQi4K
ICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uod2luZG93U25hcHNo
b3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCg==
</data>
<flag name="review"
          id="136663"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="136664"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132908</attachid>
            <date>2012-03-20 15:00:18 -0700</date>
            <delta_ts>2012-03-20 15:18:50 -0700</delta_ts>
            <desc>ugly, dirty patch (not tested on SL! however, very similar code is in DRT/chromium tree so it should be ok)</desc>
            <filename>cs-test.diff</filename>
            <type>text/plain</type>
            <size>4047</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YzQ4
NTdmLi4xMTkzN2U0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gUmVzdG9yZSBjb2xvciBzcGFjZSBz
d2l0Y2hpbmcgY29kZSB0byBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTEwMDg1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTExNDI5IGJyb2tlIHRvb2xzIGJ1
aWxkIG9uIFNub3cgTGVvcGFyZC4KKyAgICAgICAgCisgICAgICAgIFVzZSB0aGUgb2xkIENNKiBB
UEkgb24gU25vdyBMZW9wYXJkLCBzaW5jZSBDR0Rpc3BsYXlDcmVhdGVVVUlERnJvbURpc3BsYXlJ
RAorICAgICAgICBkaWRuJ3QgZXhpc3QgdW50aWwgTGlvbi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm06CisgICAgICAgIChpbnN0YWxsTGF5b3V0VGVz
dENvbG9yUHJvZmlsZSk6CisgICAgICAgIChyZXN0b3JlVXNlckNvbG9yUHJvZmlsZSk6CisKIDIw
MTItMDMtMjAgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0ZSB0aGUgbGFzdCB0ZXN0IHRvIHVzZSBFWFBFQ1RfV0tfU1RSRVEuCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIubQppbmRleCBhYWVjZWIwLi5hMjc3YTYzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0KQEAgLTQwLDYg
KzQwLDggQEAKIC8vIHRlc3Qgc2NyaXB0LCBzbyBpdCBjYW4gZG8gdGhlIGpvYiBmb3IgbXVsdGlw
bGUgRHVtcFJlbmRlclRyZWUgd2hpbGUgdGhleSBhcmUKIC8vIHJ1bm5pbmcgbGF5b3V0IHRlc3Rz
LgogCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAorCiBzdGF0aWMg
Q0ZVUkxSZWYgc1VzZXJDb2xvclByb2ZpbGVVUkw7CiAKIHN0YXRpYyB2b2lkIGluc3RhbGxMYXlv
dXRUZXN0Q29sb3JQcm9maWxlKCkKQEAgLTExMCw2ICsxMTIsNTkgQEAgc3RhdGljIHZvaWQgcmVz
dG9yZVVzZXJDb2xvclByb2ZpbGUodm9pZCkKICAgICBDRlJlbGVhc2UocHJvZmlsZUluZm8pOwog
fQogCisjZWxzZSAvLyBGb3IgU25vdyBMZW9wYXJkIGFuZCBiZWZvcmUsIHVzZSBvbGRlciBDTSog
QVBJLgorCitjb25zdCBjaGFyIGNvbG9yUHJvZmlsZVBhdGhbXSA9ICIvU3lzdGVtL0xpYnJhcnkv
Q29sb3JTeW5jL1Byb2ZpbGVzL0dlbmVyaWMgUkdCIFByb2ZpbGUuaWNjIjsKKworQ01Qcm9maWxl
TG9jYXRpb24gaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uOyAvLyBUaGUgbG9jVHlwZSBmaWVs
ZCBpcyBpbml0aWFsaXplZCB0byAwIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGNtTm9Qcm9maWxlQmFz
ZS4KKworc3RhdGljIHZvaWQgaW5zdGFsbExheW91dFRlc3RDb2xvclByb2ZpbGUoKQoreworICAg
IC8vIFRvIG1ha2Ugc3VyZSB3ZSBnZXQgY29uc2lzdGVudCBjb2xvcnMgKG5vdCBkZXBlbmRlbnQg
b24gdGhlIGNob3NlbiBjb2xvcgorICAgIC8vIHNwYWNlIG9mIHRoZSBtYWluIGRpc3BsYXkpLCB3
ZSBmb3JjZSB0aGUgZ2VuZXJpYyBSR0IgY29sb3IgcHJvZmlsZS4KKyAgICAvLyBUaGlzIGNhdXNl
cyBhIGNoYW5nZSB0aGUgdXNlciBjYW4gc2VlLgorICAgIAorICAgIGNvbnN0IENNRGV2aWNlU2Nv
cGUgc2NvcGUgPSB7IGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQ3Vy
cmVudEhvc3QgfTsKKworICAgIENNUHJvZmlsZVJlZiBwcm9maWxlID0gMDsKKyAgICBpbnQgZXJy
b3IgPSBDTUdldFByb2ZpbGVCeUFWSUQoKENNRGlzcGxheUlEVHlwZSlrQ0dEaXJlY3RNYWluRGlz
cGxheSwgJnByb2ZpbGUpOworICAgIGlmICghZXJyb3IpIHsKKyAgICAgICAgVUludDMyIHNpemUg
PSBzaXplb2YoaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uKTsKKyAgICAgICAgZXJyb3IgPSBO
Q01HZXRQcm9maWxlTG9jYXRpb24ocHJvZmlsZSwgJmluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlv
biwgJnNpemUpOworICAgICAgICBDTUNsb3NlUHJvZmlsZShwcm9maWxlKTsKKyAgICB9CisgICAg
aWYgKGVycm9yKSB7CisgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIGdldCB0aGUgY3VycmVudCBj
b2xvciBwcm9maWxlLiBNYW55IHBpeGVsIHRlc3RzIG1heSBmYWlsIGFzIGEgcmVzdWx0LiBFcnJv
cjogJWQiLCAoaW50KWVycm9yKTsKKyAgICAgICAgaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9u
LmxvY1R5cGUgPSBjbU5vUHJvZmlsZUJhc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBDTVByb2ZpbGVMb2NhdGlvbiBsb2NhdGlvbjsKKyAgICBsb2NhdGlvbi5sb2NUeXBlID0gY21Q
YXRoQmFzZWRQcm9maWxlOworICAgIHN0cm5jcHkobG9jYXRpb24udS5wYXRoTG9jLnBhdGgsIGNv
bG9yUHJvZmlsZVBhdGgsIHNpemVvZihsb2NhdGlvbi51LnBhdGhMb2MucGF0aCkpOworICAgIGVy
cm9yID0gQ01TZXREZXZpY2VQcm9maWxlKGNtRGlzcGxheURldmljZUNsYXNzLCAoQ01EZXZpY2VJ
RClrQ0dEaXJlY3RNYWluRGlzcGxheSwgJnNjb3BlLCBjbURlZmF1bHRQcm9maWxlSUQsICZsb2Nh
dGlvbik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIE5TTG9nKEAiRmFpbGVkIGluc3RhbGwg
dGhlIEdlbmVyaWNSR0IgY29sb3IgcHJvZmlsZS4gTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBh
cyBhIHJlc3VsdC4gRXJyb3I6ICVkIiwgKGludCllcnJvcik7CisgICAgICAgIGluaXRpYWxDb2xv
clByb2ZpbGVMb2NhdGlvbi5sb2NUeXBlID0gY21Ob1Byb2ZpbGVCYXNlOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgcmVzdG9yZVVzZXJDb2xvclByb2ZpbGUodm9pZCkKK3sKKyAgICAvLyBUaGlz
IGlzIHVzZWQgYXMgYSBzaWduYWwgaGFuZGxlciwgYW5kIHRodXMgdGhlIGNhbGxzIGludG8gQ29s
b3JTeW5jIGFyZSB1bnNhZmUuCisgICAgLy8gQnV0IHdlIG1pZ2h0IGFzIHdlbGwgdHJ5IHRvIHJl
c3RvcmUgdGhlIHVzZXIncyBjb2xvciBwcm9maWxlLCB3ZSdyZSBnb2luZyBkb3duIGFueXdheS4u
LgorICAgIGlmIChpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24ubG9jVHlwZSAhPSBjbU5vUHJv
ZmlsZUJhc2UpIHsKKyAgICAgICAgY29uc3QgQ01EZXZpY2VTY29wZSBzY29wZSA9IHsga0NGUHJl
ZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNDdXJyZW50SG9zdCB9OworICAgICAg
ICBpbnQgZXJyb3IgPSBDTVNldERldmljZVByb2ZpbGUoY21EaXNwbGF5RGV2aWNlQ2xhc3MsIChD
TURldmljZUlEKWtDR0RpcmVjdE1haW5EaXNwbGF5LCAmc2NvcGUsIGNtRGVmYXVsdFByb2ZpbGVJ
RCwgJmluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbik7CisgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgTlNMb2coQCJGYWlsZWQgdG8gcmVzdG9yZSBjb2xvciBwcm9maWxlLCB1c2Ug
U3lzdGVtIFByZWZlcmVuY2VzIC0+IERpc3BsYXlzIC0+IENvbG9yIHRvIHJlc2V0LiBFcnJvcjog
JWQiLCAoaW50KWVycm9yKTsKKyAgICAgICAgfQorICAgICAgICBpbml0aWFsQ29sb3JQcm9maWxl
TG9jYXRpb24ubG9jVHlwZSA9IGNtTm9Qcm9maWxlQmFzZTsKKyAgICB9Cit9CisKKyNlbmRpZgor
CiBzdGF0aWMgdm9pZCBzaW1wbGVTaWduYWxIYW5kbGVyKGludCBzaWcpCiB7CiAgICAgLy8gVHJ5
IHRvIHJlc3RvcmUgdGhlIGNvbG9yIHByb2ZpbGUgYW5kIHRyeSB0byBnbyBkb3duIGNsZWFubHkK
</data>
<flag name="review"
          id="136710"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>