<?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>96158</bug_id>
          
          <creation_ts>2012-09-07 16:52:12 -0700</creation_ts>
          <short_desc>Need API to suppress scrollbar animations</short_desc>
          <delta_ts>2012-09-10 17:37:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>mifenton</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715124</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-07 16:52:12 -0700</bug_when>
    <thetext>We need WK2 API to suppress overlay scrollbar animations.

&lt;rdar://problem/12210972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715151</commentid>
    <comment_count>1</comment_count>
      <attachid>162913</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-07 17:08:44 -0700</bug_when>
    <thetext>Created attachment 162913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715156</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 17:13:10 -0700</bug_when>
    <thetext>Attachment 162913 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/page/FrameView.cpp:2759:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715157</commentid>
    <comment_count>3</comment_count>
      <attachid>162916</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-07 17:16:02 -0700</bug_when>
    <thetext>Created attachment 162916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715218</commentid>
    <comment_count>4</comment_count>
      <attachid>162916</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-07 19:04:51 -0700</bug_when>
    <thetext>Comment on attachment 162916
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2747
&gt; +    if (Page* page = m_frame-&gt;page()) {
&gt; +        if (page-&gt;shouldSuppressScrollbarAnimations())
&gt; +            return false;
&gt; +    }

Adding this code to the function makes it no longer “is on active page”, so I think you need to either rename the function or move this additional check elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716630</commentid>
    <comment_count>5</comment_count>
      <attachid>163239</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-10 16:00:33 -0700</bug_when>
    <thetext>Created attachment 163239
Patch

You&apos;re right. I really think that the function should change it&apos;s name rather than separating the two concepts. All of the callers of isOnActivePage() use that function to learn whether scrollbar painting and animating should proceed, so the function should just be re-named to reflect that. Here&apos;s a patch with a go at a new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716699</commentid>
    <comment_count>6</comment_count>
      <attachid>163239</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-10 17:05:37 -0700</bug_when>
    <thetext>Comment on attachment 163239
Patch

Attachment 163239 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13806545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716725</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-10 17:37:52 -0700</bug_when>
    <thetext>Thanks Sam! Committed change with http://trac.webkit.org/changeset/128134

I think I got all the build-fixing done in there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162913</attachid>
            <date>2012-09-07 17:08:44 -0700</date>
            <delta_ts>2012-09-07 17:16:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>21600</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzkzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTA3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTgKKyAgICAgICAgTmVlZCBBUEkgdG8gc3VwcHJlc3Mgc2Ny
