<?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>60558</bug_id>
          
          <creation_ts>2011-05-10 10:13:19 -0700</creation_ts>
          <short_desc>StorageTracker should report actual local storage usage on disk</short_desc>
          <delta_ts>2011-09-07 11:46:21 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton D&apos;Auria">adauria</reporter>
          <assigned_to name="Anton D&apos;Auria">adauria</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401282</commentid>
    <comment_count>0</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 10:13:19 -0700</bug_when>
    <thetext>Local Storage currently checks quota against key value pairs in memory. We need to provide an API to get usage on disk even if the key/value pairs haven&apos;t been loaded for an origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401302</commentid>
    <comment_count>1</comment_count>
      <attachid>92974</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 10:29:38 -0700</bug_when>
    <thetext>Created attachment 92974
Patch

Uploading patch for initial review. Tests forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401434</commentid>
    <comment_count>2</comment_count>
      <attachid>92998</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 13:12:13 -0700</bug_when>
    <thetext>Created attachment 92998
Patch

Adding tests and stubs. No need to add tests to skip lists on other platforms because storagetracker directory is already skipped in its entirety on all platforms except Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401487</commentid>
    <comment_count>3</comment_count>
      <attachid>92998</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-10 14:13:41 -0700</bug_when>
    <thetext>Comment on attachment 92998
Patch

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

&gt; Source/WebCore/storage/StorageTracker.cpp:573
&gt; +        return 0.0f;

Do you need to do 0.0f here as opposed to 0? (especially because long long is an int type).

&gt; Source/WebCore/storage/StorageTracker.cpp:579
&gt; +        return 0.0f;

Ditto.

&gt; LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-6-create-expected.txt:2
&gt; +StorageTracker test - write local storage for this origin. Should be called after storage-tracker-5-delete-one.html.

Interdependencies among tests are really bad.

Each test should stand on its own for lots of reasons. The simplest reason is that you can&apos;t guarantee that they will be run in the same instance of DRT.

Other reasons are that it makes repro&apos;s harder. (Also if we can make tests completely independent then we&apos;ll be able to parallelize the running of them better and make the test runs go faster.)

&gt; LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html:21
&gt; +        shouldBeEqualToString(&quot;layoutTestController.originsWithLocalStorage().toString()&quot;, &quot;file__0&quot;);

Why is this &quot;file__0&quot;? I suspect this is port specific. If so, it would be better to have it as test output (instead of hard coded in the test) so the various ports could have their own results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401504</commentid>
    <comment_count>4</comment_count>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 14:32:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 92998 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92998&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/StorageTracker.cpp:573
&gt; &gt; +        return 0.0f;
&gt; 
&gt; Do you need to do 0.0f here as opposed to 0? (especially because long long is an int type).

This is a mistake, thanks.

&gt; &gt; LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-6-create-expected.txt:2
&gt; &gt; +StorageTracker test - write local storage for this origin. Should be called after storage-tracker-5-delete-one.html.
&gt; 
&gt; Interdependencies among tests are really bad.
&gt; 
&gt; Each test should stand on its own for lots of reasons. The simplest reason is that you can&apos;t guarantee that they will be run in the same instance of DRT.
&gt; 
&gt; Other reasons are that it makes repro&apos;s harder. (Also if we can make tests completely independent then we&apos;ll be able to parallelize the running of them better and make the test runs go faster.)

Unfortunately, there is no test harness for async WebCore APIs in WebKit1. We previously agreed to these sequential tests for StorageTracker will suffice, and I followed that precedent.

&gt; 
&gt; &gt; LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html:21
&gt; &gt; +        shouldBeEqualToString(&quot;layoutTestController.originsWithLocalStorage().toString()&quot;, &quot;file__0&quot;);
&gt; 
&gt; Why is this &quot;file__0&quot;? I suspect this is port specific. If so, it would be better to have it as test output (instead of hard coded in the test) so the various ports could have their own results.

This is the cross-platform origin identifier (from WebCore::SecurityOrigin) for &quot;file://&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401515</commentid>
    <comment_count>5</comment_count>
      <attachid>93010</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 14:46:28 -0700</bug_when>
    <thetext>Created attachment 93010
Patch

Removing 0.0f. Not changing tests because LocalStorage is written to disk asynchronously and we need to guarantee the db has content before getting its size. Not changing &quot;file__0&quot; because that&apos;s the WebCore::SecurityOrigin identifier for &quot;file://&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401624</commentid>
    <comment_count>6</comment_count>
      <attachid>93042</attachid>
    <who name="Anton D&apos;Auria">adauria</who>
    <bug_when>2011-05-10 16:28:09 -0700</bug_when>
    <thetext>Created attachment 93042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401704</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 18:53:21 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 93042:

http/tests/xmlhttprequest/remember-bad-password.html bug 51733 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401705</commentid>
    <comment_count>8</comment_count>
      <attachid>93042</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 18:53:42 -0700</bug_when>
    <thetext>Comment on attachment 93042
Patch

Clearing flags on attachment: 93042

Committed r86205: &lt;http://trac.webkit.org/changeset/86205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401706</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 18:53:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463522</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-07 11:46:21 -0700</bug_when>
    <thetext>According to TestFailures:
http://build.webkit.org/TestFailures/#/SnowLeopard Intel Release (Tests)

storage/domstorage/localstorage/storagetracker/storage-tracker-6-create.html: pretty diff (flaky)
storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html: pretty diff

are both flaky/failing on Snow Leopard Mac.  Please remove the tests or fix them. :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92974</attachid>
            <date>2011-05-10 10:29:38 -0700</date>
            <delta_ts>2011-05-10 13:12:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60558-20110510102937.patch</filename>
            <type>text/plain</type>
            <size>7442</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTYyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDUtMTAgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlVHJhY2tlciBzaG91bGQgcmVwb3J0IGFjdHVhbCBs
