<?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>112066</bug_id>
          
          <creation_ts>2013-03-11 14:18:38 -0700</creation_ts>
          <short_desc>Inspector: IndexedDB clear button and menu item</short_desc>
          <delta_ts>2013-03-19 13:15:07 -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>New Bugs</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852720</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-11 14:18:38 -0700</bug_when>
    <thetext>Inspector: IndexedDB clear button and menu item</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852721</commentid>
    <comment_count>1</comment_count>
      <attachid>192557</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-11 14:18:45 -0700</bug_when>
    <thetext>Created attachment 192557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852725</commentid>
    <comment_count>2</comment_count>
      <attachid>192560</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-11 14:26:14 -0700</bug_when>
    <thetext>Created attachment 192560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852726</commentid>
    <comment_count>3</comment_count>
      <attachid>192560</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-11 14:28:54 -0700</bug_when>
    <thetext>Comment on attachment 192560
Patch

I still need to write a test for this, but I wanted to run this by vsevik. A few small open questions:
1) I just picked an icon, is there any kind of design review I need to go through for UI changes like this?
2) There is some view state management that doesn&apos;t really exist in the current inspector, so much of the code
   between the context menu and the IDBDataView can&apos;t be shared.
3) Would there be any interest in adding a progress icon to the IDBDataView statusbar? While debugging I found 
   it confusing to know when the inspector itself was busy with IDB or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852753</commentid>
    <comment_count>4</comment_count>
      <attachid>192560</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-11 14:49:02 -0700</bug_when>
    <thetext>Comment on attachment 192560
Patch

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

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:762
&gt; +        if (ec) {

This should only happen if the arguments or state are invalid, e.g. &quot;readonly&quot; transaction, objectstore has been previously deleted within this &quot;versionchange&quot;, etc. None of those should apply here - ASSERT instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852881</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-11 16:54:07 -0700</bug_when>
    <thetext>yeah, there&apos;s a lot of that in the inspector, I was reluctantly following convention, hoping to do some cleanup later... but I&apos;ll fix that instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853744</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-12 13:42:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 192560 [details])
&gt; I still need to write a test for this, but I wanted to run this by vsevik. A few small open questions:
&gt; 1) I just picked an icon, is there any kind of design review I need to go through for UI changes like this?
Not really, you could just attach a screenshot to the bug and inspector reviewers could approve it.
&gt; 2) There is some view state management that doesn&apos;t really exist in the current inspector, so much of the code
&gt;    between the context menu and the IDBDataView can&apos;t be shared.
Looks like there is no a lot of code there, probably not a big deal.
&gt; 3) Would there be any interest in adding a progress icon to the IDBDataView statusbar? While debugging I found 
&gt;    it confusing to know when the inspector itself was busy with IDB or not.
You could have a look on Source/WebCore/inspector/front-end/ProgressIndicator.js and its usages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857689</commentid>
    <comment_count>7</comment_count>
      <attachid>193682</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-18 16:20:01 -0700</bug_when>
    <thetext>Created attachment 193682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857937</commentid>
    <comment_count>8</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-18 22:27:05 -0700</bug_when>
    <thetext>vsevik@ - this is ready for review now.. I&apos;ll do the progress meter another time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857982</commentid>
    <comment_count>9</comment_count>
      <attachid>193682</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-18 23:46:14 -0700</bug_when>
    <thetext>Comment on attachment 193682
Patch

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

Please rebaseline and fix nits before landing.

&gt; Source/WebCore/ChangeLog:27
&gt; +2013-03-11  Alec Flett  &lt;alecflett@chromium.org&gt;

Please rebaseline

&gt; Source/WebCore/inspector/Inspector.json:1416
&gt; +                    { &quot;name&quot;:  &quot;securityOrigin&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Security origin.&quot; },

extra space after &quot;name&quot;:

&gt; Source/WebCore/inspector/front-end/IndexedDBViews.js:130
&gt; +    this._clearButton = new WebInspector.StatusBarButton(WebInspector.UIString(&quot;Clear All Data&quot;), &quot;clear-storage-status-bar-item&quot;);

&quot;Clear object store&quot; and you will need to add it to Source/WebCore/English.lproj/localizedStrings.js.
Or just make it &quot;Clear&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858384</commentid>
    <comment_count>10</comment_count>
      <attachid>193846</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-19 09:58:19 -0700</bug_when>
    <thetext>Created attachment 193846
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858390</commentid>
    <comment_count>11</comment_count>
      <attachid>193846</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-19 10:02:37 -0700</bug_when>
    <thetext>Comment on attachment 193846
Patch for landing

ugh stupid changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858392</commentid>
    <comment_count>12</comment_count>
      <attachid>193847</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-19 10:04:00 -0700</bug_when>
    <thetext>Created attachment 193847
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858434</commentid>
    <comment_count>13</comment_count>
      <attachid>193847</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 10:31:38 -0700</bug_when>
    <thetext>Comment on attachment 193847
Patch for landing

Clearing flags on attachment: 193847

Committed r146218: &lt;http://trac.webkit.org/changeset/146218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858435</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 10:31:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192557</attachid>
            <date>2013-03-11 14:18:45 -0700</date>
            <delta_ts>2013-03-11 14:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112066-20130311141445.patch</filename>
            <type>text/plain</type>
            <size>14721</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KaW5kZXggMGM2ZDFkNTRhNWZiMTRiMDczYTk4NTdlNzU1NzRiZDU2MTk5NThkNC4u
ODAyMDYxYjg5ZWM0ZmIzZjQwYmM0MWFjZWM0ODlmNmZkZDUyMTY5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQwOCw2ICsxNDA4LDE4IEBACiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFzTW9yZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVz
Y3JpcHRpb24iOiAiSWYgdHJ1ZSwgdGhlcmUgYXJlIG1vcmUgZW50cmllcyB0byBmZXRjaCBpbiB0
aGUgZ2l2ZW4gcmFuZ2UuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgZGF0YSBmcm9tIG9iamVjdCBzdG9yZSBvciBpbmRleC4i
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImNsZWFyT2JqZWN0U3RvcmUiLAorICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCisgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAgInNlY3VyaXR5T3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNl
Y3VyaXR5IG9yaWdpbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJh
c2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0b3JlTmFtZSIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUgbmFtZS4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNsZWFycyBhbGwgZW50
cmllcyBmcm9tIGFuIG9iamVjdCBzdG9yZS4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggNjcwNjIwOGMxMzJjY2RmNDNkMTY2NDY1NmI3NDdmNjhkZDYxYTEz
ZC4uNmViZDMyYTVlN2U0NjZhYWViYjI1YTUzYzlkZGZlOWRjMzg5MmQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC04MSw2ICs4MSw3IEBAIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0CiB0eXBlZGVmIFdlYkNvcmU6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlcjo6UmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s7CiB0eXBlZGVmIFdl
YkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxl
cjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBXZWJD
b3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxs
YmFjazsKK3R5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4
ZWREQkNvbW1hbmRIYW5kbGVyOjpDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RT
dG9yZUNhbGxiYWNrOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMywxMCArMjE0LDEw
IEBAIHZvaWQgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeSogaWRiRmFj
dG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyCiAgICAgaWRiT3BlbkRCUmVxdWVzdC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBjYWxsYmFjaywgZmFsc2UpOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Gb3JEYXRh
YmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJREJE
YXRhYmFzZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQorc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSURCRGF0YWJhc2Uq
IGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5n
JiBtb2RlID0gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpKQogewogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24g
PSBpZGJEYXRhYmFzZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb2JqZWN0
U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCksIGVjKTsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gaWRiRGF0YWJhc2UtPnRyYW5zYWN0
aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG9iamVjdFN0b3JlTmFtZSwgbW9kZSwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGlkYlRyYW5zYWN0aW9u
OwpAQCAtNjg5LDYgKzY5MCwxMDggQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVx
dWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBkYXRh
TG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0
YWJhc2VOYW1lKTsKIH0KIAorY2xhc3MgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyIDogcHVibGlj
IEV2ZW50TGlzdGVuZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsZWFyT2JqZWN0U3Rv
cmVMaXN0ZW5lcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RT
dG9yZUxpc3RlbmVyPiBjcmVhdGUoUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+
IHJlcXVlc3RDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xl
YXJPYmplY3RTdG9yZUxpc3RlbmVyKHJlcXVlc3RDYWxsYmFjaykpOworICAgIH0KKworICAgIHZp
cnR1YWwgfkNsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcigpIHsgfQorCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIE9WRVJSSURFCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIE9WRVJS
SURFCisgICAgeworICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5h
bWVzKCkuY29tcGxldGVFdmVudCkgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsK
KyAgICB9Citwcml2YXRlOgorICAgIENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcihQYXNzUmVmUHRy
PENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAgICA6IEV2
ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCisgICAgICAg
ICwgbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQorICAgIHsKKyAgICB9CisKKyAg
ICBSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKK307
CisKKworY2xhc3MgQ2xlYXJPYmplY3RTdG9yZSA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFi
YXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0
Q2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsZWFyT2JqZWN0
U3RvcmUoY29udGV4dCwgb2JqZWN0U3RvcmVOYW1lLCByZXF1ZXN0Q2FsbGJhY2spKTsKKyAgICB9
CisKKyAgICBDbGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3Rv
cmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAgICA6IEV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UoY29udGV4dCkKKyAgICAgICAgLCBtX29iamVjdFN0b3JlTmFtZShvYmplY3RTdG9yZU5h
bWUpCisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
PiBwcnBEYXRhYmFzZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0
YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAgICAgICAgaWYgKCFyZXF1ZXN0Q2FsbGJhY2soKS0+aXNB
Y3RpdmUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBpZGJUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoY29udGV4dCgpLCBp
ZGJEYXRhYmFzZS5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uOjptb2Rl
UmVhZFdyaXRlKCkpOworICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKSB7CisgICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgdHJhbnNhY3Rp
b24iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVGb3JUcmFuc2FjdGlvbihp
ZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOworICAgICAgICBpZiAoIWlk
Yk9iamVjdFN0b3JlKSB7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IGlkYlJlcXVlc3QgPSBpZGJPYmplY3RTdG9yZS0+Y2xlYXIoY29udGV4dCgp
LCBlYyk7CisgICAgICAgIGlmIChlYykgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKFN0cmluZzo6Zm9ybWF0KCJDb3VsZCBub3QgY2xlYXIgb2JqZWN0IHN0b3Jl
ICclcyc6ICVkIiwgbV9vYmplY3RTdG9yZU5hbWUudXRmOCgpLmRhdGEoKSwgZWMpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZGJUcmFuc2FjdGlvbi0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2xlYXJPYmplY3RTdG9yZUxp
c3RlbmVyOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2spLCBmYWxzZSk7CisgICAgfQorCisgICAg
dmlydHVhbCBSZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaygpIHsgcmV0dXJuIG1fcmVx
dWVzdENhbGxiYWNrLmdldCgpOyB9Citwcml2YXRlOgorICAgIGNvbnN0IFN0cmluZyBtX29iamVj
dFN0b3JlTmFtZTsKKyAgICBSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiBtX3JlcXVl
c3RDYWxsYmFjazsKK307CisKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNsZWFyT2Jq
ZWN0U3RvcmUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2Fs
bGJhY2spCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhT
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGZyYW1lKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm47CisgICAgSURCRmFjdG9yeSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZh
Y3RvcnkoZXJyb3JTdHJpbmcsIGRvY3VtZW50KTsKKyAgICBpZiAoIWlkYkZhY3RvcnkpCisgICAg
ICAgIHJldHVybjsKKworI2lmIFVTRShWOCkKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gZG9jdW1l
bnQtPmZyYW1lKCktPnNjcmlwdCgpLT5tYWluV29ybGRDb250ZXh0KCk7CisgICAgICAgIEFTU0VS
VCghY29udGV4dC5Jc0VtcHR5KCkpOworICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4
dFNjb3BlKGNvbnRleHQpOworI2VuZGlmCisKKyAgICBSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZT4g
Y2xlYXJPYmplY3RTdG9yZSA9IENsZWFyT2JqZWN0U3RvcmU6OmNyZWF0ZShkb2N1bWVudCwgb2Jq
ZWN0U3RvcmVOYW1lLCByZXF1ZXN0Q2FsbGJhY2spOworICAgIGNsZWFyT2JqZWN0U3RvcmUtPnN0
YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUp
OworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDY5YTA5NjFhYjFiMWZhOGQ1
MjE5MGQ1N2Y0MjhmMjU1MDdkNmZjY2UuLjYyZDhlNmQ0OWE5Mjc1N2NkZWQwZjM1MDUyNTE1OGM0
ZTg0M2NmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3Vy
aXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8
UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNr
Pik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VO
YW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2s+KTsKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCmluZGV4IGQ3
Y2VkNTE2MjY4MjQ5ZDIyNDkxYzA4NDcyZWY5NGU0YzJjZmMxODcuLmJlYmZkOWNkYWIzMDczZmI3
ZDE2NDkyZjIxYjgwZTFjNzI2NmMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwpAQCAtMTY0LDYgKzE2NCwxNSBAQCBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlk
fSBkYXRhYmFzZUlkCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
T2JqZWN0U3RvcmV9IG9iamVjdFN0b3JlCisgICAgICovCisgICAgY2xlYXJPYmplY3RTdG9yZTog
ZnVuY3Rpb24oZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgSW5kZXhlZERCQWdlbnQuY2xlYXJPYmplY3RTdG9yZShkYXRhYmFzZUlkLnNlY3VyaXR5T3Jp
Z2luLCBkYXRhYmFzZUlkLm5hbWUsIG9iamVjdFN0b3JlLm5hbWUsIGNhbGxiYWNrKTsKKyAgICB9
LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CiAg
ICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMK
aW5kZXggMDdhYzkxOTU2MzBjNzZmNDYwZTQyNjA5ZjIwYTI0MGQ3YTBmYjIyNy4uNmExNTQ5NmNm
ZDExMDU1MGZiYzNmN2U0NTI3YmU0YTM5NWI1NTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCkBAIC0xMjcsNiArMTI3
LDkgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3ID0gZnVuY3Rpb24obW9kZWwsIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlLCBpbmRleCkKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uID0gbmV3IFdl
Ykluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNo
IiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5fcmVmcmVz
aEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlj
a2VkLCB0aGlzKTsKIAorICAgIHRoaXMuX2NsZWFyQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5T
dGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGVhciIpLCAiY2xlYXItc3Rv
cmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLl9jbGVhckJ1dHRvbi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2NsZWFyQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CisKICAgICB0
aGlzLl9wYWdlU2l6ZSA9IDUwOwogICAgIHRoaXMuX3NraXBDb3VudCA9IDA7CiAKQEAgLTE0OCw3
ICsxNTEsNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIga2V5UGF0aCA9IHRoaXMuX2lzSW5kZXggPyB0aGlzLl9pbmRleC5rZXlQYXRoIDogdGhp
cy5fb2JqZWN0U3RvcmUua2V5UGF0aDsKICAgICAgICAgY29sdW1uc1sia2V5Il0gPSB7fTsKICAg
ICAgICAgY29sdW1uc1sia2V5Il0udGl0bGVET01GcmFnbWVudCA9IHRoaXMuX2tleUNvbHVtbkhl
YWRlckZyYWdtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5IiksIGtleVBhdGgpOwotICAg
ICAgICAKKwogICAgICAgICBpZiAodGhpcy5faXNJbmRleCkgewogICAgICAgICAgICAgY29sdW1u
c1sicHJpbWFyeUtleSJdID0ge307CiAgICAgICAgICAgICBjb2x1bW5zWyJwcmltYXJ5S2V5Il0u
dGl0bGVET01GcmFnbWVudCA9IHRoaXMuX2tleUNvbHVtbkhlYWRlckZyYWdtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUHJpbWFyeSBrZXkiKSwgdGhpcy5fb2JqZWN0U3RvcmUua2V5UGF0aCk7
CkBAIC0xNzIsNyArMTc1LDcgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUocHJlZml4KSk7CiAgICAgICAgIGlmIChrZXlQYXRoID09PSBudWxsKQog
ICAgICAgICAgICAgcmV0dXJuIGtleUNvbHVtbkhlYWRlckZyYWdtZW50OwotICAgICAgICAKKwog
ICAgICAgICBrZXlDb2x1bW5IZWFkZXJGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiICgiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJLZXkgcGF0aDogIikpKTsK
ICAgICAgICAgaWYgKGtleVBhdGggaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgICAgICAga2V5
Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
IlsiKSk7CkBAIC0zMDYsNiArMzA5LDggQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGtleSA9IHRoaXMuX3BhcnNlS2V5KHRoaXMuX2tleUlucHV0
RWxlbWVudC52YWx1ZSk7CiAgICAgICAgIHZhciBwYWdlU2l6ZSA9IHRoaXMuX3BhZ2VTaXplOwog
ICAgICAgICB2YXIgc2tpcENvdW50ID0gdGhpcy5fc2tpcENvdW50OworICAgICAgICB0aGlzLl9y
ZWZyZXNoQnV0dG9uLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICB0aGlzLl9jbGVhckJ1dHRv
bi5zZXRFbmFibGVkKCF0aGlzLl9pc0luZGV4KTsKIAogICAgICAgICBpZiAoIWZvcmNlICYmIHRo
aXMuX2xhc3RLZXkgPT09IGtleSAmJiB0aGlzLl9sYXN0UGFnZVNpemUgPT09IHBhZ2VTaXplICYm
IHRoaXMuX2xhc3RTa2lwQ291bnQgPT09IHNraXBDb3VudCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTMyNCw2ICszMjksNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZW50cmllcywgaGFzTW9y
ZSkKICAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbi5zZXRFbmFibGVk
KHRydWUpOwogICAgICAgICAgICAgdGhpcy5jbGVhcigpOwogICAgICAgICAgICAgdGhpcy5fZW50
cmllcyA9IGVudHJpZXM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMu
bGVuZ3RoOyArK2kpIHsKQEAgLTM1NCw5ICszNjAsMTkgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlRGF0YSh0cnVlKTsKICAgICB9
LAogCisgICAgX2NsZWFyQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBmdW5jdGlvbiBjbGVhcmVkKHJlc3VsdCkgeworICAgICAgICAgICAgdGhpcy5fY2xlYXJC
dXR0b24uc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURhdGEodHJ1
ZSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24uc2V0RW5hYmxlZChmYWxz
ZSk7CisgICAgICAgIHRoaXMuX21vZGVsLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fZGF0YWJhc2VJ
ZCwgdGhpcy5fb2JqZWN0U3RvcmUsIGNsZWFyZWQuYmluZCh0aGlzKSk7CisgICAgfSwKKwogICAg
IGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3RoaXMuX3JlZnJl
c2hCdXR0b24uZWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1dHRvbi5l
bGVtZW50LCB0aGlzLl9jbGVhckJ1dHRvbi5lbGVtZW50XTsKICAgICB9LAogCiAgICAgY2xlYXI6
IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IGE3Y2Y3NGU3YTU3MzBhYjE1MjlhZWM2NmIwNjgwYTdk
NTkwYmZiZjUuLmQ4N2Q0ZDk2YzA5ZDgwM2Y4MDNiZTU2ZDAxMDYwZTcwNmM0NTczMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcwpAQCAtMTczNiw2ICsxNzM2LDI3IEBAIFdlYkluc3BlY3Rvci5JREJPYmplY3RTdG9yZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsg
dGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQu
bmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWU7CiAgICAgfSwKIAorICAgIG9uYXR0
YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VU
cmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5k
bGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAgICBfaGFu
ZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
Y29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiks
IHRoaXMuX2NsZWFyT2JqZWN0U3RvcmUuYmluZCh0aGlzKSk7CisgICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKKyAgICB9LAorCisgICAgX2NsZWFyT2JqZWN0U3RvcmU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkgeworICAgICAgICAgICAgdGhp
cy51cGRhdGUodGhpcy5fb2JqZWN0U3RvcmUpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX21v
ZGVsLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fZGF0YWJhc2VJZCwgdGhpcy5fb2JqZWN0U3RvcmUs
IGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKICAgIC8qKgogICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLk9iamVjdFN0b3JlfSBvYmplY3RTdG9yZQogICAg
ICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCmluZGV4IDBjZjlkMDkyYjM1YzBiNzk0MDNkNmIwZTg4NWM5YmE2MmYwNmVjOGIuLjg1MTlh
MDlmNjBlNWE2MDNjY2FmN2M4ZWFiZjFlNWQ2MjJjNjkyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTIyNDMsNiArMjI0Mywx
MSBAQCBib2R5LmluYWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMgewog
ICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTEyOHB4IDA7CiB9CiAKKy8vIFhYWCB0aGlzIGlz
IHRoZSBkby1ub3QtZW50ZXIgc2lnbj8KKy5jbGVhci1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSAu
Z2x5cGggeworICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTY0cHggMDsKK30KKwogLnJlZnJl
c2gtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKICAgICAtd2Via2l0LW1hc2stcG9z
aXRpb246IDAgMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192560</attachid>
            <date>2013-03-11 14:26:14 -0700</date>
            <delta_ts>2013-03-18 16:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112066-20130311142214.patch</filename>
            <type>text/plain</type>
            <size>16520</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VjOTY3ZmVkMzRiNDVi