b2xsYmFyIGFuaW1hdGlvbnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTIyMTA5NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFnZSBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIHdoaWNoIGlu
ZGljYXRlZCB3aGV0aGVyIHNjcm9sbGJhciAKKyAgICAgICAgYW5pbWF0aW9ucyBmb3IgYWxsIHNj
cm9sbGJhcnMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgcGFnZSBzaG91bGQgYmUgCisgICAgICAgIHN1
cHByZXNzZWQuIFdoZW5ldmVyIGl0IGlzIHNldCB0byB0cnVlIChtZWFuaW5nIHRoZSBhbmltYXRp
b25zIAorICAgICAgICBzaG91bGQgYmUgc3VwcHJlc3NlZCksIFBhZ2UgaXRlcmF0ZXMgdGhyb3Vn
aCBhbGwgb2YgdGhlIAorICAgICAgICBTY3JvbGxhYmxlQXJlYXMgdG8gdGVsbCBlYWNoIG9uZSB0
byBmaW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpLgorICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9u
cyk6CisgICAgICAgIChQYWdlKToKKworICAgICAgICBGcmFtZVZpZXc6OmlzT25BY3RpdmVQYWdl
KCkgd2lsbCBub3cgcmV0dXJuIGZhbHNlIGlmIHRoZSBQYWdlIHNheXMgCisgICAgICAgIHRoYXQg
c2Nyb2xsYmFyIGFuaW1hdGlvbnMgc2hvdWxkIGJlIHN1cHByZXNzZWQuIAorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aXNPbkFjdGl2
ZVBhZ2UpOgorCisgICAgICAgIGlzT25BY3RpdmVQYWdlKCkgbXVzdCBub3cgYmUgYSBwdWJsaWMg
bWVtYmVyIG9mIEZyYW1lVmlldyBzbyB0aGF0IGl0IAorICAgICAgICBjYW4gYmUgY2FsbGVkIGZy
b20gUmVuZGVyTGF5ZXIgYW5kIFJlbmRlckxpc3RCb3guCisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisKKyAgICAgICAgUmVuZGVyTGF5ZXIgYW5kIFJl
bmRlckxpc3RCb3ggc2hvdWxkIGNhbGwgaW50byBGcmFtZVZpZXcncyAKKyAgICAgICAgaXNPbkFj
dGl2ZVBhZ2UoKSBzbyB0aGF0IHRoZXkgYWxzbyByZXR1cm4gZmFsc2Ugd2hlbiBQYWdlOjogCisg
ICAgICAgIHNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGlzIHRydWUuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjppc09uQWN0aXZlUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6aXNPbkFjdGl2ZVBhZ2Up
OgorCisgICAgICAgIE5ldyBTY3JvbGxBbmltYXRvciBmdW5jdGlvbiBjYWxscyBoaWRlT3Zlcmxh
eVNjcm9sbGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25z
KToKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZmluaXNoQ3Vy
cmVudFNjcm9sbEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFNjcm9sbGFibGVBcmVhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDoKKyAgICAgICAgKFNjcm9sbEFu
aW1hdG9yTWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6ZmluaXNoQ3VycmVudFNjcm9s
bEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUg
b25lIGNhbGxlciBvZiBTY3JvbGxhYmxlQXJlYTo6aXNPbkFjdGl2ZVBhZ2UoKSB0aGF0IAorICAg
ICAgICBuZWVkcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBzY3JvbGxiYXItc3VwcHJlc3Np
bmcgc2NlbmFyaW8gYW5kIAorICAgICAgICB0aGUgaW4tdGhlLXBhZ2UtY2FjaGUgc2NlbmFyaW8u
CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpzZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlKToKKwogMjAxMi0w
OS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBB
WDogV2ViQ29yZSBhY2Nlc3NpYmlsaXR5IHJvbGVzIHNob3VsZCBiZSBjcm9zcy1wbGF0Zm9ybQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDcgQEAgX19a
TjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZQogX19aTjdXZWJDb3JlNFBhZ2Uz
MXNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAogX19aTjdXZWJDb3JlNFBhZ2UzMnNl
dE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkRWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0V2CitfX1pON1dlYkNvcmU0UGFnZTM2c2V0
U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zRWIKIF9fWk43V2ViQ29yZTRQYWdlMzZz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2Uz
N3NldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGVFYgogX19aTjdXZWJDb3JlNFBh
Z2U0M3NldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGRFeQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTI3NzgxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdX
aW5kbwogCiAgICAgICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFz
LT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEgPSAqaXQ7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEt
PmlzT25BY3RpdmVQYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5p
c09uQWN0aXZlUGFnZSgpIHx8IG1fcGFnZS0+c2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zKCkpOwogCiAgICAgICAgICAgICBjb250ZW50QXJlYURpZFNob3dPckhpZGUoc2Nyb2xsYWJs
ZUFyZWEsIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzcsMTAgKzI3MzcsMTkg
QEAgYm9vbCBGcmFtZVZpZXc6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkg
IT0gdGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKHBhZ2UtPnNob3VsZFN1cHByZXNzU2Nyb2xs
YmFyQW5pbWF0aW9ucygpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aW5QYWdlQ2FjaGUoKTsKKwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAxMjc3
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjAsNiArMzIwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBJbnRQb2ludCBjdXJyZW50
TW91c2VQb3NpdGlvbigpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdl
KCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9u
Y2UgcGx1Z2luIGxvYWRpbmcgaXMgZGVjb3VwbGVkIGZyb20gbGF5b3V0LgogICAgIHZvaWQgZmx1
c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKQEAgLTQxMCw3ICs0MTIsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFNpemUmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3Jv
bGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50
cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCiAgICAgLCBtX3BhZ2VTY2Fs
ZUZhY3RvcigxKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQorICAgICwgbV9zdXBwcmVz
c1Njcm9sbGJhckFuaW1hdGlvbnMoZmFsc2UpCiAgICAgLCBtX2phdmFTY3JpcHRVUkxzQXJlQWxs
b3dlZCh0cnVlKQogICAgICwgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQoZmFsc2UpCiAgICAgLCBt
X3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSgwKQpAQCAtNjkzLDYgKzY5NCw0NiBAQCB2
b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjCiAgICAgcGFnZUNhY2hlKCkt
Pm1hcmtQYWdlc0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KIAordm9pZCBQYWdlOjpzZXRT
aG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMp
Cit7CisgICAgaWYgKHN1cHByZXNzQW5pbWF0aW9ucyA9PSBtX3N1cHByZXNzU2Nyb2xsYmFyQW5p
bWF0aW9ucykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzdXBwcmVzc0FuaW1hdGlvbnMp
IHsKKyAgICAgICAgLy8gSWYgYW5pbWF0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIHN1cHByZXNz
ZWQgYW55bW9yZSwgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGhlcmUgYnV0CisgICAgICAg
IC8vIGNoYW5nZSB0aGUgY2FjaGVkIHZhbHVlLgorICAgICAgICBtX3N1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyA9IHN1cHByZXNzQW5pbWF0aW9uczsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB3ZSBhcmUgZ29pbmcgdG8gc3RhcnQgc3Vw
cHJlc3NpbmcgYW5pbWF0aW9ucywgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZQorICAgIC8v
IGZpbmlzaCBhbnkgY3VycmVudCBzY3JvbGwgYW5pbWF0aW9ucyBmaXJzdC4KKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtYWluRnJhbWUoKS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgdmlldy0+ZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAg
ICAKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBz
Y3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOworICAgICAgICBp
ZiAoIXNjcm9sbGFibGVBcmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZv
ciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjcm9sbGFi
bGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSAq
aXQ7CisgICAgICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEtPmlzT25BY3RpdmVQYWdlKCkp
OworCisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+ZmluaXNoQ3VycmVudFNjcm9sbEFuaW1h
dGlvbnMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zID0gc3VwcHJlc3NBbmltYXRpb25zOworfQorCiB2b2lkIFBhZ2U6OnNldFBhZ2luYXRp
b24oY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbikKIHsKICAgICBpZiAobV9wYWdpbmF0aW9u
ID09IHBhZ2luYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTI3NzgxKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQogICAgICAgICB2b2lkIHNl
dERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKIAorICAgICAgICBib29sIHNob3VsZFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NTY3JvbGxiYXJB
bmltYXRpb25zOyB9CisgICAgICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKTsKKwogICAgICAgICAvLyBQYWdlIGFuZCBG
cmFtZVZpZXcgYm90aCBzdG9yZSBhIFBhZ2luYXRpb24gdmFsdWUuIFBhZ2U6OnBhZ2luYXRpb24o
KSBpcyBzZXQgb25seSBieSBBUEksCiAgICAgICAgIC8vIGFuZCBGcmFtZVZpZXc6OnBhZ2luYXRp
b24oKSBpcyBzZXQgb25seSBieSBDU1MuIFBhZ2U6OnBhZ2luYXRpb24oKSB3aWxsIGFmZmVjdCBh
bGwKICAgICAgICAgLy8gRnJhbWVWaWV3cyBpbiB0aGUgcGFnZSBjYWNoZSwgYnV0IEZyYW1lVmll
dzo6cGFnaW5hdGlvbigpIG9ubHkgYWZmZWN0cyB0aGUgY3VycmVudApAQCAtMzk2LDYgKzM5OSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7
CiAgICAgICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAKKyAgICAgICAgYm9vbCBtX3N1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsKKwogICAgICAgICBQYWdpbmF0aW9uIG1fcGFnaW5h
dGlvbjsKIAogICAgICAgICBib29sIG1famF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiAxMjc3ODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudEFy
ZWFEaWRTaG93KCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRBcmVhRGlkSGlk
ZSgpIGNvbnN0IHsgfQogCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaEN1cnJlbnRTY3JvbGxBbmlt
YXRpb25zKCkgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWZXJ0aWNhbFNjcm9s
bGJhcihTY3JvbGxiYXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niwx
MiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpjb250ZW50QXJlYURpZEhpZGUoCiAgICAgICAgIHNj
cm9sbEFuaW1hdG9yLT5jb250ZW50QXJlYURpZEhpZGUoKTsKIH0KIAordm9pZCBTY3JvbGxhYmxl
QXJlYTo6ZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIGlmIChT
Y3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkp
CisgICAgICAgIHNjcm9sbEFuaW1hdG9yLT5maW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygp
OworfQorCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBzY3JvbGxBbmltYXRvcigpLT5kaWRBZGRWZXJ0aWNh
bFNjcm9sbGJhcihzY3JvbGxiYXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbnRlbnRBcmVhRGlkU2hvdygpIGNvbnN0OwogICAgIHZvaWQgY29udGVu
dEFyZWFEaWRIaWRlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGZpbmlzaEN1cnJlbnRTY3JvbGxBbmlt
YXRpb25zKCkgY29uc3Q7CisKICAgICB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciopOwogICAgIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZFNjcm9sbEdlc3R1cmUoKSBjb25zdDsKICAgICB2b2lkIG1h
eUJlZ2luU2Nyb2xsR2VzdHVyZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaEN1
cnJlbnRTY3JvbGxBbmltYXRpb25zKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGlj
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWZXJ0
aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpv
bnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDEyNzc4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODcwLDYgKzg3MCwxMyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptYXlCZWdp
blNjcm9sbEdlCiAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkgY29udGVu
dEFyZWFTY3JvbGxlZF07CiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmZpbmlzaEN1cnJl
bnRTY3JvbGxBbmltYXRpb25zKCkKK3sKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpIHsKKyAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkg
aGlkZU92ZXJsYXlTY3JvbGxlcnNdOworICAgIH0KK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAg
aWYgKCFpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIx
Miw3ICsyMjEyLDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZFN1c3BlbmRTY3JvbGxBbmkK
IAogYm9vbCBSZW5kZXJMYXllcjo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAogewotICAgIHJldHVy
biAhbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKKyAgICBSZW5kZXJWaWV3
KiB2aWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB2aWV3LT5mcmFtZVZpZXcoKS0+aXNPbkFjdGl2ZVBhZ2Uo
KTsKIH0KIAogSW50UG9pbnQgUmVuZGVyTGF5ZXI6OmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJl
dmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIzLDcgKzgyMywxMCBAQCBib29sIFJlbmRlckxpc3RC
b3g6OnNob3VsZFN1c3BlbmRTY3JvbGxBCiAKIGJvb2wgUmVuZGVyTGlzdEJveDo6aXNPbkFjdGl2
ZVBhZ2UoKSBjb25zdAogewotICAgIHJldHVybiAhZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsK
KyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gdGhpcy0+dmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aWV3LT5mcmFtZVZpZXcoKS0+aXNPbkFj
dGl2ZVBhZ2UoKTsKIH0KIAogU2Nyb2xsYWJsZUFyZWEqIFJlbmRlckxpc3RCb3g6OmVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzkzOSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTA5LTA3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTgKKyAgICAgICAg
TmVlZCBBUEkgdG8gc3VwcHJlc3Mgc2Nyb2xsYmFyIGFuaW1hdGlvbnMKKyAgICAgICAgLWFuZCBj
b3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIyMTA5NzI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHByZXNzU2Ny
b2xsYmFyQW5pbWF0aW9ucyBhcyBhIFdlYkNyZWF0aW9uUGFyYW1ldGVyLgorICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzKToKKworICAgICAgICBOZXcgQVBJLiBDYWxscyBpbnRvIHRoZSB3ZWIgcHJv
Y2VzcyBmb3IgdGhlIHNldHRlciBidXQgbm90IHRoZSAKKyAgICAgICAgZ2V0dGVyLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0U3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKToKKyAgICAgICAgKFdLUGFnZUFyZVNjcm9sbGJhckFuaW1h
dGlvbnNTdXBwcmVzc2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHBy
ZXNzZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCisgICAgICAgIENhbGwgaW50byBXZWJDb3JlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U3VwcHJlc3NT
Y3JvbGxiYXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorCiAyMDEyLTA5LTA3
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAg
ICAgW0VGTF0gVXNlIHNhbWUgZGVmYXVsdCBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplIGluIERS
VCBhbmQgV1RSCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYg
KzY3LDggQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNl
Rml4ZWRMYXlvdXQ7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBmaXhlZExheW91dFNpemU7CiAKKyAg
ICBib29sIHN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsKKwogICAgIFdlYkNvcmU6OlBhZ2lu
YXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGU7CiAgICAgYm9vbCBwYWdpbmF0aW9uQmVoYXZlc0xp
a2VDb2x1bW5zOwogICAgIGRvdWJsZSBwYWdlTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMs
NiArMTgzLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcAogICAg
ICwgbV9kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSkKICAgICAsIG1fYXJlTWVtb3J5
Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFs
c2UpCisgICAgLCBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhmYWxzZSkKICAgICAsIG1f
cGFnaW5hdGlvbk1vZGUoUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpCiAgICAgLCBtX3BhZ2luYXRp
b25CZWhhdmVzTGlrZUNvbHVtbnMoZmFsc2UpCiAgICAgLCBtX3BhZ2VMZW5ndGgoMCkKQEAgLTE1
MDIsNiArMTUwMywxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNv
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNp
emUoc2l6ZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9ucykKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN1cHByZXNzQW5pbWF0aW9u
cyA9PSBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMgPSBzdXBwcmVzc0FuaW1hdGlvbnM7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBt
b2RlKQogewogICAgIGlmIChtb2RlID09IG1fcGFnaW5hdGlvbk1vZGUpCkBAIC0zNjEzLDYgKzM2
MjYsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgcGFy
YW1ldGVycy5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCA9IG1fYXJlTWVtb3J5Q2Fj
aGVDbGllbnRDYWxsc0VuYWJsZWQ7CiAgICAgcGFyYW1ldGVycy51c2VGaXhlZExheW91dCA9IG1f
dXNlRml4ZWRMYXlvdXQ7CiAgICAgcGFyYW1ldGVycy5maXhlZExheW91dFNpemUgPSBtX2ZpeGVk
TGF5b3V0U2l6ZTsKKyAgICBwYXJhbWV0ZXJzLnN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyA9
IG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zOwogICAgIHBhcmFtZXRlcnMucGFnaW5hdGlv
bk1vZGUgPSBtX3BhZ2luYXRpb25Nb2RlOwogICAgIHBhcmFtZXRlcnMucGFnaW5hdGlvbkJlaGF2
ZXNMaWtlQ29sdW1ucyA9IG1fcGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczsKICAgICBwYXJh
bWV0ZXJzLnBhZ2VMZW5ndGggPSBtX3BhZ2VMZW5ndGg7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyOyB9CiAgICAgYm9vbCBoYXNW
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSGFzVmVydGljYWxT
Y3JvbGxiYXI7IH0KIAorICAgIHZvaWQgc2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJv
b2wpOworICAgIGJvb2wgYXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoKSBjb25zdCB7
IHJldHVybiBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsgfQorCiAgICAgYm9vbCBpc1Bp
bm5lZFRvTGVmdFNpZGUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUlzUGlubmVkVG9MZWZ0
U2lkZTsgfQogICAgIGJvb2wgaXNQaW5uZWRUb1JpZ2h0U2lkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0U2lkZTsgfQogCkBAIC0xMDk2LDYgKzEwOTksOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV91c2VGaXhlZExheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fZml4ZWRMYXlvdXRTaXplOwogCisgICAgYm9vbCBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0
aW9uczsKKwogICAgIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbV9wYWdpbmF0aW9uTW9kZTsK
ICAgICBib29sIG1fcGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczsKICAgICBkb3VibGUgbV9w
YWdlTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNiArMzQwLDE2IEBAIGJvb2wgV0tQYWdl
SGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmUKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYp
LT5oYXNWZXJ0aWNhbFNjcm9sbGJhcigpOwogfQogCit2b2lkIFdLUGFnZVNldFN1cHByZXNzU2Ny
b2xsYmFyQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBzdXBwcmVzc0FuaW1hdGlv
bnMpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlv
bnMoc3VwcHJlc3NBbmltYXRpb25zKTsKK30KKworYm9vbCBXS1BhZ2VBcmVTY3JvbGxiYXJBbmlt
YXRpb25zU3VwcHJlc3NlZChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5hcmVTY3JvbGxiYXJBbmltYXRpb25zU3VwcHJlc3NlZCgpOworfQorCiBib29s
IFdLUGFnZUlzUGlubmVkVG9MZWZ0U2lkZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2VSZWYpLT5pc1Bpbm5lZFRvTGVmdFNpZGUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIy
LDYgKzQyMiw5IEBAIFdLX0VYUE9SVCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFcKIFdL
X0VYUE9SVCBib29sIFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2Up
OwogV0tfRVhQT1JUIGJvb2wgV0tQYWdlSGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBh
Z2UpOwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlv
bnMoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKTsKK1dLX0VYUE9SVCBi
b29sIFdLUGFnZUFyZVNjcm9sbGJhckFuaW1hdGlvbnNTdXBwcmVzc2VkKFdLUGFnZVJlZiBwYWdl
KTsKKwogV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNQaW5uZWRUb0xlZnRTaWRlKFdLUGFnZVJlZiBw
YWdlKTsKIFdLX0VYUE9SVCBib29sIFdLUGFnZUlzUGlubmVkVG9SaWdodFNpZGUoV0tQYWdlUmVm
IHBhZ2UpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjQsNiArMTEyNCwxMSBA
QCB2b2lkIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJCiAgICAgICAgIHZpZXct
PmZvcmNlTGF5b3V0KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJB
bmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQoreworICAgIG1fcGFnZS0+c2V0U2hv
dWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyk7Cit9CisK
IHZvaWQgV2ViUGFnZTo6c2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3QgbW9kZSkKIHsKICAgICBQ
YWdpbmF0aW9uIHBhZ2luYXRpb24gPSBtX3BhZ2UtPnBhZ2luYXRpb24oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTI3Nzgx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzA5LDYgKzMwOSw4IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUZpeGVkTGF5
b3V0KCkgY29uc3QgeyByZXR1cm4gbV91c2VGaXhlZExheW91dDsgfQogICAgIHZvaWQgc2V0Rml4
ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAorICAgIHZvaWQgc2V0U3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wpOworCiAgICAgdm9pZCBzZXRQYWdpbmF0aW9u
TW9kZSh1aW50MzJfdCAvKiBXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlICovKTsKICAgICB2b2lk
IHNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCk7CiAgICAgdm9pZCBzZXRQYWdl
TGVuZ3RoKGRvdWJsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTI3NzgxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTE0MCw2ICsxNDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBT
ZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJD
b3JlOjpJbnRTaXplIHNpemUpCiAKKyAgICBTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMo
Ym9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCisKICAgICBTZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJf
dCBtb2RlKTsKICAgICBTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZl
c0xpa2VDb2x1bW5zKTsKICAgICBTZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162916</attachid>
            <date>2012-09-07 17:16:02 -0700</date>
            <delta_ts>2012-09-10 16:00:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>21587</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzkzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTA3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTgKKyAgICAgICAgTmVlZCBBUEkgdG8gc3VwcHJlc3Mgc2Ny
