<?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>11363</bug_id>
          
          <creation_ts>2006-10-19 16:46:31 -0700</creation_ts>
          <short_desc>inserting a positioned element in a table creates an empty anonymous section</short_desc>
          <delta_ts>2009-01-31 13:44:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tables</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>51717</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-10-19 16:46:31 -0700</bug_when>
    <thetext>A positioned element being inserted into a table should not create a anonymous section. See attached test. This happens in Firefox also, but Hixie and Hyatt say it is a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51718</commentid>
    <comment_count>1</comment_count>
      <attachid>11159</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-10-19 16:47:19 -0700</bug_when>
    <thetext>Created attachment 11159
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107850</commentid>
    <comment_count>2</comment_count>
      <attachid>27219</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-31 12:08:25 -0800</bug_when>
    <thetext>Created attachment 27219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107852</commentid>
    <comment_count>3</comment_count>
      <attachid>27219</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-31 12:14:34 -0800</bug_when>
    <thetext>Comment on attachment 27219
Patch

I attached the wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107853</commentid>
    <comment_count>4</comment_count>
      <attachid>27220</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-31 12:15:13 -0800</bug_when>
    <thetext>Created attachment 27220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107854</commentid>
    <comment_count>5</comment_count>
      <attachid>27221</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-31 13:15:48 -0800</bug_when>
    <thetext>Created attachment 27221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107855</commentid>
    <comment_count>6</comment_count>
      <attachid>27221</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-31 13:16:51 -0800</bug_when>
    <thetext>Comment on attachment 27221
Patch

r=me, remember to land updated test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107856</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-31 13:44:38 -0800</bug_when>
    <thetext>Fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>11159</attachid>
            <date>2006-10-19 16:47:19 -0700</date>
            <delta_ts>2006-10-19 16:47:19 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>testTable.html</filename>
            <type>text/html</type>
            <size>458</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">PHRhYmxlIGlkPSJ0ZXN0IiBib3JkZXI9IjIiPgo8dHI+PHRkPlRoaXMgaXMgYSByb3cuPC90ZD48
L3RyPgo8L3RhYmxlPgo8c2NyaXB0Pgp2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CmRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgicG9zaXRpb24iLCAiYWJzb2x1dGUiLCAiIik7
CmRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgidG9wIiwgIjVweCIsICIiKTsKZGl2LnN0eWxlLnNldFBy
b3BlcnR5KCJsZWZ0IiwgIjVweCIsICIiKTsKZGl2LnN0eWxlLnNldFByb3BlcnR5KCJ3aWR0aCIs
ICIxMHB4IiwgIiIpOwpkaXYuc3R5bGUuc2V0UHJvcGVydHkoImhlaWdodCIsICIxMHB4IiwgIiIp
OwpkaXYuc3R5bGUuc2V0UHJvcGVydHkoImJvcmRlciIsICIxcHggc29saWQgcmVkIiwgIiIpOwpk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmFwcGVuZENoaWxkKGRpdik7Cjwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27219</attachid>
            <date>2009-01-31 12:08:25 -0800</date>
            <delta_ts>2009-01-31 12:15:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>49870</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQwNDE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMDktMDEt
MzAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc29tZSBm
dW5jdGlvbnMgb3V0IG9mIFJlbmRlckNvbnRhaW5lci4gIEdpdmUgUmVuZGVyT2JqZWN0IGEgYnVp
bHQtaW4gbGF5b3V0IG1ldGhvZCB0aGF0IHdpbGwKKyAgICAgICAgcmVjdXIgaW50byBjaGlsZHJl
biBhbmQgbGF5IHRoZW0gb3V0LiAgR2l2ZSBSZW5kZXJCb3gKKyAgICAgICAgYSBzaW1pbGFyIG1l
dGhvZCB0aGF0IGFsc28gcHVzaGVzIHgveSBvZmZzZXRzIChSZW5kZXJDb250YWluZXIncyBvcmln
aW5hbCBtZXRob2QpLiAKKyAgICAgICAgQWRkIGFuIEFTU0VSVF9OT1RfUkVBQ0hFRCB0byBSZW5k
ZXJJbmxpbmUncyBsYXlvdXQgbWV0aG9kLiAgTWFrZSBjYW5IYXZlQ2hpbGRyZW4KKyAgICAgICAg
bW92ZSB0byBSZW5kZXJPYmplY3QgYW5kIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgY2hp
bGQgbGlzdCBvYmplY3QuICBNb3ZlIGZpcnN0Q2hpbGRCb3gKKyAgICAgICAgIGFuZCBsYXN0Q2hp
bGRCb3ggdXAgZnJvbSBSZW5kZXJDb250YWluZXIgdG8gUmVuZGVyQm94LCBzaW5jZSB0aGV5IHdl
cmUKKyAgICAgICAgbWlzcGxhY2VkIGFueXdheS4KKyAgICAgICAgCisgICAgICAgIERldmlydHVh
bGl6ZSBmaXJzdENoaWxkIGFuZCBsYXN0Q2hpbGQgb24gUmVuZGVyT2JqZWN0LiAgQWRkIG5ldyB2
aXJ0dWFsQ2hpbGRyZW4gYWNjZXNzb3JzIAorICAgICAgICBpbXBsZW1lbnRlZCBieSBhbnlvbmUg
d2hvIHdhbnRzIHRvIGJlIGEgY29udGFpbmVyLiAgQ29udmVydCBhbGwgY29udGFpbmVyIGNsYXNz
ZXMKKyAgICAgICAgKGluY2x1ZGluZyBTVkcpIHRvIHVzZSBSZW5kZXJPYmplY3RDaGlsZExpc3Qu
ICBBZGQgbm9uLXZpcnR1YWwgY2hpbGRyZW4oKSBhY2Nlc3NvcnMgYWxzbyAKKyAgICAgICAgc28g
dGhhdCBzdWJjbGFzc2VzIGNhbiB1c2Ugbm9uLXZpcnR1YWwgZW5jYXBzdWxhdGlvbiB3aGVuIGFj
Y2Vzc2luZyB0aGVpcgorICAgICAgICBjaGlsZHJlbiBsaXN0cy4KKyAgICAgICAgCisgICAgICAg
IENsZWFuIHVwIHRhYmxlIGxheW91dCBiZWNhdXNlIG9mIHRoZSBhc3NlcnQgYWRkZWQgdG8gUmVu
ZGVySW5saW5lOjpsYXlvdXQoKS4gIEZpeCBhIGJ1ZyAKKyAgICAgICAgd2hlcmUgdGFibGUgY2Fw
dGlvbnMgdGhhdCB3ZXJlIGFsc28gZm9ybXMgd291bGQgbm90IGdldCBhIGxheW91dC4gIFRpZ2h0
ZW4gdXAKKyAgICAgICAgdGFibGUgc2VjdGlvbiBhbmQgdGFibGUgbGF5b3V0IHRvIGlnbm9yZSBp
bmNvcnJlY3QgY2hpbGQgdHlwZXMuCisKKyAgICAgICAgTW92ZSBkZXN0cm95TGVmdG92ZXJDaGls
ZHJlbiBpbnRvIFJlbmRlck9iamVjdENoaWxkTGlzdC4gIEdldCByaWQgb2YgZGVzdHJveSgpIG9u
CisgICAgICAgICBSZW5kZXJDb250YWluZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjph
ZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlTGVmdG92ZXJB
bm9ueW1vdXNCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2hpbGRCZWNh
bWVOb25JbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Zmlyc3RDaGlsZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6Omxhc3RDaGlsZEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OmFkZENoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6cmVtb3ZlQ2hpbGROb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50Rm9y
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6YXBwZW5kQ2hp
bGROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6aW5zZXJ0Q2hpbGRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbnRhaW5lcjo6cG9zaXRpb25Gb3JDb29y
ZGluYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OmFkZExpbmVCb3hS
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OmNvbGxlY3RBYnNvbHV0
ZUxpbmVCb3hRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjp2aXJ0dWFsQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjpjaGlsZHJlbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmNoaWxkcmVuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lZGlhOjp2aXJ0dWFsQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkZXN0cm95KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpsYXN0Q2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp2aXJ0dWFsQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
UmVuZGVyU1ZHQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5l
cjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnJlbW92
ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmFwcGVu
ZENoaWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6Omluc2Vy
dENoaWxkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp2aXJ0dWFsQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpjaGlsZHJlbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKwogMjAwOS0wMS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3Rl
aW4uCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0MDQwOCkKKysr
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk2
MCw2ICszOTYwLDcgQEAKIAkJQkM2MERBNUIwRDJBMzFGNzAwQjk5MThGIC8qIFhQYXRoRXhjZXB0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYw
REE1OTBEMkEzMUY3MDBCOTkxOEYgLyogWFBhdGhFeGNlcHRpb24uaCAqLzsgfTsKIAkJQkM2MERC
NDkwRDJBM0QxRTAwQjk5MThGIC8qIEpTWFBhdGhFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MERCNDcwRDJBM0QxRTAwQjk5MThG
IC8qIEpTWFBhdGhFeGNlcHRpb24uY3BwICovOyB9OwogCQlCQzYwREI0QTBEMkEzRDFFMDBCOTkx
OEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM2MERCNDgwRDJBM0QxRTAwQjk5MThGIC8qIEpTWFBhdGhFeGNlcHRp
b24uaCAqLzsgfTsKKwkJQkM2MEVGQjcwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENo
aWxkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzYwRUZCNjBGMzNBMEU3MDA4MTJBOTMgLyogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCAq
LzsgfTsKIAkJQkM2NEI0Q0IwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NEI0QzkwQ0I0Mjk1
RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovOyB9OwogCQlCQzY0QjRDQzBDQjQyOTVEMDA1
RjJCNjIgLyogQ2FjaGVkRm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM2NEI0Q0EwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCAqLzsg
fTsKIAkJQkM2NEI0RDUwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjRCNENEMENCNDI5OEEw
MDVGMkI2MiAvKiBDU1NGb250RmFjZS5jcHAgKi87IH07CkBAIC04NzIzLDYgKzg3MjQsNyBAQAog
CQlCQzYwREE1QTBEMkEzMUY3MDBCOTkxOEYgLyogWFBhdGhFeGNlcHRpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFhQYXRoRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM2MERCNDcwRDJBM0QxRTAwQjk5MThGIC8qIEpTWFBhdGhFeGNlcHRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aEV4Y2VwdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBEQjQ4MEQyQTNEMUUwMEI5OTE4
RiAvKiBKU1hQYXRoRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTWFBhdGhFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MEVG
QjYwRjMzQTBFNzAwODEyQTkzIC8qIFJlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyog
Q2FjaGVkRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NEI0Q0EwQ0I0Mjk1
RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0QjRDRDBD
QjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQwOTQsNiArMTQwOTYsNyBAQAogCQkJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAv
KiBSZW5kZXJNZW51TGlzdC5oICovLAogCQkJCUJDRUE0ODQwMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJPYmplY3QuY3BwICovLAogCQkJCUJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJPYmplY3QuaCAqLywKKwkJCQlCQzYwRUZCNjBGMzNBMEU3MDA4MTJBOTMgLyogUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0LmNwcCAqLywKIAkJCQlCQzJDQzhERTBGMzI4ODEwMDBBOURGMjYgLyogUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0LmggKi8sCiAJCQkJQTg3MURFQzgwQTE1MzBDNzAwQjEyQTY4IC8q
IFJlbmRlclBhcnQuY3BwICovLAogCQkJCUE4NzFERUNGMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5k
ZXJQYXJ0LmggKi8sCkBAIC0xODYzNyw2ICsxODY0MCw3IEBACiAJCQkJMUE1NjlEMjQwRDdFMkI4
MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUx
RDA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxODVCQ0YyODBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDNjBFRkI3MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGlsZExp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDQwNDA4KQorKysgZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCwxMyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXI6OmNyZWF0ZURlbGV0CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZU5vbmUpOworICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlSGlkZGVuKTsK
KyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNv
bHV0ZSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q3Vyc29yLCBDU1NWYWx1
ZURlZmF1bHQpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgIjAiKTsK
KyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlSaWdodCwgIjAiKTsKKyAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3R0b20sICIwIik7CisgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgIjAiKTsKIAogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVu
dD4gb3V0bGluZSA9IG5ldyBIVE1MRGl2RWxlbWVudChkaXZUYWcsIG1fdGFyZ2V0LT5kb2N1bWVu
dCgpKTsKICAgICBvdXRsaW5lLT5zZXRJZChvdXRsaW5lRWxlbWVudElkZW50aWZpZXIpOwpAQCAt
MTYzLDE3ICsxNzAsMTQgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxl
dAogCiAgICAgc3R5bGUgPSBvdXRsaW5lLT5nZXRJbmxpbmVTdHlsZURlY2woKTsKICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7Ci0g
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q3Vyc29yLCBDU1NWYWx1ZURlZmF1bHQp
OwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NW
YWx1ZU5vbmUpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJT
ZWxlY3QsIENTU1ZhbHVlTm9uZSk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVOb25lKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlaSW5kZXgsIFN0cmluZzo6bnVtYmVyKC0xMDAwMDAwKSk7Ci0gICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBTdHJpbmc6Om51bWJlcigtYm9yZGVyV2lkdGgg
LSBtX3RhcmdldC0+cmVuZGVyQm94KCktPmJvcmRlclRvcCgpKSArICJweCIpOwotICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVJpZ2h0LCBTdHJpbmc6Om51bWJlcigtYm9yZGVyV2lk
dGggLSBtX3RhcmdldC0+cmVuZGVyQm94KCktPmJvcmRlclJpZ2h0KCkpICsgInB4Iik7Ci0gICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm90dG9tLCBTdHJpbmc6Om51bWJlcigtYm9y
ZGVyV2lkdGggLSBtX3RhcmdldC0+cmVuZGVyQm94KCktPmJvcmRlckJvdHRvbSgpKSArICJweCIp
OwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIFN0cmluZzo6bnVtYmVy
KC1ib3JkZXJXaWR0aCAtIG1fdGFyZ2V0LT5yZW5kZXJCb3goKS0+Ym9yZGVyTGVmdCgpKSArICJw
eCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgU3RyaW5nOjpudW1i
ZXIoLWJvcmRlcldpZHRoKSArICJweCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVJpZ2h0LCBTdHJpbmc6Om51bWJlcigtYm9yZGVyV2lkdGgpICsgInB4Iik7CisgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm90dG9tLCBTdHJpbmc6Om51bWJlcigtYm9yZGVy
V2lkdGgpICsgInB4Iik7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwg
U3RyaW5nOjpudW1iZXIoLWJvcmRlcldpZHRoKSArICJweCIpOwogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlciwgU3RyaW5nOjpudW1iZXIoYm9yZGVyV2lkdGgpICsgInB4
IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC42KSIpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgU3RyaW5nOjpudW1iZXIoYm9yZGVyUmFkaXVzKSAr
ICJweCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENT
U1ZhbHVlVmlzaWJsZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBjb250YWlu
ZXItPmFwcGVuZENoaWxkKG91dGxpbmUuZ2V0KCksIGVjKTsKQEAgLTE5OSw2ICsyMDMsNyBAQCB2
b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgU3RyaW5nOjpudW1iZXIoKC1idXR0b25XaWR0aCAvIDIp
IC0gbV90YXJnZXQtPnJlbmRlckJveCgpLT5ib3JkZXJMZWZ0KCkgLSAoYm9yZGVyV2lkdGggLyAy
KSkgKyAicHgiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgU3Ry
aW5nOjpudW1iZXIoYnV0dG9uV2lkdGgpICsgInB4Iik7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihidXR0b25IZWlnaHQpICsgInB4Iik7
CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVW
aXNpYmxlKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gYnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIpOwogICAgIGlmIChidXR0b25JbWFnZS0+aXNO
dWxsKCkpCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDQwNDA5KQorKysgcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmRlc3Ryb3koKQogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0byBkZXN0cm95IGFu
b255bW91cyBjaGlsZHJlbiBmaXJzdCB3aGlsZSB0aGV5IGFyZSBzdGlsbCBjb25uZWN0ZWQgdG8g
dGhlIHJlc3Qgb2YgdGhlIHRyZWUsIHNvIHRoYXQgdGhleSB3aWxsCiAgICAgLy8gcHJvcGVybHkg
ZGlydHkgbGluZSBib3hlcyB0aGF0IHRoZXkgYXJlIHJlbW92ZWQgZnJvbS4gIEVmZmVjdHMgdGhh
dCBkbyA6YmVmb3JlLzphZnRlciBvbmx5IG9uIGhvdmVyIGNvdWxkIGNyYXNoIG90aGVyd2lzZS4K
LSAgICBSZW5kZXJDb250YWluZXI6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7CisgICAgY2hp
bGRyZW4oKS0+ZGVzdHJveUxlZnRvdmVyQ2hpbGRyZW4oKTsKIAogICAgIGlmICghZG9jdW1lbnRC
ZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIGlmIChmaXJzdExpbmVCb3goKSkgewpAQCAtMzIy
LDEwICszMjIsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRDaGlsZChSZW5kZXJPYmplY3QqCiAg
ICAgfQogCiAgICAgUmVuZGVyQ29udGFpbmVyOjphZGRDaGlsZChuZXdDaGlsZCwgYmVmb3JlQ2hp
bGQpOwotICAgIC8vICMjIyBjYXJlIGFib3V0IGFsaWduZWQgc3R1ZmYKIAotICAgIGlmIChtYWRl
Qm94ZXNOb25JbmxpbmUgJiYgcGFyZW50KCkgJiYgaXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAg
ICBwYXJlbnQoKS0+cmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayh0aGlzKTsKKyAgICBpZiAo
bWFkZUJveGVzTm9uSW5saW5lICYmIHBhcmVudCgpICYmIGlzQW5vbnltb3VzQmxvY2soKSAmJiBw
YXJlbnQoKS0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICB0b1JlbmRlckJsb2NrKHBhcmVudCgp
KS0+cmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayh0aGlzKTsKICAgICAvLyB0aGlzIG9iamVj
dCBtYXkgYmUgZGVhZCBoZXJlCiB9CiAKQEAgLTQ0Myw2ICs0NDIsNDggQEAgdm9pZCBSZW5kZXJC
bG9jazo6bWFrZUNoaWxkcmVuTm9uSW5saW5lKAogICAgIHJlcGFpbnQoKTsKIH0KIAordm9pZCBS
ZW5kZXJCbG9jazo6cmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayogY2hp
bGQpCit7CisgICAgQVNTRVJUKGNoaWxkLT5pc0Fub255bW91c0Jsb2NrKCkpOworICAgIEFTU0VS
VCghY2hpbGQtPmNoaWxkcmVuSW5saW5lKCkpOworICAgIAorICAgIGlmIChjaGlsZC0+aW5saW5l
Q29udGludWF0aW9uKCkpIAorICAgICAgICByZXR1cm47CisgICAgCisgICAgUmVuZGVyT2JqZWN0
KiBmaXJzdEFuQ2hpbGQgPSBjaGlsZC0+bV9jaGlsZHJlbi5maXJzdENoaWxkKCk7CisgICAgUmVu
ZGVyT2JqZWN0KiBsYXN0QW5DaGlsZCA9IGNoaWxkLT5tX2NoaWxkcmVuLmxhc3RDaGlsZCgpOwor
ICAgIGlmIChmaXJzdEFuQ2hpbGQpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gZmlyc3RB
bkNoaWxkOworICAgICAgICB3aGlsZSAobykgeworICAgICAgICAgICAgby0+c2V0UGFyZW50KHRo
aXMpOworICAgICAgICAgICAgbyA9IG8tPm5leHRTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZmlyc3RBbkNoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKKyAgICAgICAgbGFzdEFuQ2hpbGQtPnNldE5leHRTaWJsaW5nKGNoaWxkLT5uZXh0U2li
bGluZygpKTsKKyAgICAgICAgaWYgKGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAg
ICAgIGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKS0+c2V0TmV4dFNpYmxpbmcoZmlyc3RBbkNoaWxk
KTsKKyAgICAgICAgaWYgKGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgY2hpbGQt
Pm5leHRTaWJsaW5nKCktPnNldFByZXZpb3VzU2libGluZyhsYXN0QW5DaGlsZCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAg
IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKS0+c2V0TmV4dFNpYmxpbmcoY2hpbGQtPm5leHRTaWJs
aW5nKCkpOworICAgICAgICBpZiAoY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBj
aGlsZC0+bmV4dFNpYmxpbmcoKS0+c2V0UHJldmlvdXNTaWJsaW5nKGNoaWxkLT5wcmV2aW91c1Np
YmxpbmcoKSk7CisgICAgfQorICAgIGlmIChjaGlsZCA9PSBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQo
KSkKKyAgICAgICAgbV9jaGlsZHJlbi5zZXRGaXJzdENoaWxkKGZpcnN0QW5DaGlsZCk7CisgICAg
aWYgKGNoaWxkID09IG1fY2hpbGRyZW4ubGFzdENoaWxkKCkpCisgICAgICAgIG1fY2hpbGRyZW4u
c2V0TGFzdENoaWxkKGxhc3RBbkNoaWxkKTsKKyAgICBjaGlsZC0+c2V0UGFyZW50KDApOworICAg
IGNoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CisgICAgY2hpbGQtPnNldE5leHRTaWJsaW5n
KDApOworICAgIAorICAgIGNoaWxkLT5jaGlsZHJlbigpLT5zZXRGaXJzdENoaWxkKDApOworICAg
IGNoaWxkLT5tX25leHQgPSAwOworCisgICAgY2hpbGQtPmRlc3Ryb3koKTsKK30KKwogdm9pZCBS
ZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KiBvbGRDaGlsZCkKIHsKICAgICAv
LyBJZiB0aGlzIGNoaWxkIGlzIGEgYmxvY2ssIGFuZCBpZiBvdXIgcHJldmlvdXMgYW5kIG5leHQg
c2libGluZ3MgYXJlCkBAIC0xNDQ1LDcgKzE0ODYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0CiAgICAgICAgICAgICAgICAgci0+c2V0Q2hpbGROZWVkc0xheW91
dCh0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiByZWxh
eW91dENoaWxkcmVuIGlzIHNldCBhbmQgd2UgaGF2ZSBwZXJjZW50YWdlIHBhZGRpbmcsIHdlIGFs
c28gbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBjaGlsZCdzIHByZWYgd2lkdGhzLgotICAgICAgICAg
ICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gJiYgKHItPnN0eWxlKCktPnBhZGRpbmdMZWZ0KCkuaXNQ
ZXJjZW50KCkgfHwgci0+c3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCkuaXNQZXJjZW50KCkpKQorICAg
ICAgICAgICAgLy9pZiAocmVsYXlvdXRDaGlsZHJlbiAmJiAoci0+c3R5bGUoKS0+cGFkZGluZ0xl
ZnQoKS5pc1BlcmNlbnQoKSB8fCByLT5zdHlsZSgpLT5wYWRkaW5nUmlnaHQoKS5pc1BlcmNlbnQo
KSkpCiAgICAgICAgICAgICAgICAgci0+c2V0UHJlZldpZHRoc0RpcnR5KHRydWUsIGZhbHNlKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBkbyBhIGZ1bGwg
bGF5b3V0LiAgV2UganVzdCBoYXZlIHRvIHVwZGF0ZSBvdXIgcG9zaXRpb24uIFRyeSB0aGF0IGZp
cnN0LiBJZiB3ZSBoYXZlIHNocmluay10by1maXQgd2lkdGgKQEAgLTQ3NzYsOCArNDgxNyw4IEBA
IFJlbmRlclN0eWxlKiBSZW5kZXJCbG9jazo6b3V0bGluZVN0eWxlRm8KIHZvaWQgUmVuZGVyQmxv
Y2s6OmNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlck9iamVjdCopCiB7CiAgICAgbWFrZUNoaWxk
cmVuTm9uSW5saW5lKCk7Ci0gICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSAmJiBwYXJlbnQoKSkK
LSAgICAgICAgcGFyZW50KCktPnJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2sodGhpcyk7Cisg
ICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNSZW5k
ZXJCbG9jaygpKQorICAgICAgICB0b1JlbmRlckJsb2NrKHBhcmVudCgpKS0+cmVtb3ZlTGVmdG92
ZXJBbm9ueW1vdXNCbG9jayh0aGlzKTsKICAgICAvLyB8dGhpc3wgbWF5IGJlIGRlYWQgaGVyZQog
fQogCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gNDA0MDkpCisrKyByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgY29uc3QgeyByZXR1cm4gaXNJbmxp
bmUoKSAmJiBpc1JlcGxhY2VkKCk7IH0KIAogICAgIHZvaWQgbWFrZUNoaWxkcmVuTm9uSW5saW5l
KFJlbmRlck9iamVjdCogaW5zZXJ0aW9uUG9pbnQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayogY2hpbGQpOwogCiAgICAgUmVu
ZGVyTGluZUJveExpc3QqIGxpbmVCb3hlcygpIHsgcmV0dXJuICZtX2xpbmVCb3hlczsgfQogICAg
IGNvbnN0IFJlbmRlckxpbmVCb3hMaXN0KiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiAmbV9s
aW5lQm94ZXM7IH0KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA0MDQwOSkKKysrIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDI1IEBAIHZvaWQgUmVu
ZGVyQm94OjpzdHlsZURpZENoYW5nZShSZW5kZXJTdHkKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VGV4dENvbG9yKHN0eWxlKCktPmNvbG9yKCkpOwogfQogCit2b2lkIFJlbmRlckJveDo6bGF5b3V0
KCkKK3sKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICBSZW5kZXJPYmplY3QqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOworICAgIGlmICghY2hpbGQpIHsKKyAgICAgICAgc2V0TmVlZHNM
YXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTGF5b3V0U3RhdGVN
YWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZSh4KCksIHkoKSkpOwor
ICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKKyAg
ICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CisgICAgICAgIGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIHN0YXRlUHVzaGVyLnBvcCgpOworICAgIHNl
dE5lZWRzTGF5b3V0KGZhbHNlKTsKK30KIAogaW50IFJlbmRlckJveDo6b2Zmc2V0TGVmdCgpIGNv
bnN0CiB7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVy
aW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA0MDQwOCkKKysrIHJlbmRlcmluZy9SZW5kZXJCb3gu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckJveCI7IH0K
IAorICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVja2luZyBpcyBkb25l
IQorICAgIFJlbmRlckJveCogZmlyc3RDaGlsZEJveCgpIGNvbnN0OworICAgIFJlbmRlckJveCog
bGFzdENoaWxkQm94KCkgY29uc3Q7CisKICAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVSZWN0LngoKTsgfQogICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QueSgp
OyB9CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyBBU1NFUlQoIWlzUmVuZGVySW5saW5lKCkpOyBy
ZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQpAQCAtMTU4LDYgKzE2Miw3IEBAIHB1YmxpYzoK
ICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIHJl
dHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVjdCBpbiB0aGUgcmVmbGVjdGlvbi4KICAgICBJbnRS
ZWN0IHJlZmxlY3RlZFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogCisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSk7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRl
c3RBY3Rpb24pOwogCkBAIC00MDYsNiArNDExLDE2IEBAIGlubGluZSBSZW5kZXJCb3gqIFJlbmRl
ckJveDo6cGFyZW50Qm94KCkKICAgICByZXR1cm4gdG9SZW5kZXJCb3gocGFyZW50KCkpOwogfQog
CitpbmxpbmUgUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpcnN0Q2hpbGRCb3goKSBjb25zdAorewor
ICAgIHJldHVybiB0b1JlbmRlckJveChmaXJzdENoaWxkKCkpOworfQorCitpbmxpbmUgUmVuZGVy
Qm94KiBSZW5kZXJCb3g6Omxhc3RDaGlsZEJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvUmVu
ZGVyQm94KGxhc3RDaGlsZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUmVuZGVyQm94X2gKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiA0MDQw
OCkKKysrIHJlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSwzMSArNDksNiBAQCBSZW5kZXJDb250YWluZXI6On5SZW5kZXJDb250YWluZXIoKQogewogfQog
Ci12b2lkIFJlbmRlckNvbnRhaW5lcjo6ZGVzdHJveSgpCi17Ci0gICAgZGVzdHJveUxlZnRvdmVy
Q2hpbGRyZW4oKTsKLSAgICBSZW5kZXJCb3g6OmRlc3Ryb3koKTsKLX0KLQotdm9pZCBSZW5kZXJD
b250YWluZXI6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCkKLXsKLSAgICB3aGlsZSAobV9jaGls
ZHJlbi5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgaWYgKG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgp
LT5pc0xpc3RNYXJrZXIoKSB8fCAobV9jaGlsZHJlbi5maXJzdENoaWxkKCktPnN0eWxlKCktPnN0
eWxlVHlwZSgpID09IFJlbmRlclN0eWxlOjpGSVJTVF9MRVRURVIgJiYgIW1fY2hpbGRyZW4uZmly
c3RDaGlsZCgpLT5pc1RleHQoKSkpCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQo
KS0+cmVtb3ZlKCk7ICAvLyBMaXN0IG1hcmtlcnMgYXJlIG93bmVkIGJ5IHRoZWlyIGVuY2xvc2lu
ZyBsaXN0IGFuZCBzbyBkb24ndCBnZXQgZGVzdHJveWVkIGJ5IHRoaXMgY29udGFpbmVyLiBTaW1p
bGFybHksIGZpcnN0IGxldHRlcnMgYXJlIGRlc3Ryb3llZCBieSB0aGVpciByZW1haW5pbmcgdGV4
dCBmcmFnbWVudC4KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgIC8vIERlc3Ryb3kgYW55IGFub255
bW91cyBjaGlsZHJlbiByZW1haW5pbmcgaW4gdGhlIHJlbmRlciB0cmVlLCBhcyB3ZWxsIGFzIGlt
cGxpY2l0IChzaGFkb3cpIERPTSBlbGVtZW50cyBsaWtlIHRob3NlIHVzZWQgaW4gdGhlIGVuZ2lu
ZS1iYXNlZCB0ZXh0IGZpZWxkcy4KLSAgICAgICAgICAgIGlmIChtX2NoaWxkcmVuLmZpcnN0Q2hp
bGQoKS0+ZWxlbWVudCgpKQotICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgp
LT5lbGVtZW50KCktPnNldFJlbmRlcmVyKDApOwotICAgICAgICAgICAgbV9jaGlsZHJlbi5maXJz
dENoaWxkKCktPmRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBSZW5kZXJD
b250YWluZXI6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIHN0YXRpYyB2b2lkIHVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKFJlbmRlck9iamVjdCogY2hp
bGQpCiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHIgPSBjaGlsZDsgcjsgciA9IHItPm5leHRT
aWJsaW5nKCkpCkBAIC04Niw3ICs2MSw3IEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjphZGRDaGls
ZChSZW5kZXJPYmoKICAgICBib29sIG5lZWRzVGFibGUgPSBmYWxzZTsKIAogICAgIGlmIChuZXdD
aGlsZC0+aXNMaXN0SXRlbSgpKQotICAgICAgICB1cGRhdGVMaXN0TWFya2VyTnVtYmVycyhiZWZv
cmVDaGlsZCA/IGJlZm9yZUNoaWxkIDogbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKSk7CisgICAgICAg
IHVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKGJlZm9yZUNoaWxkID8gYmVmb3JlQ2hpbGQgOiBjaGls
ZHJlbigpLT5sYXN0Q2hpbGQoKSk7CiAgICAgZWxzZSBpZiAobmV3Q2hpbGQtPmlzVGFibGVDb2wo
KSAmJiBuZXdDaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9HUk9VUCkK
ICAgICAgICAgbmVlZHNUYWJsZSA9ICFpc1RhYmxlKCk7CiAgICAgZWxzZSBpZiAobmV3Q2hpbGQt
PmlzUmVuZGVyQmxvY2soKSAmJiBuZXdDaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgpID09IFRBQkxF
X0NBUFRJT04pCkBAIC0xMDEsMTMgKzc2LDEzIEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjphZGRD
aGlsZChSZW5kZXJPYmoKICAgICAgICAgLy8gY2hhbmdlIHdlIHJlY3Vyc2UgaW5maW5pdGVseSB3
aGVuIHRyeWluZyB0byByZW5kZXIgdGhlIENTUzIgdGVzdCBwYWdlOgogICAgICAgICAvLyBodHRw
Oi8vd3d3LmJhdGguYWMudWsvJTdFcHk4aWVoL2ludGVybmV0L2V2aWx0ZXN0cy9odG1sYm9keWhl
YWRyZW5kZXJpbmcyLmh0bWwuCiAgICAgICAgIC8vIFNlZSBSYWRhciAyOTI1MjkxLgotICAgICAg
ICBpZiAobmVlZHNUYWJsZSAmJiBpc1RhYmxlQ2VsbCgpICYmICFtX2NoaWxkcmVuLmZpcnN0Q2hp
bGQoKSAmJiAhbmV3Q2hpbGQtPmlzVGFibGVDZWxsKCkpCisgICAgICAgIGlmIChuZWVkc1RhYmxl
ICYmIGlzVGFibGVDZWxsKCkgJiYgIWNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSAmJiAhbmV3Q2hp
bGQtPmlzVGFibGVDZWxsKCkpCiAgICAgICAgICAgICBuZWVkc1RhYmxlID0gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKG5lZWRzVGFibGUpIHsKICAgICAgICAgUmVuZGVyVGFibGUqIHRhYmxlOwot
ICAgICAgICBSZW5kZXJPYmplY3QqIGFmdGVyQ2hpbGQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKSA6IG1fY2hpbGRyZW4ubGFzdENoaWxkKCk7CisgICAgICAg
IFJlbmRlck9iamVjdCogYWZ0ZXJDaGlsZCA9IGJlZm9yZUNoaWxkID8gYmVmb3JlQ2hpbGQtPnBy
ZXZpb3VzU2libGluZygpIDogY2hpbGRyZW4oKS0+bGFzdENoaWxkKCk7CiAgICAgICAgIGlmIChh
ZnRlckNoaWxkICYmIGFmdGVyQ2hpbGQtPmlzQW5vbnltb3VzKCkgJiYgYWZ0ZXJDaGlsZC0+aXNU
YWJsZSgpKQogICAgICAgICAgICAgdGFibGUgPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZSo+KGFm
dGVyQ2hpbGQpOwogICAgICAgICBlbHNlIHsKQEAgLTE4MSwxMCArMTU2LDEwIEBAIFJlbmRlck9i
amVjdCogUmVuZGVyQ29udGFpbmVyOjpyZW1vdmVDaGkKICAgICBpZiAob2xkQ2hpbGQtPm5leHRT
aWJsaW5nKCkpCiAgICAgICAgIG9sZENoaWxkLT5uZXh0U2libGluZygpLT5zZXRQcmV2aW91c1Np
Ymxpbmcob2xkQ2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKIAotICAgIGlmIChtX2NoaWxkcmVu
LmZpcnN0Q2hpbGQoKSA9PSBvbGRDaGlsZCkKLSAgICAgICAgbV9jaGlsZHJlbi5zZXRGaXJzdENo
aWxkKG9sZENoaWxkLT5uZXh0U2libGluZygpKTsKLSAgICBpZiAobV9jaGlsZHJlbi5sYXN0Q2hp
bGQoKSA9PSBvbGRDaGlsZCkKLSAgICAgICAgbV9jaGlsZHJlbi5zZXRMYXN0Q2hpbGQob2xkQ2hp
bGQtPnByZXZpb3VzU2libGluZygpKTsKKyAgICBpZiAoY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgp
ID09IG9sZENoaWxkKQorICAgICAgICBjaGlsZHJlbigpLT5zZXRGaXJzdENoaWxkKG9sZENoaWxk
LT5uZXh0U2libGluZygpKTsKKyAgICBpZiAoY2hpbGRyZW4oKS0+bGFzdENoaWxkKCkgPT0gb2xk
Q2hpbGQpCisgICAgICAgIGNoaWxkcmVuKCktPnNldExhc3RDaGlsZChvbGRDaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpOwogCiAgICAgb2xkQ2hpbGQtPnNldFByZXZpb3VzU2libGluZygwKTsKICAg
ICBvbGRDaGlsZC0+c2V0TmV4dFNpYmxpbmcoMCk7CkBAIC0yOTAsNyArMjY1LDcgQEAgdm9pZCBS
ZW5kZXJDb250YWluZXI6OnVwZGF0ZUJlZm9yZUFmdGVyQwogICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5cGUpIHsKICAgICAgICAgICAgIG9sZENv
bnRlbnRQcmVzZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBjaGlsZC0+ZGVzdHJveSgpOwotICAg
ICAgICAgICAgY2hpbGQgPSAodHlwZSA9PSBSZW5kZXJTdHlsZTo6QkVGT1JFKSA/IG1fY2hpbGRy
ZW4uZmlyc3RDaGlsZCgpIDogbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNo
aWxkID0gKHR5cGUgPT0gUmVuZGVyU3R5bGU6OkJFRk9SRSkgPyBjaGlsZHJlbigpLT5maXJzdENo
aWxkKCkgOiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzM3LDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjp1cGRhdGVCZWZvcmVBZnRlckMK
ICAgICAgICAgcmV0dXJuOyAvLyBXZSd2ZSB1cGRhdGVkIHRoZSBnZW5lcmF0ZWQgY29udGVudC4g
VGhhdCdzIGFsbCB3ZSBuZWVkZWQgdG8gZG8uCiAgICAgfQogICAgIAotICAgIFJlbmRlck9iamVj
dCogaW5zZXJ0QmVmb3JlID0gKHR5cGUgPT0gUmVuZGVyU3R5bGU6OkJFRk9SRSkgPyBtX2NoaWxk
cmVuLmZpcnN0Q2hpbGQoKSA6IDA7CisgICAgUmVuZGVyT2JqZWN0KiBpbnNlcnRCZWZvcmUgPSAo
dHlwZSA9PSBSZW5kZXJTdHlsZTo6QkVGT1JFKSA/IGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSA6
IDA7CiAKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCBjb25zaXN0cyBvZiBhIHNpbmdsZSBjb250
YWluZXIgdGhhdCBob3VzZXMgbXVsdGlwbGUgY2hpbGRyZW4gKHNwZWNpZmllZAogICAgIC8vIGJ5
IHRoZSBjb250ZW50IHByb3BlcnR5KS4gIFRoaXMgZ2VuZXJhdGVkIGNvbnRlbnQgY29udGFpbmVy
IGdldHMgdGhlIHBzZXVkby1lbGVtZW50IHN0eWxlIHNldCBvbiBpdC4KQEAgLTQyMiwxNSArMzk3
LDE1IEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjphcHBlbmRDaGlsZE5vZGUoUmUKICAgICBBU1NF
UlQoIWlzQmxvY2tGbG93KCkgfHwgKCFuZXdDaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSAmJiAhbmV3
Q2hpbGQtPmlzVGFibGVSb3coKSAmJiAhbmV3Q2hpbGQtPmlzVGFibGVDZWxsKCkpKTsKIAogICAg
IG5ld0NoaWxkLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgUmVuZGVyT2JqZWN0KiBsQ2hpbGQgPSBt
X2NoaWxkcmVuLmxhc3RDaGlsZCgpOworICAgIFJlbmRlck9iamVjdCogbENoaWxkID0gY2hpbGRy
ZW4oKS0+bGFzdENoaWxkKCk7CiAKICAgICBpZiAobENoaWxkKSB7CiAgICAgICAgIG5ld0NoaWxk
LT5zZXRQcmV2aW91c1NpYmxpbmcobENoaWxkKTsKICAgICAgICAgbENoaWxkLT5zZXROZXh0U2li
bGluZyhuZXdDaGlsZCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4uc2V0Rmlyc3RD
aGlsZChuZXdDaGlsZCk7CisgICAgICAgIGNoaWxkcmVuKCktPnNldEZpcnN0Q2hpbGQobmV3Q2hp
bGQpOwogCi0gICAgbV9jaGlsZHJlbi5zZXRMYXN0Q2hpbGQobmV3Q2hpbGQpOworICAgIGNoaWxk
cmVuKCktPnNldExhc3RDaGlsZChuZXdDaGlsZCk7CiAgICAgCiAgICAgaWYgKGZ1bGxBcHBlbmQp
IHsKICAgICAgICAgLy8gS2VlcCBvdXIgbGF5ZXIgaGllcmFyY2h5IHVwZGF0ZWQuICBPcHRpbWl6
ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCkBA
IC00NzYsOCArNDUxLDggQEAgdm9pZCBSZW5kZXJDb250YWluZXI6Omluc2VydENoaWxkTm9kZShS
ZQogCiAgICAgQVNTRVJUKCFpc0Jsb2NrRmxvdygpIHx8ICghY2hpbGQtPmlzVGFibGVTZWN0aW9u
KCkgJiYgIWNoaWxkLT5pc1RhYmxlUm93KCkgJiYgIWNoaWxkLT5pc1RhYmxlQ2VsbCgpKSk7CiAK
LSAgICBpZiAoYmVmb3JlQ2hpbGQgPT0gbV9jaGlsZHJlbi5maXJzdENoaWxkKCkpCi0gICAgICAg
IG1fY2hpbGRyZW4uc2V0Rmlyc3RDaGlsZChjaGlsZCk7CisgICAgaWYgKGJlZm9yZUNoaWxkID09
IGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgY2hpbGRyZW4oKS0+c2V0Rmlyc3RD
aGlsZChjaGlsZCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHByZXYgPSBiZWZvcmVDaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCk7CiAgICAgY2hpbGQtPnNldE5leHRTaWJsaW5nKGJlZm9yZUNoaWxkKTsK
QEAgLTUxOCw3MCArNDkzLDEwIEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjppbnNlcnRDaGlsZE5v
ZGUoUmUKICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5n
ZWQodGhpcyk7CiB9CiAKLXZvaWQgUmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQotewotICAgIEFT
U0VSVChuZWVkc0xheW91dCgpKTsKLQotICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUoeCgpLCB5KCkpKTsKLQotICAgIFJlbmRlck9iamVj
dCogY2hpbGQgPSBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAoY2hpbGQpIHsK
LSAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7Ci0gICAgICAgIEFTU0VSVChjaGlsZC0+
aXNSZW5kZXJJbmxpbmUoKSB8fCAhY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwotICAgICAgICBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotICAgIH0KLQotICAgIHN0YXRlUHVzaGVyLnBvcCgp
OwotICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKLX0KLQotdm9pZCBSZW5kZXJDb250YWluZXI6
OnJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqIGNoaWxkKQotewotICAg
IEFTU0VSVChjaGlsZC0+aXNBbm9ueW1vdXNCbG9jaygpKTsKLSAgICBBU1NFUlQoIWNoaWxkLT5j
aGlsZHJlbklubGluZSgpKTsKLSAgICAKLSAgICBpZiAoY2hpbGQtPmlubGluZUNvbnRpbnVhdGlv
bigpKSAKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlbmRlck9iamVjdCogZmlyc3RBbkNo
aWxkID0gY2hpbGQtPm1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOwotICAgIFJlbmRlck9iamVjdCog
bGFzdEFuQ2hpbGQgPSBjaGlsZC0+bV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsKLSAgICBpZiAoZmly
c3RBbkNoaWxkKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogbyA9IGZpcnN0QW5DaGlsZDsKLSAg
ICAgICAgd2hpbGUobykgewotICAgICAgICAgICAgby0+c2V0UGFyZW50KHRoaXMpOwotICAgICAg
ICAgICAgbyA9IG8tPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZmlyc3RBbkNo
aWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKLSAgICAg
ICAgbGFzdEFuQ2hpbGQtPnNldE5leHRTaWJsaW5nKGNoaWxkLT5uZXh0U2libGluZygpKTsKLSAg
ICAgICAgaWYgKGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgICAgICAgIGNoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKS0+c2V0TmV4dFNpYmxpbmcoZmlyc3RBbkNoaWxkKTsKLSAgICAgICAg
aWYgKGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgY2hpbGQtPm5leHRTaWJsaW5n
KCktPnNldFByZXZpb3VzU2libGluZyhsYXN0QW5DaGlsZCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgICAgICAgIGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKS0+c2V0TmV4dFNpYmxpbmcoY2hpbGQtPm5leHRTaWJsaW5nKCkpOwotICAg
ICAgICBpZiAoY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBjaGlsZC0+bmV4dFNp
YmxpbmcoKS0+c2V0UHJldmlvdXNTaWJsaW5nKGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7Ci0g
ICAgfQotICAgIGlmIChjaGlsZCA9PSBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKSkKLSAgICAgICAg
bV9jaGlsZHJlbi5zZXRGaXJzdENoaWxkKGZpcnN0QW5DaGlsZCk7Ci0gICAgaWYgKGNoaWxkID09
IG1fY2hpbGRyZW4ubGFzdENoaWxkKCkpCi0gICAgICAgIG1fY2hpbGRyZW4uc2V0TGFzdENoaWxk
KGxhc3RBbkNoaWxkKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwotICAgIGNoaWxkLT5zZXRQ
cmV2aW91c1NpYmxpbmcoMCk7Ci0gICAgY2hpbGQtPnNldE5leHRTaWJsaW5nKDApOwotICAgIGlm
ICghY2hpbGQtPmlzVGV4dCgpKSB7Ci0gICAgICAgIFJlbmRlckNvbnRhaW5lciogYyA9IHN0YXRp
Y19jYXN0PFJlbmRlckNvbnRhaW5lcio+KGNoaWxkKTsKLSAgICAgICAgYy0+bV9jaGlsZHJlbi5z
ZXRGaXJzdENoaWxkKDApOwotICAgICAgICBjLT5tX25leHQgPSAwOwotICAgIH0KLSAgICBjaGls
ZC0+ZGVzdHJveSgpOwotfQotCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQ29udGFpbmVyOjpwb3Np
dGlvbkZvckNvb3JkaW5hdGVzKGludCB4UG9zLCBpbnQgeVBvcykKIHsKICAgICAvLyBubyBjaGls
ZHJlbi4uLnJldHVybiB0aGlzIHJlbmRlciBvYmplY3QncyBlbGVtZW50LCBpZiB0aGVyZSBpcyBv
bmUsIGFuZCBvZmZzZXQgMAotICAgIGlmICghbV9jaGlsZHJlbi5maXJzdENoaWxkKCkpCisgICAg
aWYgKCFjaGlsZHJlbigpLT5maXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oZWxlbWVudCgpLCAwLCBET1dOU1RSRUFNKTsKICAgICAgICAgCiAgICAgaWYgKGlzVGFi
bGUoKSAmJiBlbGVtZW50KCkpIHsKQEAgLTYwNSw3ICs1MjAsNyBAQCBWaXNpYmxlUG9zaXRpb24g
UmVuZGVyQ29udGFpbmVyOjpwb3NpdGlvCiAgICAgICAgIG5ld1ggKz0geCgpOwogICAgICAgICBu
ZXdZICs9IHkoKTsKICAgICB9Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9
IG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOyByZW5kZXJPYmplY3Q7IHJlbmRlck9iamVjdCA9IHJl
bmRlck9iamVjdC0+bmV4dFNpYmxpbmcoKSkgeworICAgIGZvciAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QgPSBjaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IHJlbmRlck9iamVjdDsgcmVuZGVy
T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghcmVu
ZGVyT2JqZWN0LT5maXJzdENoaWxkKCkgJiYgIXJlbmRlck9iamVjdC0+aXNJbmxpbmUoKSAmJiAh
cmVuZGVyT2JqZWN0LT5pc0Jsb2NrRmxvdygpIAogICAgICAgICAgICAgfHwgcmVuZGVyT2JqZWN0
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtNjY4LDEzICs1ODMsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckNvbnRhaW5lcjo6
cG9zaXRpbwogCiB2b2lkIFJlbmRlckNvbnRhaW5lcjo6YWRkTGluZUJveFJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wpCiB7Ci0g
ICAgaWYgKCFtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKSAmJiAoaXNJbmxpbmUoKSB8fCBpc0Fub255
bW91c0Jsb2NrKCkpKSB7CisgICAgaWYgKCFjaGlsZHJlbigpLT5maXJzdENoaWxkKCkgJiYgKGlz
SW5saW5lKCkgfHwgaXNBbm9ueW1vdXNCbG9jaygpKSkgewogICAgICAgICBGbG9hdFBvaW50IGFi
c1BvcyA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCkpOwogICAgICAgICBhYnNvbHV0ZVJl
Y3RzKHJlY3RzLCBhYnNQb3MueCgpLCBhYnNQb3MueSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghbV9jaGlsZHJlbi5maXJzdENoaWxkKCkpCisgICAgaWYgKCFjaGlsZHJl
bigpLT5maXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHN0YXJ0OwpAQCAtNjg4LDEyICs2MDMsMTIgQEAgdm9pZCBSZW5kZXJDb250YWluZXI6OmFk
ZExpbmVCb3hSZWN0cyhWZQogCiB2b2lkIFJlbmRlckNvbnRhaW5lcjo6Y29sbGVjdEFic29sdXRl
TGluZUJveFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCAvKnVzZVNlbGVjdGlvbkhlaWdodCovKQogewotICAgIGlmICghbV9j
aGlsZHJlbi5maXJzdENoaWxkKCkgJiYgKGlzSW5saW5lKCkgfHwgaXNBbm9ueW1vdXNCbG9jaygp
KSkgeworICAgIGlmICghY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpICYmIChpc0lubGluZSgpIHx8
IGlzQW5vbnltb3VzQmxvY2soKSkpIHsKICAgICAgICAgYWJzb2x1dGVRdWFkcyhxdWFkcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fY2hpbGRyZW4uZmlyc3RDaGlsZCgp
KQorICAgIGlmICghY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGFydDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmgJKHJldmlz
aW9uIDQwNDA4KQorKysgcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIFJlbmRlckNvbnRhaW5lcl9oCiAKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3RDaGlsZExpc3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMiwyMSArMzEsMTUgQEAgcHVibGljOgogICAgIFJlbmRl
ckNvbnRhaW5lcihOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyQ29udGFpbmVyKCk7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hp
bGRyZW4uZmlyc3RDaGlsZCgpOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxhc3RDaGls
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4ubGFzdENoaWxkKCk7IH0KKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRy
ZW4oKTsgfQorICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFs
Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZHJlbigpOyB9CisgICAgY29uc3QgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9
CisgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxk
cmVuOyB9CiAKLSAgICAvLyBVc2UgdGhpcyB3aXRoIGNhdXRpb24hIE5vIHR5cGUgY2hlY2tpbmcg
aXMgZG9uZSEKLSAgICBSZW5kZXJCb3gqIGZpcnN0Q2hpbGRCb3goKSBjb25zdCB7IEFTU0VSVCgh
Zmlyc3RDaGlsZCgpIHx8IGZpcnN0Q2hpbGQoKS0+aXNCb3goKSk7IHJldHVybiB0b1JlbmRlckJv
eChmaXJzdENoaWxkKCkpOyB9Ci0gICAgUmVuZGVyQm94KiBsYXN0Q2hpbGRCb3goKSBjb25zdCB7
IEFTU0VSVCghbGFzdENoaWxkKCkgfHwgbGFzdENoaWxkKCktPmlzQm94KCkpOyByZXR1cm4gdG9S
ZW5kZXJCb3gobGFzdENoaWxkKCkpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVD
aGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIHsgcmV0dXJuIGFkZENoaWxkKG5ld0NoaWxk
LCBiZWZvcmVDaGlsZCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwotICAgIHZvaWQgZGVzdHJveUxl
ZnRvdmVyQ2hpbGRyZW4oKTsKLQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGls
ZE5vZGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBmdWxsUmVtb3ZlID0gdHJ1ZSk7CiAgICAgdmlydHVh
bCB2b2lkIGFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmplY3QqLCBib29sIGZ1bGxBcHBlbmQgPSB0
cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGROb2RlKFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlLCBib29sIGZ1bGxJbnNlcnQgPSB0cnVlKTsKQEAgLTU1
LDExICs0OCw4IEBAIHB1YmxpYzoKICAgICAvLyBjaGFuZ2UgaW4gcGFyZW50YWdlIGlzIG5vdCBn
b2luZyB0byBhZmZlY3QgYW55dGhpbmcuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVDaGlsZE5vZGUo
UmVuZGVyT2JqZWN0KiBjaGlsZCkgeyBhcHBlbmRDaGlsZE5vZGUoY2hpbGQtPnBhcmVudCgpLT5y
ZW1vdmVDaGlsZE5vZGUoY2hpbGQsIGZhbHNlKSwgZmFsc2UpOyB9CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpIHsgc2V0
UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUxlZnRv
dmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqIGNoaWxkKTsKLQogICAgIFJlbmRlck9iamVj
dCogYmVmb3JlQWZ0ZXJDb250YWluZXIoUmVuZGVyU3R5bGU6OlBzZXVkb0lkKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlclN0eWxlOjpQc2V1ZG9JZCk7
CiAgICAgdm9pZCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnRGb3JDb250YWluZXIoUmVuZGVyU3R5
bGU6OlBzZXVkb0lkLCBSZW5kZXJDb250YWluZXIqKTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZp
c2lvbiA0MDQwOSkKKysrIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkZXN0cm95KCkKICAgICAKICAg
ICAvLyBNYWtlIHN1cmUgdG8gZGVzdHJveSBhbm9ueW1vdXMgY2hpbGRyZW4gZmlyc3Qgd2hpbGUg
dGhleSBhcmUgc3RpbGwgY29ubmVjdGVkIHRvIHRoZSByZXN0IG9mIHRoZSB0cmVlLCBzbyB0aGF0
IHRoZXkgd2lsbAogICAgIC8vIHByb3Blcmx5IGRpcnR5IGxpbmUgYm94ZXMgdGhhdCB0aGV5IGFy
ZSByZW1vdmVkIGZyb20uICBFZmZlY3RzIHRoYXQgZG8gOmJlZm9yZS86YWZ0ZXIgb25seSBvbiBo
b3ZlciBjb3VsZCBjcmFzaCBvdGhlcndpc2UuCi0gICAgUmVuZGVyQ29udGFpbmVyOjpkZXN0cm95
TGVmdG92ZXJDaGlsZHJlbigpOworICAgIGNoaWxkcmVuKCktPmRlc3Ryb3lMZWZ0b3ZlckNoaWxk
cmVuKCk7CiAKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkgewogICAgICAgICBp
ZiAoZmlyc3RMaW5lQm94KCkpIHsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDQwNDA4KQorKysg
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNwbGl0RmxvdyhSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBS
ZW5kZXJCbG9jayogbmV3QmxvY2tCb3gsCiAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBuZXdDaGlsZCwgUmVuZGVyQ29udGFpbmVyKiBvbGRDb250KTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSB7IH0gLy8gRG8gbm90aGluZyBmb3IgbGF5b3V0KCkKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBEbyBub3RoaW5nIGZvciBs
YXlvdXQoKQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKIApJbmRleDogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBy
ZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCShyZXZpc2lvbiA0MDQwOCkKKysrIHJlbmRlcmluZy9S
ZW5kZXJNZWRpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgdm9pZCBSZW5k
ZXJNZWRpYTo6ZGVzdHJveSgpCiAKICAgICAgICAgcmVtb3ZlQ2hpbGQobV9jb250cm9sc1NoYWRv
d1Jvb3QtPnJlbmRlcmVyKCkpOwogICAgICAgICBtX2NvbnRyb2xzU2hhZG93Um9vdC0+ZGV0YWNo
KCk7CisgICAgICAgIG1fY29udHJvbHNTaGFkb3dSb290ID0gMDsKICAgICB9CiAgICAgUmVuZGVy
UmVwbGFjZWQ6OmRlc3Ryb3koKTsKIH0KQEAgLTEyMywxNiArMTI0LDE2IEBAIHZvaWQgUmVuZGVy
TWVkaWE6OmxheW91dCgpCiAgICAgfQogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlck1lZGlhOjpm
aXJzdENoaWxkKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX2NvbnRyb2xzU2hhZG93Um9vdCA/
IG1fY29udHJvbHNTaGFkb3dSb290LT5yZW5kZXJlcigpIDogMDsgCitjb25zdCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIFJlbmRlck1lZGlhOjpjaGlsZHJlbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY29udHJvbHNTaGFkb3dSb290ID8gbV9jb250cm9sc1NoYWRvd1Jvb3QtPnJlbmRlcmVyKCkt
PnZpcnR1YWxDaGlsZHJlbigpIDogMDsgCiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyTWVkaWE6
Omxhc3RDaGlsZCgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gbV9jb250cm9sc1NoYWRvd1Jvb3Qg
PyBtX2NvbnRyb2xzU2hhZG93Um9vdC0+cmVuZGVyZXIoKSA6IDA7CitSZW5kZXJPYmplY3RDaGls
ZExpc3QqIFJlbmRlck1lZGlhOjpjaGlsZHJlbigpCit7CisgICAgcmV0dXJuIG1fY29udHJvbHNT
aGFkb3dSb290ID8gbV9jb250cm9sc1NoYWRvd1Jvb3QtPnJlbmRlcmVyKCktPnZpcnR1YWxDaGls
ZHJlbigpIDogMDsgCiB9Ci0gICAgCisgICAKIHZvaWQgUmVuZGVyTWVkaWE6OnJlbW92ZUNoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQpCiB7CiAgICAgQVNTRVJUKG1fY29udHJvbHNTaGFkb3dSb290
KTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oCShyZXZpc2lvbiA0MDQwOCkKKysrIHJlbmRlcmluZy9SZW5kZXJNZWRp
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
TWVkaWEoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpOwog
ICAgIHZpcnR1YWwgflJlbmRlck1lZGlhKCk7CiAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGZpcnN0Q2hpbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGFzdENo
aWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxD
aGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRl
ck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRy
ZW4oKTsgfQorICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25z
dDsKKyAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCk7CisKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3koKTsKICAgICAKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA0MDQwOSkKKysrIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksMTEgKzIyOSw2IEBA
IGJvb2wgUmVuZGVyT2JqZWN0Ojppc0hUTUxNYXJxdWVlKCkgY29uc3QKICAgICByZXR1cm4gZWxl
bWVudCgpICYmIGVsZW1lbnQoKS0+cmVuZGVyZXIoKSA9PSB0aGlzICYmIGVsZW1lbnQoKS0+aGFz
VGFnTmFtZShtYXJxdWVlVGFnKTsKIH0KIAotYm9vbCBSZW5kZXJPYmplY3Q6OmNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFJlbmRlck9iamVj
dDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KikKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTIyODksNiArMjI4NCwxMSBAQCBib29sIFJlbmRlck9iamVjdDo6
ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llCiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKIHsK
KyAgICAvLyBEZXN0cm95IGFueSBsZWZ0b3ZlciBhbm9ueW1vdXMgY2hpbGRyZW4uCisgICAgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpOworICAgIGlm
IChjaGlsZHJlbikKKyAgICAgICAgY2hpbGRyZW4tPmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7
CisKICAgICAvLyBJZiB0aGlzIHJlbmRlcmVyIGlzIGJlaW5nIGF1dG9zY3JvbGxlZCwgc3RvcCB0
aGUgYXV0b3Njcm9sbCB0aW1lcgogICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3Vt
ZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5hdXRvc2Nyb2xsUmVuZGVyZXIoKSA9PSB0
aGlzKQogICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1
dG9zY3JvbGxUaW1lcih0cnVlKTsKQEAgLTI0OTIsOCArMjQ5MiwxNiBAQCB2b2lkIFJlbmRlck9i
amVjdDo6c2NoZWR1bGVSZWxheW91dCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6
cmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopCit2b2lkIFJlbmRlck9i
amVjdDo6bGF5b3V0KCkKIHsKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisgICAgUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAg
ICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CisgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRz
TGF5b3V0KCkpOworICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOworICAgIH0K
KyAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKIElubGluZUJveCogUmVuZGVyT2JqZWN0
OjpjcmVhdGVJbmxpbmVCb3goYm9vbCwgYm9vbCB1bnVzZWRJc1Jvb3RMaW5lQm94LCBib29sKQpJ
bmRleDogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNDA0MDgpCisrKyByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTExLDYgKzExMiw3IEBAIHN0cnVj
dCBEYXNoYm9hcmRSZWdpb25WYWx1ZSB7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCByZW5kZXJp
bmcgdHJlZSBvYmplY3RzLgogY2xhc3MgUmVuZGVyT2JqZWN0IDogcHVibGljIENhY2hlZFJlc291
cmNlQ2xpZW50IHsKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyQmxvY2s7CiAgICAgZnJpZW5kIGNs
YXNzIFJlbmRlckNvbnRhaW5lcjsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXI7CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclNWR0NvbnRhaW5lcjsKQEAgLTEyOCw4ICsxMzAsMjAgQEAgcHVi
bGljOgogICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wcmV2aW91czsgfQogICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJl
dHVybiBtX25leHQ7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQo
KSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxk
cmVuID0gdmlydHVhbENoaWxkcmVuKCkpCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4tPmZp
cnN0Q2hpbGQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIFJlbmRlck9iamVjdCog
bGFzdENoaWxkKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb25zdCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIGNoaWxkcmVuID0gdmlydHVhbENoaWxkcmVuKCkpCisgICAgICAgICAgICByZXR1
cm4gY2hpbGRyZW4tPmxhc3RDaGlsZCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0SW5Q
cmVPcmRlcigpIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogbmV4dEluUHJlT3JkZXIoUmVuZGVy
T2JqZWN0KiBzdGF5V2l0aGluKSBjb25zdDsKQEAgLTE5NCw3ICsyMDgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZW5kZXJPYmplY3QgdHJlZSBtYW5pcHVsYXRpb24KICAgICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxDaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRB
bGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxk
KFJlbmRlck9iamVjdCopOwpAQCAtNDU1LDE3ICs0NjksOCBAQCBwdWJsaWM6CiAgICAgICovCiAg
ICAgdmlydHVhbCB2b2lkIGNhbGNXaWR0aCgpIHsgfQogCi0gICAgLyoKLSAgICAgKiBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBjYXVzZSB0aGUgRWxlbWVudCB0byBjYWxjdWxhdGUgaXRzCi0gICAgICog
d2lkdGggYW5kIGhlaWdodCBhbmQgdGhlIGxheW91dCBvZiBpdHMgY29udGVudAotICAgICAqCi0g
ICAgICogd2hlbiB0aGUgRWxlbWVudCBjYWxscyBzZXROZWVkc0xheW91dChmYWxzZSksIGxheW91
dCgpIGlzIG5vCi0gICAgICogbG9uZ2VyIGNhbGxlZCBkdXJpbmcgcmVsYXlvdXRzLCBhcyBsb25n
IGFzIHRoZXJlIGlzIG5vCi0gICAgICogc3R5bGUgc2hlZXQgY2hhbmdlLiBXaGVuIHRoYXQgb2Nj
dXJzLCBtX25lZWRzTGF5b3V0IHdpbGwgYmUKLSAgICAgKiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIEVs
ZW1lbnQgcmVjZWl2ZXMgbGF5b3V0KCkgY2FsbHMKLSAgICAgKiBhZ2Fpbi4KLSAgICAgKi8KLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgPSAwOworICAgIC8vIFJlY3Vyc2l2ZSBmdW5jdGlvbiB0
aGF0IGNvbXB1dGVzIHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGlzIG9iamVjdCBhbmQgYWxs
IGl0cyBkZXNjZW5kYW50cy4KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAKICAgICAvKiBU
aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgbGF5b3V0IG9ubHkgaWYgb25lIGlzIG5lZWRlZC4gKi8K
ICAgICB2b2lkIGxheW91dElmTmVlZGVkKCkgeyBpZiAobmVlZHNMYXlvdXQoKSkgbGF5b3V0KCk7
IH0KQEAgLTc2Myw5ICs3NjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmUoKSB7IGlmIChw
YXJlbnQoKSkgcGFyZW50KCktPnJlbW92ZUNoaWxkKHRoaXMpOyB9CiAKICAgICB2b2lkIGludmFs
aWRhdGVWZXJ0aWNhbFBvc2l0aW9uKCkgeyBtX3ZlcnRpY2FsUG9zaXRpb24gPSBQb3NpdGlvblVu
ZGVmaW5lZDsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91
c0Jsb2NrKFJlbmRlckJsb2NrKiBjaGlsZCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgY2Fw
c0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCkgeyB9CiAKICAgICBBbmltYXRpb25Db250cm9sbGVy
KiBhbmltYXRpb24oKSBjb25zdDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3Bw
CShyZXZpc2lvbiAwKQorKysgcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbmRlck9iamVjdENoaWxkTGlzdC5oIgorI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0OjpkZXN0cm95TGVmdG92ZXJDaGlsZHJlbigpCit7CisgICAgd2hpbGUgKGZpcnN0Q2hpbGQo
KSkgeworICAgICAgICBpZiAoZmlyc3RDaGlsZCgpLT5pc0xpc3RNYXJrZXIoKSB8fCAoZmlyc3RD
aGlsZCgpLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBSZW5kZXJTdHlsZTo6RklSU1RfTEVUVEVS
ICYmICFmaXJzdENoaWxkKCktPmlzVGV4dCgpKSkKKyAgICAgICAgICAgIGZpcnN0Q2hpbGQoKS0+
cmVtb3ZlKCk7ICAvLyBMaXN0IG1hcmtlcnMgYXJlIG93bmVkIGJ5IHRoZWlyIGVuY2xvc2luZyBs
aXN0IGFuZCBzbyBkb24ndCBnZXQgZGVzdHJveWVkIGJ5IHRoaXMgY29udGFpbmVyLiBTaW1pbGFy
bHksIGZpcnN0IGxldHRlcnMgYXJlIGRlc3Ryb3llZCBieSB0aGVpciByZW1haW5pbmcgdGV4dCBm
cmFnbWVudC4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBEZXN0cm95IGFueSBhbm9u
eW1vdXMgY2hpbGRyZW4gcmVtYWluaW5nIGluIHRoZSByZW5kZXIgdHJlZSwgYXMgd2VsbCBhcyBp
bXBsaWNpdCAoc2hhZG93KSBET00gZWxlbWVudHMgbGlrZSB0aG9zZSB1c2VkIGluIHRoZSBlbmdp
bmUtYmFzZWQgdGV4dCBmaWVsZHMuCisgICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCgpLT5lbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCgpLT5lbGVtZW50KCktPnNldFJlbmRl
cmVyKDApOworICAgICAgICAgICAgZmlyc3RDaGlsZCgpLT5kZXN0cm95KCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK30KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgJKHJldmlzaW9u
IDQwNDA4KQorKysgcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAgIHZvaWQgc2V0
TGFzdENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQog
ICAgIAorICAgIHZvaWQgZGVzdHJveUxlZnRvdmVyQ2hpbGRyZW4oKTsKKwogcHJpdmF0ZToKICAg
ICBSZW5kZXJPYmplY3QqIG1fZmlyc3RDaGlsZDsKICAgICBSZW5kZXJPYmplY3QqIG1fbGFzdENo
aWxkOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHJldmlzaW9uIDQwNDA4KQorKysgcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclJlcGxhY2VkIjsgfQogCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICB2aXJ0dWFsIGludCBsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVCb3ggPSBmYWxzZSkgY29uc3Q7CiAgICAgdmlydHVh
bCBpbnQgYmFzZWxpbmVQb3NpdGlvbihib29sIGZpcnN0TGluZSwgYm9vbCBpc1Jvb3RMaW5lQm94
ID0gZmFsc2UpIGNvbnN0OwogCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNp
b24gNDA0MDgpCisrKyByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksOCArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR0Nv
bnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiAgICAg
OiBSZW5kZXJPYmplY3Qobm9kZSkKLSAgICAsIG1fZmlyc3RDaGlsZCgwKQotICAgICwgbV9sYXN0
Q2hpbGQoMCkKICAgICAsIG1fd2lkdGgoMCkKICAgICAsIG1faGVpZ2h0KDApCiAgICAgLCBtX2Ry
YXdzQ29udGVudHModHJ1ZSkKQEAgLTUxLDExICs0OSw2IEBAIFJlbmRlclNWR0NvbnRhaW5lcjo6
flJlbmRlclNWR0NvbnRhaW5lcigKIHsKIH0KIAotYm9vbCBSZW5kZXJTVkdDb250YWluZXI6OmNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkKQogewogICAgIGluc2VydENoaWxkTm9kZShuZXdDaGlsZCwgYmVm
b3JlQ2hpbGQpOwpAQCAtNzMsMjEgKzY2LDEwIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpy
ZW1vdmVDaGlsZChSZW4KIAogdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmRlc3Ryb3koKQogewot
ICAgIGRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7CisgICAgY2hpbGRyZW4oKS0+ZGVzdHJveUxl
ZnRvdmVyQ2hpbGRyZW4oKTsKICAgICBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKTsKIH0KIAotdm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCkKLXsKLSAgICB3
aGlsZSAobV9maXJzdENoaWxkKSB7Ci0gICAgICAgIC8vIERlc3Ryb3kgYW55IGFub255bW91cyBj
aGlsZHJlbiByZW1haW5pbmcgaW4gdGhlIHJlbmRlciB0cmVlLCBhcyB3ZWxsIGFzIGltcGxpY2l0
IChzaGFkb3cpIERPTSBlbGVtZW50cyBsaWtlIHRob3NlIHVzZWQgaW4gdGhlIGVuZ2luZS1iYXNl
ZCB0ZXh0IGZpZWxkcy4KLSAgICAgICAgaWYgKG1fZmlyc3RDaGlsZC0+ZWxlbWVudCgpKQotICAg
ICAgICAgICAgbV9maXJzdENoaWxkLT5lbGVtZW50KCktPnNldFJlbmRlcmVyKDApOwotCi0gICAg
ICAgIG1fZmlyc3RDaGlsZC0+ZGVzdHJveSgpOwotICAgIH0KLX0KLQogUmVuZGVyT2JqZWN0KiBS
ZW5kZXJTVkdDb250YWluZXI6OnJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIG9sZENoaWxk
LCBib29sIGZ1bGxSZW1vdmUpCiB7CiAgICAgQVNTRVJUKG9sZENoaWxkLT5wYXJlbnQoKSA9PSB0
aGlzKTsKQEAgLTExOCwxMCArMTAwLDEwIEBAIFJlbmRlck9iamVjdCogUmVuZGVyU1ZHQ29udGFp
bmVyOjpyZW1vdmUKICAgICBpZiAob2xkQ2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG9s
ZENoaWxkLT5uZXh0U2libGluZygpLT5zZXRQcmV2aW91c1NpYmxpbmcob2xkQ2hpbGQtPnByZXZp
b3VzU2libGluZygpKTsKIAotICAgIGlmIChtX2ZpcnN0Q2hpbGQgPT0gb2xkQ2hpbGQpCi0gICAg
ICAgIG1fZmlyc3RDaGlsZCA9IG9sZENoaWxkLT5uZXh0U2libGluZygpOwotICAgIGlmIChtX2xh
c3RDaGlsZCA9PSBvbGRDaGlsZCkKLSAgICAgICAgbV9sYXN0Q2hpbGQgPSBvbGRDaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCk7CisgICAgaWYgKGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSA9PSBvbGRD
aGlsZCkKKyAgICAgICAgY2hpbGRyZW4oKS0+c2V0Rmlyc3RDaGlsZChvbGRDaGlsZC0+bmV4dFNp
YmxpbmcoKSk7CisgICAgaWYgKGNoaWxkcmVuKCktPmxhc3RDaGlsZCgpID09IG9sZENoaWxkKQor
ICAgICAgICBjaGlsZHJlbigpLT5zZXRMYXN0Q2hpbGQob2xkQ2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKIAogICAgIG9sZENoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgb2xkQ2hp
bGQtPnNldE5leHRTaWJsaW5nKDApOwpAQCAtMTM5LDE1ICsxMjEsMTUgQEAgdm9pZCBSZW5kZXJT
VkdDb250YWluZXI6OmFwcGVuZENoaWxkTm9kZQogICAgIEFTU0VSVChuZXdDaGlsZC0+ZWxlbWVu
dCgpLT5pc1NWR0VsZW1lbnQoKSk7CiAKICAgICBuZXdDaGlsZC0+c2V0UGFyZW50KHRoaXMpOwot
ICAgIFJlbmRlck9iamVjdCogbENoaWxkID0gbV9sYXN0Q2hpbGQ7CisgICAgUmVuZGVyT2JqZWN0
KiBsQ2hpbGQgPSBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsKIAogICAgIGlmIChsQ2hpbGQpIHsK
ICAgICAgICAgbmV3Q2hpbGQtPnNldFByZXZpb3VzU2libGluZyhsQ2hpbGQpOwogICAgICAgICBs
Q2hpbGQtPnNldE5leHRTaWJsaW5nKG5ld0NoaWxkKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9m
aXJzdENoaWxkID0gbmV3Q2hpbGQ7CisgICAgICAgIGNoaWxkcmVuKCktPnNldEZpcnN0Q2hpbGQo
bmV3Q2hpbGQpOwogCi0gICAgbV9sYXN0Q2hpbGQgPSBuZXdDaGlsZDsKKyAgICBjaGlsZHJlbigp
LT5zZXRMYXN0Q2hpbGQobmV3Q2hpbGQpOwogCiAgICAgbmV3Q2hpbGQtPnNldE5lZWRzTGF5b3V0
QW5kUHJlZldpZHRoc1JlY2FsYygpOyAvLyBHb2VzIHVwIHRoZSBjb250YWluaW5nIGJsb2NrIGhp
ZXJhcmNoeS4KICAgICBpZiAoIW5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSkKQEAgLTE2OCw4ICsx
NTAsOCBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6aW5zZXJ0Q2hpbGROb2RlCiAgICAgQVNT
RVJUKGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQoY2hpbGQtPmVs
ZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpOwogCi0gICAgaWYgKGJlZm9yZUNoaWxkID09IG1fZmly
c3RDaGlsZCkKLSAgICAgICAgbV9maXJzdENoaWxkID0gY2hpbGQ7CisgICAgaWYgKGJlZm9yZUNo
aWxkID09IGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgY2hpbGRyZW4oKS0+c2V0
Rmlyc3RDaGlsZChjaGlsZCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHByZXYgPSBiZWZvcmVDaGls
ZC0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgY2hpbGQtPnNldE5leHRTaWJsaW5nKGJlZm9yZUNo
aWxkKTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHJldmlzaW9uIDQwNDA4KQorKysgcmVu
ZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOCArMzcs
MTggQEAgcHVibGljOgogICAgIFJlbmRlclNWR0NvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50Kik7
CiAgICAgflJlbmRlclNWR0NvbnRhaW5lcigpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLSAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0K
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyBy
ZXR1cm4gY2hpbGRyZW4oKTsgfQorICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZHJlbigpOyB9CisgICAg
Y29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZt
X2NoaWxkcmVuOyB9CisgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0
dXJuICZtX2NoaWxkcmVuOyB9CiAKICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwotICAgIHZvaWQgZGVzdHJveUxlZnRvdmVyQ2hp
bGRyZW4oKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZE5vZGUoUmVu
ZGVyT2JqZWN0KiwgYm9vbCBmdWxsUmVtb3ZlID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZENoaWxkTm9kZShSZW5kZXJPYmplY3QqLCBib29sIGZ1bGxBcHBlbmQgPSB0cnVlKTsKQEAg
LTEwMSw4ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIGludCBjYWxjUmVwbGFjZWRXaWR0aCgpIGNv
bnN0OwogICAgIGludCBjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdDsKIAotICAgIFJlbmRlck9i
amVjdCogbV9maXJzdENoaWxkOwotICAgIFJlbmRlck9iamVjdCogbV9sYXN0Q2hpbGQ7CisgICAg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0IG1fY2hpbGRyZW47CiAKICAgICBpbnQgbV93aWR0aDsKICAg
ICBpbnQgbV9oZWlnaHQ7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDQwNDA5KQorKysgcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmFkZENoaWxkKFJlbmRlck9iamVjdCoKICAgICBpZiAoIWJlZm9y
ZUNoaWxkICYmIGlzQWZ0ZXJDb250ZW50KGxhc3RDaGlsZCgpKSkKICAgICAgICAgYmVmb3JlQ2hp
bGQgPSBsYXN0Q2hpbGQoKTsKIAotICAgIGJvb2wgd3JhcEluQW5vbnltb3VzU2VjdGlvbiA9IHRy
dWU7CisgICAgYm9vbCB3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uID0gIWNoaWxkLT5pc1Bvc2l0aW9u
ZWQoKTsKICAgICBib29sIGlzVGFibGVFbGVtZW50ID0gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+
aGFzVGFnTmFtZSh0YWJsZVRhZyk7CiAKICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyQmxvY2soKSAm
JiBjaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgpID09IFRBQkxFX0NBUFRJT04pIHsKQEAgLTE2Niwx
NSArMTY2LDEwIEBAIHZvaWQgUmVuZGVyVGFibGU6OmFkZENoaWxkKFJlbmRlck9iamVjdCoKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2hpbGQtPmlzVGFibGVDZWxsKCkgfHwgY2hpbGQtPmlz
VGFibGVSb3coKSkgewogICAgICAgICB3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uID0gdHJ1ZTsKLSAg
ICB9IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICAvLyBBbGxvdyBhIGZvcm0gdG8ganVzdCBz
aXQgYXQgdGhlIHRvcCBsZXZlbC4KICAgICAgICAgd3JhcEluQW5vbnltb3VzU2VjdGlvbiA9ICFp
c1RhYmxlRWxlbWVudCB8fCAhY2hpbGQtPmVsZW1lbnQoKSB8fCAhKGNoaWxkLT5lbGVtZW50KCkt
Pmhhc1RhZ05hbWUoZm9ybVRhZykgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSk7CiAK
LSAgICAgICAgLy8gRklYTUU6IEFsbG93IHRoZSBkZWxldGUgYnV0dG9uIGNvbnRhaW5lciBlbGVt
ZW50IHRvIHNpdCBhdCB0aGUgdG9wIGxldmVsLiBUaGlzIGlzIG5lZWRlZCB1bnRpbCBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2MyBpcyBmaXhlZC4KLSAgICAgICAg
aWYgKHdyYXBJbkFub255bW91c1NlY3Rpb24gJiYgY2hpbGQtPmVsZW1lbnQoKSAmJiBjaGlsZC0+
ZWxlbWVudCgpLT5pc0hUTUxFbGVtZW50KCkgJiYgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihj
aGlsZC0+ZWxlbWVudCgpKS0+aWQoKSA9PSBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjb250YWlu
ZXJFbGVtZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIHdyYXBJbkFub255bW91c1NlY3Rpb24g
PSBmYWxzZTsKLSAgICB9Ci0KICAgICBpZiAoIXdyYXBJbkFub255bW91c1NlY3Rpb24pIHsKICAg
ICAgICAgLy8gSWYgdGhlIG5leHQgcmVuZGVyZXIgaXMgYWN0dWFsbHkgd3JhcHBlZCBpbiBhbiBh
bm9ueW1vdXMgdGFibGUgc2VjdGlvbiwgd2UgbmVlZCB0byBnbyB1cCBhbmQgZmluZCB0aGF0Lgog
ICAgICAgICB3aGlsZSAoYmVmb3JlQ2hpbGQgJiYgIWJlZm9yZUNoaWxkLT5pc1RhYmxlU2VjdGlv
bigpICYmICFiZWZvcmVDaGlsZC0+aXNUYWJsZUNvbCgpICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgp
LT5kaXNwbGF5KCkgIT0gVEFCTEVfQ0FQVElPTikKQEAgLTI4NywxMCArMjgyLDggQEAgdm9pZCBS
ZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICBib29sIGNvbGxhcHNpbmcgPSBjb2xsYXBzZUJvcmRl
cnMoKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdo
YXQgYWJvdXQgYSBmb3JtIHRoYXQgaGFzIGEgZGlzcGxheSB2YWx1ZSB0aGF0IG1ha2VzIGl0IGEg
dGFibGUgc2VjdGlvbj8KLSAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpICYmICEoY2hp
bGQtPmVsZW1lbnQoKSAmJiBjaGlsZC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpICYm
ICFjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkpCi0gICAgICAgICAgICBjaGlsZC0+bGF5b3V0KCk7
CiAgICAgICAgIGlmIChjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkgeworICAgICAgICAgICAgY2hp
bGQtPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNl
Y3Rpb24gPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24qPihjaGlsZCk7CiAgICAgICAg
ICAgICBjYWxjdWxhdGVkSGVpZ2h0ICs9IHNlY3Rpb24tPmNhbGNSb3dIZWlnaHQoKTsKICAgICAg
ICAgICAgIGlmIChjb2xsYXBzaW5nKQpAQCAtMjk4LDYgKzI5MSwxMCBAQCB2b2lkIFJlbmRlclRh
YmxlOjpsYXlvdXQoKQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gT25seSBsYXkgb3V0IG9u
ZSBjYXB0aW9uLCBzaW5jZSBpdCdzIHRoZSBvbmx5IG9uZSB3ZSdyZSBnb2luZyB0byBlbmQgdXAg
cGFpbnRpbmcuCisgICAgaWYgKG1fY2FwdGlvbikKKyAgICAgICAgbV9jYXB0aW9uLT5sYXlvdXRJ
Zk5lZWRlZCgpOworCiAgICAgbV9vdmVyZmxvd1dpZHRoID0gd2lkdGgoKSArIChjb2xsYXBzaW5n
ID8gb3V0ZXJCb3JkZXJSaWdodCgpIC0gYm9yZGVyUmlnaHQoKSA6IDApOwogICAgIG1fb3ZlcmZs
b3dMZWZ0ID0gY29sbGFwc2luZyA/IGJvcmRlckxlZnQoKSAtIG91dGVyQm9yZGVyTGVmdCgpIDog
MDsKIApJbmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDQwNDA4KQorKysg
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2
ICszODEsMjEgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAg
cmV0dXJuIG1fcm93UG9zW21fZ3JpZFJvd3NdOwogfQogCit2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6bGF5b3V0KCkKK3sKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICBMYXlvdXRT
dGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgp
KSk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gY2hpbGRyZW4oKS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
Y2hpbGQtPmlzVGFibGVSb3coKSkgeworICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVk
KCk7CisgICAgICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsKKyAgICBzZXROZWVkc0xheW91dChmYWxz
ZSk7Cit9CisKIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHRvQWRkKQog
ewogICAgIGludCBySGVpZ2h0OwpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkocmV2aXNpb24g
NDA0MDgpCisrKyByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAK
ICAgICB2aXJ0dWFsIGludCBnZXRCYXNlbGluZU9mRmlyc3RMaW5lQm94KCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="13104"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27220</attachid>
            <date>2009-01-31 12:15:13 -0800</date>
            <delta_ts>2009-01-31 13:15:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6824</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNDA0MDgpCisrKyBl
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQs
NiArMTU0LDEzIEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVO
b25lKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0
LCBDU1NWYWx1ZU5vbmUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJNb2RpZnksIENTU1ZhbHVlTm9uZSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVIaWRkZW4pOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29sdXRlKTsKKyAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXJzb3IsIENTU1ZhbHVlRGVmYXVsdCk7CisgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAiMCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVJpZ2h0LCAiMCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvdHRvbSwgIjAiKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0
LCAiMCIpOwogCiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBvdXRsaW5lID0gbmV3IEhUTUxE
aXZFbGVtZW50KGRpdlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwogICAgIG91dGxpbmUtPnNl
dElkKG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CkBAIC0xNjMsMTAgKzE3MCw2IEBAIHZvaWQg
RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKIAogICAgIHN0eWxlID0gb3V0bGlu
ZS0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUN1cnNvciwgQ1NTVmFsdWVEZWZhdWx0KTsKLSAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVOb25lKTsKLSAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZU5vbmUpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1Zh
bHVlTm9uZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5WkluZGV4LCBTdHJp
bmc6Om51bWJlcigtMTAwMDAwMCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRvcCwgU3RyaW5nOjpudW1iZXIoLWJvcmRlcldpZHRoIC0gbV90YXJnZXQtPnJlbmRlckJveCgp
LT5ib3JkZXJUb3AoKSkgKyAicHgiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlSaWdodCwgU3RyaW5nOjpudW1iZXIoLWJvcmRlcldpZHRoIC0gbV90YXJnZXQtPnJlbmRlckJv
eCgpLT5ib3JkZXJSaWdodCgpKSArICJweCIpOwpAQCAtMTc0LDYgKzE3Nyw3IEBAIHZvaWQgRGVs
ZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBTdHJpbmc6Om51bWJlcigtYm9yZGVyV2lkdGggLSBtX3RhcmdldC0+
cmVuZGVyQm94KCktPmJvcmRlckxlZnQoKSkgKyAicHgiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXIsIFN0cmluZzo6bnVtYmVyKGJvcmRlcldpZHRoKSArICJweCBz
b2xpZCByZ2JhKDAsIDAsIDAsIDAuNikiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIFN0cmluZzo6bnVtYmVyKGJvcmRlclJhZGl1cykgKyAi
cHgiKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NW
YWx1ZVZpc2libGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgY29udGFpbmVy
LT5hcHBlbmRDaGlsZChvdXRsaW5lLmdldCgpLCBlYyk7CkBAIC0xOTksNiArMjAzLDcgQEAgdm9p
ZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldAogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIFN0cmluZzo6bnVtYmVyKCgtYnV0dG9uV2lkdGggLyAyKSAt
IG1fdGFyZ2V0LT5yZW5kZXJCb3goKS0+Ym9yZGVyTGVmdCgpIC0gKGJvcmRlcldpZHRoIC8gMikp
ICsgInB4Iik7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmlu
Zzo6bnVtYmVyKGJ1dHRvbldpZHRoKSArICJweCIpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoYnV0dG9uSGVpZ2h0KSArICJweCIpOwor
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlVmlz
aWJsZSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGJ1dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJkZWxldGVCdXR0b24iKTsKICAgICBpZiAoYnV0dG9uSW1hZ2UtPmlzTnVs
bCgpKQpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiA0MDQwOSkKKysrIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFJlbmRl
clRhYmxlOjphZGRDaGlsZChSZW5kZXJPYmplY3QqCiAgICAgaWYgKCFiZWZvcmVDaGlsZCAmJiBp
c0FmdGVyQ29udGVudChsYXN0Q2hpbGQoKSkpCiAgICAgICAgIGJlZm9yZUNoaWxkID0gbGFzdENo
aWxkKCk7CiAKLSAgICBib29sIHdyYXBJbkFub255bW91c1NlY3Rpb24gPSB0cnVlOworICAgIGJv
b2wgd3JhcEluQW5vbnltb3VzU2VjdGlvbiA9ICFjaGlsZC0+aXNQb3NpdGlvbmVkKCk7CiAgICAg
Ym9vbCBpc1RhYmxlRWxlbWVudCA9IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmhhc1RhZ05hbWUo
dGFibGVUYWcpOwogCiAgICAgaWYgKGNoaWxkLT5pc1JlbmRlckJsb2NrKCkgJiYgY2hpbGQtPnN0
eWxlKCktPmRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OKSB7CkBAIC0xNjYsMTUgKzE2NiwxMCBA
QCB2b2lkIFJlbmRlclRhYmxlOjphZGRDaGlsZChSZW5kZXJPYmplY3QqCiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGNoaWxkLT5pc1RhYmxlQ2VsbCgpIHx8IGNoaWxkLT5pc1RhYmxlUm93KCkp
IHsKICAgICAgICAgd3JhcEluQW5vbnltb3VzU2VjdGlvbiA9IHRydWU7Ci0gICAgfSBlbHNlIHsK
KyAgICB9IGVsc2UKICAgICAgICAgLy8gQWxsb3cgYSBmb3JtIHRvIGp1c3Qgc2l0IGF0IHRoZSB0
b3AgbGV2ZWwuCiAgICAgICAgIHdyYXBJbkFub255bW91c1NlY3Rpb24gPSAhaXNUYWJsZUVsZW1l
bnQgfHwgIWNoaWxkLT5lbGVtZW50KCkgfHwgIShjaGlsZC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1l
KGZvcm1UYWcpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpOwogCi0gICAgICAgIC8v
IEZJWE1FOiBBbGxvdyB0aGUgZGVsZXRlIGJ1dHRvbiBjb250YWluZXIgZWxlbWVudCB0byBzaXQg
YXQgdGhlIHRvcCBsZXZlbC4gVGhpcyBpcyBuZWVkZWQgdW50aWwgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjMgaXMgZml4ZWQuCi0gICAgICAgIGlmICh3cmFwSW5B
bm9ueW1vdXNTZWN0aW9uICYmIGNoaWxkLT5lbGVtZW50KCkgJiYgY2hpbGQtPmVsZW1lbnQoKS0+
aXNIVE1MRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2hpbGQtPmVsZW1l
bnQoKSktPmlkKCkgPT0gRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y29udGFpbmVyRWxlbWVudElk
ZW50aWZpZXIpCi0gICAgICAgICAgICB3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uID0gZmFsc2U7Ci0g
ICAgfQotCiAgICAgaWYgKCF3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uKSB7CiAgICAgICAgIC8vIElm
IHRoZSBuZXh0IHJlbmRlcmVyIGlzIGFjdHVhbGx5IHdyYXBwZWQgaW4gYW4gYW5vbnltb3VzIHRh
YmxlIHNlY3Rpb24sIHdlIG5lZWQgdG8gZ28gdXAgYW5kIGZpbmQgdGhhdC4KICAgICAgICAgd2hp
bGUgKGJlZm9yZUNoaWxkICYmICFiZWZvcmVDaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSAmJiAhYmVm
b3JlQ2hpbGQtPmlzVGFibGVDb2woKSAmJiBiZWZvcmVDaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgp
ICE9IFRBQkxFX0NBUFRJT04pCkBAIC0yODcsMTAgKzI4Miw4IEBAIHZvaWQgUmVuZGVyVGFibGU6
OmxheW91dCgpCiAgICAgYm9vbCBjb2xsYXBzaW5nID0gY29sbGFwc2VCb3JkZXJzKCk7CiAKICAg
ICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IGEg
Zm9ybSB0aGF0IGhhcyBhIGRpc3BsYXkgdmFsdWUgdGhhdCBtYWtlcyBpdCBhIHRhYmxlIHNlY3Rp
b24/Ci0gICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSAmJiAhKGNoaWxkLT5lbGVtZW50
KCkgJiYgY2hpbGQtPmVsZW1lbnQoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSAmJiAhY2hpbGQtPmlz
VGFibGVTZWN0aW9uKCkpKQotICAgICAgICAgICAgY2hpbGQtPmxheW91dCgpOwogICAgICAgICBp
ZiAoY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJ
Zk5lZWRlZCgpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGFibGVTZWN0aW9uKj4oY2hpbGQpOwogICAgICAgICAgICAgY2FsY3Vs
YXRlZEhlaWdodCArPSBzZWN0aW9uLT5jYWxjUm93SGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAo
Y29sbGFwc2luZykKQEAgLTI5OCw2ICsyOTEsMTAgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0
KCkKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIE9ubHkgbGF5IG91dCBvbmUgY2FwdGlvbiwg
c2luY2UgaXQncyB0aGUgb25seSBvbmUgd2UncmUgZ29pbmcgdG8gZW5kIHVwIHBhaW50aW5nLgor
ICAgIGlmIChtX2NhcHRpb24pCisgICAgICAgIG1fY2FwdGlvbi0+bGF5b3V0SWZOZWVkZWQoKTsK
KwogICAgIG1fb3ZlcmZsb3dXaWR0aCA9IHdpZHRoKCkgKyAoY29sbGFwc2luZyA/IG91dGVyQm9y
ZGVyUmlnaHQoKSAtIGJvcmRlclJpZ2h0KCkgOiAwKTsKICAgICBtX292ZXJmbG93TGVmdCA9IGNv
bGxhcHNpbmcgPyBib3JkZXJMZWZ0KCkgLSBvdXRlckJvcmRlckxlZnQoKSA6IDA7CiAKSW5kZXg6
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiA0MDQwOCkKKysrIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsNiArMzgxLDIxIEBA
IGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dIZWlnaHQoKQogICAgIHJldHVybiBtX3Jv
d1Bvc1ttX2dyaWRSb3dzXTsKIH0KIAordm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dCgp
Cit7CisgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOworCisgICAgTGF5b3V0U3RhdGVNYWludGFp
bmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZSh4KCksIHkoKSkpOworICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1Rh
YmxlUm93KCkpIHsKKyAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAg
ICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgc3RhdGVQdXNoZXIucG9wKCk7CisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCiBp
bnQgUmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0b0FkZCkKIHsKICAgICBpbnQg
ckhlaWdodDsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDQwNDA4KQorKysg
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogCiAgICAgdmlydHVh
bCBpbnQgZ2V0QmFzZWxpbmVPZkZpcnN0TGluZUJveCgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27221</attachid>
            <date>2009-01-31 13:15:48 -0800</date>
            <delta_ts>2009-01-31 13:16:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7436</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNDA0MDgpCisrKyBl
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQs
NiArMTU0LDEzIEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVO
b25lKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0
LCBDU1NWYWx1ZU5vbmUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJNb2RpZnksIENTU1ZhbHVlTm9uZSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVIaWRkZW4pOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29sdXRlKTsKKyAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXJzb3IsIENTU1ZhbHVlRGVmYXVsdCk7CisgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAiMCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVJpZ2h0LCAiMCIpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvdHRvbSwgIjAiKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0
LCAiMCIpOwogCiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBvdXRsaW5lID0gbmV3IEhUTUxE
aXZFbGVtZW50KGRpdlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwogICAgIG91dGxpbmUtPnNl
dElkKG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CkBAIC0xNjMsMTAgKzE3MCw2IEBAIHZvaWQg
RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKIAogICAgIHN0eWxlID0gb3V0bGlu
ZS0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUN1cnNvciwgQ1NTVmFsdWVEZWZhdWx0KTsKLSAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVOb25lKTsKLSAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZU5vbmUpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1Zh
bHVlTm9uZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5WkluZGV4LCBTdHJp
bmc6Om51bWJlcigtMTAwMDAwMCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRvcCwgU3RyaW5nOjpudW1iZXIoLWJvcmRlcldpZHRoIC0gbV90YXJnZXQtPnJlbmRlckJveCgp
LT5ib3JkZXJUb3AoKSkgKyAicHgiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlSaWdodCwgU3RyaW5nOjpudW1iZXIoLWJvcmRlcldpZHRoIC0gbV90YXJnZXQtPnJlbmRlckJv
eCgpLT5ib3JkZXJSaWdodCgpKSArICJweCIpOwpAQCAtMTc0LDYgKzE3Nyw3IEBAIHZvaWQgRGVs
ZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXQKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBTdHJpbmc6Om51bWJlcigtYm9yZGVyV2lkdGggLSBtX3RhcmdldC0+
cmVuZGVyQm94KCktPmJvcmRlckxlZnQoKSkgKyAicHgiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXIsIFN0cmluZzo6bnVtYmVyKGJvcmRlcldpZHRoKSArICJweCBz
b2xpZCByZ2JhKDAsIDAsIDAsIDAuNikiKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIFN0cmluZzo6bnVtYmVyKGJvcmRlclJhZGl1cykgKyAi
cHgiKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NW
YWx1ZVZpc2libGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgY29udGFpbmVy
LT5hcHBlbmRDaGlsZChvdXRsaW5lLmdldCgpLCBlYyk7CkBAIC0xOTAsMTUgKzE5NCwxMiBAQCB2
b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0CiAKICAgICBzdHlsZSA9IGJ1
dHRvbi0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUN1cnNvciwgQ1NTVmFsdWVEZWZhdWx0KTsKLSAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVOb25lKTsKLSAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZU5vbmUp
OwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENT
U1ZhbHVlTm9uZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5WkluZGV4LCBT
dHJpbmc6Om51bWJlcigxMDAwMDAwKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wLCBTdHJpbmc6Om51bWJlcigoLWJ1dHRvbkhlaWdodCAvIDIpIC0gbV90YXJnZXQtPnJl
bmRlckJveCgpLT5ib3JkZXJUb3AoKSAtIChib3JkZXJXaWR0aCAvIDIpICsgYnV0dG9uQm90dG9t
U2hhZG93T2Zmc2V0KSArICJweCIpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxlZnQsIFN0cmluZzo6bnVtYmVyKCgtYnV0dG9uV2lkdGggLyAyKSAtIG1fdGFyZ2V0LT5yZW5k
ZXJCb3goKS0+Ym9yZGVyTGVmdCgpIC0gKGJvcmRlcldpZHRoIC8gMikpICsgInB4Iik7CiAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmluZzo6bnVtYmVyKGJ1dHRv
bldpZHRoKSArICJweCIpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdo
dCwgU3RyaW5nOjpudW1iZXIoYnV0dG9uSGVpZ2h0KSArICJweCIpOworICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlVmlzaWJsZSk7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IGJ1dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJk
ZWxldGVCdXR0b24iKTsKICAgICBpZiAoYnV0dG9uSW1hZ2UtPmlzTnVsbCgpKQpJbmRleDogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCShyZXZpc2lvbiA0MDQwOSkKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjphZGRDaGls
ZChSZW5kZXJPYmplY3QqCiAgICAgaWYgKCFiZWZvcmVDaGlsZCAmJiBpc0FmdGVyQ29udGVudChs
YXN0Q2hpbGQoKSkpCiAgICAgICAgIGJlZm9yZUNoaWxkID0gbGFzdENoaWxkKCk7CiAKLSAgICBi
b29sIHdyYXBJbkFub255bW91c1NlY3Rpb24gPSB0cnVlOworICAgIGJvb2wgd3JhcEluQW5vbnlt
b3VzU2VjdGlvbiA9ICFjaGlsZC0+aXNQb3NpdGlvbmVkKCk7CiAgICAgYm9vbCBpc1RhYmxlRWxl
bWVudCA9IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmhhc1RhZ05hbWUodGFibGVUYWcpOwogCiAg
ICAgaWYgKGNoaWxkLT5pc1JlbmRlckJsb2NrKCkgJiYgY2hpbGQtPnN0eWxlKCktPmRpc3BsYXko
KSA9PSBUQUJMRV9DQVBUSU9OKSB7CkBAIC0xNjYsMTUgKzE2NiwxMCBAQCB2b2lkIFJlbmRlclRh
YmxlOjphZGRDaGlsZChSZW5kZXJPYmplY3QqCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGNo
aWxkLT5pc1RhYmxlQ2VsbCgpIHx8IGNoaWxkLT5pc1RhYmxlUm93KCkpIHsKICAgICAgICAgd3Jh
cEluQW5vbnltb3VzU2VjdGlvbiA9IHRydWU7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UKICAg
ICAgICAgLy8gQWxsb3cgYSBmb3JtIHRvIGp1c3Qgc2l0IGF0IHRoZSB0b3AgbGV2ZWwuCiAgICAg
ICAgIHdyYXBJbkFub255bW91c1NlY3Rpb24gPSAhaXNUYWJsZUVsZW1lbnQgfHwgIWNoaWxkLT5l
bGVtZW50KCkgfHwgIShjaGlsZC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpICYmIGRv
Y3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpOwogCi0gICAgICAgIC8vIEZJWE1FOiBBbGxvdyB0
aGUgZGVsZXRlIGJ1dHRvbiBjb250YWluZXIgZWxlbWVudCB0byBzaXQgYXQgdGhlIHRvcCBsZXZl
bC4gVGhpcyBpcyBuZWVkZWQgdW50aWwgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEzNjMgaXMgZml4ZWQuCi0gICAgICAgIGlmICh3cmFwSW5Bbm9ueW1vdXNTZWN0aW9u
ICYmIGNoaWxkLT5lbGVtZW50KCkgJiYgY2hpbGQtPmVsZW1lbnQoKS0+aXNIVE1MRWxlbWVudCgp
ICYmIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2hpbGQtPmVsZW1lbnQoKSktPmlkKCkgPT0g
RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y29udGFpbmVyRWxlbWVudElkZW50aWZpZXIpCi0gICAg
ICAgICAgICB3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uID0gZmFsc2U7Ci0gICAgfQotCiAgICAgaWYg
KCF3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uKSB7CiAgICAgICAgIC8vIElmIHRoZSBuZXh0IHJlbmRl
cmVyIGlzIGFjdHVhbGx5IHdyYXBwZWQgaW4gYW4gYW5vbnltb3VzIHRhYmxlIHNlY3Rpb24sIHdl
IG5lZWQgdG8gZ28gdXAgYW5kIGZpbmQgdGhhdC4KICAgICAgICAgd2hpbGUgKGJlZm9yZUNoaWxk
ICYmICFiZWZvcmVDaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSAmJiAhYmVmb3JlQ2hpbGQtPmlzVGFi
bGVDb2woKSAmJiBiZWZvcmVDaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgpICE9IFRBQkxFX0NBUFRJ
T04pCkBAIC0yODcsMTAgKzI4Miw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAg
Ym9vbCBjb2xsYXBzaW5nID0gY29sbGFwc2VCb3JkZXJzKCk7CiAKICAgICBmb3IgKFJlbmRlck9i
amVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IGEgZm9ybSB0aGF0IGhhcyBh
IGRpc3BsYXkgdmFsdWUgdGhhdCBtYWtlcyBpdCBhIHRhYmxlIHNlY3Rpb24/Ci0gICAgICAgIGlm
IChjaGlsZC0+bmVlZHNMYXlvdXQoKSAmJiAhKGNoaWxkLT5lbGVtZW50KCkgJiYgY2hpbGQtPmVs
ZW1lbnQoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSAmJiAhY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkp
KQotICAgICAgICAgICAgY2hpbGQtPmxheW91dCgpOwogICAgICAgICBpZiAoY2hpbGQtPmlzVGFi
bGVTZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAg
ICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8UmVuZGVy
VGFibGVTZWN0aW9uKj4oY2hpbGQpOwogICAgICAgICAgICAgY2FsY3VsYXRlZEhlaWdodCArPSBz
ZWN0aW9uLT5jYWxjUm93SGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoY29sbGFwc2luZykKQEAg
LTI5OCw2ICsyOTEsMTAgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIE9ubHkgbGF5IG91dCBvbmUgY2FwdGlvbiwgc2luY2UgaXQncyB0aGUg
b25seSBvbmUgd2UncmUgZ29pbmcgdG8gZW5kIHVwIHBhaW50aW5nLgorICAgIGlmIChtX2NhcHRp
b24pCisgICAgICAgIG1fY2FwdGlvbi0+bGF5b3V0SWZOZWVkZWQoKTsKKwogICAgIG1fb3ZlcmZs
b3dXaWR0aCA9IHdpZHRoKCkgKyAoY29sbGFwc2luZyA/IG91dGVyQm9yZGVyUmlnaHQoKSAtIGJv
cmRlclJpZ2h0KCkgOiAwKTsKICAgICBtX292ZXJmbG93TGVmdCA9IGNvbGxhcHNpbmcgPyBib3Jk
ZXJMZWZ0KCkgLSBvdXRlckJvcmRlckxlZnQoKSA6IDA7CiAKSW5kZXg6IHJlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCShyZXZpc2lvbiA0MDQwOCkKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsNiArMzgxLDIxIEBAIGludCBSZW5kZXJUYWJs
ZVNlY3Rpb246OmNhbGNSb3dIZWlnaHQoKQogICAgIHJldHVybiBtX3Jvd1Bvc1ttX2dyaWRSb3dz
XTsKIH0KIAordm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dCgpCit7CisgICAgQVNTRVJU
KG5lZWRzTGF5b3V0KCkpOworCisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVy
KHZpZXcoKSwgdGhpcywgSW50U2l6ZSh4KCksIHkoKSkpOworICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjaGlsZCA9IGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlUm93KCkpIHsKKyAg
ICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICAgICAgQVNTRVJUKCFj
aGlsZC0+bmVlZHNMYXlvdXQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdGVQdXNoZXIu
cG9wKCk7CisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCiBpbnQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0b0FkZCkKIHsKICAgICBpbnQgckhlaWdodDsKSW5kZXg6
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDQwNDA4KQorKysgcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogCiAgICAgdmlydHVhbCBpbnQgZ2V0QmFzZWxp
bmVPZkZpcnN0TGluZUJveCgpIGNvbnN0Owo=
</data>
<flag name="review"
          id="13106"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>