<?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>33820</bug_id>
          
          <creation_ts>2010-01-18 17:52:04 -0800</creation_ts>
          <short_desc>Inline functions that are hot in DOM manipulation</short_desc>
          <delta_ts>2010-01-19 23:34:09 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182068</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-18 17:52:04 -0800</bug_when>
    <thetext>Inline functions that are hot in DOM manipulation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182080</commentid>
    <comment_count>1</comment_count>
      <attachid>46873</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-18 18:14:46 -0800</bug_when>
    <thetext>Created attachment 46873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182082</commentid>
    <comment_count>2</comment_count>
      <attachid>46873</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-18 18:17:03 -0800</bug_when>
    <thetext>Comment on attachment 46873
Patch

I approve this product and/or service.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182269</commentid>
    <comment_count>3</comment_count>
      <attachid>46873</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-19 09:04:06 -0800</bug_when>
    <thetext>Comment on attachment 46873
Patch

&gt; -    Document(Frame*, bool isXHTML);
&gt; +    Document(Frame*, bool isXHTML, bool isHTML);

I&apos;d much rather see an enum here instead of two bools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182568</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-19 18:25:40 -0800</bug_when>
    <thetext>Committed r53514: &lt;http://trac.webkit.org/changeset/53514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182632</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 23:34:09 -0800</bug_when>
    <thetext>A webgl failure seemed to start with this checkin:
http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r53517%20(9580)/fast/canvas/webgl/texImage2DImageDataTest-pretty-diff.html

The first failure started between r53514 and r53517 inclusive.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46873</attachid>
            <date>2010-01-18 18:14:46 -0800</date>
            <delta_ts>2010-01-19 09:04:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33820-20100118181445.patch</filename>
            <type>text/plain</type>
            <size>28583</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzNDQ1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMTggIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgZnVuY3Rpb25zIHRoYXQgYXJlIGhvdCBpbiBET00g