ZDBkNWRlODFjYWQ4ZTA4MGZjZGU0YzJkZi4uYWQxMzgxZDQ2YTdlOWM2OWQ3MWY5NWNkNzM2YmQ5
NzdhM2VmMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEzLTAzLTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbnNwZWN0b3I6IElu
ZGV4ZWREQiBjbGVhciBidXR0b24gYW5kIG1lbnUgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIGJ1dHRvbiB0aGF0IGNhbiBjbGVhciB0
aGUgY29udGVudHMgb2YgYW4gb2JqZWN0U3RvcmUgZnJvbQorICAgICAgICB0aGUgSURCRGF0YVZp
ZXcsIGFuZCBhIGNvbnRleHQgbWVudSBmcm9tIHRoZSBSZXNvdXJjZXNQYW5lbCB0aGF0CisgICAg
ICAgIGNhbiBkbyB0aGUgc2FtZS4KKworICAgICAgICBUaGlzIGFsc28gZGlzYWJsZXMgdGhlIFJl
ZnJlc2ggYnV0dG9uIGZyb20gdGhlIElEQkRhdGFWaWV3LCBzbyB0aGVyZQorICAgICAgICBpcyBh
dCBsZWFzdCBzb21lIHZpc3VhbCBmZWVkYmFjayB0aGF0IHRoZSByZWZyZXNoIGJ1dHRvbiBpcyB3
b3JraW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOiBOZXcgQVBJIGNsZWFyT2JqZWN0U3RvcmUuCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDogSW1wbGVtZW50YXRpb24g
b2YgY2xlYXJPYmplY3RTdG9yZQorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDbGVhck9i
amVjdFN0b3JlTGlzdGVuZXIpOiBDYWxscyB0aGUgb3JpZ2luYWwgY2xvc3VyZSBhZnRlciB0aGUg
b2JqZWN0U3RvcmUgaXMgY2xlYXJlZC4KKyAgICAgICAgKENsZWFyT2JqZWN0U3RvcmUpOiBJbml0
aWF0ZXMgdGhlIGNsZWFyIG9wZXJhdGlvbiBhZnRlciB0aGUgREIgb3BlbnMuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qczogRXhwb3NlcyBjbGVhck9iamVj
dFN0b3JlIHRvIHRoZSBNb2RlbCBBUEkuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YVZp
ZXcpOiBBZGQgY2xlYXIgYnV0dG9uIGFuZCBlbmFibGUvZGlzYWJsZSBjbGVhciBhbmQgcmVmcmVz
aCBidXR0b25zIGFwcHJvcHJpYXRlbHkuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qczogQWRkIGEgbWVudSBpdGVtIGFuZCByZWZyZXNoIHRoZSBkaXNwbGF5
ZWQgZGF0YSBhZnRlciB0aGUgY2xlYXIuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzOiBBZGQgYSBzdHlsZSB0byBzaG93IHRoZSByaWdodCBidXR0b24gZm9yIGNs
ZWFyLgorCisyMDEzLTAzLTExICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4K
KwogICAgICAgICBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5k
ZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbCBBU1NFUlQgb24gV2luNyBmb2xsb3dpbmcgcjEzMzg1
NQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjE4
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAwYzZkMWQ1NGE1
ZmIxNGIwNzNhOTg1N2U3NTU3NGJkNTYxOTk1OGQ0Li44MDIwNjFiODllYzRmYjNmNDBiYzQxYWNl
YzQ4OWY2ZmRkNTIxNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC0xNDA4LDYgKzE0MDgsMTggQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJo
YXNNb3JlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0aGVy
ZSBhcmUgbW9yZSBlbnRyaWVzIHRvIGZldGNoIGluIHRoZSBnaXZlbiByYW5nZS4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyBk
YXRhIGZyb20gb2JqZWN0IHN0b3JlIG9yIGluZGV4LiIKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2xlYXJPYmplY3RTdG9yZSIsCisgICAg
ICAgICAgICAgICAgImFzeW5jIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICAic2VjdXJpdHlPcmlnaW4iLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAib2JqZWN0U3RvcmVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIk9iamVjdCBzdG9yZSBuYW1lLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGFsbCBlbnRyaWVzIGZyb20gYW4gb2JqZWN0IHN0b3Jl
LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA2NzA2MjA4
YzEzMmNjZGY0M2QxNjY0NjU2Yjc0N2Y2OGRkNjFhMTNkLi42ZWJkMzJhNWU3ZTQ2NmFhZWJiMjVh
NTNjOWRkZmU5ZGMzODkyZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRs
ZXI6OlJlcXVlc3REYXQKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1
ZXN0RGF0YWJhc2VDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJl
cXVlc3REYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwordHlwZWRlZiBXZWJDb3JlOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OkNsZWFy
T2JqZWN0U3RvcmVDYWxsYmFjayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjEzLDEwICsyMTQsMTAgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERh
dGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2Vj
dXIKICAgICBpZGJPcGVuREJSZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5z
dWNjZXNzRXZlbnQsIGNhbGxiYWNrLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSwgY29u
c3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRPbmx5KCkpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbiA9IGlkYkRhdGFiYXNlLT50cmFuc2FjdGlv
bihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9u
Ojptb2RlUmVhZE9ubHkoKSwgZWMpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJh
bnNhY3Rpb24gPSBpZGJEYXRhYmFzZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgb2JqZWN0U3RvcmVOYW1lLCBtb2RlLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gaWRiVHJhbnNhY3Rpb247CkBAIC02ODksNiArNjkwLDEwOCBAQCB2
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgIGRhdGFMb2FkZXItPnN0YXJ0KGlkYkZhY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCitjbGFzcyBD
bGVhck9iamVjdFN0b3JlTGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKTsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlTGlzdGVuZXI+IGNyZWF0ZShQYXNz
UmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGVhck9iamVjdFN0b3JlTGlzdGVuZXIocmVx
dWVzdENhbGxiYWNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+Q2xlYXJPYmplY3RTdG9yZUxp
c3RlbmVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzID09ICZv
dGhlcjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmICgh
bV9yZXF1ZXN0Q2FsbGJhY2stPmlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50KSB7Cisg
ICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZl
bnQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
cmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH0KK3ByaXZhdGU6CisgICAgQ2xl
YXJPYmplY3RTdG9yZUxpc3RlbmVyKFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNr
PiByZXF1ZXN0Q2FsbGJhY2spCisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVy
OjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1
ZXN0Q2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDbGVhck9iamVjdFN0b3Jl
Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOworfTsKKworCitjbGFzcyBDbGVhck9iamVjdFN0
b3JlIDogcHVibGljIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xlYXJPYmplY3RTdG9yZShjb250ZXh0LCBvYmplY3RTdG9y
ZU5hbWUsIHJlcXVlc3RDYWxsYmFjaykpOworICAgIH0KKworICAgIENsZWFyT2JqZWN0U3RvcmUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2spCisgICAgICAgIDogRXhlY3V0YWJsZVdpdGhEYXRhYmFzZShjb250ZXh0KQorICAgICAgICAs
IG1fb2JqZWN0U3RvcmVOYW1lKG9iamVjdFN0b3JlTmFtZSkKKyAgICAgICAgLCBtX3JlcXVlc3RD
YWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHBycERhdGFiYXNlKQorICAgIHsKKyAg
ICAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAg
ICAgICBpZiAoIXJlcXVlc3RDYWxsYmFjaygpLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gdHJh
bnNhY3Rpb25Gb3JEYXRhYmFzZShjb250ZXh0KCksIGlkYkRhdGFiYXNlLmdldCgpLCBtX29iamVj
dFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGUoKSk7CisgICAgICAgIGlm
ICghaWRiVHJhbnNhY3Rpb24pIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5k
RmFpbHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3Rv
cmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29i
amVjdFN0b3JlTmFtZSk7CisgICAgICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKKyAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qg
c3RvcmUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdCA9
IGlkYk9iamVjdFN0b3JlLT5jbGVhcihjb250ZXh0KCksIGVjKTsKKyAgICAgICAgaWYgKGVjKSB7
CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoU3RyaW5nOjpmb3Jt
YXQoIkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmUgJyVzJzogJWQiLCBtX29iamVjdFN0b3Jl
TmFtZS51dGY4KCkuZGF0YSgpLCBlYykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGlkYlRyYW5zYWN0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
b21wbGV0ZUV2ZW50LCBDbGVhck9iamVjdFN0b3JlTGlzdGVuZXI6OmNyZWF0ZShtX3JlcXVlc3RD
YWxsYmFjayksIGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFJlcXVlc3RDYWxsYmFjayog
cmVxdWVzdENhbGxiYWNrKCkgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7IH0KK3By
aXZhdGU6CisgICAgY29uc3QgU3RyaW5nIG1fb2JqZWN0U3RvcmVOYW1lOworICAgIFJlZlB0cjxD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOworfTsKKwordm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVh
ck9iamVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3sKKyAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmlu
ZywgZnJhbWUpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJREJG
YWN0b3J5KiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmluZywgZG9jdW1l
bnQpOworICAgIGlmICghaWRiRmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKFY4
KQorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPm1h
aW5Xb3JsZENvbnRleHQoKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7Cisg
ICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisjZW5kaWYK
KworICAgIFJlZlB0cjxDbGVhck9iamVjdFN0b3JlPiBjbGVhck9iamVjdFN0b3JlID0gQ2xlYXJP
YmplY3RTdG9yZTo6Y3JlYXRlKGRvY3VtZW50LCBvYmplY3RTdG9yZU5hbWUsIHJlcXVlc3RDYWxs
YmFjayk7CisgICAgY2xlYXJPYmplY3RTdG9yZS0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmgKaW5kZXggNjlhMDk2MWFiMWIxZmE4ZDUyMTkwZDU3ZjQyOGYyNTUwN2Q2ZmNjZS4u
NjJkOGU2ZDQ5YTkyNzU3Y2RlZDBmMzUwNTI1MTU4YzRlODQzY2Y3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVx
dWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0
YWJhc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4p
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291
bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdl
LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKLQorICAgIHZpcnR1YWwgdm9pZCBj
bGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fb2Jq
ZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4pOwogcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0
b3JQYWdlQWdlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmRleGVkREJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5kZXhlZERCTW9kZWwuanMKaW5kZXggZDdjZWQ1MTYyNjgyNDlkMjI0OTFjMDg0NzJl
Zjk0ZTRjMmNmYzE4Ny4uYmViZmQ5Y2RhYjMwNzNmYjdkMTY0OTJmMjFiODBlMWM3MjY2YzFhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWRE
Qk1vZGVsLmpzCkBAIC0xNjQsNiArMTY0LDE1IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWR9IGRhdGFiYXNlSWQKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5PYmplY3RTdG9yZX0gb2JqZWN0U3RvcmUK
KyAgICAgKi8KKyAgICBjbGVhck9iamVjdFN0b3JlOiBmdW5jdGlvbihkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbmRleGVkREJBZ2VudC5jbGVhck9i
amVjdFN0b3JlKGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlSWQubmFtZSwgb2Jq
ZWN0U3RvcmUubmFtZSwgY2FsbGJhY2spOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmln
aW5BZGRlZDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcwppbmRleCAwN2FjOTE5NTYzMGM3NmY0NjBl
NDI2MDlmMjBhMjQwZDdhMGZiMjI3Li42YTE1NDk2Y2ZkMTEwNTUwZmJjM2Y3ZTQ1MjdiZTRhMzk1
YjU1NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
ZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5kZXhlZERCVmlld3MuanMKQEAgLTEyNyw2ICsxMjcsOSBAQCBXZWJJbnNwZWN0b3IuSURCRGF0
YVZpZXcgPSBmdW5jdGlvbihtb2RlbCwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUsIGluZGV4KQog
ICAgIHRoaXMuX3JlZnJlc2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRv
bihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgInJlZnJlc2gtc3RvcmFnZS1zdGF0
dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwogCisgICAgdGhpcy5f
Y2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNsZWFyIiksICJjbGVhci1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwor
ICAgIHRoaXMuX2NsZWFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xl
YXJCdXR0b25DbGlja2VkLCB0aGlzKTsKKwogICAgIHRoaXMuX3BhZ2VTaXplID0gNTA7CiAgICAg
dGhpcy5fc2tpcENvdW50ID0gMDsKIApAQCAtMTQ4LDcgKzE1MSw3IEBAIFdlYkluc3BlY3Rvci5J
REJEYXRhVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBrZXlQYXRoID0gdGhpcy5faXNJ
bmRleCA/IHRoaXMuX2luZGV4LmtleVBhdGggOiB0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRoOwog
ICAgICAgICBjb2x1bW5zWyJrZXkiXSA9IHt9OwogICAgICAgICBjb2x1bW5zWyJrZXkiXS50aXRs
ZURPTUZyYWdtZW50ID0gdGhpcy5fa2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJLZXkiKSwga2V5UGF0aCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0aGlz
Ll9pc0luZGV4KSB7CiAgICAgICAgICAgICBjb2x1bW5zWyJwcmltYXJ5S2V5Il0gPSB7fTsKICAg
ICAgICAgICAgIGNvbHVtbnNbInByaW1hcnlLZXkiXS50aXRsZURPTUZyYWdtZW50ID0gdGhpcy5f
a2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmltYXJ5IGtl
eSIpLCB0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRoKTsKQEAgLTE3Miw3ICsxNzUsNyBAQCBXZWJJ
bnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBrZXlDb2x1bW5IZWFk
ZXJGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmaXgpKTsK
ICAgICAgICAgaWYgKGtleVBhdGggPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm4ga2V5Q29s
dW1uSGVhZGVyRnJhZ21lbnQ7Ci0gICAgICAgIAorCiAgICAgICAgIGtleUNvbHVtbkhlYWRlckZy
YWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgKCIgKyBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIktleSBwYXRoOiAiKSkpOwogICAgICAgICBpZiAoa2V5UGF0aCBpbnN0
YW5jZW9mIEFycmF5KSB7CiAgICAgICAgICAgICBrZXlDb2x1bW5IZWFkZXJGcmFnbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiWyIpKTsKQEAgLTMwNiw2ICszMDksOCBA
QCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIga2V5
ID0gdGhpcy5fcGFyc2VLZXkodGhpcy5fa2V5SW5wdXRFbGVtZW50LnZhbHVlKTsKICAgICAgICAg
dmFyIHBhZ2VTaXplID0gdGhpcy5fcGFnZVNpemU7CiAgICAgICAgIHZhciBza2lwQ291bnQgPSB0
aGlzLl9za2lwQ291bnQ7CisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b24uc2V0RW5hYmxlZChm
YWxzZSk7CisgICAgICAgIHRoaXMuX2NsZWFyQnV0dG9uLnNldEVuYWJsZWQoIXRoaXMuX2lzSW5k
ZXgpOwogCiAgICAgICAgIGlmICghZm9yY2UgJiYgdGhpcy5fbGFzdEtleSA9PT0ga2V5ICYmIHRo
aXMuX2xhc3RQYWdlU2l6ZSA9PT0gcGFnZVNpemUgJiYgdGhpcy5fbGFzdFNraXBDb3VudCA9PT0g
c2tpcENvdW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI0LDYgKzMyOSw3IEBAIFdlYklu
c3BlY3Rvci5JREJEYXRhVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAqLwogICAgICAgICBm
dW5jdGlvbiBjYWxsYmFjayhlbnRyaWVzLCBoYXNNb3JlKQogICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLl9yZWZyZXNoQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgICAgICAgICB0aGlz
LmNsZWFyKCk7CiAgICAgICAgICAgICB0aGlzLl9lbnRyaWVzID0gZW50cmllczsKICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewpAQCAtMzU0LDkg
KzM2MCwxOSBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl91cGRhdGVEYXRhKHRydWUpOwogICAgIH0sCiAKKyAgICBfY2xlYXJCdXR0b25DbGlj
a2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNsZWFyZWQocmVz
dWx0KSB7CisgICAgICAgICAgICB0aGlzLl9jbGVhckJ1dHRvbi5zZXRFbmFibGVkKHRydWUpOwor
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGF0YSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9jbGVhckJ1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGhpcy5fbW9kZWwu
Y2xlYXJPYmplY3RTdG9yZSh0aGlzLl9kYXRhYmFzZUlkLCB0aGlzLl9vYmplY3RTdG9yZSwgY2xl
YXJlZC5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1dHRvbi5lbGVtZW50XTsKKyAgICAg
ICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9u
LmVsZW1lbnRdOwogICAgIH0sCiAKICAgICBjbGVhcjogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
YTdjZjc0ZTdhNTczMGFiMTUyOWFlYzY2YjA2ODBhN2Q1OTBiZmJmNS4uZDg3ZDRkOTZjMDlkODAz
ZjgwM2JlNTZkMDEwNjBlNzA2YzQ1NzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xNzM2LDYgKzE3MzYsMjcg
QEAgV2ViSW5zcGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5
T3JpZ2luICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0
U3RvcmUubmFtZTsKICAgICB9LAogCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0
dGFjaC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0
aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgdGhpcy5fY2xlYXJPYmplY3RTdG9yZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOworICAgIH0sCisKKyAgICBf
Y2xlYXJPYmplY3RTdG9yZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2socmVzdWx0KSB7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZSh0aGlzLl9vYmplY3RTdG9y
ZSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fbW9kZWwuY2xlYXJPYmplY3RTdG9yZSh0aGlz
Ll9kYXRhYmFzZUlkLCB0aGlzLl9vYmplY3RTdG9yZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7Cisg
ICAgfSwKKwogICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwuT2JqZWN0U3RvcmV9IG9iamVjdFN0b3JlCiAgICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggMGNmOWQwOTJiMzVjMGI3
OTQwM2Q2YjBlODg1YzliYTYyZjA2ZWM4Yi4uODUxOWEwOWY2MGU1YTYwM2NjYWY3YzhlYWJmMWU1
ZDYyMmM2OTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcwpAQCAtMjI0Myw2ICsyMjQzLDExIEBAIGJvZHkuaW5hY3RpdmUgbGkuc2Vs
ZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyB7CiAgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9u
OiAtMTI4cHggMDsKIH0KIAorLy8gWFhYIHRoaXMgaXMgdGhlIGRvLW5vdC1lbnRlciBzaWduPwor
LmNsZWFyLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CisgICAgLXdlYmtpdC1tYXNr
LXBvc2l0aW9uOiAtNjRweCAwOworfQorCiAucmVmcmVzaC1zdG9yYWdlLXN0YXR1cy1iYXItaXRl
bSAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogMCAwOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193682</attachid>
            <date>2013-03-18 16:20:01 -0700</date>
            <delta_ts>2013-03-19 09:58:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112066-20130318161553.patch</filename>
            <type>text/plain</type>
            <size>21908</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxMmExMjYzOGQ3OGYy