b2NhbCBzdG9yYWdlIHVzYWdlIG9uIGRpc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwNTU4CisKKyAgICAgICAgVXNlIFNRTGl0ZUZpbGVTeXN0ZW06
OmdldERhdGFiYXNlRmlsZVNpemUgdG8gZ2V0IGFjdHVhbCB1c2FnZSBieQorICAgICAgICBhbiBv
cmlnaW4ncyBsb2NhbCBzdG9yYWdlIGRiLiBGYWN0b3JlZCBvdXQgY29kZSB0aGF0IHJldHJpZXZl
cworICAgICAgICBwYXRoIG9mIGxvY2FsIHN0b3JhZ2UgZGIuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjogU29ydGVkIGFscGhhYmV0aWNhbGx5IFN0b3JhZ2VUcmFja2VyJ3MgbWFuZ2xlZAor
ICAgICAgICBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2lu
KTogVXNlcyBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgdG8gZ2V0IHBhdGggb2Ygb3JpZ2luJ3Mg
ZGIKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkYXRhYmFzZVBhdGhGb3JPcmln
aW4pOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICB0aGF0IGdldHMgdGhlIHBhdGggb2Yg
YW4gb3JpZ2luJ3MgbG9jYWwgc3RvcmFnZSBkYiBmcm9tIFN0b3JhZ2VUcmFja2VyLgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbik6IE5ldyBBUEku
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oOgorCiAyMDExLTA1LTEwICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDg2MDc4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzOTks
MTMgKzEzOTksMTQgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIF93a1NpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZwogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotX19a
TjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJp
bmdFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVBbGxPcmlnaW5zRXYKLV9f
Wk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkUKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tlckV2CiBfX1pON1dlYkNv
cmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18x
NFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN3Ry
YWNrZXJFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIwU3Rv
cmFnZVRyYWNrZXJDbGllbnRFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTJkZWxldGVP
cmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2Vy
MTZkZWxldGVBbGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxNnN5bmNM
b2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRy
YWNrZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMThkaXNr
VXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZUV2CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHJldmlzaW9u
IDg2MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1MywyMCArNDUzLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0RlbGV0ZU9yaWdpbihjbwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIC8vIEdldCBvcmlnaW4ncyBkYiBmaWxlIHBhdGgsIGRlbGV0ZSBl
bnRyeSBpbiB0cmFja2VyJ3MgZGIsIHRoZW4gZGVsZXRlIGRiIGZpbGUuCi0gICAgU1FMaXRlU3Rh
dGVtZW50IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBwYXRoIEZST00gT3JpZ2lu
cyBXSEVSRSBvcmlnaW49PyIpOwotICAgIGlmIChwYXRoU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIHNlbGVj
dGlvbiBvZiBwYXRoIGZvciBvcmlnaW4gJyVzJyIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5k
YXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHBhdGhTdGF0ZW1lbnQuYmluZFRl
eHQoMSwgb3JpZ2luSWRlbnRpZmllcik7Ci0gICAgaW50IHJlc3VsdCA9IHBhdGhTdGF0ZW1lbnQu
c3RlcCgpOwotICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGZpbmQgb3JpZ2luICclcycgaW4gT3JpZ2lucyB0YWJsZSIsIG9yaWdp
bklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIFN0cmluZyBwYXRoID0gcGF0aFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOworICAg
IFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbklkZW50aWZpZXIpOwog
CiAgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgCkBAIC01NTgsNyArNTQ1LDQyIEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldElzQWN0aXZlKGJvb2wgZmwKIHsKICAgICBtX2lzQWN0
aXZlID0gZmxhZzsKIH0KKyAgICAKK1N0cmluZyBTdG9yYWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRo
Rm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQo
IW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwogCisgICAgb3BlblRyYWNrZXJEYXRhYmFzZShm
YWxzZSk7CisgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgCisgICAgU1FMaXRlU3RhdGVtZW50IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIlNFTEVDVCBwYXRoIEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOworICAgIGlmIChw
YXRoU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgeworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBwcmVwYXJlIHNlbGVjdGlvbiBvZiBwYXRoIGZvciBvcmlnaW4gJyVzJyIs
IG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgfQorICAgIHBhdGhTdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luSWRlbnRpZmll
cik7CisgICAgaW50IHJlc3VsdCA9IHBhdGhTdGF0ZW1lbnQuc3RlcCgpOworICAgIGlmIChyZXN1
bHQgIT0gU1FMUmVzdWx0Um93KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gcGF0aFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOworfQorICAgIAorbG9uZyBsb25nIFN0
b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
K3sKKyAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX2RhdGFiYXNlR3VhcmQpOworCisgICAgU3RyaW5nIHBhdGggPSBkYXRh
YmFzZVBhdGhGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYg
KHBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIHJldHVybiBTUUxp
dGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKHBhdGgpOworfQorICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAkocmV2aXNpb24gODYwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKTsKICAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
PiYgcmVzdWx0KTsKLQorICAgIGxvbmcgbG9uZyBkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKKyAgICAKICAgICB2b2lkIGNhbmNlbERlbGV0aW5nT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgCiAgICAgdm9pZCBzZXRDbGllbnQoU3RvcmFnZVRy
YWNrZXJDbGllbnQqKTsKQEAgLTgyLDYgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBkZWxldGVUcmFj
a2VyRmlsZXMoKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoRm9yT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcik7CiAKICAgICBib29sIGNhbkRlbGV0ZU9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbERlbGV0ZU9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gODYxNjIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNS0xMCAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JhZ2VUcmFja2VyIHNob3VsZCByZXBvcnQgYWN0dWFsIGxvY2FsIHN0b3JhZ2UgdXNhZ2Ug
b24gZGlzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjA1NTgKKworICAgICAgICBBZGRpbmcgTWFjIHBvcnQgcGx1bWJpbmcgdG8gV2ViQ29yZSBBUEku
CisKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJTdG9yYWdlTWFuYWdlciBkaXNrVXNhZ2VGb3JPcmlnaW46XSk6CisgICAgICAgICogU3RvcmFn
ZS9XZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaDoKKwogMjAxMS0wNS0wOSAgSmVyZW15IE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdl
ci5tbQkocmV2aXNpb24gODYwNzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0
b3JhZ2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMSBAQCAtICh2b2lk
KWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gCiAgICAgU3RvcmFnZVRyYWNrZXI6OnRy
YWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0pOwogfQogCistICh1bnNpZ25lZCBs
b25nIGxvbmcpZGlza1VzYWdlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgor
eworICAgIHJldHVybiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRpc2tVc2FnZUZvck9yaWdp
bihbb3JpZ2luIF9jb3JlXSk7Cit9CisKIC0gKHZvaWQpc3luY0xvY2FsU3RvcmFnZQogewogICAg
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuc3luY0xvY2FsU3RvcmFnZSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0
ZS5oCShyZXZpc2lvbiA4NjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3Rv
cmFnZU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQGlu
dGVyZmFjZSBXZWJTdG9yYWdlTWFuYWdlciA6IE5TT2JqZWN0CiAKIC0gKHZvaWQpZGVsZXRlQWxs
T3JpZ2luczsKIC0gKHZvaWQpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdp
bjsKKy0gKHVuc2lnbmVkIGxvbmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luOwogCiAtICh2b2lkKXN5bmNMb2NhbFN0b3JhZ2U7CiAtICh2b2lkKXN5
bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92998</attachid>
            <date>2011-05-10 13:12:13 -0700</date>
            <delta_ts>2011-05-10 14:46:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60558-20110510131212.patch</filename>
            <type>text/plain</type>
            <size>23639</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTAgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlVHJhY2tlciBzaG91bGQgcmVwb3J0IGFjdHVhbCBs