bWFuaXB1bGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzgyMAorICAgICAgICAKKyAgICAgICAgKDMlIHNwZWVkdXAgb24gRHJvbWFlbyBET00g
Q29yZSB0ZXN0cykKKworICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChK
U0M6Ojo6Z2V0KTogaW5saW5lCisKIDIwMTAtMDEtMTggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiA1MzM3MSkKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBl
ZFR5cGU+Ci1NYXBwZWRUeXBlIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6Z2V0KGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QKK2lubGluZSBNYXBwZWRUeXBlIFdlYWtHQ01hcDxLZXlU
eXBlLCBNYXBwZWRUeXBlPjo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKIHsKICAgICBN
YXBwZWRUeXBlIHJlc3VsdCA9IG1fbWFwLmdldChrZXkpOwogICAgIGlmIChyZXN1bHQgPT0gSGFz
aFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgpKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzNDQ1KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0w
MS0xOCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElubGluZSBmdW5jdGlvbnMgdGhhdCBh
cmUgaG90IGluIERPTSBtYW5pcHVsYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzODIwCisKKyAgICAgICAgKDMlIHNwZWVkdXAgb24gRHJvbWFl
byBET00gQ29yZSB0ZXN0cykKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFdvcmxkKTogSW5saW5lZC4KKyAgICAgICAgKFdl
YkNvcmU6OmpzU3RyaW5nKTogSW5saW5lZCBTdHJpbmcmIG92ZXJsb2FkIGFuZCBzcGxpdCBvZmYg
c2xvdyBjYXNlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1N0cmluZ1Nsb3dDYXNlKTogU2xvdyBjYXNlIGZvciB0aGUgYWJvdmUu
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aXNIVE1MRG9jdW1lbnQpOiBVc2UgYSBiaXQgYW5kIGFuIGlubGluZSBtZXRob2QKKyAgICAgICAg
aW5zdGVhZCBvZiBhIHZpcnR1YWwgbWV0aG9kLCBzaW5jZSB0aGlzIGlzIHNvIGhvdCBhbmQgc2l6
ZSBvZiBEb2N1bWVudAorICAgICAgICBpcyBub3QgYSBwcmltZSBjb25jZXJuLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZSk6IEFkYXB0IGZvciBhYm92ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVYSFRNTCk6IGRpdHRvCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IGRpdHRvCisg
ICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50OjpIVE1MRG9jdW1lbnQpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50
Lmg6IGRpdHRvCisgICAgICAgICogbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYWNlaG9sZGVyRG9jdW1lbnQ6OlBsYWNlaG9sZGVyRG9jdW1lbnQpOiBk
aXR0bworICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQpOiBkaXR0bworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzKTogSW5saW5lZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUlkKTogSW5saW5lZC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6IChSZW1vdmUgaW5saW5lZCBtZXRob2RzLikKKyAgICAgICAgKiBkb20vTmFt
ZWRBdHRyTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0
ZUl0ZW0pOiBJbmxpbmVkIGFuZCBzcGxpdCBvZmYgc2xvdyBjYXNlLgorICAgICAgICAqIGRvbS9O
YW1lZEF0dHJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpnZXRBdHRy
aWJ1dGVJdGVtU2xvd0Nhc2UpOiBTbG93IGNhc2UgZm9yIHRoZSBhYm92ZS4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZEluc2VydERPTU5vZGUpOiBJbmxpbmVkIHNvIHRoZSBmYXN0IGNhc2UKKyAgICAgICAg
ZWFybHkgZXhpdCBkb2Vzbid0IGluY3VyIGEgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlbW92ZURPTU5vZGUpOiBkaXR0bworICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cik6IGRpdHRv
CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6dGhyZWFkR2xvYmFsRGF0YSk6IElubGluZWQuCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHA6IChSZW1vdmVkIGlubGluZSBtZXRob2RzKS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjppc0FjdGl2ZSk6IElu
bGluZWQuCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOiAoUmVtb3ZlZCBpbmxpbmUgbWV0
aG9kcykuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBJbnN0
YWxsIG5ldyBoZWFyZXMuCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDogQWRkIGFwcHJvcHJp
YXRlIGV4cG9ydHMuCisKIDIwMTAtMDEtMTggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAko
cmV2aXNpb24gNTMzNzEpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw2ICsxMzksNyBAQCBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcxN3NldFNjcm9s
bGJhck1vCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIK
IF9fWk43V2ViQ29yZTEwU3RyaW5nSW1wbDExcmV2ZXJzZUZpbmRFUFMwX2liCiBfX1pON1dlYkNv
cmUxMFN0cmluZ0ltcGw3cmVwbGFjZUV0dAorX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsN3VzdHJp
bmdFdgogX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsOGVuZHNXaXRoRVBTMF9iCiBfX1pON1dlYkNv
cmUxMFN0cmluZ0ltcGxEMUV2CiBfX1pON1dlYkNvcmUxMFN0cmluZ0ltcGxjdlA4TlNTdHJpbmdF
dgpAQCAtMzc3LDYgKzM3OCw5IEBAIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjExY3Jl
YXRlV28KIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEzZXhlY3V0ZVNjcmlwdEVSS05T
XzZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTh3aW5kb3dTY3JpcHRP
YmplY3RFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjBleGVjdXRlU2NyaXB0SW5X
b3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU182U3RyaW5nRWIKK19fWk43V2ViQ29yZTE2
VGhyZWFkR2xvYmFsRGF0YTEwc3RhdGljRGF0YUUKK19fWk43V2ViQ29yZTE2VGhyZWFkR2xvYmFs
RGF0YUMxRXYKK19fWk43V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YUQxRXYKIF9fWk43V2ViQ29y
ZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVBLTlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlFCiBfX1pON1dl
YkNvcmUxNlZpc2libGVTZWxlY3Rpb25DMUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMzXwogX19a
TjdXZWJDb3JlMTZjb2xvckZyb21OU0NvbG9yRVA3TlNDb2xvcgpAQCAtMzg0LDYgKzM4OCw3IEBA
IF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzROb2QKIF9fWk43V2ViQ29yZTE2
Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzVSYW5nZUUKIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50
UmVjdEVSSzdfTlNSZWN0CiBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZp
c2libGVQb3NpdGlvbkUKK19fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhl
Y1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTlNfMTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5nRUVF
UzVfCiBfX1pON1dlYkNvcmUxNnRocmVhZEdsb2JhbERhdGFFdgogX19aTjdXZWJDb3JlMTdDcmVk
ZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3RlY3Rpb25TcGFjZUUKIF9fWk43V2ViQ29yZTE3
RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTlNfNlN0cmluZ0UKQEAgLTk4NCw3
ICs5ODksNiBAQCBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTZwYXJlbnRFYgogX19aTks3V2ViQ29y
ZTlGcmFtZVZpZXcxMW5lZWRzTGF5b3V0RXYKIF9fWk5LN1dlYkNvcmU5UGFnZUNhY2hlMTBmcmFt
ZUNvdW50RXYKIF9fWk5LN1dlYkNvcmU5UGFnZUNhY2hlMjFhdXRvcmVsZWFzZWRQYWdlQ291bnRF
dgotX19aTks3V2ViQ29yZTlUaW1lckJhc2U4aXNBY3RpdmVFdgogX19aVFZON1dlYkNvcmUxMkNo
cm9tZUNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTJQbHVnaW5XaWRnZXRFCiBfX1pUVk43V2ViQ29y
ZTE3RmlsZUNob29zZXJDbGllbnRFCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNTMzNjQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI2Myw3ICsxMjYzLDcgQEAK
IAkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEYzMTAxQ0MzODQwMDBD
NERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi87IH07CiAJCTdBMUU4OEY2MTAxQ0MzODQwMDBDNERG
NSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyNDU4N0IxMDIx
RUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJ
bnNwZWN0b3JET01BZ2VudC5jcHAgKi87IH07Ci0JCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAv
KiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50
LmggKi87IH07CisJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyNDU4
N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E2NzRCREIwRjlFQkY0RTAwNkNG
MDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdy
b3VwTG9hZERlZmVycmVyLmNwcCAqLzsgfTsKIAkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8q
IFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWRE
ZWZlcnJlci5oICovOyB9OwogCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9y
QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5jcHAgKi87IH07
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA1MzM3MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIwLDExICsyMjAsNiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldvcmxk
Kj46Oml0ZXJhdG9yIG1fZW5kOwogfTsKIAotRE9NV3JhcHBlcldvcmxkKiBjdXJyZW50V29ybGQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d29ybGQoKTsKLX0KLQog
RE9NV3JhcHBlcldvcmxkKiBub3JtYWxXb3JsZChKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKIHsKICAgICBKU0dsb2JhbERhdGE6OkNsaWVudERhdGEqIGNsaWVudERhdGEgPSBnbG9iYWxE
YXRhLmNsaWVudERhdGE7CkBAIC01NTYsMTEgKzU1MSw2IEBAIHZvaWQgbWFya0RPTU5vZGVXcmFw
cGVyKE1hcmtTdGFjayYgbWFya1MKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNTdHJpbmdD
YWNoZSYganNTdHJpbmdDYWNoZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGN1cnJl
bnRXb3JsZChleGVjKS0+bV9zdHJpbmdDYWNoZTsKLX0KLQogc3RhdGljIHZvaWQgc3RyaW5nV3Jh
cHBlckRlc3Ryb3llZChKU1N0cmluZyogc3RyLCB2b2lkKiBjb250ZXh0KQogewogICAgIFN0cmlu
Z0ltcGwqIGNhY2hlS2V5ID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGNvbnRleHQpOwpAQCAt
NTgzLDE5ICs1NzMsOCBAQCBzdGF0aWMgdm9pZCBzdHJpbmdXcmFwcGVyRGVzdHJveWVkKEpTU3Ry
CiAgICAgY2FjaGVLZXktPmRlcmVmKCk7CiB9CiAKLUpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCitKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2UoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSwgU3RyaW5nSW1wbCogc3RyaW5n
SW1wbCkKIHsKLSAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gcy5pbXBsKCk7Ci0gICAgaWYg
KCFzdHJpbmdJbXBsIHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGpz
RW1wdHlTdHJpbmcoZXhlYyk7Ci0KLSAgICBpZiAoc3RyaW5nSW1wbC0+bGVuZ3RoKCkgPT0gMSAm
JiBzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzKClbMF0gPD0gMHhGRikKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIHN0cmluZ0ltcGwtPnVzdHJpbmcoKSk7Ci0KLSAgICBKU1N0cmluZ0NhY2hl
JiBzdHJpbmdDYWNoZSA9IGpzU3RyaW5nQ2FjaGUoZXhlYyk7Ci0gICAgaWYgKEpTU3RyaW5nKiB3
cmFwcGVyID0gc3RyaW5nQ2FjaGUuZ2V0KHN0cmluZ0ltcGwpKQotICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKLQogICAgIC8vIElmIHRoZXJlIGlzIGEgc3RhbGUgZW50cnksIHdlIGhhdmUgdG8gZXhw
bGljaXRseSByZW1vdmUgaXQgdG8gYXZvaWQKICAgICAvLyBwcm9ibGVtcyBkb3duIHRoZSBsaW5l
LgogICAgIGlmIChKU1N0cmluZyogd3JhcHBlciA9IHN0cmluZ0NhY2hlLnVuY2hlY2tlZEdldChz
dHJpbmdJbXBsKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24g
NTMzNzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDYsNiArMzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgc2V0
RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiAKICAgICBKU0M6
OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgLy8gZW1w
dHkgaWYgdGhlIHN0cmluZyBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nh
c2UoSlNDOjpFeGVjU3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOwogICAgIEpT
Qzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gZW1w
dHkgaWYgdGhlIFVSTCBpcyBudWxsCiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIHsgCkBAIC00
MTUsNiArNDE2LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZShKU0M6OkV4ZWNTdGF0ZSopOwogICAgIEtVUkwgY29tcGxldGVVUkwoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKTsKIAorICAgIGlubGluZSBET01X
cmFwcGVyV29ybGQqIGN1cnJlbnRXb3JsZChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPndvcmxkKCk7CisgICAgfQorICAgIAorICAgIGlubGluZSBKU0M6
OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykK
KyAgICB7CisgICAgICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzLmltcGwoKTsKKyAgICAg
ICAgaWYgKCFzdHJpbmdJbXBsIHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKKyAgICAgICAgICAg
IHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOworCisgICAgICAgIGlmIChzdHJpbmdJbXBsLT5s
ZW5ndGgoKSA9PSAxICYmIHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMoKVswXSA8PSAweEZGKQorICAg
ICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0ltcGwtPnVzdHJpbmcoKSk7CisK
KyAgICAgICAgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUgPSBjdXJyZW50V29ybGQoZXhlYykt
Pm1fc3RyaW5nQ2FjaGU7CisgICAgICAgIGlmIChKU0M6OkpTU3RyaW5nKiB3cmFwcGVyID0gc3Ry
aW5nQ2FjaGUuZ2V0KHN0cmluZ0ltcGwpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nU2xvd0Nhc2UoZXhlYywgc3RyaW5nQ2FjaGUsIHN0cmlu
Z0ltcGwpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNE
T01CaW5kaW5nX2gKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzMzY0KQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGlj
IGJvb2wgZGlzYWJsZVJhbmdlTXV0YXRpb24oUGFnZSogcAogCiBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxlUmVjYWxjID0gMDsKIAotRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgYm9vbCBpc1hIVE1MKQorRG9jdW1lbnQ6OkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICA6IENvbnRhaW5lck5v
ZGUoMCkKICAgICAsIG1fZG9tdHJlZV92ZXJzaW9uKDApCiAgICAgLCBtX3N0eWxlU2hlZXRzKFN0
eWxlU2hlZXRMaXN0OjpjcmVhdGUodGhpcykpCkBAIC0zNTYsNiArMzU2LDcgQEAgRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgYm9vbCBpcwogICAgICwgbV9pblBhZ2VDYWNoZShmYWxz
ZSkKICAgICAsIG1fdXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoZmFsc2UpCiAgICAg
LCBtX2lzWEhUTUwoaXNYSFRNTCkKKyAgICAsIG1faXNIVE1MKGlzSFRNTCkKICAgICAsIG1fbnVt
Tm9kZUxpc3RDYWNoZXMoMCkKICNpZiBVU0UoSlNDKQogICAgICwgbV9ub3JtYWxXb3JsZFdyYXBw
ZXJDYWNoZSgwKQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA1MzM2NCkKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xs
ZWN0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtMTkwLDExICsxOTEsMTEgQEAgY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVy
Tm9kZSwgcAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVu
dChmcmFtZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudChm
cmFtZSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB0cnVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRG9jdW1lbnQoZnJhbWUsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogICAgIHZpcnR1YWwg
fkRvY3VtZW50KCk7CiAKQEAgLTM2NSw3ICszNjYsNyBAQCBwdWJsaWM6CiAgICAgQ29sbGVjdGlv
bkNhY2hlKiBuYW1lQ29sbGVjdGlvbkluZm8oQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSk7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCi0g
ICAgdmlydHVhbCBib29sIGlzSFRNTERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzSFRNTERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0hUTUw7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNJbWFnZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0RvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTk0Miw3ICs5NDMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgotICAgIERvY3VtZW50KEZyYW1lKiwgYm9vbCBpc1hIVE1MKTsKKyAgICBEb2N1
bWVudChGcmFtZSosIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwogCiAgICAgdm9pZCBzZXRT
dHlsZVNlbGVjdG9yKENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IpIHsgbV9zdHlsZVNl
bGVjdG9yID0gc3R5bGVTZWxlY3RvcjsgfQogCkBAIC0xMTg0LDYgKzExODUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZTsKIAogICAgIGJv
b2wgbV9pc1hIVE1MOworICAgIGJvb2wgbV9pc0hUTUw7CiAKICAgICB1bnNpZ25lZCBtX251bU5v
ZGVMaXN0Q2FjaGVzOwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNTMzODQpCisrKyBXZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDIxICsxNjAsNiBAQCBOYW1l
ZE5vZGVNYXAqIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBjb25zCiAgICAgcmV0dXJuIGF0dHJpYnV0
ZXMoZmFsc2UpOwogfQogCi1OYW1lZE5vZGVNYXAqIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoYm9vbCBy
ZWFkb25seSkgY29uc3QKLXsKLSAgICBpZiAoIW1faXNTdHlsZUF0dHJpYnV0ZVZhbGlkKQotICAg
ICAgICB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpOwotCi0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAo
IW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAgICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJp
YnV0ZShTdHJpbmcoKSk7Ci0jZW5kaWYKLQotICAgIGlmICghcmVhZG9ubHkgJiYgIW5hbWVkQXR0
ck1hcCkKLSAgICAgICAgY3JlYXRlQXR0cmlidXRlTWFwKCk7Ci0gICAgcmV0dXJuIG5hbWVkQXR0
ck1hcC5nZXQoKTsKLX0KLQogTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9kZVR5cGUoKSBjb25z
dAogewogICAgIHJldHVybiBFTEVNRU5UX05PREU7CkBAIC0xMDY3LDIxICsxMDUyLDYgQEAgU3Ry
aW5nIEVsZW1lbnQ6Om9wZW5UYWdTdGFydFRvU3RyaW5nKCkgYwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKLXsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG9sZElkID09IG5ld0lkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsKLSAgICBpZiAoIW9sZElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZG9jLT5yZW1vdmVFbGVtZW50QnlJZChvbGRJZCwgdGhpcyk7Ci0gICAg
aWYgKCFuZXdJZC5pc0VtcHR5KCkpCi0gICAgICAgIGRvYy0+YWRkRWxlbWVudEJ5SWQobmV3SWQs
IHRoaXMpOwotfQotCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBFbGVtZW50Ojpmb3JtYXRGb3JEZWJ1
Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKSW5kZXg6IFdlYkNv
cmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJl
dmlzaW9uIDUzMzY0KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIEVsZW1lbnRfaAogCiAjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCkBAIC0z
NDgsNiArMzQ5LDM2IEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBFbGVtZW50OjppZEEK
ICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVJREF0dHJpYnV0ZU5hbWUoKSA6IEhUTUxO
YW1lczo6aWRBdHRyOwogfQogCitpbmxpbmUgTmFtZWROb2RlTWFwKiBFbGVtZW50OjphdHRyaWJ1
dGVzKGJvb2wgcmVhZG9ubHkpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzU3R5bGVBdHRyaWJ1dGVW
YWxpZCkKKyAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKKworI2lmIEVOQUJMRShTVkcp
CisgICAgaWYgKCFtX2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCkKKyAgICAgICAgdXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUoU3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpZiAoIXJlYWRvbmx5ICYm
ICFuYW1lZEF0dHJNYXApCisgICAgICAgIGNyZWF0ZUF0dHJpYnV0ZU1hcCgpOworICAgIHJldHVy
biBuYW1lZEF0dHJNYXAuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCit7
CisgICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChvbGRJ
ZCA9PSBuZXdJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3Vt
ZW50KCk7CisgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkpCisgICAgICAgIGRvYy0+cmVtb3ZlRWxl
bWVudEJ5SWQob2xkSWQsIHRoaXMpOworICAgIGlmICghbmV3SWQuaXNFbXB0eSgpKQorICAgICAg
ICBkb2MtPmFkZEVsZW1lbnRCeUlkKG5ld0lkLCB0aGlzKTsKK30KKwogfSAvL25hbWVzcGFjZQog
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmNwcAkocmV2aXNpb24gNTMzNjQpCisrKyBXZWJD
b3JlL2RvbS9OYW1lZEF0dHJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNTIgKzE3Miwy
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6aXRlbSh1bnNpCiAgICAgcmV0dXJu
IG1fYXR0cmlidXRlc1tpbmRleF0tPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1lbnQpOwogfQog
Ci0vLyBXZSB1c2UgYSBib29sZWFuIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGNhbGxpbmcgc2hvdWxk
SWdub3JlQXR0cmlidXRlQ2FzZSBzbyB0aGF0IHRoZSBjYWxsZXIKLS8vIGNhbiB0dW5lIHRoZSBi
ZWhhdmlvdXIgKGhhc0F0dHJpYnV0ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJp
YnV0ZSBpcyBub3QpLgotQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0o
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0
CitBdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbVNsb3dDYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOwotICAgIGJvb2wgZG9TbG93Q2hlY2sgPSBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlOwotICAgIAotICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2Fz
ZSB3aGVyZSB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVz
LgorCisgICAgLy8gQ29udGludWUgdG8gY2hlY2tpbmcgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZC9v
ciBmdWxsIG5hbWVzcGFjZWQgbmFtZXMgaWYgbmVjZXNzYXJ5OgogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOwogICAgICAgICBpZiAoIWF0dHJOYW1lLmhh
c1ByZWZpeCgpKSB7Ci0gICAgICAgICAgICBpZiAobmFtZSA9PSBhdHRyTmFtZS5sb2NhbE5hbWUo
KSkKKyAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlICYmIGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gRklYTUU6IFdvdWxkIGJlIGZhc3RlciB0byBkbyB0aGlzIGNvbXBhcmlzb24gd2l0aG91
dCBjYWxsaW5nIHRvU3RyaW5nLCB3aGljaAorICAgICAgICAgICAgLy8gZ2VuZXJhdGVzIGEgdGVt
cG9yYXJ5IHN0cmluZyBieSBjb25jYXRlbmF0aW9uLiBCdXQgdGhpcyBicmFuY2ggaXMgb25seSBy
ZWFjaGVkCisgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIG5hbWUgaGFzIGEgcHJlZml4
LCB3aGljaCBpcyByYXJlIGluIEhUTUwuCisgICAgICAgICAgICBpZiAoZXF1YWxQb3NzaWJseUln
bm9yaW5nQ2FzZShuYW1lLCBhdHRyTmFtZS50b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRvU2xvd0NoZWNrID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gQ29udGludWUgdG8gY2hlY2tpbmcgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZC9v
ciBmdWxsIG5hbWVzcGFjZWQgbmFtZXMgaWYgbmVjZXNzYXJ5OgotICAgIGlmIChkb1Nsb3dDaGVj
aykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAg
ICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gbV9hdHRyaWJ1dGVzW2ldLT5u
YW1lKCk7Ci0gICAgICAgICAgICBpZiAoIWF0dHJOYW1lLmhhc1ByZWZpeCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UgJiYgZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgYXR0ck5hbWUubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbV9hdHRyaWJ1dGVzW2ldLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgZmFzdGVyIHRvIGRvIHRoaXMgY29tcGFyaXNvbiB3
aXRob3V0IGNhbGxpbmcgdG9TdHJpbmcsIHdoaWNoCi0gICAgICAgICAgICAgICAgLy8gZ2VuZXJh
dGVzIGEgdGVtcG9yYXJ5IHN0cmluZyBieSBjb25jYXRlbmF0aW9uLiBCdXQgdGhpcyBicmFuY2gg
aXMgb25seSByZWFjaGVkCi0gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGF0dHJpYnV0ZSBuYW1l
IGhhcyBhIHByZWZpeCwgd2hpY2ggaXMgcmFyZSBpbiBIVE1MLgotICAgICAgICAgICAgICAgIGlm
IChlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5hbWUsIGF0dHJOYW1lLnRvU3RyaW5nKCksIHNo
b3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzW2ldLmdldCgpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiAwOwogfQogCi1BdHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRl
bShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAotewotICAgIHVuc2lnbmVkIGxlbiA9
IGxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAg
ICAgIHJldHVybiBtX2F0dHJpYnV0ZXNbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwot
fQotCiB2b2lkIE5hbWVkTm9kZU1hcDo6Y2xlYXJBdHRyaWJ1dGVzKCkKIHsKICAgICBkZXRhY2hB
dHRyaWJ1dGVzRnJvbUVsZW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiA1MzM2
NCkKKysrIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
MTIgKzEwMyw0NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoQXR0cmlidXRlc0Zyb21FbGVt
ZW50KCk7CiAgICAgdm9pZCBkZXRhY2hGcm9tRWxlbWVudCgpOwogICAgIEF0dHJpYnV0ZSogZ2V0
QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZSkgY29uc3Q7CisgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtU2xvd0Nhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0
OwogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIFZlY3RvcjxSZWZQdHI8QXR0cmlidXRl
PiA+IG1fYXR0cmlidXRlczsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKIH07CiAKK2lubGluZSBB
dHRyaWJ1dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAoreworICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBpZiAobV9hdHRyaWJ1
dGVzW2ldLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBtX2F0dHJp
YnV0ZXNbaV0uZ2V0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvLyBXZSB1c2UgYSBi
b29sZWFuIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGNhbGxpbmcgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSBzbyB0aGF0IHRoZSBjYWxsZXIKKy8vIGNhbiB0dW5lIHRoZSBiZWhhdmlvdXIgKGhhc0F0
dHJpYnV0ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgor
aW5saW5lIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAoreworICAg
IHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOworICAgIGJvb2wgZG9TbG93Q2hlY2sgPSBzaG91bGRJ
Z25vcmVBdHRyaWJ1dGVDYXNlOworICAgIAorICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVzLgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IG1fYXR0cmlidXRlc1tpXS0+bmFtZSgpOworICAgICAg
ICBpZiAoIWF0dHJOYW1lLmhhc1ByZWZpeCgpKSB7CisgICAgICAgICAgICBpZiAobmFtZSA9PSBh
dHRyTmFtZS5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVz
W2ldLmdldCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRvU2xvd0NoZWNrID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBpZiAoZG9TbG93Q2hlY2spCisgICAgICAgIHJldHVybiBnZXRBdHRy
aWJ1dGVJdGVtU2xvd0Nhc2UobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CisgICAg
cmV0dXJuIDA7Cit9CisKIH0gLy9uYW1lc3BhY2UKIAogI3VuZGVmIGlkCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAkocmV2aXNpb24gNTMzNjQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVu
dChGcmFtZSogZnJhbWUpCi0gICAgOiBEb2N1bWVudChmcmFtZSwgZmFsc2UpCisgICAgOiBEb2N1
bWVudChmcmFtZSwgZmFsc2UsIHRydWUpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CiAgICAg
c2V0UGFyc2VNb2RlKENvbXBhdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCShyZXZpc2lvbiA1MzM2
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODcs
NyArODcsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFRv
a2VuaXplciogY3JlYXRlVG9rZW5pemVyKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZVBh
cnNlTW9kZSgpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDUzMzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzQsMjQgKzE4NzQsNiBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRlbGV0ZUNvb2tpZShjCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9k
b21BZ2VudCkKLSAgICAgICAgbV9kb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUp
Ci17Ci0gICAgaWYgKG1fZG9tQWdlbnQpCi0gICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURP
TU5vZGUobm9kZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KiBlbGVtZW50KQotewotICAgIGlmIChtX2RvbUFnZW50KQotICAgICAgICBt
X2RvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOwotfQotCiB9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCShyZXZpc2lvbiA1MzM2NCkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgpAQCAtNjYsNyArNjcsNiBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5qZWN0ZWRT
Y3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKIGNsYXNzIEluc3BlY3RvckNsaWVu
dDsKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBj
bGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OwpAQCAtMzcwLDYgKzM3MCwyNCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKG1fZG9tQWdlbnQpCisgICAgICAgIG1fZG9tQWdlbnQtPmRpZEluc2VydERPTU5vZGUo
bm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlbW92ZURP
TU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9kb21BZ2VudCkKKyAgICAgICAgbV9kb21B
Z2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlm
IChtX2RvbUFnZW50KQorICAgICAgICBtX2RvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1l
bnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JDb250cm9sbGVyX2gpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVu
dC5oCShyZXZpc2lvbiA1MzM2NCkKKysrIFdlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpOwogCiBwcml2YXRlOgotICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJh
bWUqIGZyYW1lKSA6IERvY3VtZW50KGZyYW1lLCBmYWxzZSkgeyB9CisgICAgUGxhY2Vob2xkZXJE
b2N1bWVudChGcmFtZSogZnJhbWUpIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlLCBmYWxzZSkgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDUzMzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMjQgKzQ4LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGhyZWFkR2xvYmFsRGF0
YSYgdGhyZWFkR2xvYmFsRGF0YSgpCi17Ci0gICAgLy8gRklYTUU6IFdvcmtlcnMgYXJlIG5vdCBu
ZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRoYXQgbWFrZSBwZXItdGhyZWFkIGdsb2JhbCBk
YXRhIG5lY2Vzc2FyeS4KLSAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBlLmcuIGRhdGFiYXNl
IG9iamVjdHMgbWFuaXB1bGF0aW5nIHN0cmluZ3Mgb24gc2Vjb25kYXJ5IHRocmVhZHMuCiAjaWYg
RU5BQkxFKFdPUktFUlMpCi0gICAgLy8gVGhyZWFkR2xvYmFsRGF0YSBpcyB1c2VkIG9uIG1haW4g
dGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkIG9uIHNlY29uZGFyeSBvbmVz
LCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KLSAgICBzdGF0
aWMgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT4qIHRocmVhZEdsb2JhbERhdGEgPSBu
ZXcgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT47Ci0gICAgcmV0dXJuICoqdGhyZWFk
R2xvYmFsRGF0YTsKK1RocmVhZFNwZWNpZmljPFRocmVhZEdsb2JhbERhdGE+KiBUaHJlYWRHbG9i
YWxEYXRhOjpzdGF0aWNEYXRhOwogI2Vsc2UKLSAgICBzdGF0aWMgVGhyZWFkR2xvYmFsRGF0YSog
c3RhdGljRGF0YTsKLSAgICBpZiAoIXN0YXRpY0RhdGEpIHsKLSAgICAgICAgc3RhdGljRGF0YSA9
IHN0YXRpY19jYXN0PFRocmVhZEdsb2JhbERhdGEqPihmYXN0TWFsbG9jKHNpemVvZihUaHJlYWRH
bG9iYWxEYXRhKSkpOwotICAgICAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIGNvbnN0cnVjdG9yIGlu
ZGlyZWN0bHkgdXNlcyBzdGF0aWNEYXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1cCB0aGUgbWVtb3J5
IGJlZm9yZSBpbnZva2luZyBpdC4KLSAgICAgICAgbmV3IChzdGF0aWNEYXRhKSBUaHJlYWRHbG9i
YWxEYXRhOwotICAgIH0KLSAgICByZXR1cm4gKnN0YXRpY0RhdGE7CitUaHJlYWRHbG9iYWxEYXRh
KiBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhOwogI2VuZGlmCi19CiAKIFRocmVhZEdsb2Jh
bERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQogICAgIDogbV9lbXB0eVN0cmluZyhuZXcgU3RyaW5n
SW1wbCkKQEAgLTkyLDcgKzc5LDYgQEAgVGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERh
dGEoKQogI2lmIFVTRShJQ1VfVU5JQ09ERSkKICAgICBkZWxldGUgbV9jYWNoZWRDb252ZXJ0ZXJJ
Q1U7CiAjZW5kaWYKLQogICAgIGRlbGV0ZSBtX2V2ZW50TmFtZXM7CiAgICAgZGVsZXRlIG1fYXRv
bWljU3RyaW5nVGFibGU7CiAgICAgZGVsZXRlIG1fdGhyZWFkVGltZXJzOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDUzMzY0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDE2IEBA
CiAjZGVmaW5lIFRocmVhZEdsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorI2lmIEVOQUJMRShXT1JLRVJTKQorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KK3VzaW5n
IFdURjo6VGhyZWFkU3BlY2lmaWM7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRXZlbnROYW1lczsKQEAgLTczLDEwICs4MCwzNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBURUNDb252ZXJ0ZXJXcmFwcGVyKiBtX2Nh
Y2hlZENvbnZlcnRlclRFQzsKICNlbmRpZgotICAgIH07CiAKLSAgICBUaHJlYWRHbG9iYWxEYXRh
JiB0aHJlYWRHbG9iYWxEYXRhKCk7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgICAgIHN0YXRp
YyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRhPiogc3RhdGljRGF0YTsKKyNlbHNlCisg
ICAgICAgIHN0YXRpYyBUaHJlYWRHbG9iYWxEYXRhKiBzdGF0aWNEYXRhOworI2VuZGlmCisgICAg
ICAgIGZyaWVuZCBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxEYXRhKCk7CisgICAgfTsK
IAoraW5saW5lIFRocmVhZEdsb2JhbERhdGEmIHRocmVhZEdsb2JhbERhdGEoKSAKK3sKKyAgICAv
LyBGSVhNRTogV29ya2VycyBhcmUgbm90IG5lY2Vzc2FyaWx5IHRoZSBvbmx5IGZlYXR1cmUgdGhh
dCBtYWtlIHBlci10aHJlYWQgZ2xvYmFsIGRhdGEgbmVjZXNzYXJ5LgorICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgZm9yIGUuZy4gZGF0YWJhc2Ugb2JqZWN0cyBtYW5pcHVsYXRpbmcgc3RyaW5ncyBv
biBzZWNvbmRhcnkgdGhyZWFkcy4KKworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIC8vIFRocmVh
ZEdsb2JhbERhdGEgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQgY291bGQgcG9zc2li
bHkgYmUgdXNlZCBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3lu
Y2hyb25pemF0aW9uIGhlcmUuCisgICAgaWYgKCFUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRh
KQorICAgICAgICBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhID0gbmV3IFRocmVhZFNwZWNp
ZmljPFRocmVhZEdsb2JhbERhdGE+OworICAgIHJldHVybiAqKlRocmVhZEdsb2JhbERhdGE6OnN0
YXRpY0RhdGE7CisjZWxzZQorICAgIGlmICghVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSkg
eworICAgICAgICBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhID0gc3RhdGljX2Nhc3Q8VGhy
ZWFkR2xvYmFsRGF0YSo+KGZhc3RNYWxsb2Moc2l6ZW9mKFRocmVhZEdsb2JhbERhdGEpKSk7Cisg
ICAgICAgIC8vIFRocmVhZEdsb2JhbERhdGEgY29uc3RydWN0b3IgaW5kaXJlY3RseSB1c2VzIHN0
YXRpY0RhdGEsIHNvIHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBtZW1vcnkgYmVmb3JlIGludm9raW5n
IGl0LgorICAgICAgICBuZXcgKFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEpIFRocmVhZEds
b2JhbERhdGE7CisgICAgfQorICAgIHJldHVybiAqVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0
YTsKKyNlbmRpZgorfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VGhyZWFkR2xvYmFsRGF0YV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkocmV2aXNpb24gNTMzNjQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDEzICsx
OTYsNiBAQCB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7CiB9
CiAKLWJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fdGhy
ZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7Ci0KLSAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWU7Ci19
Ci0KIGRvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwoKSBjb25zdAogewogICAgIEFT
U0VSVChpc0FjdGl2ZSgpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9uIDUzMzY0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDEyIEBA
IHByaXZhdGU6CiAgICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1fZnVuY3Rpb247CiB9OwogCitpbmxp
bmUgYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90aHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWU7Cit9CisK
IH0KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1MzM2NCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUq
IGZyYW1lKQotICAgIDogRG9jdW1lbnQoZnJhbWUsIGZhbHNlKQorICAgIDogRG9jdW1lbnQoZnJh
bWUsIGZhbHNlLCBmYWxzZSkKIHsKIH0KIAo=
</data>
<flag name="review"
          id="29207"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>