ZjZiMzQ0YmU2MjZhMDhmODg5Yzk3NGRiNy4uOTk5MWFlMTBmMDUyZmZmYWIzNmI2NDhkMjJjNGZj
ZmZmODRiNTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnNwZWN0b3I6IElu
ZGV4ZWREQiBjbGVhciBidXR0b24gYW5kIG1lbnUgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIGJ1dHRvbiB0aGF0IGNhbiBjbGVhciB0
aGUgY29udGVudHMgb2YgYW4gb2JqZWN0U3RvcmUgZnJvbQorICAgICAgICB0aGUgSURCRGF0YVZp
ZXcsIGFuZCBhIGNvbnRleHQgbWVudSBmcm9tIHRoZSBSZXNvdXJjZXNQYW5lbCB0aGF0CisgICAg
ICAgIGNhbiBkbyB0aGUgc2FtZS4KKworICAgICAgICBUaGlzIGFsc28gZGlzYWJsZXMgdGhlIFJl
ZnJlc2ggYnV0dG9uIGZyb20gdGhlIElEQkRhdGFWaWV3LCBzbyB0aGVyZQorICAgICAgICBpcyBh
dCBsZWFzdCBzb21lIHZpc3VhbCBmZWVkYmFjayB0aGF0IHRoZSByZWZyZXNoIGJ1dHRvbiBpcyB3
b3JraW5nLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIv
ZGF0YWJhc2UtZGF0YS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
IE5ldyBBUEkgY2xlYXJPYmplY3RTdG9yZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBjbGVhck9iamVjdFN0b3JlCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcik6IENh
bGxzIHRoZSBvcmlnaW5hbCBjbG9zdXJlIGFmdGVyIHRoZSBvYmplY3RTdG9yZSBpcyBjbGVhcmVk
LgorICAgICAgICAoQ2xlYXJPYmplY3RTdG9yZSk6IEluaXRpYXRlcyB0aGUgY2xlYXIgb3BlcmF0
aW9uIGFmdGVyIHRoZSBEQiBvcGVucy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0lu
ZGV4ZWREQk1vZGVsLmpzOiBFeHBvc2VzIGNsZWFyT2JqZWN0U3RvcmUgdG8gdGhlIE1vZGVsIEFQ
SS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJEYXRhVmlldyk6IEFkZCBjbGVhciBidXR0b24g
YW5kIGVuYWJsZS9kaXNhYmxlIGNsZWFyIGFuZCByZWZyZXNoIGJ1dHRvbnMgYXBwcm9wcmlhdGVs
eS4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOiBBZGQg
YSBtZW51IGl0ZW0gYW5kIHJlZnJlc2ggdGhlIGRpc3BsYXllZCBkYXRhIGFmdGVyIHRoZSBjbGVh
ci4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6IEFkZCBhIHN0
eWxlIHRvIHNob3cgdGhlIHJpZ2h0IGJ1dHRvbiBmb3IgY2xlYXIuCisKKzIwMTMtMDMtMTEgIEFs
ZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluc3BlY3Rvcjog
W0Nocm9taXVtXSBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5o
dG1sIEFTU0VSVCBvbiBXaW43IGZvbGxvd2luZyByMTMzODU1CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2MTgKKworICAgICAgICBEZWFjdGl2YXRl
IHRyYW5zYWN0aW9ucyBjcmVhdGVkIGJ5IHRoZSBpbnNwZWN0b3IsIGJlZm9yZQorICAgICAgICB0
aGV5IGFyZSByZWFjdGl2YXRlZCBieSBJbmRleGVkREIuIFRoaXMgcHV0cyB0cmFuc2FjdGlvbnMK
KyAgICAgICAgaW4gYW4gaWRlbnRpY2FsIHN0YXRlIGFzIHdoZW4gdGhleSBhcmUgY3JlYXRlZCBi
eSBzY3JpcHRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IFZzZXZvbG9kIFZsYXNvdi4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBN
YWtlIHRyYW5zYWN0aW9ucyBpbmFjdGl2ZSB1cG9uIGxlYXZpbmcgdGhlIGluc3BlY3RvciBjb2Rl
LgorCiAyMDEzLTAzLTE4ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGln
aWEuY29tPgogCiAgICAgICAgIENsZWFuIHVwIFJlbmRlckZyYW1lU2V0Ojpub2RlQXRQb2ludApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDk0ZDg1MTAzYzA5Yjhm
Njc4NmMwZmJjYzRiMjE5OTliMTIxMjRkMDIuLmE2N2Q0ZDYzYTQzMzY5MjczMWZhODAwMjk2MWFk
ZDMwYzhlNGZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTE0MDgsNiArMTQwOCwxOCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhc01v
cmUiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRoZXJlIGFy
ZSBtb3JlIGVudHJpZXMgdG8gZmV0Y2ggaW4gdGhlIGdpdmVuIHJhbmdlLiIgfQogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGRhdGEg
ZnJvbSBvYmplY3Qgc3RvcmUgb3IgaW5kZXguIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhck9iamVjdFN0b3JlIiwKKyAgICAgICAg
ICAgICAgICAiYXN5bmMiOiB0cnVlLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24i
OiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJDbGVhcnMgYWxsIGVudHJpZXMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuIgog
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDU3YzY3MjFiMTJh
YTVhYjM5M2U5NzdkNjM1OWRiOGU4NjU0OWVlOGIuLmUzYjczYWFjNzlkYzQ4N2UyNTA3NDA5ZmQ4
ODNmOWNhYzQyMDVmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJP
cGVuREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5o
IgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCkBAIC04MCw2ICs4MSw3IEBAIHR5cGVkZWYgV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVy
OjpSZXF1ZXN0RGF0CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpJbmRleGVkREJDb21tYW5kSGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVz
dERhdGFiYXNlQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1
ZXN0RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKK3R5cGVkZWYgV2ViQ29yZTo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTE4OSw2ICsxOTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVmUHRy
PElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IHJlcXVlc3RSZXN1bHQtPmlkYkRhdGFiYXNlKCk7
CiAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShpZGJEYXRhYmFzZSk7
CisgICAgICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmRlYWN0aXZhdGVOZXdUcmFu
c2FjdGlvbnMoKTsKICAgICAgICAgaWRiRGF0YWJhc2UtPmNsb3NlKCk7CiAgICAgfQogCkBAIC0y
MTEsMTAgKzIxNCwxMCBAQCB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZh
Y3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cgogICAgIGlkYk9wZW5EQlJl
cXVlc3QtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgY2FsbGJh
Y2ssIGZhbHNlKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uRm9yRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgSURCRGF0YWJhc2UqIGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbkZv
ckRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUs
IGNvbnN0IFN0cmluZyYgbW9kZSA9IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlk
YlRyYW5zYWN0aW9uID0gaWRiRGF0YWJhc2UtPnRyYW5zYWN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpLCBl
Yyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbiA9IGlkYkRhdGFi
YXNlLT50cmFuc2FjdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvYmplY3RTdG9yZU5hbWUs
IG1vZGUsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBp
ZGJUcmFuc2FjdGlvbjsKQEAgLTY4Nyw2ICs2OTAsMTA5IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nCiAgICAgZGF0YUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKK2NsYXNzIENsZWFyT2JqZWN0U3RvcmVMaXN0
ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
bGVhck9iamVjdFN0b3JlTGlzdGVuZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RT
dG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcihyZXF1ZXN0Q2FsbGJhY2spKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5DbGVhck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBPVkVS
UklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQq
IGV2ZW50KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+
aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBl
KCkgIT0gZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQpIHsKKyAgICAgICAgICAgIG1fcmVxdWVz
dENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCBldmVudCB0eXBlLiIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRTdWNjZXNzKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBDbGVhck9iamVjdFN0b3JlTGlzdGVu
ZXIoUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykK
KyAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJU
eXBlKQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKKyAgICB7
CisgICAgfQorCisgICAgUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gbV9yZXF1ZXN0
Q2FsbGJhY2s7Cit9OworCisKK2NsYXNzIENsZWFyT2JqZWN0U3RvcmUgOiBwdWJsaWMgRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xlYXJP
YmplY3RTdG9yZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxs
YmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGVhck9iamVjdFN0b3JlKGNvbnRleHQsIG9iamVjdFN0b3JlTmFtZSwgcmVxdWVzdENhbGxi
YWNrKSk7CisgICAgfQorCisgICAgQ2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBFeGVj
dXRhYmxlV2l0aERhdGFiYXNlKGNvbnRleHQpCisgICAgICAgICwgbV9vYmplY3RTdG9yZU5hbWUo
b2JqZWN0U3RvcmVOYW1lKQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxs
YmFjaykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4gcHJwRGF0YWJhc2UpCisgICAgeworICAgICAgICBSZWZQdHI8SURCRGF0
YWJhc2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7CisgICAgICAgIGlmICghcmVxdWVzdENh
bGxiYWNrKCktPmlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNl
KGNvbnRleHQoKSwgaWRiRGF0YWJhc2UuZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lLCBJREJUcmFu
c2FjdGlvbjo6bW9kZVJlYWRXcml0ZSgpKTsKKyAgICAgICAgaWYgKCFpZGJUcmFuc2FjdGlvbikg
eworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
Z2V0IHRyYW5zYWN0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9y
VHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAg
ICAgICAgaWYgKCFpZGJPYmplY3RTdG9yZSkgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJh
Y2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IG9iamVjdCBzdG9yZSIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1ZXN0ID0gaWRiT2JqZWN0U3RvcmUtPmNs
ZWFyKGNvbnRleHQoKSwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgaWYgKGVj
KSB7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoU3RyaW5nOjpm
b3JtYXQoIkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmUgJyVzJzogJWQiLCBtX29iamVjdFN0
b3JlTmFtZS51dGY4KCkuZGF0YSgpLCBlYykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlkYlRyYW5zYWN0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5jb21wbGV0ZUV2ZW50LCBDbGVhck9iamVjdFN0b3JlTGlzdGVuZXI6OmNyZWF0ZShtX3JlcXVl
c3RDYWxsYmFjayksIGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFJlcXVlc3RDYWxsYmFj
ayogcmVxdWVzdENhbGxiYWNrKCkgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7IH0K
K3ByaXZhdGU6CisgICAgY29uc3QgU3RyaW5nIG1fb2JqZWN0U3RvcmVOYW1lOworICAgIFJlZlB0
cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOworfTsKKwordm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0
cmluZywgZnJhbWUpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJ
REJGYWN0b3J5KiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmluZywgZG9j
dW1lbnQpOworICAgIGlmICghaWRiRmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNF
KFY4KQorICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgICAgIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCkt
Pm1haW5Xb3JsZENvbnRleHQoKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7
CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisjZW5k
aWYKKworICAgIFJlZlB0cjxDbGVhck9iamVjdFN0b3JlPiBjbGVhck9iamVjdFN0b3JlID0gQ2xl
YXJPYmplY3RTdG9yZTo6Y3JlYXRlKGRvY3VtZW50LCBvYmplY3RTdG9yZU5hbWUsIHJlcXVlc3RD
YWxsYmFjayk7CisgICAgY2xlYXJPYmplY3RTdG9yZS0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7Cit9CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmgKaW5kZXggNjlhMDk2MWFiMWIxZmE4ZDUyMTkwZDU3ZjQyOGYyNTUwN2Q2ZmNj
ZS4uMzM2YzY2MWNmY2M0OTc4ZjIxNGRiOGY4NTQ2NmFmODhhMGNlZDg2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTYx
LDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1l
cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8
UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
RGF0YWJhc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFj
az4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lw
Q291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJh
bmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29i
amVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+KTsKIAog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCmluZGV4IGE1MjU3YTI0YmNiYzM4ZGI0OGY0NzI2Mjli
ZjMwYjEzYjEwOTZhYzQuLjI4M2M1ZGJhMGRhYThhOTM0ODk4NDgwMTVlZGQ1YTdhZTI5Zjg3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERC
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcwpAQCAtMTYzLDYgKzE2MywxNSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkfSBkYXRhYmFzZUlkCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuT2JqZWN0U3RvcmV9IG9iamVjdFN0b3Jl
CisgICAgICovCisgICAgY2xlYXJPYmplY3RTdG9yZTogZnVuY3Rpb24oZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVOYW1lLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIEluZGV4ZWREQkFnZW50LmNs
ZWFyT2JqZWN0U3RvcmUoZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VJZC5uYW1l
LCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CiAgICAgICovCiAgICAgX3NlY3VyaXR5
T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjg5LDcgKzI5OCw3IEBAIFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW5d
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHZhciBkYXRhYmFzZU1vZGVs
ID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZShkYXRhYmFzZUlkLCBk
YXRhYmFzZVdpdGhPYmplY3RTdG9yZXMudmVyc2lvbiwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVz
LmludFZlcnNpb24pOwotICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VzLnB1dChkYXRhYmFzZUlk
LCBkYXRhYmFzZU1vZGVsKTsgCisgICAgICAgICAgICB0aGlzLl9kYXRhYmFzZXMucHV0KGRhdGFi
YXNlSWQsIGRhdGFiYXNlTW9kZWwpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
YXRhYmFzZVdpdGhPYmplY3RTdG9yZXMub2JqZWN0U3RvcmVzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLm9i
amVjdFN0b3Jlc1tpXTsKICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmVJREJLZXlQYXRo
ID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleVBhdGhGcm9tS2V5UGF0aChvYmpl
Y3RTdG9yZS5rZXlQYXRoKTsKQEAgLTM1OSw3ICszNjgsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIklu
ZGV4ZWREQkFnZW50IGVycm9yOiAiICsgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoIXRoaXMuX2Rh
dGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW5dKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHZhciBlbnRyaWVzID0gW107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZp
ZXdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3
cy5qcwppbmRleCBmOTM1MDA4NjJlODcxZjE5NWM0YWE5MzQxYTFkMjAwMjIzZjZjZjVkLi5iYmJk
NWNmNzA5ODg5Mzc0NzM2YzMyZjYyZDNjNjE3NWU1N2YzZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTEyNyw2
ICsxMjcsOSBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcgPSBmdW5jdGlvbihtb2RlbCwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmUsIGluZGV4KQogICAgIHRoaXMuX3JlZnJlc2hCdXR0b24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
ZnJlc2giKSwgInJlZnJlc2gtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLl9y
ZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRv
bkNsaWNrZWQsIHRoaXMpOwogCisgICAgdGhpcy5fY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVj
dG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIEFsbCBEYXRh
IiksICJjbGVhci1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOworICAgIHRoaXMuX2NsZWFyQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xlYXJCdXR0b25DbGlja2VkLCB0
aGlzKTsKKwogICAgIHRoaXMuX3BhZ2VTaXplID0gNTA7CiAgICAgdGhpcy5fc2tpcENvdW50ID0g
MDsKIApAQCAtMTY0LDcgKzE2Nyw3IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGtleUNvbHVtbkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKHByZWZpeCkpOwogICAgICAgICBpZiAoa2V5UGF0aCA9PT0gbnVs
bCkKICAgICAgICAgICAgIHJldHVybiBrZXlDb2x1bW5IZWFkZXJGcmFnbWVudDsKLSAgICAgICAg
CisKICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIiAoIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5IHBhdGg6ICIp
KSk7CiAgICAgICAgIGlmIChrZXlQYXRoIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICAgICAg
IGtleUNvbHVtbkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJbIikpOwpAQCAtMjk4LDYgKzMwMSw4IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9wYXJzZUtleSh0aGlzLl9rZXlJ
bnB1dEVsZW1lbnQudmFsdWUpOwogICAgICAgICB2YXIgcGFnZVNpemUgPSB0aGlzLl9wYWdlU2l6
ZTsKICAgICAgICAgdmFyIHNraXBDb3VudCA9IHRoaXMuX3NraXBDb3VudDsKKyAgICAgICAgdGhp
cy5fcmVmcmVzaEJ1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGhpcy5fY2xlYXJC
dXR0b24uc2V0RW5hYmxlZCghdGhpcy5faXNJbmRleCk7CiAKICAgICAgICAgaWYgKCFmb3JjZSAm
JiB0aGlzLl9sYXN0S2V5ID09PSBrZXkgJiYgdGhpcy5fbGFzdFBhZ2VTaXplID09PSBwYWdlU2l6
ZSAmJiB0aGlzLl9sYXN0U2tpcENvdW50ID09PSBza2lwQ291bnQpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zMTYsNiArMzIxLDcgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVudHJpZXMsIGhh
c01vcmUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b24uc2V0RW5h
YmxlZCh0cnVlKTsKICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKICAgICAgICAgICAgIHRoaXMu
X2VudHJpZXMgPSBlbnRyaWVzOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRy
aWVzLmxlbmd0aDsgKytpKSB7CkBAIC0zNDYsOSArMzUyLDE5IEBAIFdlYkluc3BlY3Rvci5JREJE
YXRhVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZURhdGEodHJ1ZSk7CiAg
ICAgfSwKIAorICAgIF9jbGVhckJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgZnVuY3Rpb24gY2xlYXJlZChyZXN1bHQpIHsKKyAgICAgICAgICAgIHRoaXMuX2Ns
ZWFyQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVEYXRh
KHRydWUpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2NsZWFyQnV0dG9uLnNldEVuYWJsZWQo
ZmFsc2UpOworICAgICAgICB0aGlzLl9tb2RlbC5jbGVhck9iamVjdFN0b3JlKHRoaXMuX2RhdGFi
YXNlSWQsIHRoaXMuX29iamVjdFN0b3JlLm5hbWUsIGNsZWFyZWQuYmluZCh0aGlzKSk7CisgICAg
fSwKKwogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3Ro
aXMuX3JlZnJlc2hCdXR0b24uZWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVz
aEJ1dHRvbi5lbGVtZW50LCB0aGlzLl9jbGVhckJ1dHRvbi5lbGVtZW50XTsKICAgICB9LAogCiAg
ICAgY2xlYXI6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDg4MDYyNjljYzg5ZDJjMTU1YmFmM2Fj
ZTZhYTA0NDJiZjgwNDhjNjguLmRhZWJmYWM0NDJiOGVmZDVhODhhMzdjOWMyYWM2YTFmODNlYzdk
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcwpAQCAtMTcyOSw2ICsxNzI5LDI3IEBAIFdlYkluc3BlY3Rvci5JREJPYmpl
Y3RTdG9yZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICJpbmRleGVk
REI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiArICIvIiArIHRoaXMuX2Rh
dGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWU7CiAgICAgfSwKIAor
ICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFz
ZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAg
ICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisK
KyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50
KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsZWFyIiksIHRoaXMuX2NsZWFyT2JqZWN0U3RvcmUuYmluZCh0aGlzKSk7CisgICAgICAgIGNv
bnRleHRNZW51LnNob3coKTsKKyAgICB9LAorCisgICAgX2NsZWFyT2JqZWN0U3RvcmU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkgeworICAgICAg
ICAgICAgdGhpcy51cGRhdGUodGhpcy5fb2JqZWN0U3RvcmUpOworICAgICAgICB9CisgICAgICAg
IHRoaXMuX21vZGVsLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fZGF0YWJhc2VJZCwgdGhpcy5fb2Jq
ZWN0U3RvcmUubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgfSwKKwogICAgLyoqCiAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuT2JqZWN0U3RvcmV9IG9i
amVjdFN0b3JlCiAgICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggM2VhY2M0NDU1NmNlNzQ1NTZhM2Y4NjExNWU1ZTczZjUz
NDcyYmZmNi4uMDAwMmE0YWI0MGM2M2E4MTkyN2I1MGM4Mzc0NmQ3ZTc0ZTQ4ODkwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAt
MjI0Miw2ICsyMjQyLDEwIEBAIGJvZHkuaW5hY3RpdmUgbGkuc2VsZWN0ZWQgLmJ1YmJsZS5zZWFy
Y2gtbWF0Y2hlcyB7CiAgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAtMTI4cHggMDsKIH0KIAor
LmNsZWFyLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CisgICAgLXdlYmtpdC1tYXNr
LXBvc2l0aW9uOiAtNjRweCAwOworfQorCiAucmVmcmVzaC1zdG9yYWdlLXN0YXR1cy1iYXItaXRl
bSAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogMCAwOwogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUw
YTcwZjE4ZmQyYTgwNTI4MjFhOWE1ZDIxYTNmMmZhNzI5OWJhOTkuLjFiYjUyNmE0ZmQ1MjZiZjI0
N2I4NWY2NGU2M2I2YjdhZmY5ZGMwODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0x
OCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5zcGVj
dG9yOiBJbmRleGVkREIgY2xlYXIgYnV0dG9uIGFuZCBtZW51IGl0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBleHRyYSBtZXRob2RzIHRvIHRl
c3QgY2xlYXJpbmcgdGhlIGRhdGFiYXNlIGFmdGVyIHBvcHVsYXRpbmcgaXQuCisKIDIwMTMtMDMt
MTggIEt1bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBUaGUgJ2Zvcm1ub3ZhbGlkYXRlJyBhdHRyaWJ1dGUgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBv
biBidXR0b24gZWxlbWVudHMgd2l0aCBjaGlsZCBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLWRhdGEtZXhwZWN0ZWQudHh0CmluZGV4IDk3ZTBmZGRhNjI0OTYxN2U4ZDZhMmI2ZTgzMjlj
MGQ2MjFiYmZmNTUuLjNlOWQ4OWI0OTU3NDViOGQzMDgyM2I2N2FkMmJlZTRiYjNiNjkyMzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRh
YmFzZS1kYXRhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50eHQKQEAgLTYxLDQgKzYxLDcg
QEAgRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9IHRydWUsIHNraXBDb3VudCA9IDAsIHBhZ2VT
aXplID0gMiwgaWRiS2V5UmFuZ2UgPSBudWwKICAgICBLZXkgPSB2YWx1ZV8wMSwgcHJpbWFyeUtl
eSA9IGtleV8wMSwgdmFsdWUgPSB7ImtleSI6ImtleV8wMSIsInZhbHVlIjoidmFsdWVfMDEifQog
ICAgIEtleSA9IHZhbHVlXzAyLCBwcmltYXJ5S2V5ID0ga2V5XzAyLCB2YWx1ZSA9IHsia2V5Ijoi
a2V5XzAyIiwidmFsdWUiOiJ2YWx1ZV8wMiJ9CiAgICAgaGFzTW9yZSA9IHRydWUKK0NsZWFyZWQg
ZGF0YSBmcm9tIG9iamVjdFN0b3JlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2Us
IHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0gMTAsIGlkYktleVJhbmdlID0gbnVsbAorICAgIGhh
c01vcmUgPSBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAppbmRleCAxMzYzZjJlOTQz
YTFlMzQ2YTA5ZmZhNTI3NzNjNmRkZjRhMzY1ZDNkLi5lNmExNTIyNTBlYTI2ZGZjYmVjOWUwYWFl
YzUyYjg5YmY1ZTI1M2RlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKQEAgLTE3OSwxMiAr
MTc5LDMwIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAg
ICAgICAgewotICAgICAgICAgICAgY2xlYXJEYXRhYmFzZSgpOworICAgICAgICAgICAgcnVuQ2xl
YXJUZXN0cygpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgZnVuY3Rpb24gY2xlYXJEYXRhYmFz
ZSgpCisgICAgZnVuY3Rpb24gcnVuQ2xlYXJUZXN0cygpCiAgICAgeworICAgICAgICBpbmRleGVk
REJNb2RlbC5jbGVhck9iamVjdFN0b3JlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlTmFtZSwgc3Rl
cDEpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ2xlYXJlZCBkYXRhIGZyb20g
b2JqZWN0U3RvcmUiKTsKKworICAgICAgICBmdW5jdGlvbiBzdGVwMSgpIHsKKyAgICAgICAgICAg
IGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXAyKTsKKyAgICAgICAgICAgIGluZGV4
ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZShkYXRhYmFzZUlkKTsKKyAgICAgICAgfQorICAgICAg
ICBmdW5jdGlvbiBzdGVwMigpIHsKKyAgICAgICAgICAgIGluZGV4ZWREQk1vZGVsLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJh
c2VMb2FkZWQsIHN0ZXAyKTsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBu
dWxsLCAwLCAxMCwgc3RlcDMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMo
KSB7CisgICAgICAgICAgICBkZWxldGVEYXRhYmFzZSgpOworICAgICAgICB9CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UoKSB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZGVs
ZXRlT2JqZWN0U3RvcmVJbmRleChtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgc3RlcDIpOwogCiAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI1
OWZlZWYyODIzYjQ2ZjZmZmNjNWY5OTczMTQ5M2Q1ZDQ0NzJmZGMuLjA0MzEyMzZjMjlkZDhiZGEw
MDFlNTkwNjgxN2NkNGQ4N2RmNzgwM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDEzMSw4ICs0MTMxLDYgQEAgd2Via2l0Lm9yZy9i
LzEwNjUxOCBbIExpb24gTW91bnRhaW5MaW9uIF0gcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9z
b2Z0d2FyZWNvbXAKIAogd2Via2l0Lm9yZy9iLzEwMTUzOSBbIExpbnV4IFdpbiBdIGVkaXRpbmcv
ZXhlY0NvbW1hbmQvc3dpdGNoLWxpc3QtdHlwZS13aXRoLW9ycGhhbmVkLWxpLmh0bWwgWyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzEwMTYxOCBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVk
ZGIvZGF0YWJhc2UtZGF0YS5odG1sIFsgUGFzcyBDcmFzaCBTbG93IF0KLQogd2Via2l0Lm9yZy9i
LzkwMDIyIGZhc3QvY2FudmFzL2NhbnZhcy1yZXNpemUtcmVzZXQtcGl4ZWxSYXRpby5odG1sIFsg
V29udEZpeCBdCiB3ZWJraXQub3JnL2IvOTAwMjIgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9n
cHUvZmFzdC9jYW52YXMvY2FudmFzLXJlc2l6ZS1yZXNldC1waXhlbFJhdGlvLmh0bWwgWyBXb250
Rml4IF0KIHdlYmtpdC5vcmcvYi85MDAyMiBmYXN0L2NhbnZhcy9jYW52YXMtYXMtaW1hZ2UtaGlk
cGkuaHRtbCBbIFdvbnRGaXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193846</attachid>
            <date>2013-03-19 09:58:19 -0700</date>
            <delta_ts>2013-03-19 10:03:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112066-20130319095410.patch</filename>
            <type>text/plain</type>
            <size>21386</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkYTg5MDU5MGZjMzFk