b2NhbCBzdG9yYWdlIHVzYWdlIG9uIGRpc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwNTU4CisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3Rv
cmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAorCisgICAgICAgIFVzZSBT
UUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplIHRvIGdldCBhY3R1YWwgdXNhZ2Ug
YnkKKyAgICAgICAgYW4gb3JpZ2luJ3MgbG9jYWwgc3RvcmFnZSBkYi4gRmFjdG9yZWQgb3V0IGNv
ZGUgdGhhdCByZXRyaWV2ZXMKKyAgICAgICAgcGF0aCBvZiBsb2NhbCBzdG9yYWdlIGRiLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IFNvcnRlZCBhbHBoYWJldGljYWxseSBTdG9yYWdlVHJh
Y2tlcidzIG1hbmdsZWQKKyAgICAgICAgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6
c3luY0RlbGV0ZU9yaWdpbik6IFVzZXMgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHRvIGdldCBw
YXRoIG9mIG9yaWdpbidzIGRiCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGF0
YWJhc2VQYXRoRm9yT3JpZ2luKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgdGhhdCBn
ZXRzIHRoZSBwYXRoIG9mIGFuIG9yaWdpbidzIGxvY2FsIHN0b3JhZ2UgZGIgZnJvbSBTdG9yYWdl
VHJhY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JP
cmlnaW4pOiBOZXcgQVBJLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaDoKKwog
MjAxMS0wNS0xMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDg2MDc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTEzOTksMTMgKzEzOTksMTQgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0
ZXMKIF93a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZwogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNr
ZXJFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVB
bGxPcmlnaW5zRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tl
ckV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklO
UzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRD
bGllbnRFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyMTJkZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyMTZkZWxldGVBbGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxNnN5bmNMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pO
N1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFz
ZUV2CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAJKHJldmlzaW9uIDg2MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MywyMCArNDUzLDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogICAgIGlmICghbV9kYXRhYmFzZS5pc09w
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdldCBvcmlnaW4ncyBkYiBmaWxl
IHBhdGgsIGRlbGV0ZSBlbnRyeSBpbiB0cmFja2VyJ3MgZGIsIHRoZW4gZGVsZXRlIGRiIGZpbGUu
Ci0gICAgU1FMaXRlU3RhdGVtZW50IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBw
YXRoIEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOwotICAgIGlmIChwYXRoU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBwcmVwYXJlIHNlbGVjdGlvbiBvZiBwYXRoIGZvciBvcmlnaW4gJyVzJyIsIG9yaWdpbklkZW50
aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHBhdGhT
dGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luSWRlbnRpZmllcik7Ci0gICAgaW50IHJlc3VsdCA9
IHBhdGhTdGF0ZW1lbnQuc3RlcCgpOwotICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0Um93KSB7
Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZpbmQgb3JpZ2luICclcycgaW4gT3JpZ2lu
cyB0YWJsZSIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIFN0cmluZyBwYXRoID0gcGF0aFN0YXRlbWVudC5nZXRDb2x1
bW5UZXh0KDApOworICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdp
bklkZW50aWZpZXIpOwogCiAgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgCkBAIC01
NTgsNyArNTQ1LDQyIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldElzQWN0aXZlKGJvb2wgZmwK
IHsKICAgICBtX2lzQWN0aXZlID0gZmxhZzsKIH0KKyAgICAKK1N0cmluZyBTdG9yYWdlVHJhY2tl
cjo6ZGF0YWJhc2VQYXRoRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVCht
X2lzQWN0aXZlKTsKKyAgICAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcGF0aFN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiU0VMRUNUIHBhdGggRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7
CisgICAgaWYgKHBhdGhTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgc2VsZWN0aW9uIG9mIHBhdGggZm9yIG9y
aWdpbiAnJXMnIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgcGF0aFN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmln
aW5JZGVudGlmaWVyKTsKKyAgICBpbnQgcmVzdWx0ID0gcGF0aFN0YXRlbWVudC5zdGVwKCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAorICAgIHJldHVybiBwYXRoU3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7Cit9CisgICAgCits
b25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIDAuMGY7
CisKKyAgICBNdXRleExvY2tlciBsb2NrKG1fZGF0YWJhc2VHdWFyZCk7CisKKyAgICBTdHJpbmcg
cGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAg
cmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCk7Cit9Cisg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JB
R0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCShyZXZpc2lv
biA4NjA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIpOwogICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiA+JiByZXN1bHQpOwotCisgICAgbG9uZyBsb25nIGRpc2tVc2FnZUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiopOworICAgIAogICAgIHZvaWQgY2FuY2VsRGVsZXRpbmdPcmlnaW4o
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIHNldENsaWVu
dChTdG9yYWdlVHJhY2tlckNsaWVudCopOwpAQCAtODIsNiArODMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lk
IGRlbGV0ZVRyYWNrZXJGaWxlcygpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGhGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIGJvb2wgY2FuRGVsZXRlT3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRGVsZXRl
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4NjE3OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA1LTEwICBBbnRvbiBEJ0F1cmlhICA8
YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3RvcmFnZVRyYWNrZXIgc2hvdWxkIHJlcG9ydCBhY3R1YWwgbG9jYWwgc3Rv
cmFnZSB1c2FnZSBvbiBkaXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDU1OAorCisgICAgICAgIEFkZGluZyBNYWMgcG9ydCBwbHVtYmluZyB0byBX
ZWJDb3JlIEFQSS4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06Cisg
ICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRpc2tVc2FnZUZvck9yaWdpbjpdKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oOgorCiAyMDExLTA1LTA5ICBK
ZXJlbXkgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdl
TWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0
b3JhZ2VNYW5hZ2VyLm1tCShyZXZpc2lvbiA4NjA3OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDEx
IEBAIC0gKHZvaWQpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAKICAgICBTdG9yYWdl
VHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihbb3JpZ2luIF9jb3JlXSk7CiB9CiAKKy0g
KHVuc2lnbmVkIGxvbmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCit7CisgICAgcmV0dXJuIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGlza1Vz
YWdlRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKK30KKwogLSAodm9pZClzeW5jTG9jYWxTdG9y
YWdlCiB7CiAgICAgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5zeW5jTG9jYWxTdG9yYWdlKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDg2MDc4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBAaW50ZXJmYWNlIFdlYlN0b3JhZ2VNYW5hZ2VyIDogTlNPYmplY3QKIAogLSAodm9p
ZClkZWxldGVBbGxPcmlnaW5zOwogLSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3Jp
Z2luICopb3JpZ2luOworLSAodW5zaWduZWQgbG9uZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjoo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CiAKIC0gKHZvaWQpc3luY0xvY2FsU3RvcmFnZTsK
IC0gKHZvaWQpc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2U7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE3OCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEx
LTA1LTEwICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmFnZVRyYWNrZXIgc2hvdWxk
IHJlcG9ydCBhY3R1YWwgbG9jYWwgc3RvcmFnZSB1c2FnZSBvbiBkaXNrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU1OAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAobG9jYWxTdG9y
YWdlRGlza1VzYWdlRm9yT3JpZ2luQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2Fs
U3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JP
cmlnaW4pOgorCiAyMDExLTA1LTEwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDg2MDc4
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDE5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGRlbGV0ZUxv
Y2FsU3RvcmFnZUZvck8KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIGlmIChhcmd1bWVudENvdW50
IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG9yaWdpblVSTChBZG9wdCwgSlNWYWx1ZVRvU3Ry
aW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29u
dHJvbGxlci0+bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKG9yaWdpblVSTC5nZXQoKSkp
OworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZUNhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzNzEsNiArMjM4NCw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic3luY0xvY2FsU3Rv
cmFnZSIsIHN5bmNMb2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAgICAgICAgICAgICAgICAK
ICAgICAgICAgeyAib2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyIsIG9ic2VydmVT
dG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAgICAgICAgCiAgICAg
ICAgIHsgImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZv
ck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImxvY2FsU3RvcmFnZURpc2tVc2Fn
ZUZvck9yaWdpbiIsIGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlIiwgb3JpZ2luc1dpdGhMb2Nh
bFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tl
bkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNoYWRvd1BzZXVkb0lkIiwgc2hhZG93UHNldWRvSWRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA4NjA3OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1
ZVJlZiBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZShKU0NvbnRleHRSZWYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsTG9jYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmln
aW4oSlNTdHJpbmdSZWYgb3JpZ2luSWRlbnRpZmllcik7CisgICAgbG9uZyBsb25nIGxvY2FsU3Rv
cmFnZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW5JZGVudGlmaWVyKTsKICAg
ICB2b2lkIG9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnModW5zaWduZWQgbnVtYmVy
KTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gODYwNzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsNyBAQCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0VXNl
RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBiaW5kTWV0aG9kKCJzdG9yZVdlYlNj
cmlwdE9iamVjdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RvcmVXZWJTY3JpcHRPYmplY3Qp
OwogICAgIGJpbmRNZXRob2QoImRlbGV0ZUFsbExvY2FsU3RvcmFnZSIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6ZGVsZXRlQWxsTG9jYWxTdG9yYWdlKTsKKyAgICBiaW5kTWV0aG9kKCJsb2NhbFN0
b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2FsU3Rv
cmFnZURpc2tVc2FnZUZvck9yaWdpbik7CiAgICAgYmluZE1ldGhvZCgib3JpZ2luc1dpdGhMb2Nh
bFN0b3JhZ2UiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdl
KTsKICAgICBiaW5kTWV0aG9kKCJkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4iLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbik7CiAgICAgYmluZE1l
dGhvZCgib2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6b2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyk7CkBAIC0xNzUwLDYg
KzE3NTEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlQWxsTG9jYQogICAg
IC8vIE5vdCBJbXBsZW1lbnRlZAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpsb2Nh
bFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCopCiB7CiAgICAgLy8gTm90IEltcGxlbWVu
dGVkCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDg2MDc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYw
LDYgKzM2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBvcmlnaW5zV2l0aExv
Y2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOworICAgIHZvaWQgbG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG9ic2VydmVTdG9yYWdl
VHJhY2tlck5vdGlmaWNhdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gODYwNzgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjAsNiArNjYwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBw
bGljYXQKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIGFw
cGxpY2F0aW9uIGNhY2hlcyBmb3IgYW4gb3JpZ2luLgogfQogCitsb25nIGxvbmcgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBv
cmlnaW5JZGVudGlmaWVyKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9ydCBn
ZXR0aW5nIGRpc2sgdXNhZ2UgaW4gYnl0ZXMgZm9yIGFuIG9yaWdpbi4KKyAgICByZXR1cm4gMDsK
K30KKwogSlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3JpZ2luc1dpdGhBcHBsaWNh
dGlvbkNhY2hlKEpTQ29udGV4dFJlZiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdG8gZ2V0IG9yaWdpbnMgdGhhdCBjb250YWluIGFwcGxpY2F0aW9uIGNhY2hlcy4KSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0JKHJldmlzaW9uIDg2MDc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDEzIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3IKICAgICBbW1dlYlN0b3Jh
Z2VNYW5hZ2VyIHNoYXJlZFdlYlN0b3JhZ2VNYW5hZ2VyXSBzeW5jTG9jYWxTdG9yYWdlXTsKIH0K
IAorbG9uZyBsb25nIExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VG
b3JPcmlnaW4oSlNTdHJpbmdSZWYgdXJsKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXJsQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
dXJsKSk7CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVy
bENGLmdldCgpXV07CisgICAgcmV0dXJuIFtbV2ViU3RvcmFnZU1hbmFnZXIgc2hhcmVkV2ViU3Rv
cmFnZU1hbmFnZXJdIGRpc2tVc2FnZUZvck9yaWdpbjpvcmlnaW5dOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKHVuc2ln
bmVkIG51bWJlcikKIHsKICAgICBbc3RvcmFnZURlbGVnYXRlIGxvZ05vdGlmaWNhdGlvbnM6bnVt
YmVyIGNvbnRyb2xsZXI6dGhpc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODYwNzgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTY0LDYgKzU2NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVh
ckFwcGxpY2F0CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFs
bCBhcHBsaWNhdGlvbiBjYWNoZXMgZm9yIGFuIG9yaWdpbi4KIH0KIAorbG9uZyBsb25nIExheW91
dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgUVN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1
cHBvcnQgZ2V0dGluZyBkaXNrIHVzYWdlIGluIGJ5dGVzIGZvciBhbiBvcmlnaW4uCisgICAgcmV0
dXJuIDA7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgaWYgKCFtX3Rv
cExvYWRpbmdGcmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDg2MDc4KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYs
NiArMjY2LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgb3JpZ2luc1dpdGhMb2NhbFN0b3Jh
Z2UoKTsKICAgICB2b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZSgpOwogICAgIHZvaWQgZGVsZXRl
TG9jYWxTdG9yYWdlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwor
ICAgIGxvbmcgbG9uZyBsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgUVN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3Rp
ZmljYXRpb25zKHVuc2lnbmVkIG51bWJlcik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKCk7
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODYwNzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM3
LDYgKzE1MzcsMTIgQEAgSlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3JpZ2lucwog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorbG9uZyBsb25n
IExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oSlNT
dHJpbmdSZWYgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRv
IHN1cHBvcnQgZ2V0dGluZyBsb2NhbCBzdG9yYWdlIGRpc2sgdXNhZ2UgZm9yIGFuIG9yaWdpbi4K
KyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlTG9j
YWxTdG9yYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIFVSTCkKIHsKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODYxNzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNS0xMCAgQW50b24gRCdB
dXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN0b3JhZ2VUcmFja2VyIHNob3VsZCByZXBvcnQgYWN0dWFsIGxv
Y2FsIHN0b3JhZ2UgdXNhZ2Ugb24gZGlzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NTgKKworICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9s
b2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9z
dG9yYWdlLXRyYWNrZXItNy11c2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFj
a2VyLTctdXNhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTEtMDUtMTAgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3Jh
Z2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdl
dHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdl
dHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExIEBACitPcmlnaW4gaWRlbnRpZmllcjogJ2ZpbGVfXzAnCitTdG9yYWdl
VHJhY2tlciB0ZXN0IC0gd3JpdGUgbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBvcmlnaW4uIFNob3Vs
ZCBiZSBjYWxsZWQgYWZ0ZXIgc3RvcmFnZS10cmFja2VyLTUtZGVsZXRlLW9uZS5odG1sLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGhpcyB0ZXN0IHNob3VsZCBoYXZlIG5vIHZp
c2libGUgb3V0cHV0IG9uIHN1Y2Nlc3MuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdl
L2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9y
YWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9y
YWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJTdG9yYWdlVHJhY2tlciB0ZXN0IC0gd3JpdGUgbG9jYWwgc3RvcmFnZSBmb3Ig
dGhpcyBvcmlnaW4uIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgc3RvcmFnZS10cmFja2VyLTUtZGVs
ZXRlLW9uZS5odG1sLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAKK2Z1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgibG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgZGVidWcoIlRoaXMgdGVzdCBzaG91bGQgaGF2ZSBubyB2aXNpYmxlIG91dHB1
dCBvbiBzdWNjZXNzLiIpOworCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLm9yaWdpbnNX
aXRoTG9jYWxTdG9yYWdlKCkubGVuZ3RoID4gMCkgeworICAgICAgICAvLyBBbiBvcmlnaW4gYWxy
ZWFkeSBleGlzdHMgc28gd2UgY2FuIGV4aXQuCisgICAgICAgIHRlc3RGYWlsZWQoIkFuIG9yaWdp
biBhbHJlYWR5IGV4aXN0ZWQgd2l0aCBsb2NhbCBzdG9yYWdlLiIpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICBsb2NhbFN0b3JhZ2Uu
c29tZU90aGVyRGF0YSA9ICd3cml0ZW1lTW9yZSc7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMoMSk7CisgICAgfQorfQorCit0
ZXN0KCk7CQorCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2lzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFn
ZS10cmFja2VyLTctdXNhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10
cmFja2VyLTctdXNhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRy
YWNrZXItNy11c2FnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAK
K1Rlc3QgQVBJIHRvIHZpZXcgb3JpZ2lucyB0aGF0IGhhdmUgbG9jYWwgc3RvcmFnZSBhbmQgdG8g
ZGVsZXRlIGxvY2FsIHN0b3JhZ2UgYnkgb3JpZ2luLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5vcmlnaW5zV2l0aExvY2FsU3RvcmFn
ZSgpLnRvU3RyaW5nKCkgaXMgImZpbGVfXzAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmxv
Y2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbignZmlsZTovLycpID4gNjEwMCBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tl
ci9zdG9yYWdlLXRyYWNrZXItNy11c2FnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10
cmFja2VyLTctdXNhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTct
dXNhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IEFQSSB0byB2aWV3IG9y
aWdpbnMgdGhhdCBoYXZlIGxvY2FsIHN0b3JhZ2UgYW5kIHRvIGRlbGV0ZSBsb2NhbCBzdG9yYWdl
IGJ5IG9yaWdpbi4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubG9j
YWxTdG9yYWdlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImxvY2FsU3RvcmFnZSBET0VTIE5PVCBl
eGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxheW91dFRlc3RDb250
cm9sbGVyLm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKCkubGVuZ3RoID4gMCkgeworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLm9yaWdpbnNXaXRoTG9j
YWxTdG9yYWdlKCkudG9TdHJpbmcoKSIsICJmaWxlX18wIik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgibGF5b3V0VGVzdENvbnRyb2xsZXIubG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKCdm
aWxlOi8vJykgPiA2MTAwIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUmFu
IHdpdGggbm8gb3JpZ2lucyB3aXRoIGxvY2FsIHN0b3JhZ2UuIik7CisgICAgfQorCit9CisKK3Rl
c3QoKTsJCisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworaXNTdWNjZXNzZnVs
bHlQYXJzZWQoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93010</attachid>
            <date>2011-05-10 14:46:28 -0700</date>
            <delta_ts>2011-05-10 16:28:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60558-20110510144627.patch</filename>
            <type>text/plain</type>
            <size>23627</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTAgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlVHJhY2tlciBzaG91bGQgcmVwb3J0IGFjdHVhbCBs