b2xsYmFyIGFuaW1hdGlvbnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTIyMTA5NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFnZSBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIHdoaWNoIGlu
ZGljYXRlZCB3aGV0aGVyIHNjcm9sbGJhciAKKyAgICAgICAgYW5pbWF0aW9ucyBmb3IgYWxsIHNj
cm9sbGJhcnMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgcGFnZSBzaG91bGQgYmUgCisgICAgICAgIHN1
cHByZXNzZWQuIFdoZW5ldmVyIGl0IGlzIHNldCB0byB0cnVlIChtZWFuaW5nIHRoZSBhbmltYXRp
b25zIAorICAgICAgICBzaG91bGQgYmUgc3VwcHJlc3NlZCksIFBhZ2UgaXRlcmF0ZXMgdGhyb3Vn
aCBhbGwgb2YgdGhlIAorICAgICAgICBTY3JvbGxhYmxlQXJlYXMgdG8gdGVsbCBlYWNoIG9uZSB0
byBmaW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpLgorICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9u
cyk6CisgICAgICAgIChQYWdlKToKKworICAgICAgICBGcmFtZVZpZXc6OmlzT25BY3RpdmVQYWdl
KCkgd2lsbCBub3cgcmV0dXJuIGZhbHNlIGlmIHRoZSBQYWdlIHNheXMgCisgICAgICAgIHRoYXQg
c2Nyb2xsYmFyIGFuaW1hdGlvbnMgc2hvdWxkIGJlIHN1cHByZXNzZWQuIAorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aXNPbkFjdGl2
ZVBhZ2UpOgorCisgICAgICAgIGlzT25BY3RpdmVQYWdlKCkgbXVzdCBub3cgYmUgYSBwdWJsaWMg
bWVtYmVyIG9mIEZyYW1lVmlldyBzbyB0aGF0IGl0IAorICAgICAgICBjYW4gYmUgY2FsbGVkIGZy
b20gUmVuZGVyTGF5ZXIgYW5kIFJlbmRlckxpc3RCb3guCisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisKKyAgICAgICAgUmVuZGVyTGF5ZXIgYW5kIFJl
bmRlckxpc3RCb3ggc2hvdWxkIGNhbGwgaW50byBGcmFtZVZpZXcncyAKKyAgICAgICAgaXNPbkFj
dGl2ZVBhZ2UoKSBzbyB0aGF0IHRoZXkgYWxzbyByZXR1cm4gZmFsc2Ugd2hlbiBQYWdlOjogCisg
ICAgICAgIHNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGlzIHRydWUuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjppc09uQWN0aXZlUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6aXNPbkFjdGl2ZVBhZ2Up
OgorCisgICAgICAgIE5ldyBTY3JvbGxBbmltYXRvciBmdW5jdGlvbiBjYWxscyBoaWRlT3Zlcmxh
eVNjcm9sbGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25z
KToKKyAgICAgICAgKFNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZmluaXNoQ3Vy
cmVudFNjcm9sbEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFNjcm9sbGFibGVBcmVhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDoKKyAgICAgICAgKFNjcm9sbEFu
aW1hdG9yTWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6ZmluaXNoQ3VycmVudFNjcm9s
bEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUg
b25lIGNhbGxlciBvZiBTY3JvbGxhYmxlQXJlYTo6aXNPbkFjdGl2ZVBhZ2UoKSB0aGF0IAorICAg
ICAgICBuZWVkcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBzY3JvbGxiYXItc3VwcHJlc3Np
bmcgc2NlbmFyaW8gYW5kIAorICAgICAgICB0aGUgaW4tdGhlLXBhZ2UtY2FjaGUgc2NlbmFyaW8u
CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpzZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlKToKKwogMjAxMi0w
OS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBB
WDogV2ViQ29yZSBhY2Nlc3NpYmlsaXR5IHJvbGVzIHNob3VsZCBiZSBjcm9zcy1wbGF0Zm9ybQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDcgQEAgX19a
TjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZQogX19aTjdXZWJDb3JlNFBhZ2Uz
MXNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAogX19aTjdXZWJDb3JlNFBhZ2UzMnNl
dE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkRWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0V2CitfX1pON1dlYkNvcmU0UGFnZTM2c2V0
U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zRWIKIF9fWk43V2ViQ29yZTRQYWdlMzZz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2Uz
N3NldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGVFYgogX19aTjdXZWJDb3JlNFBh
Z2U0M3NldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGRFeQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTI3NzgxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdX
aW5kbwogCiAgICAgICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFz
LT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEgPSAqaXQ7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEt
PmlzT25BY3RpdmVQYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5p
c09uQWN0aXZlUGFnZSgpIHx8IG1fcGFnZS0+c2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zKCkpOwogCiAgICAgICAgICAgICBjb250ZW50QXJlYURpZFNob3dPckhpZGUoc2Nyb2xsYWJs
ZUFyZWEsIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzcsMTAgKzI3MzcsMTgg
QEAgYm9vbCBGcmFtZVZpZXc6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkg
IT0gdGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKHBhZ2UtPnNob3VsZFN1cHByZXNzU2Nyb2xs
YmFyQW5pbWF0aW9ucygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gIWRvY3VtZW50LT5pblBhZ2VDYWNoZSgpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgb25jZSBwbHVnaW4gbG9h
ZGluZyBpcyBkZWNvdXBsZWQgZnJvbSBsYXlvdXQuCiAgICAgdm9pZCBmbHVzaEFueVBlbmRpbmdQ
b3N0TGF5b3V0VGFza3MoKTsKIApAQCAtNDEwLDcgKzQxMiw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVh
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91
bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlz
aW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50
cykKICAgICAsIG1fbWVkaWFWb2x1bWUoMSkKICAgICAsIG1fcGFnZVNjYWxlRmFjdG9yKDEpCiAg
ICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKDEpCisgICAgLCBtX3N1cHByZXNzU2Nyb2xsYmFyQW5p
bWF0aW9ucyhmYWxzZSkKICAgICAsIG1famF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKHRydWUpCiAg
ICAgLCBtX2RpZExvYWRVc2VyU3R5bGVTaGVldChmYWxzZSkKICAgICAsIG1fdXNlclN0eWxlU2hl
ZXRNb2RpZmljYXRpb25UaW1lKDApCkBAIC02OTMsNiArNjk0LDQ2IEBAIHZvaWQgUGFnZTo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2MKICAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9y
RnVsbFN0eWxlUmVjYWxjKHRoaXMpOwogfQogCit2b2lkIFBhZ2U6OnNldFNob3VsZFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9ucykKK3sKKyAgICBpZiAo
c3VwcHJlc3NBbmltYXRpb25zID09IG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIXN1cHByZXNzQW5pbWF0aW9ucykgeworICAgICAgICAv
LyBJZiBhbmltYXRpb25zIGFyZSBub3QgZ29pbmcgdG8gYmUgc3VwcHJlc3NlZCBhbnltb3JlLCB0
aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVyZSBidXQKKyAgICAgICAgLy8gY2hhbmdlIHRo
ZSBjYWNoZWQgdmFsdWUuCisgICAgICAgIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zID0g
c3VwcHJlc3NBbmltYXRpb25zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT24g
dGhlIG90aGVyIGhhbmQsIGlmIHdlIGFyZSBnb2luZyB0byBzdGFydCBzdXBwcmVzc2luZyBhbmlt
YXRpb25zLCB0aGVuIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCisgICAgLy8gZmluaXNoIGFueSBj
dXJyZW50IHNjcm9sbCBhbmltYXRpb25zIGZpcnN0LgorICAgIEZyYW1lVmlldyogdmlldyA9IG1h
aW5GcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICB2aWV3LT5maW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpOworICAgIAorICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUt
PnZpZXcoKTsKKyAgICAgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4qIHNjcm9sbGFibGVBcmVh
cyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7CisgICAgICAgIGlmICghc2Nyb2xsYWJs
ZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFzLT5iZWdp
bigpLCBlbmQgPSBzY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9ICppdDsKKyAgICAgICAg
ICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYS0+aXNPbkFjdGl2ZVBhZ2UoKSk7CisKKyAgICAgICAg
ICAgIHNjcm9sbGFibGVBcmVhLT5maW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpOworICAg
ICAgICB9CisgICAgfQorCisgICAgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMgPSBzdXBw
cmVzc0FuaW1hdGlvbnM7Cit9CisKIHZvaWQgUGFnZTo6c2V0UGFnaW5hdGlvbihjb25zdCBQYWdp
bmF0aW9uJiBwYWdpbmF0aW9uKQogewogICAgIGlmIChtX3BhZ2luYXRpb24gPT0gcGFnaW5hdGlv
bikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZVNjYWxlRmFjdG9yOyB9CiAgICAgICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpOwogCisgICAgICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnM7IH0K
KyAgICAgICAgdm9pZCBzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBz
dXBwcmVzc0FuaW1hdGlvbnMpOworCiAgICAgICAgIC8vIFBhZ2UgYW5kIEZyYW1lVmlldyBib3Ro
IHN0b3JlIGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5
IGJ5IEFQSSwKICAgICAgICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIGlzIHNldCBv
bmx5IGJ5IENTUy4gUGFnZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0IGFsbAogICAgICAgICAv
LyBGcmFtZVZpZXdzIGluIHRoZSBwYWdlIGNhY2hlLCBidXQgRnJhbWVWaWV3OjpwYWdpbmF0aW9u
KCkgb25seSBhZmZlY3RzIHRoZSBjdXJyZW50CkBAIC0zOTYsNiArMzk5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBmbG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICAgICAgZmxv
YXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKIAorICAgICAgICBib29sIG1fc3VwcHJlc3NTY3JvbGxi
YXJBbmltYXRpb25zOworCiAgICAgICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCiAgICAg
ICAgIGJvb2wgbV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50QXJlYURpZFNob3coKSBj
b25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudEFyZWFEaWRIaWRlKCkgY29uc3QgeyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKSB7IH0K
KwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJh
ciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9s
bGJhciopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDEyIEBAIHZvaWQgU2Ny
b2xsYWJsZUFyZWE6OmNvbnRlbnRBcmVhRGlkSGlkZSgKICAgICAgICAgc2Nyb2xsQW5pbWF0b3It
PmNvbnRlbnRBcmVhRGlkSGlkZSgpOwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpmaW5pc2hD
dXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgaWYgKFNjcm9sbEFuaW1hdG9y
KiBzY3JvbGxBbmltYXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKKyAgICAgICAgc2Ny
b2xsQW5pbWF0b3ItPmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25zKCk7Cit9CisKIHZvaWQg
U2Nyb2xsYWJsZUFyZWE6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogewogICAgIHNjcm9sbEFuaW1hdG9yKCktPmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKHNj
cm9sbGJhcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJ
KHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29udGVudEFyZWFEaWRTaG93KCkgY29uc3Q7CiAgICAgdm9pZCBjb250ZW50QXJlYURpZEhpZGUo
KSBjb25zdDsKIAorICAgIHZvaWQgZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dDsKKwogICAgIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAg
dm9pZCB3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNp
b24gMTI3NzgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kU2Nyb2xsR2VzdHVyZSgpIGNvbnN0OwogICAgIHZvaWQgbWF5QmVnaW5TY3JvbGxH
ZXN0dXJlKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQ3VycmVudFNjcm9sbEFu
aW1hdGlvbnMoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFy
KFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFy
KFNjcm9sbGJhciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NzAs
NiArODcwLDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1heUJlZ2luU2Nyb2xsR2UKICAg
ICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSBjb250ZW50QXJlYVNjcm9sbGVk
XTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZmluaXNoQ3VycmVudFNjcm9sbEFuaW1h
dGlvbnMoKQoreworICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewor
ICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSBoaWRlT3ZlcmxheVNj
cm9sbGVyc107CisgICAgfQorfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRBZGRWZXJ0
aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIWlzU2Nyb2xs
YmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEyLDcgKzIyMTIsMTAg
QEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaQogCiBib29sIFJlbmRl
ckxheWVyOjppc09uQWN0aXZlUGFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX3JlbmRlcmVy
LT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpOworICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5k
ZXJlcigpLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5pc09uQWN0aXZlUGFnZSgpOwogfQogCiBJbnRQ
b2ludCBSZW5kZXJMYXllcjo6Y3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gMTI3Nzgx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MjMsNyArODIzLDEwIEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2hvdWxkU3Vz
cGVuZFNjcm9sbEEKIAogYm9vbCBSZW5kZXJMaXN0Qm94Ojppc09uQWN0aXZlUGFnZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpOworICAgIFJlbmRlclZp
ZXcqIHZpZXcgPSB0aGlzLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5pc09uQWN0aXZlUGFnZSgpOwog
fQogCiBTY3JvbGxhYmxlQXJlYSogUmVuZGVyTGlzdEJveDo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3OTM5KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDkt
MDcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE1OAorICAgICAgICBOZWVkIEFQSSB0byBz
dXBwcmVzcyBzY3JvbGxiYXIgYW5pbWF0aW9ucworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmct
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjIxMDk3Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zIGFzIGEgV2ViQ3JlYXRpb25QYXJhbWV0ZXIuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMp
OgorCisgICAgICAgIE5ldyBBUEkuIENhbGxzIGludG8gdGhlIHdlYiBwcm9jZXNzIGZvciB0aGUg
c2V0dGVyIGJ1dCBub3QgdGhlIAorICAgICAgICBnZXR0ZXIuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFu
aW1hdGlvbnMpOgorICAgICAgICAoV0tQYWdlQXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNz
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjphcmVTY3JvbGxiYXJBbmltYXRpb25zU3VwcHJlc3NlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAg
Q2FsbCBpbnRvIFdlYkNvcmUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisKIDIwMTItMDktMDcgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVc2Ug
c2FtZSBkZWZhdWx0IG1pbmltdW0gbG9naWNhbCBmb250IHNpemUgaW4gRFJUIGFuZCBXVFIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAorICAgIGJvb2wgc3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zOworCiAgICAgV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBw
YWdpbmF0aW9uTW9kZTsKICAgICBib29sIHBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnM7CiAg
ICAgZG91YmxlIHBhZ2VMZW5ndGg7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsNyBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwCiAgICAgLCBtX2RyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKQogICAgICwgbV9hcmVNZW1vcnlDYWNoZUNsaWVudENh
bGxzRW5hYmxlZCh0cnVlKQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxzZSkKKyAgICAsIG1f
c3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGZhbHNlKQogICAgICwgbV9wYWdpbmF0aW9uTW9k
ZShQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCkKICAgICAsIG1fcGFnaW5hdGlvbkJlaGF2ZXNMaWtl
Q29sdW1ucyhmYWxzZSkKICAgICAsIG1fcGFnZUxlbmd0aCgwKQpAQCAtMTUwMiw2ICsxNTAzLDE4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY28KICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV9w
YWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3VwcHJlc3NBbmltYXRpb25zID09IG1fc3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyA9IHN1cHByZXNzQW5pbWF0aW9uczsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhz
dXBwcmVzc0FuaW1hdGlvbnMpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGUpCiB7CiAgICAg
aWYgKG1vZGUgPT0gbV9wYWdpbmF0aW9uTW9kZSkKQEAgLTM2MTMsNiArMzYyNiw3IEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLmFyZU1l
bW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkID0gbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxz
RW5hYmxlZDsKICAgICBwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0ID0gbV91c2VGaXhlZExheW91
dDsKICAgICBwYXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSA9IG1fZml4ZWRMYXlvdXRTaXplOwor
ICAgIHBhcmFtZXRlcnMuc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zID0gbV9zdXBwcmVzc1Nj
cm9sbGJhckFuaW1hdGlvbnM7CiAgICAgcGFyYW1ldGVycy5wYWdpbmF0aW9uTW9kZSA9IG1fcGFn
aW5hdGlvbk1vZGU7CiAgICAgcGFyYW1ldGVycy5wYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5z
ID0gbV9wYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOwogICAgIHBhcmFtZXRlcnMucGFnZUxl
bmd0aCA9IG1fcGFnZUxlbmd0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDYgKzQ4Niw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX21haW5G
cmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXI7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcjsgfQog
CisgICAgdm9pZCBzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCk7CisgICAgYm9v
bCBhcmVTY3JvbGxiYXJBbmltYXRpb25zU3VwcHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zOyB9CisKICAgICBib29sIGlzUGlubmVkVG9MZWZ0U2lk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlOyB9CiAgICAg
Ym9vbCBpc1Bpbm5lZFRvUmlnaHRTaWRlKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJc1Bp
bm5lZFRvUmlnaHRTaWRlOyB9CiAKQEAgLTEwOTYsNiArMTA5OSw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZUZpeGVkTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9maXhlZExheW91
dFNpemU7CiAKKyAgICBib29sIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zOworCiAgICAg
V2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtX3BhZ2luYXRpb25Nb2RlOwogICAgIGJvb2wgbV9w
YWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOwogICAgIGRvdWJsZSBtX3BhZ2VMZW5ndGg7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24g
MTI3NzgxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0MCw2ICszNDAsMTYgQEAgYm9vbCBXS1BhZ2VIYXNWZXJ0aWNhbFNj
cm9sbGJhcihXS1BhZ2VSZQogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKCk7CiB9CiAKK3ZvaWQgV0tQYWdlU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHN1cHByZXNzQW5pbWF0aW9ucykKK3sKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0Fu
aW1hdGlvbnMpOworfQorCitib29sIFdLUGFnZUFyZVNjcm9sbGJhckFuaW1hdGlvbnNTdXBwcmVz
c2VkKFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmFy
ZVNjcm9sbGJhckFuaW1hdGlvbnNTdXBwcmVzc2VkKCk7Cit9CisKIGJvb2wgV0tQYWdlSXNQaW5u
ZWRUb0xlZnRTaWRlKFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0ltcGwocGFn
ZVJlZiktPmlzUGlubmVkVG9MZWZ0U2lkZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gMTI3NzgxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDkgQEAg
V0tfRVhQT1JUIFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUoVwogV0tfRVhQT1JUIGJvb2wg
V0tQYWdlSGFzSG9yaXpvbnRhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
Ym9vbCBXS1BhZ2VIYXNWZXJ0aWNhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VY
UE9SVCB2b2lkIFdLUGFnZVNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhXS1BhZ2VSZWYg
cGFnZSwgYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpOworV0tfRVhQT1JUIGJvb2wgV0tQYWdlQXJl
U2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoV0tQYWdlUmVmIHBhZ2UpOworCiBXS19FWFBP
UlQgYm9vbCBXS1BhZ2VJc1Bpbm5lZFRvTGVmdFNpZGUoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQ
T1JUIGJvb2wgV0tQYWdlSXNQaW5uZWRUb1JpZ2h0U2lkZShXS1BhZ2VSZWYgcGFnZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDEyNzc4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyNCw2ICsxMTI0LDExIEBAIHZvaWQgV2ViUGFn
ZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQo
KTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9v
bCBzdXBwcmVzc0FuaW1hdGlvbnMpCit7CisgICAgbV9wYWdlLT5zZXRTaG91bGRTdXBwcmVzc1Nj
cm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKTsKK30KKwogdm9pZCBXZWJQYWdl
OjpzZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKQogewogICAgIFBhZ2luYXRpb24gcGFn
aW5hdGlvbiA9IG1fcGFnZS0+cGFnaW5hdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDksNiArMzA5LDggQEAgcHVibGljOgogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBtX3VzZUZpeGVkTGF5b3V0OyB9CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCisgICAgdm9pZCBzZXRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMoYm9vbCk7CisKICAgICB2b2lkIHNldFBhZ2luYXRpb25Nb2RlKHVpbnQzMl90
IC8qIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgKi8pOwogICAgIHZvaWQgc2V0UGFnaW5hdGlv
bkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sKTsKICAgICB2b2lkIHNldFBhZ2VMZW5ndGgoZG91Ymxl
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMjc3ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTQwLDYgKzE0MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFVzZUZpeGVkTGF5
b3V0KGJvb2wgZml4ZWQpCiAgICAgU2V0Rml4ZWRMYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUg
c2l6ZSkKIAorICAgIFNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNz
QW5pbWF0aW9ucykKKwogICAgIFNldFBhZ2luYXRpb25Nb2RlKHVpbnQzMl90IG1vZGUpOwogICAg
IFNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMp
OwogICAgIFNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163239</attachid>
            <date>2012-09-10 16:00:33 -0700</date>
            <delta_ts>2012-09-10 17:11:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>34582</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA5LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTgKKyAgICAgICAgTmVlZCBBUEkgdG8gc3VwcHJlc3Mgc2Ny