YzUwNGFlZjY3MGQyZjczOWViYzc1ZmM3ZC4uNTliNmEwMTZiMWJkOTUwODA1YzUxZjdkYThkOWQ1
NzRiYzliZDE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnNwZWN0b3I6IElu
ZGV4ZWREQiBjbGVhciBidXR0b24gYW5kIG1lbnUgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VnNldm9sb2QgVmxhc292LgorCisgICAgICAgIEFkZHMgYSBidXR0b24gdGhhdCBjYW4gY2xlYXIg
dGhlIGNvbnRlbnRzIG9mIGFuIG9iamVjdFN0b3JlIGZyb20KKyAgICAgICAgdGhlIElEQkRhdGFW
aWV3LCBhbmQgYSBjb250ZXh0IG1lbnUgZnJvbSB0aGUgUmVzb3VyY2VzUGFuZWwgdGhhdAorICAg
ICAgICBjYW4gZG8gdGhlIHNhbWUuCisKKyAgICAgICAgVGhpcyBhbHNvIGRpc2FibGVzIHRoZSBS
ZWZyZXNoIGJ1dHRvbiBmcm9tIHRoZSBJREJEYXRhVmlldywgc28gdGhlcmUKKyAgICAgICAgaXMg
YXQgbGVhc3Qgc29tZSB2aXN1YWwgZmVlZGJhY2sgdGhhdCB0aGUgcmVmcmVzaCBidXR0b24gaXMg
d29ya2luZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLWRhdGEuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OiBOZXcgQVBJIGNsZWFyT2JqZWN0U3RvcmUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcDogSW1wbGVtZW50YXRpb24gb2YgY2xlYXJPYmplY3RTdG9yZQor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDbGVhck9iamVjdFN0b3JlTGlzdGVuZXIpOiBD
YWxscyB0aGUgb3JpZ2luYWwgY2xvc3VyZSBhZnRlciB0aGUgb2JqZWN0U3RvcmUgaXMgY2xlYXJl
ZC4KKyAgICAgICAgKENsZWFyT2JqZWN0U3RvcmUpOiBJbml0aWF0ZXMgdGhlIGNsZWFyIG9wZXJh
dGlvbiBhZnRlciB0aGUgREIgb3BlbnMuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qczogRXhwb3NlcyBjbGVhck9iamVjdFN0b3JlIHRvIHRoZSBNb2RlbCBB
UEkuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcpOiBBZGQgY2xlYXIgYnV0dG9u
IGFuZCBlbmFibGUvZGlzYWJsZSBjbGVhciBhbmQgcmVmcmVzaCBidXR0b25zIGFwcHJvcHJpYXRl
bHkuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczogQWRk
IGEgbWVudSBpdGVtIGFuZCByZWZyZXNoIHRoZSBkaXNwbGF5ZWQgZGF0YSBhZnRlciB0aGUgY2xl
YXIuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOiBBZGQgYSBz
dHlsZSB0byBzaG93IHRoZSByaWdodCBidXR0b24gZm9yIGNsZWFyLgorCisyMDEzLTAzLTExICBB
bGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnNwZWN0b3I6
IFtDaHJvbWl1bV0gaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEu
aHRtbCBBU1NFUlQgb24gV2luNyBmb2xsb3dpbmcgcjEzMzg1NQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjE4CisKKyAgICAgICAgRGVhY3RpdmF0
ZSB0cmFuc2FjdGlvbnMgY3JlYXRlZCBieSB0aGUgaW5zcGVjdG9yLCBiZWZvcmUKKyAgICAgICAg
dGhleSBhcmUgcmVhY3RpdmF0ZWQgYnkgSW5kZXhlZERCLiBUaGlzIHB1dHMgdHJhbnNhY3Rpb25z
CisgICAgICAgIGluIGFuIGlkZW50aWNhbCBzdGF0ZSBhcyB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQg
Ynkgc2NyaXB0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBWc2V2b2xvZCBWbGFzb3YuCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDog
TWFrZSB0cmFuc2FjdGlvbnMgaW5hY3RpdmUgdXBvbiBsZWF2aW5nIHRoZSBpbnNwZWN0b3IgY29k
ZS4KKwogMjAxMy0wMy0xOSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25nIGd1YXJkIFVTRShHTFgpIGluIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKaW5kZXggYjk0ZDkxYmFiZDA4YWMyYTUyOWQxMzc0MjI3YjQ4ZDE5
MTZhMmE5ZS4uYWRiMGI5MmM0YTE3MjhlYmVkYmRiZjMwYmQyODE4ZTJjZTFkNGM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAt
MTExLDYgKzExMSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkNsZWFyIENvbnNvbGUiXSA9ICJDbGVh
ciBDb25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsZWFyIGNvbnNvbGUiXSA9ICJDbGVhciBj
b25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsZWFyIGF1ZGl0IHJlc3VsdHMuIl0gPSAiQ2xl
YXIgYXVkaXQgcmVzdWx0cy4iOwogbG9jYWxpemVkU3RyaW5nc1siQ2xlYXIgY29uc29sZSBsb2cu
Il0gPSAiQ2xlYXIgY29uc29sZSBsb2cuIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNsZWFyIG9iamVj
dCBzdG9yZSJdID0gIkNsZWFyIG9iamVjdCBzdG9yZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGVh
ciJdID0gIkNsZWFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBp
Y2tlci4gU2hpZnQtY2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdCJdID0gIkNsaWNrIHRvIG9w
ZW4gYSBjb2xvcnBpY2tlci4gU2hpZnQtY2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdCI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJDbG9zdXJlIl0gPSAiQ2xvc3VyZSI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOTRkODUxMDNjMDliOGY2Nzg2YzBmYmNjNGIyMTk5
OWIxMjEyNGQwMi4uNTM2NWYwOTdkYWE5Mjk2MWE0ZjMwODAyNDc5NGE3ODM1MzU1NDA5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQwOCw2ICsxNDA4LDE4
IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFzTW9yZSIsICJ0eXBlIjogImJv
b2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdGhlcmUgYXJlIG1vcmUgZW50cmllcyB0
byBmZXRjaCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgZGF0YSBmcm9tIG9iamVjdCBzdG9y
ZSBvciBpbmRleC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICJuYW1lIjogImNsZWFyT2JqZWN0U3RvcmUiLAorICAgICAgICAgICAgICAgICJhc3luYyI6
IHRydWUsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkYXRhYmFzZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGF0
YWJhc2UgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0U3Rv
cmVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk9iamVjdCBzdG9yZSBu
YW1lLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBb
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xl
YXJzIGFsbCBlbnRyaWVzIGZyb20gYW4gb2JqZWN0IHN0b3JlLiIKICAgICAgICAgICAgIH0KICAg
ICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA2NzA2MjA4YzEzMmNjZGY0M2QxNjY0NjU2Yjc0
N2Y2OGRkNjFhMTNkLi5lM2I3M2FhYzc5ZGM0ODdlMjUwNzQwOWZkODgzZjljYWM0MjA1ZjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OlJlcXVlc3REYXQKIHR5cGVk
ZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRI
YW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsK
IHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNv
bW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7CiB0
eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Ug
UmVxdWVzdENhbGxiYWNrOwordHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFjayBD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjEz
LDEwICsyMTQsMTAgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0
b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXIKICAgICBpZGJPcGVuREJSZXF1
ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGNhbGxiYWNr
LCBmYWxzZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2Fj
dGlvbkZvckRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Gb3JE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJ
REJEYXRhYmFzZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCkpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJU
cmFuc2FjdGlvbiA9IGlkYkRhdGFiYXNlLT50cmFuc2FjdGlvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKSwgZWMp
OworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24gPSBpZGJEYXRhYmFz
ZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb2JqZWN0U3RvcmVOYW1lLCBt
b2RlLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gaWRi
VHJhbnNhY3Rpb247CkBAIC02ODksNiArNjkwLDEwOSBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZwogICAgIGRhdGFMb2FkZXItPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCitjbGFzcyBDbGVhck9iamVjdFN0b3JlTGlzdGVu
ZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xl
YXJPYmplY3RTdG9yZUxpc3RlbmVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bGVhck9iamVjdFN0b3JlTGlzdGVuZXI+IGNyZWF0ZShQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3Rv
cmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDbGVhck9iamVjdFN0b3JlTGlzdGVuZXIocmVxdWVzdENhbGxiYWNrKSk7CisgICAg
fQorCisgICAgdmlydHVhbCB+Q2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBl
dmVudCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmICghbV9yZXF1ZXN0Q2FsbGJhY2stPmlz
QWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChldmVudC0+dHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50KSB7CisgICAgICAgICAgICBtX3JlcXVlc3RD
YWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5k
U3VjY2VzcygpOworICAgIH0KK3ByaXZhdGU6CisgICAgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVy
KFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisg
ICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlw
ZSkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spCisgICAgewor
ICAgIH0KKworICAgIFJlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IG1fcmVxdWVzdENh
bGxiYWNrOworfTsKKworCitjbGFzcyBDbGVhck9iamVjdFN0b3JlIDogcHVibGljIEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsZWFyT2Jq
ZWN0U3RvcmU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJh
Y2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q2xlYXJPYmplY3RTdG9yZShjb250ZXh0LCBvYmplY3RTdG9yZU5hbWUsIHJlcXVlc3RDYWxsYmFj
aykpOworICAgIH0KKworICAgIENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xl
YXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCisgICAgICAgIDogRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZShjb250ZXh0KQorICAgICAgICAsIG1fb2JqZWN0U3RvcmVOYW1lKG9i
amVjdFN0b3JlTmFtZSkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJh
Y2spCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IHBycERhdGFiYXNlKQorICAgIHsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFi
YXNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBpZiAoIXJlcXVlc3RDYWxs
YmFjaygpLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShj
b250ZXh0KCksIGlkYkRhdGFiYXNlLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNh
Y3Rpb246Om1vZGVSZWFkV3JpdGUoKSk7CisgICAgICAgIGlmICghaWRiVHJhbnNhY3Rpb24pIHsK
KyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdl
dCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRy
YW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CisgICAg
ICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
ICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdCA9IGlkYk9iamVjdFN0b3JlLT5jbGVh
cihjb250ZXh0KCksIGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGlmIChlYykg
eworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKFN0cmluZzo6Zm9y
bWF0KCJDb3VsZCBub3QgY2xlYXIgb2JqZWN0IHN0b3JlICclcyc6ICVkIiwgbV9vYmplY3RTdG9y
ZU5hbWUudXRmOCgpLmRhdGEoKSwgZWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZGJUcmFuc2FjdGlvbi0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y29tcGxldGVFdmVudCwgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyOjpjcmVhdGUobV9yZXF1ZXN0
Q2FsbGJhY2spLCBmYWxzZSk7CisgICAgfQorCisgICAgdmlydHVhbCBSZXF1ZXN0Q2FsbGJhY2sq
IHJlcXVlc3RDYWxsYmFjaygpIHsgcmV0dXJuIG1fcmVxdWVzdENhbGxiYWNrLmdldCgpOyB9Citw
cml2YXRlOgorICAgIGNvbnN0IFN0cmluZyBtX29iamVjdFN0b3JlTmFtZTsKKyAgICBSZWZQdHI8
Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKK307CisKK3ZvaWQg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xl
YXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCit7CisgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9y
aWdpbik7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJp
bmcsIGZyYW1lKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgSURC
RmFjdG9yeSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZXJyb3JTdHJpbmcsIGRvY3Vt
ZW50KTsKKyAgICBpZiAoIWlkYkZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworI2lmIFVTRShW
OCkKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpLT5t
YWluV29ybGRDb250ZXh0KCk7CisgICAgICAgIEFTU0VSVCghY29udGV4dC5Jc0VtcHR5KCkpOwor
ICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2VuZGlm
CisKKyAgICBSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZT4gY2xlYXJPYmplY3RTdG9yZSA9IENsZWFy
T2JqZWN0U3RvcmU6OmNyZWF0ZShkb2N1bWVudCwgb2JqZWN0U3RvcmVOYW1lLCByZXF1ZXN0Q2Fs
bGJhY2spOworICAgIGNsZWFyT2JqZWN0U3RvcmUtPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOworfQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5oCmluZGV4IDY5YTA5NjFhYjFiMWZhOGQ1MjE5MGQ1N2Y0MjhmMjU1MDdkNmZjY2Uu
LjMzNmM2NjFjZmNjNDk3OGYyMTRkYjhmODU0NjZhZjg4YTBjZWQ4NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC02MSw2
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENv
dW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmpl
Y3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPik7CiAKIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVj
dG9yUGFnZUFnZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmRleGVkREJNb2RlbC5qcwppbmRleCBhNTI1N2EyNGJjYmMzOGRiNDhmNDcyNjI5YmYz
MGIxM2IxMDk2YWM0Li4yODNjNWRiYTBkYWE4YTkzNDg5ODQ4MDE1ZWRkNWE3YWUyOWY4N2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1v
ZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERC
TW9kZWwuanMKQEAgLTE2Myw2ICsxNjMsMTUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2VJZH0gZGF0YWJhc2VJZAorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLk9iamVjdFN0b3JlfSBvYmplY3RTdG9yZQor
ICAgICAqLworICAgIGNsZWFyT2JqZWN0U3RvcmU6IGZ1bmN0aW9uKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlTmFtZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbmRleGVkREJBZ2VudC5jbGVh
ck9iamVjdFN0b3JlKGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlSWQubmFtZSwg
b2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAogICAgICAqLwogICAgIF9zZWN1cml0eU9y
aWdpbkFkZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTI4OSw3ICsyOTgsNyBAQCBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCF0aGlzLl9k
YXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luXSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgZGF0YWJhc2VNb2RlbCA9
IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2UoZGF0YWJhc2VJZCwgZGF0
YWJhc2VXaXRoT2JqZWN0U3RvcmVzLnZlcnNpb24sIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5p
bnRWZXJzaW9uKTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlcy5wdXQoZGF0YWJhc2VJZCwg
ZGF0YWJhc2VNb2RlbCk7IAorICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VzLnB1dChkYXRhYmFz
ZUlkLCBkYXRhYmFzZU1vZGVsKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0
YWJhc2VXaXRoT2JqZWN0U3RvcmVzLm9iamVjdFN0b3Jlcy5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5vYmpl
Y3RTdG9yZXNbaV07CiAgICAgICAgICAgICAgICAgdmFyIG9iamVjdFN0b3JlSURCS2V5UGF0aCA9
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlQYXRoRnJvbUtleVBhdGgob2JqZWN0
U3RvcmUua2V5UGF0aCk7CkBAIC0zNTksNyArMzY4LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRl
eGVkREJBZ2VudCBlcnJvcjogIiArIGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRh
YmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luXSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3Mu
anMKaW5kZXggZjkzNTAwODYyZTg3MWYxOTVjNGFhOTM0MWExZDIwMDIyM2Y2Y2Y1ZC4uNjBjZWMw
Y2EwNTgyYWVmYmNmZjM1YjQ5MDIyMDAzNGM4ODVkZGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCkBAIC0xMjcsNiAr
MTI3LDkgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3ID0gZnVuY3Rpb24obW9kZWwsIGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlLCBpbmRleCkKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uID0gbmV3
IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZy
ZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5fcmVm
cmVzaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25D
bGlja2VkLCB0aGlzKTsKIAorICAgIHRoaXMuX2NsZWFyQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rv
ci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGVhciBvYmplY3Qgc3Rv
cmUiKSwgImNsZWFyLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5fY2xlYXJC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhckJ1dHRvbkNsaWNrZWQs
IHRoaXMpOworCiAgICAgdGhpcy5fcGFnZVNpemUgPSA1MDsKICAgICB0aGlzLl9za2lwQ291bnQg
PSAwOwogCkBAIC0xNjQsNyArMTY3LDcgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUocHJlZml4KSk7CiAgICAgICAgIGlmIChrZXlQYXRoID09PSBu
dWxsKQogICAgICAgICAgICAgcmV0dXJuIGtleUNvbHVtbkhlYWRlckZyYWdtZW50OwotICAgICAg
ICAKKwogICAgICAgICBrZXlDb2x1bW5IZWFkZXJGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgiICgiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJLZXkgcGF0aDog
IikpKTsKICAgICAgICAgaWYgKGtleVBhdGggaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgICAg
ICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIlsiKSk7CkBAIC0yOTgsNiArMzAxLDggQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGtleSA9IHRoaXMuX3BhcnNlS2V5KHRoaXMuX2tl
eUlucHV0RWxlbWVudC52YWx1ZSk7CiAgICAgICAgIHZhciBwYWdlU2l6ZSA9IHRoaXMuX3BhZ2VT
aXplOwogICAgICAgICB2YXIgc2tpcENvdW50ID0gdGhpcy5fc2tpcENvdW50OworICAgICAgICB0
aGlzLl9yZWZyZXNoQnV0dG9uLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICB0aGlzLl9jbGVh
ckJ1dHRvbi5zZXRFbmFibGVkKCF0aGlzLl9pc0luZGV4KTsKIAogICAgICAgICBpZiAoIWZvcmNl
ICYmIHRoaXMuX2xhc3RLZXkgPT09IGtleSAmJiB0aGlzLl9sYXN0UGFnZVNpemUgPT09IHBhZ2VT
aXplICYmIHRoaXMuX2xhc3RTa2lwQ291bnQgPT09IHNraXBDb3VudCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMxNiw2ICszMjEsNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZW50cmllcywg
aGFzTW9yZSkKICAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbi5zZXRF
bmFibGVkKHRydWUpOwogICAgICAgICAgICAgdGhpcy5jbGVhcigpOwogICAgICAgICAgICAgdGhp
cy5fZW50cmllcyA9IGVudHJpZXM7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVu
dHJpZXMubGVuZ3RoOyArK2kpIHsKQEAgLTM0Niw5ICszNTIsMTkgQEAgV2ViSW5zcGVjdG9yLklE
QkRhdGFWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlRGF0YSh0cnVlKTsK
ICAgICB9LAogCisgICAgX2NsZWFyQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBmdW5jdGlvbiBjbGVhcmVkKHJlc3VsdCkgeworICAgICAgICAgICAgdGhpcy5f
Y2xlYXJCdXR0b24uc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURh
dGEodHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24uc2V0RW5hYmxl
ZChmYWxzZSk7CisgICAgICAgIHRoaXMuX21vZGVsLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fZGF0
YWJhc2VJZCwgdGhpcy5fb2JqZWN0U3RvcmUubmFtZSwgY2xlYXJlZC5iaW5kKHRoaXMpKTsKKyAg
ICB9LAorCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBb
dGhpcy5fcmVmcmVzaEJ1dHRvbi5lbGVtZW50XTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZy
ZXNoQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2NsZWFyQnV0dG9uLmVsZW1lbnRdOwogICAgIH0sCiAK
ICAgICBjbGVhcjogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggODgwNjI2OWNjODlkMmMxNTViYWYz
YWNlNmFhMDQ0MmJmODA0OGM2OC4uZGFlYmZhYzQ0MmI4ZWZkNWE4OGEzN2M5YzJhYzZhMWY4M2Vj
N2Q5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzCkBAIC0xNzI5LDYgKzE3MjksMjcgQEAgV2ViSW5zcGVjdG9yLklEQk9i
amVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gImluZGV4
ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luICsgIi8iICsgdGhpcy5f
ZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFtZTsKICAgICB9LAog
CisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOworICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIs
IHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwK
KworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZl
bnQpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2xlYXIiKSwgdGhpcy5fY2xlYXJPYmplY3RTdG9yZS5iaW5kKHRoaXMpKTsKKyAgICAgICAg
Y29udGV4dE1lbnUuc2hvdygpOworICAgIH0sCisKKyAgICBfY2xlYXJPYmplY3RTdG9yZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KSB7CisgICAg
ICAgICAgICB0aGlzLnVwZGF0ZSh0aGlzLl9vYmplY3RTdG9yZSk7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy5fbW9kZWwuY2xlYXJPYmplY3RTdG9yZSh0aGlzLl9kYXRhYmFzZUlkLCB0aGlzLl9v
YmplY3RTdG9yZS5uYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAvKioK
ICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5PYmplY3RTdG9yZX0g
b2JqZWN0U3RvcmUKICAgICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCAzZWFjYzQ0NTU2Y2U3NDU1NmEzZjg2MTE1ZTVlNzNm
NTM0NzJiZmY2Li4wMDAyYTRhYjQwYzYzYTgxOTI3YjUwYzgzNzQ2ZDdlNzRlNDg4OTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBA
IC0yMjQyLDYgKzIyNDIsMTAgQEAgYm9keS5pbmFjdGl2ZSBsaS5zZWxlY3RlZCAuYnViYmxlLnNl
YXJjaC1tYXRjaGVzIHsKICAgICAtd2Via2l0LW1hc2stcG9zaXRpb246IC0xMjhweCAwOwogfQog
CisuY2xlYXItc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAtd2Via2l0LW1h
c2stcG9zaXRpb246IC02NHB4IDA7Cit9CisKIC5yZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1p
dGVtIC5nbHlwaCB7CiAgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAwIDA7CiB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzE5NjM2MzRhMTc1N2ZjZDE3MjQyNWFhYTYwYzdkMmNmOThhNTBjZC4uOTE3ZmQ4Y2I3NzY3ZTgy
NmIwMzI1MWUxMTQ0NjM4MTM2NGYwMzRmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAz
LTE4ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnNw
ZWN0b3I6IEluZGV4ZWREQiBjbGVhciBidXR0b24gYW5kIG1lbnUgaXRlbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVnNldm9sb2QgVmxhc292LgorCisgICAgICAgIEFkZCBleHRyYSBtZXRob2RzIHRv
IHRlc3QgY2xlYXJpbmcgdGhlIGRhdGFiYXNlIGFmdGVyIHBvcHVsYXRpbmcgaXQuCisKIDIwMTMt
MDMtMTkgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAg
W1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4gU2tpcCBzb21lIGZhaWxpbmcgdGVzdHMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJh
c2UtZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50eHQKaW5kZXggOTdlMGZkZGE2MjQ5NjE3
ZThkNmEyYjZlODMyOWMwZDYyMWJiZmY1NS4uM2U5ZDg5YjQ5NTc0NWI4ZDMwODIzYjY3YWQyYmVl
NGJiM2I2OTIzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dApA
QCAtNjEsNCArNjEsNyBAQCBEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gdHJ1ZSwgc2tpcENv
dW50ID0gMCwgcGFnZVNpemUgPSAyLCBpZGJLZXlSYW5nZSA9IG51bAogICAgIEtleSA9IHZhbHVl
XzAxLCBwcmltYXJ5S2V5ID0ga2V5XzAxLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAxIiwidmFsdWUi
OiJ2YWx1ZV8wMSJ9CiAgICAgS2V5ID0gdmFsdWVfMDIsIHByaW1hcnlLZXkgPSBrZXlfMDIsIHZh
bHVlID0geyJrZXkiOiJrZXlfMDIiLCJ2YWx1ZSI6InZhbHVlXzAyIn0KICAgICBoYXNNb3JlID0g
dHJ1ZQorQ2xlYXJlZCBkYXRhIGZyb20gb2JqZWN0U3RvcmUKK0R1bXBpbmcgdmFsdWVzLCBmcm9t
SW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUgPSAxMCwgaWRiS2V5UmFuZ2Ug
PSBudWxsCisgICAgaGFzTW9yZSA9IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCmlu
ZGV4IDEzNjNmMmU5NDNhMWUzNDZhMDlmZmE1Mjc3M2M2ZGRmNGEzNjVkM2QuLmU2YTE1MjI1MGVh
MjZkZmNiZWM5ZTBhYWVjNTJiODliZjVlMjUzZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRt
bApAQCAtMTc5LDEyICsxNzksMzAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rp
b24gc3RlcDIoKQogICAgICAgICB7Ci0gICAgICAgICAgICBjbGVhckRhdGFiYXNlKCk7CisgICAg
ICAgICAgICBydW5DbGVhclRlc3RzKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmdW5jdGlv
biBjbGVhckRhdGFiYXNlKCkKKyAgICBmdW5jdGlvbiBydW5DbGVhclRlc3RzKCkKICAgICB7Cisg
ICAgICAgIGluZGV4ZWREQk1vZGVsLmNsZWFyT2JqZWN0U3RvcmUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVOYW1lLCBzdGVwMSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDbGVh
cmVkIGRhdGEgZnJvbSBvYmplY3RTdG9yZSIpOworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkg
eworICAgICAgICAgICAgaW5kZXhlZERCTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3RlcDIpOworICAg
ICAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlKGRhdGFiYXNlSWQpOworICAg
ICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkgeworICAgICAgICAgICAgaW5kZXhlZERC
TW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZl
bnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3RlcDIpOworICAgICAgICAgICAgbG9hZFZhbHVlc0Fu
ZER1bXAoZmFsc2UsIG51bGwsIDAsIDEwLCBzdGVwMyk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzdGVwMygpIHsKKyAgICAgICAgICAgIGRlbGV0ZURhdGFiYXNlKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBkZWxldGVEYXRhYmFzZSgpIHsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kZWxldGVPYmplY3RTdG9yZUluZGV4KG1haW5GcmFtZUlkLCBkYXRhYmFzZU5h
bWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBzdGVwMik7CiAKICAgICAgICAgZnVuY3Rp
b24gc3RlcDIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193847</attachid>
            <date>2013-03-19 10:04:00 -0700</date>
            <delta_ts>2013-03-19 10:31:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112066-20130319095951.patch</filename>
            <type>text/plain</type>
            <size>20740</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkYTg5MDU5MGZjMzFk