b2NhbCBzdG9yYWdlIHVzYWdlIG9uIGRpc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwNTU4CisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3Rv
cmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAorCisgICAgICAgIFVzZSBT
UUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplIHRvIGdldCBhY3R1YWwgdXNhZ2Ug
YnkKKyAgICAgICAgYW4gb3JpZ2luJ3MgbG9jYWwgc3RvcmFnZSBkYi4gRmFjdG9yZWQgb3V0IGNv
ZGUgdGhhdCByZXRyaWV2ZXMKKyAgICAgICAgcGF0aCBvZiBsb2NhbCBzdG9yYWdlIGRiLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IFNvcnRlZCBhbHBoYWJldGljYWxseSBTdG9yYWdlVHJh
Y2tlcidzIG1hbmdsZWQKKyAgICAgICAgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6
c3luY0RlbGV0ZU9yaWdpbik6IFVzZXMgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHRvIGdldCBw
YXRoIG9mIG9yaWdpbidzIGRiCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGF0
YWJhc2VQYXRoRm9yT3JpZ2luKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgdGhhdCBn
ZXRzIHRoZSBwYXRoIG9mIGFuIG9yaWdpbidzIGxvY2FsIHN0b3JhZ2UgZGIgZnJvbSBTdG9yYWdl
VHJhY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JP
cmlnaW4pOiBOZXcgQVBJLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaDoKKwog
MjAxMS0wNS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWxpY2UgTGl1LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDg2MTgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE0MDIsMTMgKzE0MDIsMTQgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIF93
a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZwogCiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktO
M1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVBbGxPcmln
aW5zRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRT
ZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tlckV2CiBf
X1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJl
ZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyN3RyYWNrZXJFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGllbnRF
UE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2Vy
MTJkZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyMTZkZWxldGVBbGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNr
ZXIxNnN5bmNMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5p
dGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFj
a2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNv
cmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZUV2CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAJ
KHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MywyMCArNDUzLDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdldCBvcmlnaW4ncyBkYiBmaWxlIHBhdGgs
IGRlbGV0ZSBlbnRyeSBpbiB0cmFja2VyJ3MgZGIsIHRoZW4gZGVsZXRlIGRiIGZpbGUuCi0gICAg
U1FMaXRlU3RhdGVtZW50IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBwYXRoIEZS
T00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOwotICAgIGlmIChwYXRoU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVw
YXJlIHNlbGVjdGlvbiBvZiBwYXRoIGZvciBvcmlnaW4gJyVzJyIsIG9yaWdpbklkZW50aWZpZXIu
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHBhdGhTdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luSWRlbnRpZmllcik7Ci0gICAgaW50IHJlc3VsdCA9IHBhdGhT
dGF0ZW1lbnQuc3RlcCgpOwotICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0Um93KSB7Ci0gICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZpbmQgb3JpZ2luICclcycgaW4gT3JpZ2lucyB0YWJs
ZSIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIFN0cmluZyBwYXRoID0gcGF0aFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDApOworICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbklkZW50
aWZpZXIpOwogCiAgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgCkBAIC01NTgsNyAr
NTQ1LDQyIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldElzQWN0aXZlKGJvb2wgZmwKIHsKICAg
ICBtX2lzQWN0aXZlID0gZmxhZzsKIH0KKyAgICAKK1N0cmluZyBTdG9yYWdlVHJhY2tlcjo6ZGF0
YWJhc2VQYXRoRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2lzQWN0
aXZlKTsKKyAgICAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICAKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcGF0aFN0YXRlbWVudChtX2Rh
dGFiYXNlLCAiU0VMRUNUIHBhdGggRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7CisgICAg
aWYgKHBhdGhTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgc2VsZWN0aW9uIG9mIHBhdGggZm9yIG9yaWdpbiAn
JXMnIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICB9CisgICAgcGF0aFN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW5JZGVu
dGlmaWVyKTsKKyAgICBpbnQgcmVzdWx0ID0gcGF0aFN0YXRlbWVudC5zdGVwKCk7CisgICAgaWYg
KHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAorICAg
IHJldHVybiBwYXRoU3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7Cit9CisgICAgCitsb25nIGxv
bmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQoreworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBN
dXRleExvY2tlciBsb2NrKG1fZGF0YWJhc2VHdWFyZCk7CisKKyAgICBTdHJpbmcgcGF0aCA9IGRh
dGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBp
ZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCk7Cit9CisgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCShyZXZpc2lvbiA4NjE4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpOwogICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+
JiByZXN1bHQpOwotCisgICAgbG9uZyBsb25nIGRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiopOworICAgIAogICAgIHZvaWQgY2FuY2VsRGVsZXRpbmdPcmlnaW4oY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIHNldENsaWVudChTdG9yYWdlVHJh
Y2tlckNsaWVudCopOwpAQCAtODIsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U3Rv
cmFnZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGRlbGV0ZVRyYWNr
ZXJGaWxlcygpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGhGb3JPcmlnaW4oY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4NjE4MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDExLTA1LTEwICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RvcmFnZVRyYWNrZXIgc2hvdWxkIHJlcG9ydCBhY3R1YWwgbG9jYWwgc3RvcmFnZSB1c2FnZSBv
biBkaXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDU1OAorCisgICAgICAgIEFkZGluZyBNYWMgcG9ydCBwbHVtYmluZyB0byBXZWJDb3JlIEFQSS4K
KworICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgtW1dl
YlN0b3JhZ2VNYW5hZ2VyIGRpc2tVc2FnZUZvck9yaWdpbjpdKToKKyAgICAgICAgKiBTdG9yYWdl
L1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oOgorCiAyMDExLTA1LTA5ICBKZXJlbXkgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2Vy
Lm1tCShyZXZpc2lvbiA4NjE4MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3Rv
cmFnZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDExIEBAIC0gKHZvaWQp
ZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAKICAgICBTdG9yYWdlVHJhY2tlcjo6dHJh
Y2tlcigpLmRlbGV0ZU9yaWdpbihbb3JpZ2luIF9jb3JlXSk7CiB9CiAKKy0gKHVuc2lnbmVkIGxv
bmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7
CisgICAgcmV0dXJuIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGlza1VzYWdlRm9yT3JpZ2lu
KFtvcmlnaW4gX2NvcmVdKTsKK30KKwogLSAodm9pZClzeW5jTG9jYWxTdG9yYWdlCiB7CiAgICAg
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5zeW5jTG9jYWxTdG9yYWdlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXJQcml2YXRl
LmgJKHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBAaW50
ZXJmYWNlIFdlYlN0b3JhZ2VNYW5hZ2VyIDogTlNPYmplY3QKIAogLSAodm9pZClkZWxldGVBbGxP
cmlnaW5zOwogLSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2lu
OworLSAodW5zaWduZWQgbG9uZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjooV2ViU2VjdXJpdHlP
cmlnaW4gKilvcmlnaW47CiAKIC0gKHZvaWQpc3luY0xvY2FsU3RvcmFnZTsKIC0gKHZvaWQpc3lu
Y0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2U7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE4MCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTA1LTEwICBBbnRv
biBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmFnZVRyYWNrZXIgc2hvdWxkIHJlcG9ydCBhY3R1
YWwgbG9jYWwgc3RvcmFnZSB1c2FnZSBvbiBkaXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU1OAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAobG9jYWxTdG9yYWdlRGlza1VzYWdl
Rm9yT3JpZ2luQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRp
Y0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRy
b2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2FsU3RvcmFnZURpc2tV
c2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2Fs
U3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAy
MDExLTA1LTEwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDg2MTgwKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00ODMsNiArNDgzLDE5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGRlbGV0ZUxvY2FsU3RvcmFnZUZv
ck8KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbkNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IG9yaWdpblVSTChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7
CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29udHJvbGxlci0+bG9j
YWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKG9yaWdpblVSTC5nZXQoKSkpOworfQorCiBzdGF0
aWMgSlNWYWx1ZVJlZiBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZUNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKQEAgLTIzNzEsNiArMjM4NCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExh
eW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic3luY0xvY2FsU3RvcmFnZSIsIHN5bmNM
b2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAgICAgICAgICAgICAgICAKICAgICAgICAgeyAi
b2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyIsIG9ic2VydmVTdG9yYWdlVHJhY2tl
ck5vdGlmaWNhdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAgICAgICAgCiAgICAgICAgIHsgImRlbGV0
ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbkNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCisgICAgICAgIHsgImxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbiIs
IGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlIiwgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0
U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNoYWRv
d1BzZXVkb0lkIiwgc2hhZG93UHNldWRvSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4NjE4MCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMCw2ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZVJlZiBvcmlnaW5z
V2l0aExvY2FsU3RvcmFnZShKU0NvbnRleHRSZWYpOwogICAgIHZvaWQgZGVsZXRlQWxsTG9jYWxT
dG9yYWdlKCk7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4oSlNTdHJpbmdS
ZWYgb3JpZ2luSWRlbnRpZmllcik7CisgICAgbG9uZyBsb25nIGxvY2FsU3RvcmFnZURpc2tVc2Fn
ZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW5JZGVudGlmaWVyKTsKICAgICB2b2lkIG9ic2Vy
dmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnModW5zaWduZWQgbnVtYmVyKTsKICAgICB2b2lk
IHN5bmNMb2NhbFN0b3JhZ2UoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODYxODAp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0VXNlRGFzaGJvYXJkQ29t
cGF0aWJpbGl0eU1vZGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2FyZENv
bXBhdGliaWxpdHlNb2RlKTsKICAgICBiaW5kTWV0aG9kKCJzdG9yZVdlYlNjcmlwdE9iamVjdCIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RvcmVXZWJTY3JpcHRPYmplY3QpOwogICAgIGJpbmRN
ZXRob2QoImRlbGV0ZUFsbExvY2FsU3RvcmFnZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVs
ZXRlQWxsTG9jYWxTdG9yYWdlKTsKKyAgICBiaW5kTWV0aG9kKCJsb2NhbFN0b3JhZ2VEaXNrVXNh
Z2VGb3JPcmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2FsU3RvcmFnZURpc2tVc2Fn
ZUZvck9yaWdpbik7CiAgICAgYmluZE1ldGhvZCgib3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKTsKICAgICBiaW5k
TWV0aG9kKCJkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbik7CiAgICAgYmluZE1ldGhvZCgib2JzZXJ2
ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2Jz
ZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyk7CkBAIC0xNzUwLDYgKzE3NTEsMTEgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlQWxsTG9jYQogICAgIC8vIE5vdCBJbXBs
ZW1lbnRlZAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNr
VXNhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCopCiB7CiAgICAgLy8gTm90IEltcGxlbWVudGVkCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHJldmlzaW9uIDg2MTgwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDYgKzM2MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBvcmlnaW5zV2l0aExvY2FsU3RvcmFnZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBkZWxldGVMb2Nh
bFN0b3JhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgbG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlm
aWNhdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
c3luY0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gODYxODApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjAsNiAr
NjYwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwbGljYXQKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIGFwcGxpY2F0aW9uIGNh
Y2hlcyBmb3IgYW4gb3JpZ2luLgogfQogCitsb25nIGxvbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW5JZGVudGlm
aWVyKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9ydCBnZXR0aW5nIGRpc2sg
dXNhZ2UgaW4gYnl0ZXMgZm9yIGFuIG9yaWdpbi4KKyAgICByZXR1cm4gMDsKK30KKwogSlNWYWx1
ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKEpT
Q29udGV4dFJlZiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gZ2V0IG9y
aWdpbnMgdGhhdCBjb250YWluIGFwcGxpY2F0aW9uIGNhY2hlcy4KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlz
aW9uIDg2MTgwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDEzIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3IKICAgICBbW1dlYlN0b3JhZ2VNYW5hZ2VyIHNo
YXJlZFdlYlN0b3JhZ2VNYW5hZ2VyXSBzeW5jTG9jYWxTdG9yYWdlXTsKIH0KIAorbG9uZyBsb25n
IExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oSlNT
dHJpbmdSZWYgdXJsKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YoQWRvcHRD
RiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CisgICAg
V2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGlu
aXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXVybENGLmdldCgpXV07
CisgICAgcmV0dXJuIFtbV2ViU3RvcmFnZU1hbmFnZXIgc2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJd
IGRpc2tVc2FnZUZvck9yaWdpbjpvcmlnaW5dOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKHVuc2lnbmVkIG51bWJlcikK
IHsKICAgICBbc3RvcmFnZURlbGVnYXRlIGxvZ05vdGlmaWNhdGlvbnM6bnVtYmVyIGNvbnRyb2xs
ZXI6dGhpc107CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODYxODApCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY0
LDYgKzU2NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBhcHBsaWNhdGlv
biBjYWNoZXMgZm9yIGFuIG9yaWdpbi4KIH0KIAorbG9uZyBsb25nIExheW91dFRlc3RDb250cm9s
bGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZ2V0dGlu
ZyBkaXNrIHVzYWdlIGluIGJ5dGVzIGZvciBhbiBvcmlnaW4uCisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7CiAgICAgaWYgKCFtX3RvcExvYWRpbmdGcmFt
ZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgJKHJldmlzaW9uIDg2MTgwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDcgQEAg
cHVibGljIHNsb3RzOgogICAgIHZvaWQgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoKTsKICAgICB2
b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZSgpOwogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdl
Rm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOworICAgIGxvbmcgbG9u
ZyBsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcik7CiAgICAgdm9pZCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKHVu
c2lnbmVkIG51bWJlcik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKCk7CiAKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAkocmV2aXNpb24gODYxODApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM3LDYgKzE1MzcsMTIg
QEAgSlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3JpZ2lucwogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorbG9uZyBsb25nIExheW91dFRlc3RD
b250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgb3Jp
Z2luSWRlbnRpZmllcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZ2V0
dGluZyBsb2NhbCBzdG9yYWdlIGRpc2sgdXNhZ2UgZm9yIGFuIG9yaWdpbi4KKyAgICByZXR1cm4g
MDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9y
T3JpZ2luKEpTU3RyaW5nUmVmIFVSTCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gODYxODApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNS0xMCAgQW50b24gRCdBdXJpYSAgPGFkYXVy
aWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN0b3JhZ2VUcmFja2VyIHNob3VsZCByZXBvcnQgYWN0dWFsIGxvY2FsIHN0b3JhZ2Ug
dXNhZ2Ugb24gZGlzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA1NTgKKworICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uv
c3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJh
Y2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNr
ZXItNy11c2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2Uu
aHRtbDogQWRkZWQuCisKIDIwMTEtMDUtMTAgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBMYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0
b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9y
YWdlLXRyYWNrZXItNi1jcmVhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9y
YWdlLXRyYWNrZXItNi1jcmVhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDExIEBACitPcmlnaW4gaWRlbnRpZmllcjogJ2ZpbGVfXzAnCitTdG9yYWdlVHJhY2tlciB0ZXN0
IC0gd3JpdGUgbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBvcmlnaW4uIFNob3VsZCBiZSBjYWxsZWQg
YWZ0ZXIgc3RvcmFnZS10cmFja2VyLTUtZGVsZXRlLW9uZS5odG1sLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworVGhpcyB0ZXN0IHNob3VsZCBoYXZlIG5vIHZpc2libGUgb3V0cHV0
IG9uIHN1Y2Nlc3MuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0
cmFja2VyL3N0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9z
dG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVu
Y3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJT
dG9yYWdlVHJhY2tlciB0ZXN0IC0gd3JpdGUgbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBvcmlnaW4u
IFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgc3RvcmFnZS10cmFja2VyLTUtZGVsZXRlLW9uZS5odG1s
LiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgibG9jYWxTdG9y
YWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
ZGVidWcoIlRoaXMgdGVzdCBzaG91bGQgaGF2ZSBubyB2aXNpYmxlIG91dHB1dCBvbiBzdWNjZXNz
LiIpOworCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLm9yaWdpbnNXaXRoTG9jYWxTdG9y
YWdlKCkubGVuZ3RoID4gMCkgeworICAgICAgICAvLyBBbiBvcmlnaW4gYWxyZWFkeSBleGlzdHMg
c28gd2UgY2FuIGV4aXQuCisgICAgICAgIHRlc3RGYWlsZWQoIkFuIG9yaWdpbiBhbHJlYWR5IGV4
aXN0ZWQgd2l0aCBsb2NhbCBzdG9yYWdlLiIpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc3luY0xvY2FsU3RvcmFnZSgpOworICAgICAgICBsb2NhbFN0b3JhZ2Uuc29tZU90aGVyRGF0
YSA9ICd3cml0ZW1lTW9yZSc7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm9ic2VydmVT
dG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMoMSk7CisgICAgfQorfQorCit0ZXN0KCk7CQorCit3
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2lzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTct
dXNhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNh
Z2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21z
dG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNy11c2Fn
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgQVBJIHRv
IHZpZXcgb3JpZ2lucyB0aGF0IGhhdmUgbG9jYWwgc3RvcmFnZSBhbmQgdG8gZGVsZXRlIGxvY2Fs
IHN0b3JhZ2UgYnkgb3JpZ2luLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBsYXlvdXRUZXN0Q29udHJvbGxlci5vcmlnaW5zV2l0aExvY2FsU3RvcmFnZSgpLnRvU3RyaW5n
KCkgaXMgImZpbGVfXzAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmxvY2FsU3RvcmFnZURp
c2tVc2FnZUZvck9yaWdpbignZmlsZTovLycpID4gNjEwMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRy
YWNrZXItNy11c2FnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNh
Z2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9s
b2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IEFQSSB0byB2aWV3IG9yaWdpbnMgdGhhdCBo
YXZlIGxvY2FsIHN0b3JhZ2UgYW5kIHRvIGRlbGV0ZSBsb2NhbCBzdG9yYWdlIGJ5IG9yaWdpbi4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoImxvY2FsU3RvcmFnZSBET0VTIE5PVCBleGlzdCIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLm9yaWdp
bnNXaXRoTG9jYWxTdG9yYWdlKCkubGVuZ3RoID4gMCkgeworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKCku
dG9TdHJpbmcoKSIsICJmaWxlX18wIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgibGF5b3V0VGVz
dENvbnRyb2xsZXIubG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKCdmaWxlOi8vJykgPiA2
MTAwIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUmFuIHdpdGggbm8gb3Jp
Z2lucyB3aXRoIGxvY2FsIHN0b3JhZ2UuIik7CisgICAgfQorCit9CisKK3Rlc3QoKTsJCisKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93042</attachid>
            <date>2011-05-10 16:28:09 -0700</date>
            <delta_ts>2011-05-10 18:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60558.patch</filename>
            <type>text/plain</type>
            <size>24010</size>
            <attacher name="Anton D&apos;Auria">adauria</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTAgIEFudG9uIEQn
QXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlVHJhY2tlciBzaG91bGQgcmVwb3J0IGFjdHVhbCBs
b2NhbCBzdG9yYWdlIHVzYWdlIG9uIGRpc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwNTU4CisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3Rv
cmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAorCisgICAgICAgIFVzZSBT
UUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplIHRvIGdldCBhY3R1YWwgdXNhZ2Ug
YnkKKyAgICAgICAgYW4gb3JpZ2luJ3MgbG9jYWwgc3RvcmFnZSBkYi4gRmFjdG9yZWQgb3V0IGNv
ZGUgdGhhdCByZXRyaWV2ZXMKKyAgICAgICAgcGF0aCBvZiBsb2NhbCBzdG9yYWdlIGRiLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IFNvcnRlZCBhbHBoYWJldGljYWxseSBTdG9yYWdlVHJh
Y2tlcidzIG1hbmdsZWQKKyAgICAgICAgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6
c3luY0RlbGV0ZU9yaWdpbik6IFVzZXMgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHRvIGdldCBw
YXRoIG9mIG9yaWdpbidzIGRiCisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGF0
YWJhc2VQYXRoRm9yT3JpZ2luKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgdGhhdCBn
ZXRzIHRoZSBwYXRoIG9mIGFuIG9yaWdpbidzIGxvY2FsIHN0b3JhZ2UgZGIgZnJvbSBTdG9yYWdl
VHJhY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JP
cmlnaW4pOiBOZXcgQVBJLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaDoKKwog
MjAxMS0wNS0xMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDg2MTkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTE0MDIsMTMgKzE0MDIsMTQgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0
ZXMKIF93a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZwogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNr
ZXJFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVB
bGxPcmlnaW5zRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tl
ckV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklO
UzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRD
bGllbnRFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCitfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyMTJkZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyMTZkZWxldGVBbGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxNnN5bmNMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pO
N1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFz
ZUV2CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAJKHJldmlzaW9uIDg2MTkwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MywyMCArNDUzLDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogICAgIGlmICghbV9kYXRhYmFzZS5pc09w
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIEdldCBvcmlnaW4ncyBkYiBmaWxl
IHBhdGgsIGRlbGV0ZSBlbnRyeSBpbiB0cmFja2VyJ3MgZGIsIHRoZW4gZGVsZXRlIGRiIGZpbGUu
Ci0gICAgU1FMaXRlU3RhdGVtZW50IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBw
YXRoIEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOwotICAgIGlmIChwYXRoU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBwcmVwYXJlIHNlbGVjdGlvbiBvZiBwYXRoIGZvciBvcmlnaW4gJyVzJyIsIG9yaWdpbklkZW50
aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHBhdGhT
dGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luSWRlbnRpZmllcik7Ci0gICAgaW50IHJlc3VsdCA9
IHBhdGhTdGF0ZW1lbnQuc3RlcCgpOwotICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0Um93KSB7
Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZpbmQgb3JpZ2luICclcycgaW4gT3JpZ2lu
cyB0YWJsZSIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIFN0cmluZyBwYXRoID0gcGF0aFN0YXRlbWVudC5nZXRDb2x1
bW5UZXh0KDApOworICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdp
bklkZW50aWZpZXIpOwogCiAgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgCkBAIC01
NTgsNyArNTQ1LDQyIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldElzQWN0aXZlKGJvb2wgZmwK
IHsKICAgICBtX2lzQWN0aXZlID0gZmxhZzsKIH0KKyAgICAKK1N0cmluZyBTdG9yYWdlVHJhY2tl
cjo6ZGF0YWJhc2VQYXRoRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVCht
X2lzQWN0aXZlKTsKKyAgICAKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcGF0aFN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiU0VMRUNUIHBhdGggRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7
CisgICAgaWYgKHBhdGhTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgc2VsZWN0aW9uIG9mIHBhdGggZm9yIG9y
aWdpbiAnJXMnIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgcGF0aFN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmln
aW5JZGVudGlmaWVyKTsKKyAgICBpbnQgcmVzdWx0ID0gcGF0aFN0YXRlbWVudC5zdGVwKCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAorICAgIHJldHVybiBwYXRoU3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7Cit9CisgICAgCits
b25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQoreworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBNdXRleExvY2tlciBsb2NrKG1fZGF0YWJhc2VHdWFyZCk7CisKKyAgICBTdHJpbmcgcGF0
aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCk7Cit9CisgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCShyZXZpc2lvbiA4NjE5
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTcsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpOwogICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiA+JiByZXN1bHQpOwotCisgICAgbG9uZyBsb25nIGRpc2tVc2FnZUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOworICAgIAogICAgIHZvaWQgY2FuY2VsRGVsZXRpbmdPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIHNldENsaWVudChTdG9y
YWdlVHJhY2tlckNsaWVudCopOwpAQCAtODIsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGRlbGV0
ZVRyYWNrZXJGaWxlcygpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGhGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRGVsZXRlT3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTI1ICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJp
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEFwcGxpY2F0aW9uQ2FjaGUgQVBJIHRvIGdldCBkaXNrIHVzYWdlIHBlciBvcmln
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTI3
CisKKyAgICAgICAgQWRkZWQgTWFjIHBvcnQgQVBJLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFw
cGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICgrW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1Vz
YWdlRm9yT3JpZ2luOl0pOgorCiAyMDExLTA1LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQkocmV2aXNpb24gODYx
OTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMSBAQCAtICh2b2lkKWRlbGV0ZU9yaWdpbjooV2Vi
U2VjdXJpdHlPcmlnaW4gCiAgICAgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmln
aW4oW29yaWdpbiBfY29yZV0pOwogfQogCistICh1bnNpZ25lZCBsb25nIGxvbmcpZGlza1VzYWdl
Rm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIHJldHVybiBTdG9y
YWdlVHJhY2tlcjo6dHJhY2tlcigpLmRpc2tVc2FnZUZvck9yaWdpbihbb3JpZ2luIF9jb3JlXSk7
Cit9CisKIC0gKHZvaWQpc3luY0xvY2FsU3RvcmFnZQogewogICAgIFN0b3JhZ2VUcmFja2VyOjp0
cmFja2VyKCkuc3luY0xvY2FsU3RvcmFnZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oCShyZXZpc2lvbiA4NjE5
MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXJQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQGludGVyZmFjZSBXZWJTdG9yYWdl
TWFuYWdlciA6IE5TT2JqZWN0CiAKIC0gKHZvaWQpZGVsZXRlQWxsT3JpZ2luczsKIC0gKHZvaWQp
ZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbjsKKy0gKHVuc2lnbmVkIGxv
bmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwog
CiAtICh2b2lkKXN5bmNMb2NhbFN0b3JhZ2U7CiAtICh2b2lkKXN5bmNGaWxlU3lzdGVtQW5kVHJh
Y2tlckRhdGFiYXNlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gODYxOTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wNS0xMCAgQW50b24gRCdBdXJpYSAgPGFkYXVy
aWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN0b3JhZ2VUcmFja2VyIHNob3VsZCByZXBvcnQgYWN0dWFsIGxvY2FsIHN0b3JhZ2Ug
dXNhZ2Ugb24gZGlzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA1NTgKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbkNhbGxiYWNr
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4pOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VG
b3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VE
aXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmxvY2Fs
U3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKToKKwogMjAxMS0wNS0xMCAgRGF2aWQg
TGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmlj
aGlybyBIYW1hamkuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4NjE5MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxOSBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBsb2Nh
bFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW5DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBv
cmlnaW5VUkwoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGNvbnRyb2xsZXItPmxvY2FsU3RvcmFnZURpc2tVc2Fn
ZUZvck9yaWdpbihvcmlnaW5VUkwuZ2V0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgb3Jp
Z2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBA
IC0yMzcxLDYgKzIzODQsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6CiAgICAgICAgIHsgInN5bmNMb2NhbFN0b3JhZ2UiLCBzeW5jTG9jYWxTdG9yYWdlQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwgICAgICAgICAgICAgICAgCiAgICAgICAgIHsgIm9ic2VydmVTdG9yYWdlVHJh
Y2tlck5vdGlmaWNhdGlvbnMiLCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwgICAgICAgIAogICAgICAgICB7ICJkZWxldGVMb2NhbFN0b3JhZ2VGb3JP
cmlnaW4iLCBkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4iLCBsb2NhbFN0b3JhZ2VEaXNr
VXNhZ2VGb3JPcmlnaW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvcmlnaW5zV2l0aExv
Y2FsU3RvcmFnZSIsIG9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZSIsIHNldFNob3VsZFBhaW50QnJva2Vu
SW1hZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzaGFkb3dQc2V1ZG9JZCIsIHNoYWRv
d1BzZXVkb0lkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODYxOTApCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiAr
MzMwLDcgQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2Uo
SlNDb250ZXh0UmVmKTsKICAgICB2b2lkIGRlbGV0ZUFsbExvY2FsU3RvcmFnZSgpOwogICAgIHZv
aWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbklkZW50aWZp
ZXIpOworICAgIGxvbmcgbG9uZyBsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJp
bmdSZWYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJO
b3RpZmljYXRpb25zKHVuc2lnbmVkIG51bWJlcik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdl
KCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDg2MTkwKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDUsNiArMjA1LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbAogICAgIGJpbmRNZXRob2QoInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7
CiAgICAgYmluZE1ldGhvZCgic3RvcmVXZWJTY3JpcHRPYmplY3QiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0b3JlV2ViU2NyaXB0T2JqZWN0KTsKICAgICBiaW5kTWV0aG9kKCJkZWxldGVBbGxM
b2NhbFN0b3JhZ2UiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUFsbExvY2FsU3RvcmFn
ZSk7CisgICAgYmluZE1ldGhvZCgibG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4pOwogICAg
IGJpbmRNZXRob2QoIm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZSk7CiAgICAgYmluZE1ldGhvZCgiZGVsZXRlTG9j
YWxTdG9yYWdlRm9yT3JpZ2luIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkZWxldGVMb2NhbFN0
b3JhZ2VGb3JPcmlnaW4pOwogICAgIGJpbmRNZXRob2QoIm9ic2VydmVTdG9yYWdlVHJhY2tlck5v
dGlmaWNhdGlvbnMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om9ic2VydmVTdG9yYWdlVHJhY2tl
ck5vdGlmaWNhdGlvbnMpOwpAQCAtMTc1MCw2ICsxNzUxLDExIEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmRlbGV0ZUFsbExvY2EKICAgICAvLyBOb3QgSW1wbGVtZW50ZWQKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KikKK3sKKyAgICAvLyBO
b3QgSW1wbGVtZW50ZWQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3JpZ2luc1dp
dGhMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqKQogewogICAgIC8vIE5vdCBJbXBsZW1lbnRlZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4
NjE5MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWxldGVBbGxMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lu
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGxvY2FsU3Rv
cmFnZURpc2tVc2FnZUZvck9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAgICAgdm9pZCBvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2Uo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJl
dmlzaW9uIDg2MTkwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYwLDYgKzY2MCwxMiBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFwcGxpY2F0CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0byBzdXBwb3J0IGRlbGV0aW5nIGFsbCBhcHBsaWNhdGlvbiBjYWNoZXMgZm9yIGFuIG9yaWdp
bi4KIH0KIAorbG9uZyBsb25nIExheW91dFRlc3RDb250cm9sbGVyOjpsb2NhbFN0b3JhZ2VEaXNr
VXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZ2V0dGluZyBkaXNrIHVzYWdlIGluIGJ5dGVzIGZv
ciBhbiBvcmlnaW4uCisgICAgcmV0dXJuIDA7Cit9CisKIEpTVmFsdWVSZWYgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShKU0NvbnRleHRSZWYgY29udGV4
dCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIGdldCBvcmlnaW5zIHRoYXQgY29udGFp
biBhcHBsaWNhdGlvbiBjYWNoZXMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA4NjE5MCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCwxMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
eW5jTG9jYWxTdG9yCiAgICAgW1tXZWJTdG9yYWdlTWFuYWdlciBzaGFyZWRXZWJTdG9yYWdlTWFu
YWdlcl0gc3luY0xvY2FsU3RvcmFnZV07CiB9CiAKK2xvbmcgbG9uZyBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIHVybCkKK3sK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOworICAgIFdlYlNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOworICAgIHJldHVybiBbW1dl
YlN0b3JhZ2VNYW5hZ2VyIHNoYXJlZFdlYlN0b3JhZ2VNYW5hZ2VyXSBkaXNrVXNhZ2VGb3JPcmln
aW46b3JpZ2luXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JzZXJ2ZVN0b3Jh
Z2VUcmFja2VyTm90aWZpY2F0aW9ucyh1bnNpZ25lZCBudW1iZXIpCiB7CiAgICAgW3N0b3JhZ2VE
ZWxlZ2F0ZSBsb2dOb3RpZmljYXRpb25zOm51bWJlciBjb250cm9sbGVyOnRoaXNdOwpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAJKHJldmlzaW9uIDg2MTkwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NCw2ICs1NjQsMTIgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBsaWNhdAogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdG8gc3VwcG9ydCBkZWxldGluZyBhbGwgYXBwbGljYXRpb24gY2FjaGVzIGZvciBhbiBv
cmlnaW4uCiB9CiAKK2xvbmcgbG9uZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bG9jYWxTdG9yYWdl
RGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGdldHRpbmcgZGlzayB1c2FnZSBpbiBi
eXRlcyBmb3IgYW4gb3JpZ2luLgorICAgIHJldHVybiAwOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKQogewogICAgIGlmICghbV90b3BMb2FkaW5nRnJhbWUpCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lv
biA4NjE5MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw3IEBAIHB1YmxpYyBzbG90czoKICAg
ICB2b2lkIG9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBkZWxldGVBbGxMb2Nh
bFN0b3JhZ2UoKTsKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbihjb25zdCBR
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKKyAgICBsb25nIGxvbmcgbG9jYWxTdG9yYWdlRGlz
a1VzYWdlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwogICAgIHZv
aWQgb2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyh1bnNpZ25lZCBudW1iZXIpOwog
ICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZSgpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDg2
MTkwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNyw2ICsxNTM3LDEyIEBAIEpTVmFsdWVSZWYgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om9yaWdpbnMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKK2xvbmcgbG9uZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bG9jYWxT
dG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbklkZW50aWZpZXIpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzdXBwb3J0IGdldHRpbmcgbG9jYWwgc3RvcmFn
ZSBkaXNrIHVzYWdlIGZvciBhbiBvcmlnaW4uCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbihKU1N0cmluZ1Jl
ZiBVUkwpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2
MTkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDUtMTAgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlVHJh
Y2tlciBzaG91bGQgcmVwb3J0IGFjdHVhbCBsb2NhbCBzdG9yYWdlIHVzYWdlIG9uIGRpc2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTU4CisKKyAg
ICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0
b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFj
a2VyLTYtY3JlYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9s
b2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdl
L3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci03LXVzYWdlLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA1LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1j
cmVhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3Jl
YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3Jl
YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorT3JpZ2luIGlk
ZW50aWZpZXI6ICdmaWxlX18wJworU3RvcmFnZVRyYWNrZXIgdGVzdCAtIHdyaXRlIGxvY2FsIHN0
b3JhZ2UgZm9yIHRoaXMgb3JpZ2luLiBTaG91bGQgYmUgY2FsbGVkIGFmdGVyIHN0b3JhZ2UtdHJh
Y2tlci01LWRlbGV0ZS1vbmUuaHRtbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1RoaXMgdGVzdCBzaG91bGQgaGF2ZSBubyB2aXNpYmxlIG91dHB1dCBvbiBzdWNjZXNzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIv
c3RvcmFnZS10cmFja2VyLTYtY3JlYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRy
YWNrZXItNi1jcmVhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYt
Y3JlYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiU3RvcmFnZVRyYWNrZXIgdGVz
dCAtIHdyaXRlIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgb3JpZ2luLiBTaG91bGQgYmUgY2FsbGVk
IGFmdGVyIHN0b3JhZ2UtdHJhY2tlci01LWRlbGV0ZS1vbmUuaHRtbC4iKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubG9jYWxT
dG9yYWdlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImxvY2FsU3RvcmFnZSBET0VTIE5PVCBleGlz
dCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRlYnVnKCJUaGlzIHRlc3Qg
c2hvdWxkIGhhdmUgbm8gdmlzaWJsZSBvdXRwdXQgb24gc3VjY2Vzcy4iKTsKKworICAgIGlmIChs
YXlvdXRUZXN0Q29udHJvbGxlci5vcmlnaW5zV2l0aExvY2FsU3RvcmFnZSgpLmxlbmd0aCA+IDAp
IHsKKyAgICAgICAgLy8gQW4gb3JpZ2luIGFscmVhZHkgZXhpc3RzIHNvIHdlIGNhbiBleGl0Lgor
ICAgICAgICB0ZXN0RmFpbGVkKCJBbiBvcmlnaW4gYWxyZWFkeSBleGlzdGVkIHdpdGggbG9jYWwg
c3RvcmFnZS4iKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnN5bmNMb2NhbFN0b3Jh
Z2UoKTsKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNvbWVPdGhlckRhdGEgPSAnd3JpdGVtZU1vcmUn
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3Rp
ZmljYXRpb25zKDEpOworICAgIH0KK30KKwordGVzdCgpOwkKKword2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Citpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxz
dG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci03LXVzYWdlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9y
YWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci03LXVzYWdlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0IEFQSSB0aGF0IHJlcG9ydHMgbG9jYWwg
c3RvcmFnZSBkaXNrIHVzYWdlIGJ5IG9yaWdpbi4gTk9URTogdGhpcyB0ZXN0IERFUEVORFMgb24g
c3RvcmFnZS10cmFja2VyLTYtY3JlYXRlLmh0bWwgdG8gY3JlYXRlIGxvY2FsIHN0b3JhZ2UgZm9y
IHRoZSAnZmlsZTovLycgb3JpZ2luLiBJZiB0aGlzIHRlc3QgcnVucyBpbiBhIHNlcGFyYXRlIERS
VCBpbnN0YW5jZSBmcm9tIHN0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS5odG1sLCBpdCBtYXkgRkFJ
TCBpZiB0aGVyZSBpcyBubyBsb2NhbCBzdG9yYWdlIQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5vcmlnaW5zV2l0aExvY2FsU3RvcmFn
ZSgpLnRvU3RyaW5nKCkgaXMgImZpbGVfXzAiCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmxv
Y2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbignZmlsZTovLycpID4gNjEwMCBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tl
ci9zdG9yYWdlLXRyYWNrZXItNy11c2FnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10
cmFja2VyLTctdXNhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTct
dXNhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IEFQSSB0aGF0IHJlcG9y
dHMgbG9jYWwgc3RvcmFnZSBkaXNrIHVzYWdlIGJ5IG9yaWdpbi4gTk9URTogdGhpcyB0ZXN0IERF
UEVORFMgb24gc3RvcmFnZS10cmFja2VyLTYtY3JlYXRlLmh0bWwgdG8gY3JlYXRlIGxvY2FsIHN0
b3JhZ2UgZm9yIHRoZSAnZmlsZTovLycgb3JpZ2luLiBJZiB0aGlzIHRlc3QgcnVucyBpbiBhIHNl
cGFyYXRlIERSVCBpbnN0YW5jZSBmcm9tIHN0b3JhZ2UtdHJhY2tlci02LWNyZWF0ZS5odG1sLCBp
dCBtYXkgRkFJTCBpZiB0aGVyZSBpcyBubyBsb2NhbCBzdG9yYWdlISIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgibG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIub3JpZ2luc1dpdGhMb2NhbFN0b3Jh
Z2UoKS5sZW5ndGggPiAwKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0
VGVzdENvbnRyb2xsZXIub3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoKS50b1N0cmluZygpIiwgImZp
bGVfXzAiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5sb2Nh
bFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oJ2ZpbGU6Ly8nKSA+IDYxMDAiKTsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJSYW4gd2l0aCBubyBvcmlnaW5zIHdpdGggbG9jYWwg
c3RvcmFnZS4iKTsKKyAgICB9CisKK30KKwordGVzdCgpOwkKKword2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Citpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>