b2xsYmFyIGFuaW1hdGlvbnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTIyMTA5NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZS1uYW1lcyBTY3JvbGxhYmxlQXJlOjppc09u
QWN0aXZlUGFnZSgpIHRvIAorICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsYmFyc0NhbkJl
QWN0aXZlKCkuIFRoZSBuZXcgbmFtZSBiZXR0ZXIgcmVmbGVjdHMgCisgICAgICAgIGhvdyB0aGUg
ZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXNlZCwgYW5kIGl0IGFsbG93cyB1cyB0byB1c2UgdGhlIHNh
bWUgCisgICAgICAgIGZ1bmN0aW9uIGZvciB0aGUgbmV3IEFQSSB0aGF0IGhhcyBiZWVuIGFkZGVk
IHRvIFdlYktpdDIuIE5vdyB3aGVuIGEgCisgICAgICAgIGNsaWVudCBoYXMgdXNlZCB0aGF0IEFQ
SSB0byBpbmRpY2F0ZSB0aGF0IHNjcm9sbGJhcnMgc2hvdWxkIGJlIAorICAgICAgICBzdXBwcmVz
c2VkLCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgd2lsbCByZXR1cm4g
CisgICAgICAgIGZhbHNlLgorCisgICAgICAgIFBhZ2UgaGFzIGEgbmV3IG1lbWJlciB2YXJpYWJs
ZSB3aGljaCBpbmRpY2F0ZWQgd2hldGhlciBzY3JvbGxiYXIgCisgICAgICAgIGFuaW1hdGlvbnMg
Zm9yIGFsbCBzY3JvbGxiYXJzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHBhZ2Ugc2hvdWxkIGJlIAor
ICAgICAgICBzdXBwcmVzc2VkLiBXaGVuZXZlciBpdCBpcyBzZXQgdG8gdHJ1ZSAobWVhbmluZyB0
aGUgYW5pbWF0aW9ucyAKKyAgICAgICAgc2hvdWxkIGJlIHN1cHByZXNzZWQpLCBQYWdlIGl0ZXJh
dGVzIHRocm91Z2ggYWxsIG9mIHRoZSAKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWFzIHRvIHRlbGwg
ZWFjaCBvbmUgdG8gZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKS4KKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTaG91bGRTdXBwcmVz
c1Njcm9sbGJhckFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzaG91bGRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMpOgorICAgICAgICAoUGFnZSk6CisKKyAgICAgICAgRnJhbWVWaWV3Ojppc09u
QWN0aXZlUGFnZSgpIGlzIHJlbmFtZWQgdG8gc2Nyb2xsYmFyc0NhbkJlQWN0aXZlICgpIAorICAg
ICAgICBhbmQgaXQgd2lsbCBub3cgcmV0dXJuIGZhbHNlIGlmIHRoZSBQYWdlIHNheXMgdGhhdCBz
Y3JvbGxiYXIgCisgICAgICAgIGFuaW1hdGlvbnMgc2hvdWxkIGJlIHN1cHByZXNzZWQuIAorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKToKKworICAgICAgICBzY3JvbGxiYXJzQ2FuQmVBY3RpdmUo
KSBtdXN0IG5vdyBiZSBhIHB1YmxpYyBtZW1iZXIgb2YgRnJhbWVWaWV3IHNvICAKKyAgICAgICAg
dGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gUmVuZGVyTGF5ZXIgYW5kIFJlbmRlckxpc3RCb3gu
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisKKyAg
ICAgICAgTmV3IFNjcm9sbEFuaW1hdG9yIGZ1bmN0aW9uIGNhbGxzIGhpZGVPdmVybGF5U2Nyb2xs
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6ZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMpOgorICAg
ICAgICAoU2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpmaW5pc2hDdXJyZW50U2Ny
b2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAoU2Nyb2xsQW5pbWF0b3JN
YWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmZpbmlzaEN1cnJlbnRT
Y3JvbGxBbmltYXRpb25zKToKKworICAgICAgICBSZS1uYW1lLiBpc09uQWN0aXZlUGFnZSgpIC0+
IHNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNl
dEFuaW1hdG9yc0FyZUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om5vdGlm
eVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXJEZWxlZ2F0ZSBzY3JvbGxlckltcFBhaXI6c2V0Q29udGVudEFyZWFOZWVkc0Rpc3BsYXlJ
blJlY3Q6XSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6Y29udGVudEFy
ZWFXaWxsUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNl
RW50ZXJlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
Ojptb3VzZUV4aXRlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6d2lsbFN0YXJ0TGl2ZVJlc2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6Y29udGVudHNSZXNpemVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6Y29udGVudEFyZWFEaWRTaG93KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpjb250ZW50QXJlYURpZEhpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJlZ2luU2Nyb2xsR2VzdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6bWF5QmVnaW5TY3JvbGxHZXN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWM6Om5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OnVwZGF0ZVNjcm9sbGVyU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisKKyAgICAgICAgUmVuZGVyTGF5ZXIgYW5kIFJlbmRlckxpc3RC
b3ggc2hvdWxkIGNhbGwgaW50byBGcmFtZVZpZXcncyAKKyAgICAgICAgc2Nyb2xsYmFyc0NhbkJl
QWN0aXZlKCkgc28gdGhhdCB0aGV5IGFsc28gcmV0dXJuIGZhbHNlIHdoZW4gUGFnZTo6IAorICAg
ICAgICBzaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoKSBpcyB0cnVlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdEJveDo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorCisgICAgICAgIFRoaXMgaXMgdGhlIG9uZSBjYWxsZXIgb2YgU2Ny
b2xsYWJsZUFyZWE6OiBzY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSAKKyAgICAgICAgdGhhdCBuZWVk
cyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBzY3JvbGxiYXItc3VwcHJlc3Npbmcgc2NlbmFy
aW8gCisgICAgICAgIGFuZCB0aGUgaW4tdGhlLXBhZ2UtY2FjaGUgc2NlbmFyaW8uCisgICAgICAg
ICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250
cm9sbGVyOjpzZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlKToKKwogMjAxMi0wOS0xMCAgSnVz
dGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGNh
bnZhcyB2NSBsaW5lIGRhc2ggZmVhdHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC02ODMsNiArNjgzLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxU
b2tlbml6ZQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVs
YXlFZAogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c0V2CitfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zRWIKIF9fWk43V2ViQ29yZTRQYWdlMzZzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzN3NldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xh
dGlvbk1vZGVFYgogX19aTjdXZWJDb3JlNFBhZ2U0M3NldFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0NvdW50ZXJUaHJlc2hvbGRFeQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTI4MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBGb2N1
c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kbwogCiAgICAgICAgIGZvciAoSGFzaFNldDxT
Y3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVn
aW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSAqaXQ7Ci0gICAgICAg
ICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEtPmlzT25BY3RpdmVQYWdlKCkpOworICAgICAgICAg
ICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5zY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSB8fCBtX3Bh
Z2UtPnNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpKTsKIAogICAgICAgICAgICAg
Y29udGVudEFyZWFEaWRTaG93T3JIaWRlKHNjcm9sbGFibGVBcmVhLCBjb250YWluaW5nV2luZG93
SXNWaXNpYmxlKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
cmV2aXNpb24gMTI4MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzQ1LDE0ICsyNzQ1LDIyIEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRW
aXNpYmxlU2Nyb2xsZXJUaHVtYlIKICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5vdGlm
eVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Nyb2xsZXJUaHVtYik7CiB9CiAKLWJvb2wg
RnJhbWVWaWV3Ojppc09uQWN0aXZlUGFnZSgpIGNvbnN0Citib29sIEZyYW1lVmlldzo6c2Nyb2xs
YmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkgIT0gdGhpcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsK
KyAgICAgICAgaWYgKHBhZ2UtPnNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5p
blBhZ2VDYWNoZSgpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yODM4LDcgKzI4NDYs
NyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QW5pbWF0b3JzQXJlQWN0aXZlKCkKICAgICBmb3IgKEhh
c2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Njcm9sbGFibGVB
cmVhcy0+YmVnaW4oKSwgZW5kID0gbV9zY3JvbGxhYmxlQXJlYXMtPmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gKml0Owog
Ci0gICAgICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYS0+aXNPbkFjdGl2ZVBhZ2UoKSk7CisgICAg
ICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkpOwogICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5pbWF0b3IoKS0+c2V0SXNBY3RpdmUoKTsKICAg
ICB9CiB9CkBAIC0yODU3LDcgKzI4NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6bm90aWZ5UGFnZVRo
YXRDb250ZW50QXJlCiAgICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9zY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsYWJs
ZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSA9ICppdDsKIAotICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhLT5p
c09uQWN0aXZlUGFnZSgpKQorICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxiYXJz
Q2FuQmVBY3RpdmUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhLT5jb250ZW50QXJlYVdpbGxQYWludCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCShyZXZpc2lvbiAxMjgxMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNiArMzIwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0OwogCisgICAgdmlydHVhbCBi
b29sIHNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIHBsdWdpbiBsb2FkaW5nIGlzIGRlY291cGxlZCBm
cm9tIGxheW91dC4KICAgICB2b2lkIGZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpOwog
CkBAIC00MTAsNyArNDEyLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21h
cmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxUbyhjb25zdCBJbnRTaXplJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZp
c2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBP
VkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTI4MTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9tZWRpYVZv
bHVtZSgxKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fZGV2aWNlU2NhbGVG
YWN0b3IoMSkKKyAgICAsIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGZhbHNlKQogICAg
ICwgbV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQodHJ1ZSkKICAgICAsIG1fZGlkTG9hZFVzZXJT
dHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWUo
MCkKQEAgLTY5Myw2ICs2OTQsNDYgQEAgdm9pZCBQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rvcihm
bG9hdCBzYwogICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhp
cyk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
KGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQoreworICAgIGlmIChzdXBwcmVzc0FuaW1hdGlvbnMg
PT0gbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghc3VwcHJlc3NBbmltYXRpb25zKSB7CisgICAgICAgIC8vIElmIGFuaW1hdGlvbnMgYXJl
IG5vdCBnb2luZyB0byBiZSBzdXBwcmVzc2VkIGFueW1vcmUsIHRoZW4gdGhlcmUgaXMgbm90aGlu
ZyB0byBkbyBoZXJlIGJ1dAorICAgICAgICAvLyBjaGFuZ2UgdGhlIGNhY2hlZCB2YWx1ZS4KKyAg
ICAgICAgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMgPSBzdXBwcmVzc0FuaW1hdGlvbnM7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaWYg
d2UgYXJlIGdvaW5nIHRvIHN0YXJ0IHN1cHByZXNzaW5nIGFuaW1hdGlvbnMsIHRoZW4gd2UgbmVl
ZCB0byBtYWtlIHN1cmUgd2UKKyAgICAvLyBmaW5pc2ggYW55IGN1cnJlbnQgc2Nyb2xsIGFuaW1h
dGlvbnMgZmlyc3QuCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lKCktPnZpZXcoKTsK
KyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHZpZXctPmZpbmlzaEN1cnJl
bnRTY3JvbGxBbmltYXRpb25zKCk7CisgICAgCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsK
KyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBp
ZiAoIWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbnN0IEhh
c2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3Jv
bGxhYmxlQXJlYXMoKTsKKyAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJlYXMtPmJlZ2luKCksIGVuZCA9IHNjcm9sbGFi
bGVBcmVhcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gKml0OworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSk7CisKKyAgICAgICAgICAgIHNjcm9sbGFi
bGVBcmVhLT5maW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9ucygpOworICAgICAgICB9CisgICAg
fQorCisgICAgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMgPSBzdXBwcmVzc0FuaW1hdGlv
bnM7Cit9CisKIHZvaWQgUGFnZTo6c2V0UGFnaW5hdGlvbihjb25zdCBQYWdpbmF0aW9uJiBwYWdp
bmF0aW9uKQogewogICAgIGlmIChtX3BhZ2luYXRpb24gPT0gcGFnaW5hdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCShyZXZpc2lvbiAxMjgxMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVNjYWxlRmFjdG9yOyB9CiAgICAgICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
OwogCisgICAgICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnM7IH0KKyAgICAgICAgdm9p
ZCBzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1h
dGlvbnMpOworCiAgICAgICAgIC8vIFBhZ2UgYW5kIEZyYW1lVmlldyBib3RoIHN0b3JlIGEgUGFn
aW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IEFQSSwKICAg
ICAgICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4g
UGFnZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0IGFsbAogICAgICAgICAvLyBGcmFtZVZpZXdz
IGluIHRoZSBwYWdlIGNhY2hlLCBidXQgRnJhbWVWaWV3OjpwYWdpbmF0aW9uKCkgb25seSBhZmZl
Y3RzIHRoZSBjdXJyZW50CkBAIC0zOTYsNiArMzk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBmbG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICAgICAgZmxvYXQgbV9kZXZpY2VT
Y2FsZUZhY3RvcjsKIAorICAgICAgICBib29sIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
OworCiAgICAgICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCiAgICAgICAgIGJvb2wgbV9q
YXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgJKHJldmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50QXJlYURpZFNob3coKSBjb25zdCB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY29udGVudEFyZWFEaWRIaWRlKCkgY29uc3QgeyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKSB7IH0KKwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAkocmV2aXNp
b24gMTI4MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDEyIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6
OmNvbnRlbnRBcmVhRGlkSGlkZSgKICAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPmNvbnRlbnRBcmVh
RGlkSGlkZSgpOwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpmaW5pc2hDdXJyZW50U2Nyb2xs
QW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgaWYgKFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmlt
YXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3It
PmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25zKCk7Cit9CisKIHZvaWQgU2Nyb2xsYWJsZUFy
ZWE6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAg
IHNjcm9sbEFuaW1hdG9yKCktPmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKHNjcm9sbGJhcik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJldmlzaW9uIDEy
ODExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29udGVudEFyZWFE
aWRTaG93KCkgY29uc3Q7CiAgICAgdm9pZCBjb250ZW50QXJlYURpZEhpZGUoKSBjb25zdDsKIAor
ICAgIHZvaWQgZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKKwogICAgIHZv
aWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdm9pZCB3aWxsUmVt
b3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CkBAIC0xNDcsNyArMTQ5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IC8qbmV3U3R5
bGUqLywgYm9vbCAvKmZvcmNlVXBkYXRlKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNp
YmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQogCi0gICAgdmlydHVhbCBi
b29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxi
YXJzQ2FuQmVBY3RpdmUoKSBjb25zdCA9IDA7CiAgICAgCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMg
b25seSByZXR1cm5zIHNjcm9sbGFibGUgYXJlYXMgdGhhdCBjYW4gYWN0dWFsbHkgYmUgc2Nyb2xs
ZWQuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEo
KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaAkocmV2aXNpb24gMTI4MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kU2Nyb2xsR2VzdHVyZSgpIGNvbnN0Owog
ICAgIHZvaWQgbWF5QmVnaW5TY3JvbGxHZXN0dXJlKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoQ3VycmVudFNjcm9sbEFuaW1hdGlvbnMoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTI4
MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgLSAodm9pZClzY3JvbGxlckltcFBh
aXI6KGlkKXNjcm9sbGVySW1wUAogICAgIGlmICghX3Njcm9sbGFibGVBcmVhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIV9zY3JvbGxhYmxlQXJlYS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAg
ICBpZiAoIV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIF9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5pbWF0b3IoKS0+Y29udGVu
dEFyZWFXaWxsUGFpbnQoKTsKQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjpub3RpZnlQb3NpdGlvbkNoCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmNvbnRlbnRB
cmVhV2lsbFBhaW50KCkgY29uc3QKIHsKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25B
Y3RpdmVQYWdlKCkpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJzQ2FuQmVB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElB
dmFpbGFibGUoKSkKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkg
Y29udGVudEFyZWFXaWxsRHJhd107CkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6Y29udGVudEFyZWFXaWxsUAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptb3Vz
ZUVudGVyZWRDb250ZW50QXJlYSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgp
LT5pc09uQWN0aXZlUGFnZSgpKQorICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFy
c0NhbkJlQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVy
bGF5QVBJQXZhaWxhYmxlKCkpCiAgICAgICAgIFttX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
LmdldCgpIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhXTsKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUVudGVyZWRDb250CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JNYWM6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEoKSBjb25zdAogewotICAgIGlmICghc2Nyb2xs
YWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCkt
PnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlci5nZXQoKSBtb3VzZUV4aXRlZENvbnRlbnRBcmVhXTsKQEAgLTc2Myw3ICs3NjMs
NyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZENvbnRlCiAKIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCkgY29uc3QKIHsKLSAgICBp
ZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25BY3RpdmVQYWdlKCkpCisgICAgaWYgKCFzY3JvbGxh
YmxlQXJlYSgpLT5zY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgW21fc2Nyb2xs
YmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkgbW91c2VNb3ZlZEluQ29udGVudEFyZWFdOwpAQCAt
Nzc1LDcgKzc3NSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50ZXJlZFNjcm8K
ICAgICBpZiAocmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKCkgIT0gTlNTY3JvbGxlclN0eWxlTGVn
YWN5KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25B
Y3RpdmVQYWdlKCkpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJzQ2FuQmVB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQ
SUF2YWlsYWJsZSgpKSB7CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6bW91c2VFeGl0ZWRTY3JvbAogICAgIGlmIChyZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUoKSAh
PSBOU1Njcm9sbGVyU3R5bGVMZWdhY3kpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghc2Ny
b2xsYWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVh
KCktPnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
aXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKQEAgLTgwNSw3ICs4MDUsNyBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sCiAKIHZvaWQgU2Nyb2xsQW5p
bWF0b3JNYWM6OndpbGxTdGFydExpdmVSZXNpemUoKQogewotICAgIGlmICghc2Nyb2xsYWJsZUFy
ZWEoKS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPnNjcm9s
bGJhcnNDYW5CZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzU2Nyb2xsYmFy
T3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlci5nZXQoKSBzdGFydExpdmVSZXNpemVdOwpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OndpbGxTdGFydExpdmVSZXMKIAogdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6Y29udGVudHNSZXNpemVkKCkgY29uc3QKIHsKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCkt
PmlzT25BY3RpdmVQYWdlKCkpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJz
Q2FuQmVBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1Njcm9sbGJhck92ZXJs
YXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIu
Z2V0KCkgY29udGVudEFyZWFEaWRSZXNpemVdOwpAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OmNvbnRlbnRzUmVzaXplZCgKIAogdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6d2lsbEVuZExpdmVSZXNpemUoKQogewotICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNP
bkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhcnNDYW5C
ZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQ
SUF2YWlsYWJsZSgpKQogICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQo
KSBlbmRMaXZlUmVzaXplXTsKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjp3aWxsRW5kTGl2ZVJlc2l6CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmNvbnRlbnRB
cmVhRGlkU2hvdygpIGNvbnN0CiB7Ci0gICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5pc09uQWN0
aXZlUGFnZSgpKQorICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyc0NhbkJlQWN0
aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpCiAgICAgICAgIFttX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpIHdp
bmRvd09yZGVyZWRJbl07CkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6Y29udGVudEFyZWFEaWRTaAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpjb250ZW50QXJl
YURpZEhpZGUoKSBjb25zdAogewotICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNPbkFjdGl2
ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhcnNDYW5CZUFjdGl2
ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWls
YWJsZSgpKQogICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSB3aW5k
b3dPcmRlcmVkT3V0XTsKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
Ojpjb250ZW50QXJlYURpZEhpCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJlZ2luU2Ny
b2xsR2VzdHVyZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5pc09uQWN0
aXZlUGFnZSgpKQorICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyc0NhbkJlQWN0
aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpCiAgICAgICAgIFttX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpIGJl
Z2luU2Nyb2xsR2VzdHVyZV07CkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ck1hYzo6ZGlkQmVnaW5TY3JvbGxHZQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRFbmRT
Y3JvbGxHZXN0dXJlKCkgY29uc3QKIHsKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25B
Y3RpdmVQYWdlKCkpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJzQ2FuQmVB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElB
dmFpbGFibGUoKSkKICAgICAgICAgW21fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkg
ZW5kU2Nyb2xsR2VzdHVyZV07CkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptYXlCZWdp
blNjcm9sbEdlc3R1cmUoKSBjb25zdAogewotICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNP
bkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhcnNDYW5C
ZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFpc1Njcm9sbGJhck92ZXJsYXlB
UElBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODcwLDYgKzg3MCwxMyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yTWFjOjptYXlCZWdpblNjcm9sbEdlCiAgICAgW21fc2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXIuZ2V0KCkgY29udGVudEFyZWFTY3JvbGxlZF07CiB9CiAKK3ZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25zKCkKK3sKKyAgICBp
ZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgW21fc2Nyb2xs
YmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkgaGlkZU92ZXJsYXlTY3JvbGxlcnNdOworICAgIH0K
K30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSkKQEAgLTk2NCw3ICs5NzEsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpub3Rp
ZnlDb250ZW50QXJlCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIHBhZ2Ug
aXMgZ29pbmcgaW50byB0aGUgcGFnZSBjYWNoZSwgYnV0IHRoZSBwYWdlIAogICAgIC8vIGlzbid0
IHJlYWxseSBzY3JvbGxpbmcgaW4gdGhhdCBjYXNlLiBXZSBzaG91bGQgb25seSBwYXNzIHRoZSBt
ZXNzYWdlIG9uIHRvIHRoZQogICAgIC8vIFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyIHdoZW4g
d2UncmUgcmVhbGx5IHNjcm9sbGluZyBvbiBhbiBhY3RpdmUgcGFnZS4KLSAgICBpZiAoc2Nyb2xs
YWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEoKS0+
c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkpCiAgICAgICAgIHNlbmRDb250ZW50QXJlYVNjcm9sbGVk
U29vbigpOwogfQogCkBAIC0xMTcwLDcgKzExNzcsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
Ojp1cGRhdGVTY3JvbGxlclN0CiAgICAgaWYgKCFpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5pc09u
QWN0aXZlUGFnZSgpKSB7CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJzQ2Fu
QmVBY3RpdmUoKSkgewogICAgICAgICBtX25lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0ZSA9IHRydWU7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMTAsOSArMjIxMCwxMiBA
QCBib29sIFJlbmRlckxheWVyOjpzaG91bGRTdXNwZW5kU2Nyb2xsQW5pCiAgICAgcmV0dXJuIHZp
ZXctPmZyYW1lVmlldygpLT5zaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCi1i
b29sIFJlbmRlckxheWVyOjppc09uQWN0aXZlUGFnZSgpIGNvbnN0Citib29sIFJlbmRlckxheWVy
OjpzY3JvbGxiYXJzQ2FuQmVBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiAhbV9yZW5kZXJl
ci0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gcmVu
ZGVyZXIoKS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB2aWV3LT5mcmFtZVZpZXcoKS0+c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCk7CiB9
CiAKIEludFBvaW50IFJlbmRlckxheWVyOjpjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMTI4MTE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwNSw3ICs4MDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVy
aGFuZ0Ftb3VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9z
aXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsK
IAogICAgIC8vIFJlY3RhbmdsZSBlbmNvbXBhc3NpbmcgdGhlIHNjcm9sbCBjb3JuZXIgYW5kIHJl
c2l6ZXIgcmVjdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAJKHJldmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIxLDkgKzgyMSwxMiBAQCBib29sIFJl
bmRlckxpc3RCb3g6OnNob3VsZFN1c3BlbmRTY3JvbGxBCiAgICAgcmV0dXJuIHZpZXctPmZyYW1l
VmlldygpLT5zaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCi1ib29sIFJlbmRl
ckxpc3RCb3g6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK2Jvb2wgUmVuZGVyTGlzdEJveDo6c2Ny
b2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWRvY3VtZW50KCktPmlu
UGFnZUNhY2hlKCk7CisgICAgUmVuZGVyVmlldyogdmlldyA9IHRoaXMtPnZpZXcoKTsKKyAgICBp
ZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlldy0+ZnJhbWVW
aWV3KCktPnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpOwogfQogCiBTY3JvbGxhYmxlQXJlYSogUmVu
ZGVyTGlzdEJveDo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCShyZXZpc2lvbiAxMjgxMTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0
aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3Jv
bGxBbmltYXRpb25zKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzT25BY3Rp
dmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnNDYW5C
ZUFjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIElu
dFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTI4MTIwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDktMTAgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjE1OAorICAgICAgICBOZWVkIEFQSSB0byBzdXBwcmVzcyBzY3JvbGxiYXIg
YW5pbWF0aW9ucworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjIxMDk3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zIGFzIGEgV2ViQ3JlYXRp
b25QYXJhbWV0ZXIuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpOgorCisgICAgICAgIE5ldyBB
UEkuIENhbGxzIGludG8gdGhlIHdlYiBwcm9jZXNzIGZvciB0aGUgc2V0dGVyIGJ1dCBub3QgdGhl
IAorICAgICAgICBnZXR0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgorICAgICAg
ICAoV0tQYWdlQXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojph
cmVTY3JvbGxiYXJBbmltYXRpb25zU3VwcHJlc3NlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgQ2FsbCBpbnRvIFdlYkNvcmUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAoV2ViUGFnZSk6CisKKyAgICAgICAgVGhpcyBTY3JvbGxhYmxlQXJlYSBhcmVhIGZ1bmN0aW9u
IGlzIHJlLW5hbWVkIGJ5IHRoaXMgcGF0Y2ggaW4gCisgICAgICAgIFdlYkNvcmUuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW06CisgICAgICAgIChXZWJLaXQ6
OkJ1aWx0SW5QREZWaWV3OjpzY3JvbGxiYXJzQ2FuQmVBY3RpdmUpOgorCiAyMDEyLTA5LTA3ICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbm90aWZpY2F0aW9u
cyB0byBsYXRlc3Qgc3BlYwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxMjgxMTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2Nyw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBi
b29sIHVzZUZpeGVkTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNpemUgZml4ZWRMYXlvdXRTaXpl
OwogCisgICAgYm9vbCBzdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnM7CisKICAgICBXZWJDb3Jl
OjpQYWdpbmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlOwogICAgIGJvb2wgcGFnaW5hdGlvbkJl
aGF2ZXNMaWtlQ29sdW1uczsKICAgICBkb3VibGUgcGFnZUxlbmd0aDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMjgxMTkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgzLDYgKzE4Myw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQq
IHAKICAgICAsIG1fZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoZmFsc2UpCiAgICAgLCBtX2Fy
ZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKHRydWUpCiAgICAgLCBtX3VzZUZpeGVkTGF5
b3V0KGZhbHNlKQorICAgICwgbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX3BhZ2luYXRpb25Nb2RlKFBhZ2luYXRpb246OlVucGFnaW5hdGVkKQogICAgICwgbV9w
YWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGZhbHNlKQogICAgICwgbV9wYWdlTGVuZ3RoKDAp
CkBAIC0xNTAyLDYgKzE1MDMsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0
U2l6ZShjbwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRM
YXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRT
dXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCit7Cisg
ICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdXBwcmVzc0Fu
aW1hdGlvbnMgPT0gbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zID0gc3VwcHJlc3NBbmltYXRp
b25zOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U3VwcHJlc3NT
Y3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFnZUlEKTsKK30KKwog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246
Ok1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBtX3BhZ2luYXRpb25Nb2RlKQpAQCAtMzYx
NSw2ICszNjI4LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6Ogog
ICAgIHBhcmFtZXRlcnMuYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQgPSBtX2FyZU1l
bW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOwogICAgIHBhcmFtZXRlcnMudXNlRml4ZWRMYXlv
dXQgPSBtX3VzZUZpeGVkTGF5b3V0OwogICAgIHBhcmFtZXRlcnMuZml4ZWRMYXlvdXRTaXplID0g
bV9maXhlZExheW91dFNpemU7CisgICAgcGFyYW1ldGVycy5zdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMgPSBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsKICAgICBwYXJhbWV0ZXJzLnBh
Z2luYXRpb25Nb2RlID0gbV9wYWdpbmF0aW9uTW9kZTsKICAgICBwYXJhbWV0ZXJzLnBhZ2luYXRp
b25CZWhhdmVzTGlrZUNvbHVtbnMgPSBtX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnM7CiAg
ICAgcGFyYW1ldGVycy5wYWdlTGVuZ3RoID0gbV9wYWdlTGVuZ3RoOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTI4MTE5KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODYs
NiArNDg2LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQogICAgIGJv
b2wgaGFzVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUhhc1Zl
cnRpY2FsU2Nyb2xsYmFyOyB9CiAKKyAgICB2b2lkIHNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0
aW9ucyhib29sKTsKKyAgICBib29sIGFyZVNjcm9sbGJhckFuaW1hdGlvbnNTdXBwcmVzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnM7IH0KKwogICAgIGJv
b2wgaXNQaW5uZWRUb0xlZnRTaWRlKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJc1Bpbm5l
ZFRvTGVmdFNpZGU7IH0KICAgICBib29sIGlzUGlubmVkVG9SaWdodFNpZGUoKSBjb25zdCB7IHJl
dHVybiBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGU7IH0KIApAQCAtMTA5Niw2ICsxMDk5
LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQ7CiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKIAorICAgIGJvb2wgbV9zdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnM7CisKICAgICBXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1fcGFnaW5hdGlv
bk1vZGU7CiAgICAgYm9vbCBtX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnM7CiAgICAgZG91
YmxlIG1fcGFnZUxlbmd0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxMjgxMTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCwxNiBAQCBib29s
IFdLUGFnZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKFdLUGFnZVJlCiAgICAgcmV0dXJuIHRvSW1wbChw
YWdlUmVmKS0+aGFzVmVydGljYWxTY3JvbGxiYXIoKTsKIH0KIAordm9pZCBXS1BhZ2VTZXRTdXBw
cmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgc3VwcHJlc3NB
bmltYXRpb25zKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0U3VwcHJlc3NTY3JvbGxiYXJB
bmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyk7Cit9CisKK2Jvb2wgV0tQYWdlQXJlU2Nyb2xs
YmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+YXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoKTsKK30K
KwogYm9vbCBXS1BhZ2VJc1Bpbm5lZFRvTGVmdFNpZGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAg
ICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aXNQaW5uZWRUb0xlZnRTaWRlKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxMjgxMTkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyMiw2ICs0MjIsOSBAQCBXS19FWFBPUlQgV0tTaXplIFdLUGFnZUZpeGVkTGF5b3V0U2l6
ZShXCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKFdLUGFnZVJl
ZiBwYWdlKTsKIFdLX0VYUE9SVCBib29sIFdLUGFnZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKFdLUGFn
ZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0U3VwcHJlc3NTY3JvbGxiYXJB
bmltYXRpb25zKFdLUGFnZVJlZiBwYWdlLCBib29sIHN1cHByZXNzQW5pbWF0aW9ucyk7CitXS19F
WFBPUlQgYm9vbCBXS1BhZ2VBcmVTY3JvbGxiYXJBbmltYXRpb25zU3VwcHJlc3NlZChXS1BhZ2VS
ZWYgcGFnZSk7CisKIFdLX0VYUE9SVCBib29sIFdLUGFnZUlzUGlubmVkVG9MZWZ0U2lkZShXS1Bh
Z2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VJc1Bpbm5lZFRvUmlnaHRTaWRlKFdL
UGFnZVJlZiBwYWdlKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9CdWlsdEluUERGVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAkocmV2aXNpb24gMTI4MTE5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzT25B
Y3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnND
YW5CZUFjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNw
ZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9IC8v
IElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBh
IHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9y
Y2VVcGRhdGUpIE9WRVJSSURFOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIG90aGVyIGNv
bnZlcnNpb24gZnVuY3Rpb25zOyB0aGlzIG9uZSBpcyBlbm91Z2ggdG8gZ2V0IHNjcm9sbGJhciBo
aXQgdGVzdGluZyB3b3JraW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9CdWlsdEluUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCShyZXZpc2lvbiAxMjgxMTkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsNyArNzkyLDcgQEAgSW50U2l6ZSBCdWlsdEluUERG
Vmlldzo6Y29udGVudHNTaXplKCkgYwogICAgIHJldHVybiBtX3BkZkRvY3VtZW50U2l6ZTsKIH0K
IAotYm9vbCBCdWlsdEluUERGVmlldzo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAorYm9vbCBCdWls
dEluUERGVmlldzo6c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
IXBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyNCw2ICsxMTI0LDExIEBAIHZvaWQgV2ViUGFn
ZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQo
KTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9v
bCBzdXBwcmVzc0FuaW1hdGlvbnMpCit7CisgICAgbV9wYWdlLT5zZXRTaG91bGRTdXBwcmVzc1Nj
cm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKTsKK30KKwogdm9pZCBXZWJQYWdl
OjpzZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKQogewogICAgIFBhZ2luYXRpb24gcGFn
aW5hdGlvbiA9IG1fcGFnZS0+cGFnaW5hdGlvbigpOwpAQCAtMzI0OCw3ICszMjUzLDcgQEAgc3Rh
dGljIGJvb2wgcGFnZUNvbnRhaW5zQW55SG9yaXpvbnRhbFNjcgogCiAgICAgICAgIGZvciAoSGFz
aFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjcm9sbGFibGVBcmVh
cy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSAqaXQ7Ci0g
ICAgICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhLT5pc09uQWN0aXZlUGFnZSgpKQorICAgICAg
ICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyc0NhbkJlQWN0aXZlKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChoYXNFbmFibGVkSG9yaXpv
bnRhbFNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
OSw2ICszMDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH0KICAgICB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyAgICB2b2lkIHNldFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyhib29sKTsKKwogICAgIHZvaWQgc2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3Qg
LyogV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSAqLyk7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9u
QmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wpOwogICAgIHZvaWQgc2V0UGFnZUxlbmd0aChkb3VibGUp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEyODExOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNiArMTQwLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0VXNlRml4ZWRMYXlv
dXQoYm9vbCBmaXhlZCkKICAgICBTZXRGaXhlZExheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBz
aXplKQogCisgICAgU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NB
bmltYXRpb25zKQorCiAgICAgU2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3QgbW9kZSk7CiAgICAg
U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucyk7
CiAgICAgU2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCk7Cg==
</data>
<flag name="review"
          id="174605"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="174624"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>