YzUwNGFlZjY3MGQyZjczOWViYzc1ZmM3ZC4uOTVlNzJkY2M4MjI4NTMyOWNlYWFhNTI5NzE5YmM3
MWIwMThlYTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnNwZWN0b3I6IElu
ZGV4ZWREQiBjbGVhciBidXR0b24gYW5kIG1lbnUgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VnNldm9sb2QgVmxhc292LgorCisgICAgICAgIEFkZHMgYSBidXR0b24gdGhhdCBjYW4gY2xlYXIg
dGhlIGNvbnRlbnRzIG9mIGFuIG9iamVjdFN0b3JlIGZyb20KKyAgICAgICAgdGhlIElEQkRhdGFW
aWV3LCBhbmQgYSBjb250ZXh0IG1lbnUgZnJvbSB0aGUgUmVzb3VyY2VzUGFuZWwgdGhhdAorICAg
ICAgICBjYW4gZG8gdGhlIHNhbWUuCisKKyAgICAgICAgVGhpcyBhbHNvIGRpc2FibGVzIHRoZSBS
ZWZyZXNoIGJ1dHRvbiBmcm9tIHRoZSBJREJEYXRhVmlldywgc28gdGhlcmUKKyAgICAgICAgaXMg
YXQgbGVhc3Qgc29tZSB2aXN1YWwgZmVlZGJhY2sgdGhhdCB0aGUgcmVmcmVzaCBidXR0b24gaXMg
d29ya2luZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLWRhdGEuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OiBOZXcgQVBJIGNsZWFyT2JqZWN0U3RvcmUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcDogSW1wbGVtZW50YXRpb24gb2YgY2xlYXJPYmplY3RTdG9yZQor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDbGVhck9iamVjdFN0b3JlTGlzdGVuZXIpOiBD
YWxscyB0aGUgb3JpZ2luYWwgY2xvc3VyZSBhZnRlciB0aGUgb2JqZWN0U3RvcmUgaXMgY2xlYXJl
ZC4KKyAgICAgICAgKENsZWFyT2JqZWN0U3RvcmUpOiBJbml0aWF0ZXMgdGhlIGNsZWFyIG9wZXJh
dGlvbiBhZnRlciB0aGUgREIgb3BlbnMuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qczogRXhwb3NlcyBjbGVhck9iamVjdFN0b3JlIHRvIHRoZSBNb2RlbCBB
UEkuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcpOiBBZGQgY2xlYXIgYnV0dG9u
IGFuZCBlbmFibGUvZGlzYWJsZSBjbGVhciBhbmQgcmVmcmVzaCBidXR0b25zIGFwcHJvcHJpYXRl
bHkuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczogQWRk
IGEgbWVudSBpdGVtIGFuZCByZWZyZXNoIHRoZSBkaXNwbGF5ZWQgZGF0YSBhZnRlciB0aGUgY2xl
YXIuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOiBBZGQgYSBz
dHlsZSB0byBzaG93IHRoZSByaWdodCBidXR0b24gZm9yIGNsZWFyLgorCiAyMDEzLTAzLTE5ICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0dUS10gV3JvbmcgZ3VhcmQgVVNFKEdMWCkgaW4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpp
bmRleCBiOTRkOTFiYWJkMDhhYzJhNTI5ZDEzNzQyMjdiNDhkMTkxNmEyYTllLi5hZGIwYjkyYzRh
MTcyOGViZWRiZGJmMzBiZDI4MThlMmNlMWQ0YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xMTEsNiArMTExLDcgQEAgbG9j
YWxpemVkU3RyaW5nc1siQ2xlYXIgQ29uc29sZSJdID0gIkNsZWFyIENvbnNvbGUiOwogbG9jYWxp
emVkU3RyaW5nc1siQ2xlYXIgY29uc29sZSJdID0gIkNsZWFyIGNvbnNvbGUiOwogbG9jYWxpemVk
U3RyaW5nc1siQ2xlYXIgYXVkaXQgcmVzdWx0cy4iXSA9ICJDbGVhciBhdWRpdCByZXN1bHRzLiI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGVhciBjb25zb2xlIGxvZy4iXSA9ICJDbGVhciBjb25zb2xl
IGxvZy4iOworbG9jYWxpemVkU3RyaW5nc1siQ2xlYXIgb2JqZWN0IHN0b3JlIl0gPSAiQ2xlYXIg
b2JqZWN0IHN0b3JlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsZWFyIl0gPSAiQ2xlYXIiOwogbG9j
YWxpemVkU3RyaW5nc1siQ2xpY2sgdG8gb3BlbiBhIGNvbG9ycGlja2VyLiBTaGlmdC1jbGljayB0
byBjaGFuZ2UgY29sb3IgZm9ybWF0Il0gPSAiQ2xpY2sgdG8gb3BlbiBhIGNvbG9ycGlja2VyLiBT
aGlmdC1jbGljayB0byBjaGFuZ2UgY29sb3IgZm9ybWF0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNs
b3N1cmUiXSA9ICJDbG9zdXJlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgppbmRleCA5NGQ4NTEwM2MwOWI4ZjY3ODZjMGZiY2M0YjIxOTk5YjEyMTI0ZDAyLi41MzY1ZjA5
N2RhYTkyOTYxYTRmMzA4MDI0Nzk0YTc4MzUzNTU0MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNDA4LDYgKzE0MDgsMTggQEAKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlv
biI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRyaWVzIHRvIGZldGNoIGluIHRoZSBnaXZl
biByYW5nZS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXF1ZXN0cyBkYXRhIGZyb20gb2JqZWN0IHN0b3JlIG9yIGluZGV4LiIKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2xlYXJP
YmplY3RTdG9yZSIsCisgICAgICAgICAgICAgICAgImFzeW5jIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1
cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBv
cmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9CisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDbGVhcnMgYWxsIGVudHJpZXMgZnJv
bSBhbiBvYmplY3Qgc3RvcmUuIgogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IDY3MDYyMDhjMTMyY2NkZjQzZDE2NjQ2NTZiNzQ3ZjY4ZGQ2MWExM2QuLmUzYjcz
YWFjNzlkYzQ4N2UyNTA3NDA5ZmQ4ODNmOWNhYzQyMDVmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtODEsNiAr
ODEsNyBAQCB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRl
eGVkREJDb21tYW5kSGFuZGxlcjo6UmVxdWVzdERhdAogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OlJlcXVlc3REYXRh
YmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OlJlcXVl
c3REYXRhQ2FsbGJhY2sgUmVxdWVzdERhdGFDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7Cit0
eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21t
YW5kSGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxs
YmFjazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTMsMTAgKzIxNCwxMCBAQCB2b2lk
IEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cgogICAgIGlkYk9wZW5EQlJlcXVlc3QtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgY2FsbGJhY2ssIGZhbHNlKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSURCRGF0YWJhc2Uq
IGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3N0YXRpYyBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIElEQkRhdGFiYXNlKiBpZGJEYXRh
YmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSA9
IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gaWRiRGF0
YWJhc2UtPnRyYW5zYWN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG9iamVjdFN0b3JlTmFt
ZSwgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpLCBlYyk7CisgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbiA9IGlkYkRhdGFiYXNlLT50cmFuc2FjdGlvbihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBvYmplY3RTdG9yZU5hbWUsIG1vZGUsIGVjKTsKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBpZGJUcmFuc2FjdGlvbjsKQEAgLTY4
OSw2ICs2OTAsMTA5IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRh
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgZGF0YUxvYWRlci0+
c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFt
ZSk7CiB9CiAKK2NsYXNzIENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExp
c3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGVhck9iamVjdFN0b3JlTGlzdGVu
ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVMaXN0
ZW5lcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiByZXF1ZXN0
Q2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsZWFyT2JqZWN0
U3RvcmVMaXN0ZW5lcihyZXF1ZXN0Q2FsbGJhY2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5D
bGVhck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMgPT0gJm90aGVyOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KSBPVkVSUklERQorICAg
IHsKKyAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmNv
bXBsZXRlRXZlbnQpIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVy
ZSgiVW5leHBlY3RlZCBldmVudCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBDbGVhck9iamVjdFN0b3JlTGlzdGVuZXIoUGFzc1JlZlB0cjxDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBFdmVudExpc3Rl
bmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAsIG1fcmVx
dWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRy
PENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Cit9OworCisKK2Ns
YXNzIENsZWFyT2JqZWN0U3RvcmUgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGVhck9iamVjdFN0b3JlKGNv
bnRleHQsIG9iamVjdFN0b3JlTmFtZSwgcmVxdWVzdENhbGxiYWNrKSk7CisgICAgfQorCisgICAg
Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJh
Y2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBFeGVjdXRhYmxlV2l0aERhdGFiYXNlKGNv
bnRleHQpCisgICAgICAgICwgbV9vYmplY3RTdG9yZU5hbWUob2JqZWN0U3RvcmVOYW1lKQorICAg
ICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gcHJwRGF0
YWJhc2UpCisgICAgeworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0g
cHJwRGF0YWJhc2U7CisgICAgICAgIGlmICghcmVxdWVzdENhbGxiYWNrKCktPmlzQWN0aXZlKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRi
VHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKGNvbnRleHQoKSwgaWRiRGF0YWJh
c2UuZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0
ZSgpKTsKKyAgICAgICAgaWYgKCFpZGJUcmFuc2FjdGlvbikgeworICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBpZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oaWRiVHJhbnNh
Y3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgaWYgKCFpZGJPYmplY3RT
dG9yZSkgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3Vs
ZCBub3QgZ2V0IG9iamVjdCBzdG9yZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiBpZGJSZXF1ZXN0ID0gaWRiT2JqZWN0U3RvcmUtPmNsZWFyKGNvbnRleHQoKSwgZWMpOwor
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgaWYgKGVjKSB7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoU3RyaW5nOjpmb3JtYXQoIkNvdWxkIG5vdCBjbGVh
ciBvYmplY3Qgc3RvcmUgJyVzJzogJWQiLCBtX29iamVjdFN0b3JlTmFtZS51dGY4KCkuZGF0YSgp
LCBlYykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlkYlRyYW5z
YWN0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCBDbGVh
ck9iamVjdFN0b3JlTGlzdGVuZXI6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjayksIGZhbHNlKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIFJlcXVlc3RDYWxsYmFjayogcmVxdWVzdENhbGxiYWNrKCkg
eyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgY29uc3Qg
U3RyaW5nIG1fb2JqZWN0U3RvcmVOYW1lOworICAgIFJlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2Fs
bGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOworfTsKKwordm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6Y2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJh
Y2s+IHJlcXVlc3RDYWxsYmFjaykKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+
ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5
ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmluZywgZG9jdW1lbnQpOworICAgIGlmICghaWRi
RmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKFY4KQorICAgICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNv
bnRleHQgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2NyaXB0KCktPm1haW5Xb3JsZENvbnRleHQoKTsK
KyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIHY4OjpDb250ZXh0
OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisjZW5kaWYKKworICAgIFJlZlB0cjxDbGVh
ck9iamVjdFN0b3JlPiBjbGVhck9iamVjdFN0b3JlID0gQ2xlYXJPYmplY3RTdG9yZTo6Y3JlYXRl
KGRvY3VtZW50LCBvYmplY3RTdG9yZU5hbWUsIHJlcXVlc3RDYWxsYmFjayk7CisgICAgY2xlYXJP
YmplY3RTdG9yZS0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCks
IGRhdGFiYXNlTmFtZSk7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggNjlh
MDk2MWFiMWIxZmE4ZDUyMTkwZDU3ZjQyOGYyNTUwN2Q2ZmNjZS4uMzM2YzY2MWNmY2M0OTc4ZjIx
NGRiOGY4NTQ2NmFmODhhMGNlZDg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXND
YWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVl
c3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
aW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1Jl
ZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29tcG9zaXRl
U3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVs
LmpzCmluZGV4IGE1MjU3YTI0YmNiYzM4ZGI0OGY0NzI2MjliZjMwYjEzYjEwOTZhYzQuLjI4M2M1
ZGJhMGRhYThhOTM0ODk4NDgwMTVlZGQ1YTdhZTI5Zjg3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwpAQCAtMTYzLDYg
KzE2MywxNSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5EYXRhYmFzZUlkfSBkYXRhYmFzZUlkCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuT2JqZWN0U3RvcmV9IG9iamVjdFN0b3JlCisgICAgICovCisgICAgY2xlYXJP
YmplY3RTdG9yZTogZnVuY3Rpb24oZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIEluZGV4ZWREQkFnZW50LmNsZWFyT2JqZWN0U3RvcmUoZGF0YWJh
c2VJZC5zZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VJZC5uYW1lLCBvYmplY3RTdG9yZU5hbWUsIGNh
bGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RXZlbnR9IGV2ZW50CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9u
KGV2ZW50KQpAQCAtMjg5LDcgKzI5OCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW5dKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIHZhciBkYXRhYmFzZU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5EYXRhYmFzZShkYXRhYmFzZUlkLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9y
ZXMudmVyc2lvbiwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLmludFZlcnNpb24pOwotICAgICAg
ICAgICAgdGhpcy5fZGF0YWJhc2VzLnB1dChkYXRhYmFzZUlkLCBkYXRhYmFzZU1vZGVsKTsgCisg
ICAgICAgICAgICB0aGlzLl9kYXRhYmFzZXMucHV0KGRhdGFiYXNlSWQsIGRhdGFiYXNlTW9kZWwp
OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhYmFzZVdpdGhPYmplY3RTdG9y
ZXMub2JqZWN0U3RvcmVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIG9iamVj
dFN0b3JlID0gZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLm9iamVjdFN0b3Jlc1tpXTsKICAgICAg
ICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmVJREJLZXlQYXRoID0gV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLmlkYktleVBhdGhGcm9tS2V5UGF0aChvYmplY3RTdG9yZS5rZXlQYXRoKTsKQEAg
LTM1OSw3ICszNjgsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkluZGV4ZWREQkFnZW50IGVycm9yOiAi
ICsgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5
T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW5dKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIHZhciBlbnRyaWVzID0gW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcwppbmRleCBmOTM1MDA4NjJl
ODcxZjE5NWM0YWE5MzQxYTFkMjAwMjIzZjZjZjVkLi42MGNlYzBjYTA1ODJhZWZiY2ZmMzViNDkw
MjIwMDM0Yzg4NWRkYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTEyNyw2ICsxMjcsOSBAQCBXZWJJbnNwZWN0
b3IuSURCRGF0YVZpZXcgPSBmdW5jdGlvbihtb2RlbCwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUs
IGluZGV4KQogICAgIHRoaXMuX3JlZnJlc2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1
c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgInJlZnJlc2gtc3Rv
cmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwogCisg
ICAgdGhpcy5fY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIG9iamVjdCBzdG9yZSIpLCAiY2xlYXItc3RvcmFn
ZS1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLl9jbGVhckJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2NsZWFyQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CisKICAgICB0aGlz
Ll9wYWdlU2l6ZSA9IDUwOwogICAgIHRoaXMuX3NraXBDb3VudCA9IDA7CiAKQEAgLTE2NCw3ICsx
NjcsNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBr
ZXlDb2x1bW5IZWFkZXJGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShwcmVmaXgpKTsKICAgICAgICAgaWYgKGtleVBhdGggPT09IG51bGwpCiAgICAgICAgICAgICBy
ZXR1cm4ga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQ7Ci0gICAgICAgIAorCiAgICAgICAgIGtleUNv
bHVtbkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIg
KCIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIktleSBwYXRoOiAiKSkpOwogICAgICAgICBpZiAo
a2V5UGF0aCBpbnN0YW5jZW9mIEFycmF5KSB7CiAgICAgICAgICAgICBrZXlDb2x1bW5IZWFkZXJG
cmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiWyIpKTsKQEAgLTI5
OCw2ICszMDEsOCBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIga2V5ID0gdGhpcy5fcGFyc2VLZXkodGhpcy5fa2V5SW5wdXRFbGVtZW50LnZhbHVl
KTsKICAgICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5fcGFnZVNpemU7CiAgICAgICAgIHZhciBz
a2lwQ291bnQgPSB0aGlzLl9za2lwQ291bnQ7CisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b24u
c2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIHRoaXMuX2NsZWFyQnV0dG9uLnNldEVuYWJsZWQo
IXRoaXMuX2lzSW5kZXgpOwogCiAgICAgICAgIGlmICghZm9yY2UgJiYgdGhpcy5fbGFzdEtleSA9
PT0ga2V5ICYmIHRoaXMuX2xhc3RQYWdlU2l6ZSA9PT0gcGFnZVNpemUgJiYgdGhpcy5fbGFzdFNr
aXBDb3VudCA9PT0gc2tpcENvdW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDYgKzMy
MSw3IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAq
LwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlbnRyaWVzLCBoYXNNb3JlKQogICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7CiAgICAg
ICAgICAgICB0aGlzLmNsZWFyKCk7CiAgICAgICAgICAgICB0aGlzLl9lbnRyaWVzID0gZW50cmll
czsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkg
ewpAQCAtMzQ2LDkgKzM1MiwxOSBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91cGRhdGVEYXRhKHRydWUpOwogICAgIH0sCiAKKyAgICBfY2xl
YXJCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9u
IGNsZWFyZWQocmVzdWx0KSB7CisgICAgICAgICAgICB0aGlzLl9jbGVhckJ1dHRvbi5zZXRFbmFi
bGVkKHRydWUpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGF0YSh0cnVlKTsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLl9jbGVhckJ1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAg
dGhpcy5fbW9kZWwuY2xlYXJPYmplY3RTdG9yZSh0aGlzLl9kYXRhYmFzZUlkLCB0aGlzLl9vYmpl
Y3RTdG9yZS5uYW1lLCBjbGVhcmVkLmJpbmQodGhpcykpOworICAgIH0sCisKICAgICBnZXQgc3Rh
dHVzQmFySXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0dG9u
LmVsZW1lbnRdOworICAgICAgICByZXR1cm4gW3RoaXMuX3JlZnJlc2hCdXR0b24uZWxlbWVudCwg
dGhpcy5fY2xlYXJCdXR0b24uZWxlbWVudF07CiAgICAgfSwKIAogICAgIGNsZWFyOiBmdW5jdGlv
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcwppbmRleCA4ODA2MjY5Y2M4OWQyYzE1NWJhZjNhY2U2YWEwNDQyYmY4MDQ4YzY4
Li5kYWViZmFjNDQyYjhlZmQ1YTg4YTM3YzljMmFjNmExZjgzZWM3ZDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAg
LTE3MjksNiArMTcyOSwyNyBAQCBXZWJJbnNwZWN0b3IuSURCT2JqZWN0U3RvcmVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRoaXMuX2Rh
dGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWUgKyAi
LyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lOwogICAgIH0sCiAKKyAgICBvbmF0dGFjaDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1l
bnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4
dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB9LAorCisgICAgX2hhbmRsZUNvbnRl
eHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRleHRN
ZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CisgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGVhciIpLCB0aGlzLl9j
bGVhck9iamVjdFN0b3JlLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7
CisgICAgfSwKKworICAgIF9jbGVhck9iamVjdFN0b3JlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpIHsKKyAgICAgICAgICAgIHRoaXMudXBkYXRl
KHRoaXMuX29iamVjdFN0b3JlKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9tb2RlbC5jbGVh
ck9iamVjdFN0b3JlKHRoaXMuX2RhdGFiYXNlSWQsIHRoaXMuX29iamVjdFN0b3JlLm5hbWUsIGNh
bGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLk9iamVjdFN0b3JlfSBvYmplY3RTdG9yZQogICAgICAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CmluZGV4IDNlYWNjNDQ1NTZjZTc0NTU2YTNmODYxMTVlNWU3M2Y1MzQ3MmJmZjYuLjAwMDJhNGFi
NDBjNjNhODE5MjdiNTBjODM3NDZkN2U3NGU0ODg5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTIyNDIsNiArMjI0MiwxMCBA
QCBib2R5LmluYWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMgewogICAg
IC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTEyOHB4IDA7CiB9CiAKKy5jbGVhci1zdG9yYWdlLXN0
YXR1cy1iYXItaXRlbSAuZ2x5cGggeworICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTY0cHgg
MDsKK30KKwogLnJlZnJlc2gtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKICAgICAt
d2Via2l0LW1hc2stcG9zaXRpb246IDAgMDsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTk2MzYzNGExNzU3ZmNkMTcy
NDI1YWFhNjBjN2QyY2Y5OGE1MGNkLi45MTdmZDhjYjc3NjdlODI2YjAzMjUxZTExNDQ2MzgxMzY0
ZjAzNGY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDMtMTggIEFsZWMgRmxldHQgIDxh
bGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluc3BlY3RvcjogSW5kZXhlZERCIGNs
ZWFyIGJ1dHRvbiBhbmQgbWVudSBpdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTIwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBWc2V2b2xvZCBW
bGFzb3YuCisKKyAgICAgICAgQWRkIGV4dHJhIG1ldGhvZHMgdG8gdGVzdCBjbGVhcmluZyB0aGUg
ZGF0YWJhc2UgYWZ0ZXIgcG9wdWxhdGluZyBpdC4KKwogMjAxMy0wMy0xOSAgw4Fkw6FtIEthbGxh
aSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLiBTa2lwIHNvbWUgZmFpbGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1k
YXRhLWV4cGVjdGVkLnR4dAppbmRleCA5N2UwZmRkYTYyNDk2MTdlOGQ2YTJiNmU4MzI5YzBkNjIx
YmJmZjU1Li4zZTlkODliNDk1NzQ1YjhkMzA4MjNiNjdhZDJiZWU0YmIzYjY5MjM4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Ut
ZGF0YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC02MSw0ICs2MSw3IEBAIER1
bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSB0cnVlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9
IDIsIGlkYktleVJhbmdlID0gbnVsCiAgICAgS2V5ID0gdmFsdWVfMDEsIHByaW1hcnlLZXkgPSBr
ZXlfMDEsIHZhbHVlID0geyJrZXkiOiJrZXlfMDEiLCJ2YWx1ZSI6InZhbHVlXzAxIn0KICAgICBL
ZXkgPSB2YWx1ZV8wMiwgcHJpbWFyeUtleSA9IGtleV8wMiwgdmFsdWUgPSB7ImtleSI6ImtleV8w
MiIsInZhbHVlIjoidmFsdWVfMDIifQogICAgIGhhc01vcmUgPSB0cnVlCitDbGVhcmVkIGRhdGEg
ZnJvbSBvYmplY3RTdG9yZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lw
Q291bnQgPSAwLCBwYWdlU2l6ZSA9IDEwLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBoYXNNb3Jl
ID0gZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKaW5kZXggMTM2M2YyZTk0M2ExZTM0
NmEwOWZmYTUyNzczYzZkZGY0YTM2NWQzZC4uZTZhMTUyMjUwZWEyNmRmY2JlYzllMGFhZWM1MmI4
OWJmNWUyNTNkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCkBAIC0xNzksMTIgKzE3OSwz
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNsZWFyRGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJ1bkNsZWFyVGVz
dHMoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNsZWFyRGF0YWJhc2UoKQor
ICAgIGZ1bmN0aW9uIHJ1bkNsZWFyVGVzdHMoKQogICAgIHsKKyAgICAgICAgaW5kZXhlZERCTW9k
ZWwuY2xlYXJPYmplY3RTdG9yZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZU5hbWUsIHN0ZXAxKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkNsZWFyZWQgZGF0YSBmcm9tIG9iamVj
dFN0b3JlIik7CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDEoKSB7CisgICAgICAgICAgICBpbmRl
eGVkREJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5F
dmVudFR5cGVzLkRhdGFiYXNlTG9hZGVkLCBzdGVwMik7CisgICAgICAgICAgICBpbmRleGVkREJN
b2RlbC5yZWZyZXNoRGF0YWJhc2UoZGF0YWJhc2VJZCk7CisgICAgICAgIH0KKyAgICAgICAgZnVu
Y3Rpb24gc3RlcDIoKSB7CisgICAgICAgICAgICBpbmRleGVkREJNb2RlbC5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9h
ZGVkLCBzdGVwMik7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwg
MCwgMTAsIHN0ZXAzKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkgewor
ICAgICAgICAgICAgZGVsZXRlRGF0YWJhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIGRlbGV0ZURhdGFiYXNlKCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmRlbGV0ZU9i
amVjdFN0b3JlSW5kZXgobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCBpbmRleE5hbWUsIHN0ZXAyKTsKIAogICAgICAgICBmdW5jdGlvbiBzdGVwMigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>