<?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>46489</bug_id>
          
          <creation_ts>2010-09-24 11:31:18 -0700</creation_ts>
          <short_desc>Rename the lineWidth and right/leftOffset functions.</short_desc>
          <delta_ts>2010-09-24 12:14:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>46123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>284574</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-24 11:31:18 -0700</bug_when>
    <thetext>Rename the lineWidth and right/leftOffset functions to reflect that they use logical width, left and right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284578</commentid>
    <comment_count>1</comment_count>
      <attachid>68720</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-24 11:34:02 -0700</bug_when>
    <thetext>Created attachment 68720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284602</commentid>
    <comment_count>2</comment_count>
      <attachid>68725</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-24 12:07:55 -0700</bug_when>
    <thetext>Created attachment 68725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284605</commentid>
    <comment_count>3</comment_count>
      <attachid>68725</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-24 12:13:28 -0700</bug_when>
    <thetext>Comment on attachment 68725
Patch

How logical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284607</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-24 12:14:41 -0700</bug_when>
    <thetext>Fixed in r68282.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68720</attachid>
            <date>2010-09-24 11:34:02 -0700</date>
            <delta_ts>2010-09-24 12:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25985</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODI3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTAtMDktMjQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ4OQorICAgICAgICAKKyAgICAg
ICAgUmVuYW1lIHRoZSBsaW5lV2lkdGggYW5kIGxlZnQvUmlnaHRPZmZzZXQgZnVuY3Rpb25zIHRv
IHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGV5IHdpbGwgYmUgYmFzZWQgb2ZmCisgICAgICAgIHRo
ZSBibG9jaydzIGxvZ2ljYWwgd2lkdGguCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZUhvcml6b250
YWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGVmdFNlbGVjdGlv
bk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRTZWxlY3Rpb25P
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRSZWxPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodE9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0UmVsT2Zmc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRDbGVhckRlbHRhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b2dpY2FsUmlnaHRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2lj
YWxMZWZ0T2Zmc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5
b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNraXBU
cmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNraXBM
ZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zml0QmVs
b3dGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJy
ZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92
ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrV2lkdGhGb3JDb250ZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnBv
c2l0aW9uTGlzdE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
b290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3ApOgorCiAyMDEwLTA5LTI0ICBBYmhpc2hlayBBcnlh
ICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNjgyNzYpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NDksNyArMTY0OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUhvcml6b250YWxQb3MK
ICAgICAgICAgLy8gU29tZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhvcml6b250YWwgcnVsZXMs
IG92ZXJmbG93OmF1dG8gYmxvY2tzKSBhdm9pZCBmbG9hdHMuICBUaGV5IG5lZWQKICAgICAgICAg
Ly8gdG8gc2hpZnQgb3ZlciBhcyBuZWNlc3NhcnkgdG8gZG9kZ2UgYW55IGZsb2F0cyB0aGF0IG1p
Z2h0IGdldCBpbiB0aGUgd2F5LgogICAgICAgICBpZiAoY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7
Ci0gICAgICAgICAgICBpbnQgbGVmdE9mZiA9IGxlZnRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKTsK
KyAgICAgICAgICAgIGludCBsZWZ0T2ZmID0gbG9naWNhbExlZnRPZmZzZXQoaGVpZ2h0KCksIGZh
bHNlKTsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLT50ZXh0QWxpZ24oKSAhPSBXRUJLSVRfQ0VO
VEVSICYmIGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkudHlwZSgpICE9IEF1dG8pIHsKICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQtPm1hcmdpbkxlZnQoKSA8IDApCiAgICAgICAgICAgICAg
ICAgICAgIGxlZnRPZmYgKz0gY2hpbGQtPm1hcmdpbkxlZnQoKTsKQEAgLTE2NjEsNyArMTY2MSw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUhvcml6b250YWxQb3MKICAgICAgICAgICAg
ICAgICAvLyB3aWR0aCBjb21wdXRhdGlvbiB3aWxsIHRha2UgaW50byBhY2NvdW50IHRoZSBkZWx0
YSBiZXR3ZWVuIHxsZWZ0T2ZmfCBhbmQgfHhQb3N8CiAgICAgICAgICAgICAgICAgLy8gc28gdGhh
dCB3ZSBjYW4ganVzdCBwYXNzIHRoZSBjb250ZW50IHdpZHRoIGluIGRpcmVjdGx5IHRvIHRoZSB8
Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnN8CiAgICAgICAgICAgICAgICAgLy8gZnVuY3Rp
b24uCi0gICAgICAgICAgICAgICAgY2hpbGQtPmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5z
KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCksIGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdo
dCgpLCBsaW5lV2lkdGgoY2hpbGQtPnkoKSwgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjaGls
ZC0+Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxl
ZnQoKSwgY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aEZvckxpbmUoY2hpbGQtPnkoKSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICBjaFBvcyA9IGxl
ZnRPZmYgKyBjaGlsZC0+bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpkZXRlcm1pbmVIb3Jpem9udGFs
UG9zCiAgICAgICAgIHhQb3MgKz0gYXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgaW50IGNoUG9z
ID0geFBvcyAtIChjaGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgpKTsKICAgICAg
ICAgaWYgKGNoaWxkLT5hdm9pZHNGbG9hdHMoKSkgewotICAgICAgICAgICAgaW50IHJpZ2h0T2Zm
ID0gcmlnaHRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGludCByaWdodE9m
ZiA9IGxvZ2ljYWxSaWdodE9mZnNldChoZWlnaHQoKSwgZmFsc2UpOwogICAgICAgICAgICAgaWYg
KHN0eWxlKCktPnRleHRBbGlnbigpICE9IFdFQktJVF9DRU5URVIgJiYgY2hpbGQtPnN0eWxlKCkt
Pm1hcmdpblJpZ2h0KCkudHlwZSgpICE9IEF1dG8pIHsKICAgICAgICAgICAgICAgICBpZiAoY2hp
bGQtPm1hcmdpblJpZ2h0KCkgPCAwKQogICAgICAgICAgICAgICAgICAgICByaWdodE9mZiAtPSBj
aGlsZC0+bWFyZ2luUmlnaHQoKTsKQEAgLTE2ODIsNyArMTY4Miw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmRldGVybWluZUhvcml6b250YWxQb3MKICAgICAgICAgICAgICAgICAvLyB3aWR0aCBjb21w
dXRhdGlvbiB3aWxsIHRha2UgaW50byBhY2NvdW50IHRoZSBkZWx0YSBiZXR3ZWVuIHxyaWdodE9m
ZnwgYW5kIHx4UG9zfAogICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgd2UgY2FuIGp1c3QgcGFz
cyB0aGUgY29udGVudCB3aWR0aCBpbiBkaXJlY3RseSB0byB0aGUgfGNvbXB1dGVJbmxpbmVEaXJl
Y3Rpb25NYXJnaW5zfAogICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uLgotICAgICAgICAgICAg
ICAgIGNoaWxkLT5jb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjaGlsZC0+c3R5bGUoKS0+
bWFyZ2luTGVmdCgpLCBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgbGluZVdpZHRoKGNo
aWxkLT55KCksIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25NYXJnaW5zKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCksIGNoaWxkLT5zdHls
ZSgpLT5tYXJnaW5SaWdodCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGNoaWxkLT55
KCksIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgY2hQb3MgPSByaWdodE9mZiAtIGNoaWxkLT5t
YXJnaW5SaWdodCgpIC0gY2hpbGQtPndpZHRoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTI4MDcsNyArMjgwNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEhvcml6b250YWxTZWxl
Y3Rpb24KIAogaW50IFJlbmRlckJsb2NrOjpsZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2Nr
KiByb290QmxvY2ssIGludCB5UG9zKQogewotICAgIGludCBsZWZ0ID0gbGVmdE9mZnNldCh5UG9z
LCBmYWxzZSk7CisgICAgaW50IGxlZnQgPSBsb2dpY2FsTGVmdE9mZnNldCh5UG9zLCBmYWxzZSk7
CiAgICAgaWYgKGxlZnQgPT0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSkgewogICAgICAg
ICBpZiAocm9vdEJsb2NrICE9IHRoaXMpCiAgICAgICAgICAgICAvLyBUaGUgYm9yZGVyIGNhbiBw
b3RlbnRpYWxseSBiZSBmdXJ0aGVyIGV4dGVuZGVkIGJ5IG91ciBjb250YWluaW5nQmxvY2soKS4K
QEAgLTI4MjcsNyArMjgyNyw3IEBAIGludCBSZW5kZXJCbG9jazo6bGVmdFNlbGVjdGlvbk9mZnNl
dChSZW4KIAogaW50IFJlbmRlckJsb2NrOjpyaWdodFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9j
ayogcm9vdEJsb2NrLCBpbnQgeVBvcykKIHsKLSAgICBpbnQgcmlnaHQgPSByaWdodE9mZnNldCh5
UG9zLCBmYWxzZSk7CisgICAgaW50IHJpZ2h0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0KHlQb3MsIGZh
bHNlKTsKICAgICBpZiAocmlnaHQgPT0gKGNvbnRlbnRXaWR0aCgpICsgKGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdMZWZ0KCkpKSkgewogICAgICAgICBpZiAocm9vdEJsb2NrICE9IHRoaXMpCiAgICAg
ICAgICAgICAvLyBUaGUgYm9yZGVyIGNhbiBwb3RlbnRpYWxseSBiZSBmdXJ0aGVyIGV4dGVuZGVk
IGJ5IG91ciBjb250YWluaW5nQmxvY2soKS4KQEAgLTMwMDgsOCArMzAwOCw4IEBAIGJvb2wgUmVu
ZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKIAogICAgICAgICBSZW5kZXJCb3gqIG8gPSBm
LT5tX3JlbmRlcmVyOwogCi0gICAgICAgIGludCBybyA9IHJpZ2h0T2Zmc2V0KCk7IC8vIENvbnN0
YW50IHBhcnQgb2YgcmlnaHQgb2Zmc2V0LgotICAgICAgICBpbnQgbG8gPSBsZWZ0T2Zmc2V0KCk7
IC8vIENvbnN0YW50IHBhcnQgb2YgbGVmdCBvZmZzZXQuCisgICAgICAgIGludCBybyA9IGxvZ2lj
YWxSaWdodE9mZnNldCgpOyAvLyBDb25zdGFudCBwYXJ0IG9mIHJpZ2h0IG9mZnNldC4KKyAgICAg
ICAgaW50IGxvID0gbG9naWNhbExlZnRPZmZzZXQoKTsgLy8gQ29uc3RhbnQgcGFydCBvZiBsZWZ0
IG9mZnNldC4KICAgICAgICAgaW50IGZ3aWR0aCA9IGYtPm1fd2lkdGg7IC8vIFRoZSB3aWR0aCB3
ZSBsb29rIGZvci4KICAgICAgICAgaWYgKHJvIC0gbG8gPCBmd2lkdGgpCiAgICAgICAgICAgICBm
d2lkdGggPSBybyAtIGxvOyAvLyBOZXZlciBsb29rIGZvciBtb3JlIHRoYW4gd2hhdCB3aWxsIGJl
IGF2YWlsYWJsZS4KQEAgLTMwMjQsMTAgKzMwMjQsMTAgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9z
aXRpb25OZXdGbG9hdHMoKQogICAgICAgICBpZiAoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSA9PSBG
TEVGVCkgewogICAgICAgICAgICAgaW50IGhlaWdodFJlbWFpbmluZ0xlZnQgPSAxOwogICAgICAg
ICAgICAgaW50IGhlaWdodFJlbWFpbmluZ1JpZ2h0ID0gMTsKLSAgICAgICAgICAgIGludCBmeCA9
IGxlZnRSZWxPZmZzZXQoeSwgbG8sIGZhbHNlLCAmaGVpZ2h0UmVtYWluaW5nTGVmdCk7Ci0gICAg
ICAgICAgICB3aGlsZSAocmlnaHRSZWxPZmZzZXQoeSwgcm8sIGZhbHNlLCAmaGVpZ2h0UmVtYWlu
aW5nUmlnaHQpLWZ4IDwgZndpZHRoKSB7CisgICAgICAgICAgICBpbnQgZnggPSBsb2dpY2FsTGVm
dFJlbE9mZnNldCh5LCBsbywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdMZWZ0KTsKKyAgICAgICAg
ICAgIHdoaWxlIChsb2dpY2FsUmlnaHRSZWxPZmZzZXQoeSwgcm8sIGZhbHNlLCAmaGVpZ2h0UmVt
YWluaW5nUmlnaHQpLWZ4IDwgZndpZHRoKSB7CiAgICAgICAgICAgICAgICAgeSArPSBtaW4oaGVp
Z2h0UmVtYWluaW5nTGVmdCwgaGVpZ2h0UmVtYWluaW5nUmlnaHQpOwotICAgICAgICAgICAgICAg
IGZ4ID0gbGVmdFJlbE9mZnNldCh5LCBsbywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdMZWZ0KTsK
KyAgICAgICAgICAgICAgICBmeCA9IGxvZ2ljYWxMZWZ0UmVsT2Zmc2V0KHksIGxvLCBmYWxzZSwg
JmhlaWdodFJlbWFpbmluZ0xlZnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnggPSBt
YXgoMCwgZngpOwogICAgICAgICAgICAgZi0+bV9sZWZ0ID0gZng7CkBAIC0zMDM1LDEwICszMDM1
LDEwIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGludCBoZWlnaHRSZW1haW5pbmdMZWZ0ID0gMTsKICAgICAgICAg
ICAgIGludCBoZWlnaHRSZW1haW5pbmdSaWdodCA9IDE7Ci0gICAgICAgICAgICBpbnQgZnggPSBy
aWdodFJlbE9mZnNldCh5LCBybywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdSaWdodCk7Ci0gICAg
ICAgICAgICB3aGlsZSAoZnggLSBsZWZ0UmVsT2Zmc2V0KHksIGxvLCBmYWxzZSwgJmhlaWdodFJl
bWFpbmluZ0xlZnQpIDwgZndpZHRoKSB7CisgICAgICAgICAgICBpbnQgZnggPSBsb2dpY2FsUmln
aHRSZWxPZmZzZXQoeSwgcm8sIGZhbHNlLCAmaGVpZ2h0UmVtYWluaW5nUmlnaHQpOworICAgICAg
ICAgICAgd2hpbGUgKGZ4IC0gbG9naWNhbExlZnRSZWxPZmZzZXQoeSwgbG8sIGZhbHNlLCAmaGVp
Z2h0UmVtYWluaW5nTGVmdCkgPCBmd2lkdGgpIHsKICAgICAgICAgICAgICAgICB5ICs9IG1pbiho
ZWlnaHRSZW1haW5pbmdMZWZ0LCBoZWlnaHRSZW1haW5pbmdSaWdodCk7Ci0gICAgICAgICAgICAg
ICAgZnggPSByaWdodFJlbE9mZnNldCh5LCBybywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdSaWdo
dCk7CisgICAgICAgICAgICAgICAgZnggPSBsb2dpY2FsUmlnaHRSZWxPZmZzZXQoeSwgcm8sIGZh
bHNlLCAmaGVpZ2h0UmVtYWluaW5nUmlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Zi0+bV9sZWZ0ID0gZnggLSBmLT5tX3dpZHRoOwogICAgICAgICAgICAgby0+c2V0TG9jYXRpb24o
ZnggLSBvLT5tYXJnaW5SaWdodCgpIC0gby0+d2lkdGgoKSwgeSArIG8tPm1hcmdpblRvcCgpKTsK
QEAgLTMyMDEsMTIgKzMyMDEsMTIgQEAgSGFzaFNldDxSZW5kZXJCb3gqPiogUmVuZGVyQmxvY2s6
OnBlcmNlbgogICAgIHJldHVybiBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwID8gZ1BlcmNl
bnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KHRoaXMpIDogMDsKIH0KIAotaW50IFJlbmRlckJs
b2NrOjpsZWZ0T2Zmc2V0KCkgY29uc3QKK2ludCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZz
ZXQoKSBjb25zdAogewogICAgIHJldHVybiBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwog
fQogCi1pbnQgUmVuZGVyQmxvY2s6OmxlZnRSZWxPZmZzZXQoaW50IHksIGludCBmaXhlZE9mZnNl
dCwgYm9vbCBhcHBseVRleHRJbmRlbnQsIGludCogaGVpZ2h0UmVtYWluaW5nKSBjb25zdAoraW50
IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFJlbE9mZnNldChpbnQgeSwgaW50IGZpeGVkT2Zmc2V0
LCBib29sIGFwcGx5VGV4dEluZGVudCwgaW50KiBoZWlnaHRSZW1haW5pbmcpIGNvbnN0CiB7CiAg
ICAgaW50IGxlZnQgPSBmaXhlZE9mZnNldDsKICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMpIHsK
QEAgLTMyMzQsMTIgKzMyMzQsMTIgQEAgaW50IFJlbmRlckJsb2NrOjpsZWZ0UmVsT2Zmc2V0KGlu
dCB5LCBpbgogICAgIHJldHVybiBsZWZ0OwogfQogCi1pbnQgUmVuZGVyQmxvY2s6OnJpZ2h0T2Zm
c2V0KCkgY29uc3QKK2ludCBSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0T2Zmc2V0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSArIGF2YWlsYWJsZVdp
ZHRoKCk7CiB9CiAKLWludCBSZW5kZXJCbG9jazo6cmlnaHRSZWxPZmZzZXQoaW50IHksIGludCBm
aXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQsIGludCogaGVpZ2h0UmVtYWluaW5nKSBj
b25zdAoraW50IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRSZWxPZmZzZXQoaW50IHksIGludCBm
aXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQsIGludCogaGVpZ2h0UmVtYWluaW5nKSBj
b25zdAogewogICAgIGludCByaWdodCA9IGZpeGVkT2Zmc2V0OwogCkBAIC0zMjY5LDkgKzMyNjks
OSBAQCBpbnQgUmVuZGVyQmxvY2s6OnJpZ2h0UmVsT2Zmc2V0KGludCB5LCBpCiB9CiAKIGludAot
UmVuZGVyQmxvY2s6OmxpbmVXaWR0aChpbnQgeSwgYm9vbCBmaXJzdExpbmUpIGNvbnN0CitSZW5k
ZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShpbnQgcG9zaXRpb24sIGJvb2wg
Zmlyc3RMaW5lKSBjb25zdAogewotICAgIGludCByZXN1bHQgPSByaWdodE9mZnNldCh5LCBmaXJz
dExpbmUpIC0gbGVmdE9mZnNldCh5LCBmaXJzdExpbmUpOworICAgIGludCByZXN1bHQgPSBsb2dp
Y2FsUmlnaHRPZmZzZXQocG9zaXRpb24sIGZpcnN0TGluZSkgLSBsb2dpY2FsTGVmdE9mZnNldChw
b3NpdGlvbiwgZmlyc3RMaW5lKTsKICAgICByZXR1cm4gKHJlc3VsdCA8IDApID8gMCA6IHJlc3Vs
dDsKIH0KIApAQCAtMzkzOCw3ICszOTM4LDcgQEAgaW50IFJlbmRlckJsb2NrOjpnZXRDbGVhckRl
bHRhKFJlbmRlckJveAogCiAgICAgICAgIGludCB5ID0geVBvczsKICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgICAgIGludCB3aWR0aEF0WSA9IGxpbmVXaWR0aCh5LCBmYWxzZSk7Cisg
ICAgICAgICAgICBpbnQgd2lkdGhBdFkgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKHks
IGZhbHNlKTsKICAgICAgICAgICAgIGlmICh3aWR0aEF0WSA9PSBhdmFpbGFibGVXaWR0aCkKICAg
ICAgICAgICAgICAgICByZXR1cm4geSAtIHlQb3M7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkocmV2aXNpb24gNjgyNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTUgKzEwMiwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
b250YWluc0Zsb2F0cygpIHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5n
T2JqZWN0cy0+aXNFbXB0eSgpOyB9CiAgICAgYm9vbCBjb250YWluc0Zsb2F0KFJlbmRlck9iamVj
dCopOwogCi0gICAgaW50IGxpbmVXaWR0aChpbnQgeSwgYm9vbCBmaXJzdExpbmUpIGNvbnN0Owor
ICAgIGludCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGludCBwb3NpdGlvbiwgYm9vbCBm
aXJzdExpbmUpIGNvbnN0OworICAgIGludCBsb2dpY2FsUmlnaHRPZmZzZXQoaW50IHBvc2l0aW9u
LCBib29sIGZpcnN0TGluZSkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJpZ2h0UmVsT2Zmc2V0KHBv
c2l0aW9uLCBsb2dpY2FsUmlnaHRPZmZzZXQoKSwgZmlyc3RMaW5lKTsgfQorICAgIGludCBsb2dp
Y2FsTGVmdE9mZnNldChpbnQgcG9zaXRpb24sIGJvb2wgZmlyc3RMaW5lKSBjb25zdCB7IHJldHVy
biBsb2dpY2FsTGVmdFJlbE9mZnNldChwb3NpdGlvbiwgbG9naWNhbExlZnRPZmZzZXQoKSwgZmly
c3RMaW5lKTsgfQogICAgIAogICAgIHZpcnR1YWwgaW50IGxvd2VzdFBvc2l0aW9uKGJvb2wgaW5j
bHVkZU92ZXJmbG93SW50ZXJpb3IgPSB0cnVlLCBib29sIGluY2x1ZGVTZWxmID0gdHJ1ZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBpbnQgcmlnaHRtb3N0UG9zaXRpb24oYm9vbCBpbmNsdWRlT3ZlcmZs
b3dJbnRlcmlvciA9IHRydWUsIGJvb2wgaW5jbHVkZVNlbGYgPSB0cnVlKSBjb25zdDsKICAgICB2
aXJ0dWFsIGludCBsZWZ0bW9zdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3Ig
PSB0cnVlLCBib29sIGluY2x1ZGVTZWxmID0gdHJ1ZSkgY29uc3Q7Ci0KLSAgICBpbnQgcmlnaHRP
ZmZzZXQoaW50IHksIGJvb2wgZmlyc3RMaW5lKSBjb25zdCB7IHJldHVybiByaWdodFJlbE9mZnNl
dCh5LCByaWdodE9mZnNldCgpLCBmaXJzdExpbmUpOyB9Ci0gICAgaW50IGxlZnRPZmZzZXQoaW50
IHksIGJvb2wgZmlyc3RMaW5lKSBjb25zdCB7IHJldHVybiBsZWZ0UmVsT2Zmc2V0KHksIGxlZnRP
ZmZzZXQoKSwgZmlyc3RMaW5lKTsgfQotCisgICAgCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpOwogICAgIAogICAgIC8vIEJsb2Nr
IGZsb3dzIHN1YmNsYXNzIGF2YWlsYWJsZVdpZHRoIHRvIGhhbmRsZSBtdWx0aSBjb2x1bW4gbGF5
b3V0IChzaHJpbmtpbmcgdGhlIHdpZHRoIGF2YWlsYWJsZSB0byBjaGlsZHJlbiB3aGVuIGxheWlu
ZyBvdXQuKQpAQCAtMjIyLDggKzIyMSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPYmplY3QoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCi0gICAgaW50IHJpZ2h0UmVs
T2Zmc2V0KGludCB5LCBpbnQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5kZW50ID0gdHJ1
ZSwgaW50KiBoZWlnaHRSZW1haW5pbmcgPSAwKSBjb25zdDsKLSAgICBpbnQgbGVmdFJlbE9mZnNl
dChpbnQgeSwgaW50IGZpeGVkT2Zmc2V0LCBib29sIGFwcGx5VGV4dEluZGVudCA9IHRydWUsIGlu
dCogaGVpZ2h0UmVtYWluaW5nID0gMCkgY29uc3Q7CisgICAgaW50IGxvZ2ljYWxSaWdodE9mZnNl
dCgpIGNvbnN0OworICAgIGludCBsb2dpY2FsTGVmdE9mZnNldCgpIGNvbnN0OworICAgIGludCBs
b2dpY2FsUmlnaHRSZWxPZmZzZXQoaW50IHBvc2l0aW9uLCBpbnQgZml4ZWRPZmZzZXQsIGJvb2wg
YXBwbHlUZXh0SW5kZW50ID0gdHJ1ZSwgaW50KiBsb2dpY2FsSGVpZ2h0UmVtYWluaW5nID0gMCkg
Y29uc3Q7CisgICAgaW50IGxvZ2ljYWxMZWZ0UmVsT2Zmc2V0KGludCBwb3NpdGlvbiwgaW50IGZp
eGVkT2Zmc2V0LCBib29sIGFwcGx5VGV4dEluZGVudCA9IHRydWUsIGludCogbG9naWNhbEhlaWdo
dFJlbWFpbmluZyA9IDApIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4
LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCkBAIC00MDksOCArNDEwLDYgQEAgcHJpdmF0ZToK
ICAgICBpbmxpbmUgaW50IGxlZnRCb3R0b20oKTsKICAgICBpbmxpbmUgaW50IHJpZ2h0Qm90dG9t
KCk7CiAKLSAgICBpbnQgcmlnaHRPZmZzZXQoKSBjb25zdDsKLSAgICBpbnQgbGVmdE9mZnNldCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0Q29sdW1ucyhjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRU
ZXN0QWN0aW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHks
IEhpdFRlc3RBY3Rpb24pOwogICAgIGJvb2wgaGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNp
b24gNjgyNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyArMzIzLDcgQEAgUm9vdElubGluZUJveCogUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdExpbgogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwgYm9vbCBmaXJzdExp
bmUsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJl
YWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1h
cCkKIHsKICAgICAvLyBGaXJzdCBkZXRlcm1pbmUgb3VyIHRvdGFsIHdpZHRoLgotICAgIGludCBh
dmFpbGFibGVXaWR0aCA9IGxpbmVXaWR0aChoZWlnaHQoKSwgZmlyc3RMaW5lKTsKKyAgICBpbnQg
YXZhaWxhYmxlV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGhlaWdodCgpLCBm
aXJzdExpbmUpOwogICAgIGludCB0b3RXaWR0aCA9IGxpbmVCb3gtPmdldEZsb3dTcGFjaW5nTG9n
aWNhbFdpZHRoKCk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgdW5z
aWduZWQgbnVtU3BhY2VzID0gMDsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uCiAgICAgLy8gd2Ugbm93IGV4YW1pbmUgb3VyIHRleHQt
YWxpZ24gcHJvcGVydHkgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIHBvc2l0aW9uIHRo
ZQogICAgIC8vIG9iamVjdHMgaG9yaXpvbnRhbGx5LiAgVGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBs
aW5lIGNhbiBiZSBpbmNyZWFzZWQgaWYgd2UgZW5kIHVwCiAgICAgLy8ganVzdGlmeWluZyB0ZXh0
LgotICAgIGludCB4ID0gbGVmdE9mZnNldChoZWlnaHQoKSwgZmlyc3RMaW5lKTsKKyAgICBpbnQg
eCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0KGhlaWdodCgpLCBmaXJzdExpbmUpOwogICAgIHN3aXRjaCAo
dGV4dEFsaWduKSB7CiAgICAgICAgIGNhc2UgTEVGVDoKICAgICAgICAgY2FzZSBXRUJLSVRfTEVG
VDoKQEAgLTgwMiwxMiArODAyLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNo
aWxkcmVuKGIKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGp1c3RtZW50ID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24obGlu
ZUJveCwgYWRqdXN0bWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRqdXN0bWVu
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvbGRMaW5lV2lkdGggPSBsaW5l
V2lkdGgob2xkSGVpZ2h0LCBmaXJzdExpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBvbGRMaW5lV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG9sZEhlaWdo
dCwgZmlyc3RMaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5hZGp1
c3RQb3NpdGlvbigwLCBhZGp1c3RtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodXNlUmVwYWludEJvdW5kcykgLy8gVGhpcyBjYW4gb25seSBiZSBhIHBvc2l0aXZlIGFkanVz
dG1lbnQsIHNvIG5vIG5lZWQgdG8gdXBkYXRlIHJlcGFpbnRUb3AuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGFpbnRCb3R0b20gPSBtYXgocmVwYWludEJvdHRvbSwgbGluZUJv
eC0+Ym90dG9tVmlzaWJsZU92ZXJmbG93KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVdpZHRoKG9sZEhlaWdo
dCArIGFkanVzdG1lbnQsIGZpcnN0TGluZSkgIT0gb2xkTGluZVdpZHRoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUob2xkSGVp
Z2h0ICsgYWRqdXN0bWVudCwgZmlyc3RMaW5lKSAhPSBvbGRMaW5lV2lkdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBkZWxldGUgdGhpcyBsaW5lLCBy
ZW1vdmUgYWxsIGZsb2F0cyB0aGF0IGdvdCBhZGRlZCwgYW5kIGxldCBsaW5lIGxheW91dCByZS1y
dW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3gtPmRlbGV0ZUxpbmUo
cmVuZGVyQXJlbmEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUZs
b2F0aW5nT2JqZWN0c0JlbG93KGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIG9sZEhlaWdodCk7
CkBAIC0xMjc5LDE0ICsxMjc5LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNraXBUcmFpbGluZ1do
aXRlc3BhY2UKICAgICAgICAgICAgICAgICAvLyBBIHJlbGF0aXZlIHBvc2l0aW9uZWQgaW5saW5l
IGVuY2xvc2VzIHVzLiAgSW4gdGhpcyBjYXNlLCB3ZSBhbHNvIGhhdmUgdG8gZGV0ZXJtaW5lIG91
cgogICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGFzIHRob3VnaCB3ZSB3ZXJlIGFuIGlubGlu
ZS4gIFNldCB8c3RhdGljWHwgYW5kIHxzdGF0aWNZfCBvbiB0aGUgcmVsYXRpdmUgcG9zaXRpb25l
ZAogICAgICAgICAgICAgICAgIC8vIGlubGluZSBzbyB0aGF0IHdlIGNhbiBvYnRhaW4gdGhlIHZh
bHVlIGxhdGVyLgotICAgICAgICAgICAgICAgIHRvUmVuZGVySW5saW5lKGMpLT5sYXllcigpLT5z
ZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGxlZnRPZmZzZXQoaGVpZ2h0
KCksIGZhbHNlKSA6IHJpZ2h0T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSkpOworICAgICAgICAgICAg
ICAgIHRvUmVuZGVySW5saW5lKGMpLT5sYXllcigpLT5zZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVj
dGlvbigpID09IExUUiA/IGxvZ2ljYWxMZWZ0T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSkgOiBsb2dp
Y2FsUmlnaHRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgdG9SZW5k
ZXJJbmxpbmUoYyktPmxheWVyKCktPnNldFN0YXRpY1koaGVpZ2h0KCkpOwogICAgICAgICAgICAg
fQogICAgIAogICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvYmplY3Qp
OwogICAgICAgICAgICAgaWYgKGJveC0+c3R5bGUoKS0+aGFzU3RhdGljWCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGJveC0+c3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGJveC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5k
aXJlY3Rpb24oKSA9PSBMVFIgPyBsZWZ0T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSkgOiB3aWR0aCgp
IC0gcmlnaHRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgICAgIGJv
eC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBsb2dp
Y2FsTGVmdE9mZnNldChoZWlnaHQoKSwgZmFsc2UpIDogd2lkdGgoKSAtIGxvZ2ljYWxSaWdodE9m
ZnNldChoZWlnaHQoKSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGJveC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9
PSBMVFIgPyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpIDogYm9yZGVyUmlnaHQoKSArIHBh
ZGRpbmdSaWdodCgpKTsKICAgICAgICAgICAgIH0KQEAgLTEzMDEsMTIgKzEzMDEsMTIgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6c2tpcFRyYWlsaW5nV2hpdGVzcGFjZQogaW50IFJlbmRlckJsb2NrOjpz
a2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9vbCBm
aXJzdExpbmUsIGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3Qq
IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiB7Ci0gICAgaW50IGF2YWlsYWJsZVdpZHRoID0g
bGluZVdpZHRoKGhlaWdodCgpLCBmaXJzdExpbmUpOworICAgIGludCBhdmFpbGFibGVXaWR0aCA9
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoaGVpZ2h0KCksIGZpcnN0TGluZSk7CiAgICAg
d2hpbGUgKCFyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkgJiYgIXJlcXVpcmVzTGluZUJveChy
ZXNvbHZlci5wb3NpdGlvbigpLCBpc0xpbmVFbXB0eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlc29sdmVyLnBvc2l0aW9uKCku
b2JqOwogICAgICAgICBpZiAob2JqZWN0LT5pc0Zsb2F0aW5nKCkpIHsKICAgICAgICAgICAgIHBv
c2l0aW9uTmV3RmxvYXRPbkxpbmUoaW5zZXJ0RmxvYXRpbmdPYmplY3QodG9SZW5kZXJCb3gob2Jq
ZWN0KSksIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpOwotICAgICAgICAgICAgYXZhaWxhYmxl
V2lkdGggPSBsaW5lV2lkdGgoaGVpZ2h0KCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBhdmFp
bGFibGVXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoaGVpZ2h0KCksIGZpcnN0
TGluZSk7CiAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0LT5pc1Bvc2l0aW9uZWQoKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZSBtYXRoIGhlcmUgaXMgYWN0dWFsbHkgbm90IHJlYWxseSBy
aWdodC4gIEl0J3MgYSBiZXN0LWd1ZXNzIGFwcHJveGltYXRpb24gdGhhdAogICAgICAgICAgICAg
Ly8gd2lsbCB3b3JrIGZvciB0aGUgY29tbW9uIGNhc2VzCkBAIC0xMzE1LDE0ICsxMzE1LDE0IEBA
IGludCBSZW5kZXJCbG9jazo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKEkKICAgICAgICAgICAgICAg
ICAvLyBBIHJlbGF0aXZlIHBvc2l0aW9uZWQgaW5saW5lIGVuY2xvc2VzIHVzLiAgSW4gdGhpcyBj
YXNlLCB3ZSBhbHNvIGhhdmUgdG8gZGV0ZXJtaW5lIG91cgogICAgICAgICAgICAgICAgIC8vIHBv
c2l0aW9uIGFzIHRob3VnaCB3ZSB3ZXJlIGFuIGlubGluZS4gIFNldCB8c3RhdGljWHwgYW5kIHxz
dGF0aWNZfCBvbiB0aGUgcmVsYXRpdmUgcG9zaXRpb25lZAogICAgICAgICAgICAgICAgIC8vIGlu
bGluZSBzbyB0aGF0IHdlIGNhbiBvYnRhaW4gdGhlIHZhbHVlIGxhdGVyLgotICAgICAgICAgICAg
ICAgIHRvUmVuZGVySW5saW5lKGMpLT5sYXllcigpLT5zZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVj
dGlvbigpID09IExUUiA/IGxlZnRPZmZzZXQoaGVpZ2h0KCksIGZpcnN0TGluZSkgOiByaWdodE9m
ZnNldChoZWlnaHQoKSwgZmlyc3RMaW5lKSk7CisgICAgICAgICAgICAgICAgdG9SZW5kZXJJbmxp
bmUoYyktPmxheWVyKCktPnNldFN0YXRpY1goc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8g
bG9naWNhbExlZnRPZmZzZXQoaGVpZ2h0KCksIGZpcnN0TGluZSkgOiBsb2dpY2FsUmlnaHRPZmZz
ZXQoaGVpZ2h0KCksIGZpcnN0TGluZSkpOwogICAgICAgICAgICAgICAgIHRvUmVuZGVySW5saW5l
KGMpLT5sYXllcigpLT5zZXRTdGF0aWNZKGhlaWdodCgpKTsKICAgICAgICAgICAgIH0KICAgICAK
ICAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gob2JqZWN0KTsKICAgICAg
ICAgICAgIGlmIChib3gtPnN0eWxlKCktPmhhc1N0YXRpY1goKSkgewogICAgICAgICAgICAgICAg
IGlmIChib3gtPnN0eWxlKCktPmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKQotICAgICAg
ICAgICAgICAgICAgICBib3gtPmxheWVyKCktPnNldFN0YXRpY1goc3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gTFRSID8gbGVmdE9mZnNldChoZWlnaHQoKSwgZmlyc3RMaW5lKSA6IHdpZHRoKCkgLSBy
aWdodE9mZnNldChoZWlnaHQoKSwgZmlyc3RMaW5lKSk7CisgICAgICAgICAgICAgICAgICAgIGJv
eC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBsb2dp
Y2FsTGVmdE9mZnNldChoZWlnaHQoKSwgZmlyc3RMaW5lKSA6IHdpZHRoKCkgLSBsb2dpY2FsUmln
aHRPZmZzZXQoaGVpZ2h0KCksIGZpcnN0TGluZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgYm94LT5sYXllcigpLT5zZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVj
dGlvbigpID09IExUUiA/IGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkgOiBib3JkZXJSaWdo
dCgpICsgcGFkZGluZ1JpZ2h0KCkpOwogICAgICAgICAgICAgfQpAQCAtMTM2NSw3ICsxMzY1LDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Zml0QmVsb3dGbG9hdHMoaW50IHdpZAogICAgICAgICBpZiAo
IWZsb2F0Qm90dG9tKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgbmV3TGluZVdpZHRo
ID0gbGluZVdpZHRoKGZsb2F0Qm90dG9tLCBmaXJzdExpbmUpOworICAgICAgICBuZXdMaW5lV2lk
dGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGZsb2F0Qm90dG9tLCBmaXJzdExpbmUp
OwogICAgICAgICBsYXN0RmxvYXRCb3R0b20gPSBmbG9hdEJvdHRvbTsKICAgICAgICAgaWYgKG5l
d0xpbmVXaWR0aCA+PSB3aWR0aFRvRml0KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE1LDcg
KzE1MTUsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAg
ICAgICAgICAgICAgLy8gaXQgYWZ0ZXIgbW92aW5nIHRvIG5leHQgbGluZSAoaW4gbmV3TGluZSgp
IGZ1bmMpCiAgICAgICAgICAgICAgICAgaWYgKGZsb2F0c0ZpdE9uTGluZSAmJiBmbG9hdEJveC0+
d2lkdGgoKSArIGZsb2F0Qm94LT5tYXJnaW5MZWZ0KCkgKyBmbG9hdEJveC0+bWFyZ2luUmlnaHQo
KSArIHcgKyB0bXBXIDw9IHdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uTmV3
RmxvYXRPbkxpbmUoZiwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHdpZHRoID0gbGluZVdpZHRoKGhlaWdodCgpLCBmaXJzdExpbmUpOworICAgICAgICAg
ICAgICAgICAgICB3aWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoaGVpZ2h0KCks
IGZpcnN0TGluZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGZsb2F0c0ZpdE9uTGluZSA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChvLT5pc1Bv
c2l0aW9uZWQoKSkgewpAQCAtMjEwMiw4ICsyMTAyLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hl
Y2tMaW5lc0ZvclRleHRPdmVyZgogICAgIC8vIEluY2x1ZGUgdGhlIHNjcm9sbGJhciBmb3Igb3Zl
cmZsb3cgYmxvY2tzLCB3aGljaCBtZWFucyB3ZSB3YW50IHRvIHVzZSAiY29udGVudFdpZHRoKCki
CiAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFI7CiAgICAgZm9yIChS
b290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5u
ZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgIGludCBibG9ja1JpZ2h0RWRnZSA9IHJpZ2h0T2Zmc2V0
KGN1cnItPnkoKSwgY3VyciA9PSBmaXJzdFJvb3RCb3goKSk7Ci0gICAgICAgIGludCBibG9ja0xl
ZnRFZGdlID0gbGVmdE9mZnNldChjdXJyLT55KCksIGN1cnIgPT0gZmlyc3RSb290Qm94KCkpOwor
ICAgICAgICBpbnQgYmxvY2tSaWdodEVkZ2UgPSBsb2dpY2FsUmlnaHRPZmZzZXQoY3Vyci0+eSgp
LCBjdXJyID09IGZpcnN0Um9vdEJveCgpKTsKKyAgICAgICAgaW50IGJsb2NrTGVmdEVkZ2UgPSBs
b2dpY2FsTGVmdE9mZnNldChjdXJyLT55KCksIGN1cnIgPT0gZmlyc3RSb290Qm94KCkpOwogICAg
ICAgICBpbnQgbGluZUJveEVkZ2UgPSBsdHIgPyBjdXJyLT54KCkgKyBjdXJyLT5sb2dpY2FsV2lk
dGgoKSA6IGN1cnItPngoKTsKICAgICAgICAgaWYgKChsdHIgJiYgbGluZUJveEVkZ2UgPiBibG9j
a1JpZ2h0RWRnZSkgfHwgKCFsdHIgJiYgbGluZUJveEVkZ2UgPCBibG9ja0xlZnRFZGdlKSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBsaW5lIHNwaWxscyBvdXQgb2Ygb3VyIGJveCBpbiB0aGUgYXBw
cm9wcmlhdGUgZGlyZWN0aW9uLiAgTm93IHdlIG5lZWQgdG8gc2VlIGlmIHRoZSBsaW5lCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDY4Mjc2KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAg
aW50IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrV2lkdGhGb3JDbwogewogICAgIFJlbmRlckJs
b2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChzaHJpbmtUb0F2b2lkRmxvYXRz
KCkpCi0gICAgICAgIHJldHVybiBjYi0+bGluZVdpZHRoKHkoKSwgZmFsc2UpOworICAgICAgICBy
ZXR1cm4gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoeSgpLCBmYWxzZSk7CiAgICAg
cmV0dXJuIGNiLT5hdmFpbGFibGVXaWR0aCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiA2ODI3NikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxMCw4ICsxMDEw
LDggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGx0ciA9IHRydWU7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGludCBibG9ja1JpZ2h0RWRnZSA9IGRlc3RCbG9jay0+cmlnaHRPZmZz
ZXQobGFzdFZpc2libGVMaW5lLT55KCksIGZhbHNlKTsKLSAgICAgICAgICAgIGludCBibG9ja0xl
ZnRFZGdlID0gZGVzdEJsb2NrLT5sZWZ0T2Zmc2V0KGxhc3RWaXNpYmxlTGluZS0+eSgpLCBmYWxz
ZSk7CisgICAgICAgICAgICBpbnQgYmxvY2tSaWdodEVkZ2UgPSBkZXN0QmxvY2stPmxvZ2ljYWxS
aWdodE9mZnNldChsYXN0VmlzaWJsZUxpbmUtPnkoKSwgZmFsc2UpOworICAgICAgICAgICAgaW50
IGJsb2NrTGVmdEVkZ2UgPSBkZXN0QmxvY2stPmxvZ2ljYWxMZWZ0T2Zmc2V0KGxhc3RWaXNpYmxl
TGluZS0+eSgpLCBmYWxzZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGludCBibG9ja0Vk
Z2UgPSBsdHIgPyBibG9ja1JpZ2h0RWRnZSA6IGJsb2NrTGVmdEVkZ2U7CiAgICAgICAgICAgICBp
ZiAoIWxhc3RWaXNpYmxlTGluZS0+Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhsdHIsIGJsb2NrRWRn
ZSwKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDY4Mjc2
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6cG9zaXRpb25MaXN0TWFy
a2VyKAogICAgICAgICAvLyBhbmQgcmVhbGx5IHNob3VsZG4ndCBrZWVwIHByb3BhZ2F0aW5nIG92
ZXJmbG93IHVwLiAgVGhpcyB3b24ndCByZWFsbHkgYnJlYWsgYW55dGhpbmcgb3RoZXIgdGhhbiBy
ZXBhaW50aW5nCiAgICAgICAgIC8vIG5vdCBiZWluZyBhcyB0aWdodCBhcyBpdCBjb3VsZCBiZSB0
aG91Z2guCiAgICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIpIHsKLSAgICAg
ICAgICAgIGludCBsZWZ0TGluZU9mZnNldCA9IGxlZnRSZWxPZmZzZXQoeU9mZnNldCwgbGVmdE9m
ZnNldCh5T2Zmc2V0LCBmYWxzZSksIGZhbHNlKTsKKyAgICAgICAgICAgIGludCBsZWZ0TGluZU9m
ZnNldCA9IGxvZ2ljYWxMZWZ0UmVsT2Zmc2V0KHlPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0KHlP
ZmZzZXQsIGZhbHNlKSwgZmFsc2UpOwogICAgICAgICAgICAgbWFya2VyWFBvcyA9IGxlZnRMaW5l
T2Zmc2V0IC0geE9mZnNldCAtIHBhZGRpbmdMZWZ0KCkgLSBib3JkZXJMZWZ0KCkgKyBtX21hcmtl
ci0+bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIo
KS0+YWRqdXN0UG9zaXRpb24obWFya2VyWFBvcyAtIG1hcmtlck9sZFgsIDApOwogICAgICAgICAg
ICAgZm9yIChJbmxpbmVGbG93Qm94KiBib3ggPSBtX21hcmtlci0+aW5saW5lQm94V3JhcHBlcigp
LT5wYXJlbnQoKTsgYm94OyBib3ggPSBib3gtPnBhcmVudCgpKSB7CkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6cG9zaXRpb25MaXN0TWFya2VyKAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCBy
aWdodExpbmVPZmZzZXQgPSByaWdodFJlbE9mZnNldCh5T2Zmc2V0LCByaWdodE9mZnNldCh5T2Zm
c2V0LCBmYWxzZSksIGZhbHNlKTsKKyAgICAgICAgICAgIGludCByaWdodExpbmVPZmZzZXQgPSBs
b2dpY2FsUmlnaHRSZWxPZmZzZXQoeU9mZnNldCwgbG9naWNhbFJpZ2h0T2Zmc2V0KHlPZmZzZXQs
IGZhbHNlKSwgZmFsc2UpOwogICAgICAgICAgICAgbWFya2VyWFBvcyA9IHJpZ2h0TGluZU9mZnNl
dCAtIHhPZmZzZXQgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCkgKyBtX21hcmtlci0+
bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+
YWRqdXN0UG9zaXRpb24obWFya2VyWFBvcyAtIG1hcmtlck9sZFgsIDApOwogICAgICAgICAgICAg
Zm9yIChJbmxpbmVGbG93Qm94KiBib3ggPSBtX21hcmtlci0+aW5saW5lQm94V3JhcHBlcigpLT5w
YXJlbnQoKTsgYm94OyBib3ggPSBib3gtPnBhcmVudCgpKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCShyZXZpc2lvbiA2ODI3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFu
IGF1dG8gd2lkdGggdGFibGUgc2hvdWxkIHNocmluayB0byBmaXQgd2l0aGluIHRoZSBsaW5lIHdp
ZHRoIGlmIG5lY2Vzc2FyeSBpbiBvcmRlciB0byAKICAgICAgICAgLy8gYXZvaWQgb3ZlcmxhcHBp
bmcgZmxvYXRzLgotICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGNiLT5saW5lV2lkdGgoeSgpLCBm
YWxzZSk7CisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aEZvckxpbmUoeSgpLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICAvLyBTdWJ0cmFjdCBvdXQg
YW55IGZpeGVkIG1hcmdpbnMgZnJvbSBvdXIgYXZhaWxhYmxlIHdpZHRoIGZvciBhdXRvIHdpZHRo
IHRhYmxlcy4KICAgICAgICAgaW50IG1hcmdpblRvdGFsID0gMDsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiA2ODIwNikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsMTAgKzM1MywxMCBAQCBp
bnQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKICAgICAgICAgLy8gVGhpcyBs
aW5lIGhhcyBhY3R1YWxseSBiZWVuIG1vdmVkIGZ1cnRoZXIgZG93biwgcHJvYmFibHkgZnJvbSBh
IGxhcmdlIGxpbmUtaGVpZ2h0LCBidXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8g
bGluZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUg
b2Zmc2V0cywgYW5kIG9ubHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIHByZXZpb3VzCiAgICAgICAg
IC8vIGxpbmUncyBib3R0b20gb3ZlcmZsb3cgaWYgdGhlIG9mZnNldHMgYXJlIGdyZWF0ZXIgb24g
Ym90aCBzaWRlcy4KLSAgICAgICAgaW50IHByZXZMZWZ0ID0gYmxvY2soKS0+bGVmdE9mZnNldChw
cmV2Qm90dG9tLCAhcHJldlJvb3RCb3goKSk7Ci0gICAgICAgIGludCBwcmV2UmlnaHQgPSBibG9j
aygpLT5yaWdodE9mZnNldChwcmV2Qm90dG9tLCAhcHJldlJvb3RCb3goKSk7Ci0gICAgICAgIGlu
dCBuZXdMZWZ0ID0gYmxvY2soKS0+bGVmdE9mZnNldChzZWxlY3Rpb25Ub3AsICFwcmV2Um9vdEJv
eCgpKTsKLSAgICAgICAgaW50IG5ld1JpZ2h0ID0gYmxvY2soKS0+cmlnaHRPZmZzZXQoc2VsZWN0
aW9uVG9wLCAhcHJldlJvb3RCb3goKSk7CisgICAgICAgIGludCBwcmV2TGVmdCA9IGJsb2NrKCkt
PmxvZ2ljYWxMZWZ0T2Zmc2V0KHByZXZCb3R0b20sICFwcmV2Um9vdEJveCgpKTsKKyAgICAgICAg
aW50IHByZXZSaWdodCA9IGJsb2NrKCktPmxvZ2ljYWxSaWdodE9mZnNldChwcmV2Qm90dG9tLCAh
cHJldlJvb3RCb3goKSk7CisgICAgICAgIGludCBuZXdMZWZ0ID0gYmxvY2soKS0+bG9naWNhbExl
ZnRPZmZzZXQoc2VsZWN0aW9uVG9wLCAhcHJldlJvb3RCb3goKSk7CisgICAgICAgIGludCBuZXdS
aWdodCA9IGJsb2NrKCktPmxvZ2ljYWxSaWdodE9mZnNldChzZWxlY3Rpb25Ub3AsICFwcmV2Um9v
dEJveCgpKTsKICAgICAgICAgaWYgKHByZXZMZWZ0ID4gbmV3TGVmdCB8fCBwcmV2UmlnaHQgPCBu
ZXdSaWdodCkKICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25Ub3A7CiAgICAgfQo=
</data>
<flag name="review"
          id="58278"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68725</attachid>
            <date>2010-09-24 12:07:55 -0700</date>
            <delta_ts>2010-09-24 12:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>26295</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODI4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMDktMjQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ4OSwgcmVuYW1lIHRoZSBsaW5l
V2lkdGggYW5kIGxlZnQvUmlnaHRPZmZzZXQgbWV0aG9kcworICAgICAgICB0byByZWZsZWN0IHRo
YXQgdGhleSB3aWxsIGJlIGxvZ2ljYWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZUhvcml6b250
YWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGVmdFNlbGVjdGlv
bk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRTZWxlY3Rpb25P
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdE9mZnNldEZvckNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Z2V0Q2xlYXJEZWx0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNraXBUcmFpbGluZ1doaXRlc3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNraXBMZWFkaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zml0QmVsb3dGbG9hdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyZWFrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29udGFpbmluZ0Jsb2NrV2lkdGhGb3JDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6OmFwcGx5TGluZUNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojpz
ZWxlY3Rpb25Ub3ApOgorCiAyMDEwLTA5LTI0ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNjgyNzYpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDksNyArMTY0OSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmRldGVybWluZUhvcml6b250YWxQb3MKICAgICAgICAgLy8gU29t
ZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhvcml6b250YWwgcnVsZXMsIG92ZXJmbG93OmF1dG8g
YmxvY2tzKSBhdm9pZCBmbG9hdHMuICBUaGV5IG5lZWQKICAgICAgICAgLy8gdG8gc2hpZnQgb3Zl
ciBhcyBuZWNlc3NhcnkgdG8gZG9kZ2UgYW55IGZsb2F0cyB0aGF0IG1pZ2h0IGdldCBpbiB0aGUg
d2F5LgogICAgICAgICBpZiAoY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7Ci0gICAgICAgICAgICBp
bnQgbGVmdE9mZiA9IGxlZnRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGlu
dCBsZWZ0T2ZmID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBmYWxzZSk7CiAg
ICAgICAgICAgICBpZiAoc3R5bGUoKS0+dGV4dEFsaWduKCkgIT0gV0VCS0lUX0NFTlRFUiAmJiBj
aGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLnR5cGUoKSAhPSBBdXRvKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkLT5tYXJnaW5MZWZ0KCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBs
ZWZ0T2ZmICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCk7CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpkZXRlcm1pbmVIb3Jpem9udGFsUG9zCiAgICAgICAgICAgICAgICAgLy8g
d2lkdGggY29tcHV0YXRpb24gd2lsbCB0YWtlIGludG8gYWNjb3VudCB0aGUgZGVsdGEgYmV0d2Vl
biB8bGVmdE9mZnwgYW5kIHx4UG9zfAogICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgd2UgY2Fu
IGp1c3QgcGFzcyB0aGUgY29udGVudCB3aWR0aCBpbiBkaXJlY3RseSB0byB0aGUgfGNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25NYXJnaW5zfAogICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uLgotICAg
ICAgICAgICAgICAgIGNoaWxkLT5jb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luTGVmdCgpLCBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKSwgbGlu
ZVdpZHRoKGNoaWxkLT55KCksIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNvbXB1
dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCksIGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5l
KGNoaWxkLT55KCksIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgY2hQb3MgPSBsZWZ0T2ZmICsg
Y2hpbGQtPm1hcmdpbkxlZnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY3MSw3
ICsxNjcxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lSG9yaXpvbnRhbFBvcwogICAg
ICAgICB4UG9zICs9IGF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIGludCBjaFBvcyA9IHhQb3Mg
LSAoY2hpbGQtPndpZHRoKCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKSk7CiAgICAgICAgIGlmIChj
aGlsZC0+YXZvaWRzRmxvYXRzKCkpIHsKLSAgICAgICAgICAgIGludCByaWdodE9mZiA9IHJpZ2h0
T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSk7CisgICAgICAgICAgICBpbnQgcmlnaHRPZmYgPSBsb2dp
Y2FsUmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAo
c3R5bGUoKS0+dGV4dEFsaWduKCkgIT0gV0VCS0lUX0NFTlRFUiAmJiBjaGlsZC0+c3R5bGUoKS0+
bWFyZ2luUmlnaHQoKS50eXBlKCkgIT0gQXV0bykgewogICAgICAgICAgICAgICAgIGlmIChjaGls
ZC0+bWFyZ2luUmlnaHQoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0T2ZmIC09IGNo
aWxkLT5tYXJnaW5SaWdodCgpOwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6ZGV0ZXJtaW5lSG9yaXpvbnRhbFBvcwogICAgICAgICAgICAgICAgIC8vIHdpZHRoIGNvbXB1
dGF0aW9uIHdpbGwgdGFrZSBpbnRvIGFjY291bnQgdGhlIGRlbHRhIGJldHdlZW4gfHJpZ2h0T2Zm
fCBhbmQgfHhQb3N8CiAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBjYW4ganVzdCBwYXNz
IHRoZSBjb250ZW50IHdpZHRoIGluIGRpcmVjdGx5IHRvIHRoZSB8Y29tcHV0ZUlubGluZURpcmVj
dGlvbk1hcmdpbnN8CiAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24uCi0gICAgICAgICAgICAg
ICAgY2hpbGQtPmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNoaWxkLT5zdHlsZSgpLT5t
YXJnaW5MZWZ0KCksIGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBsaW5lV2lkdGgoY2hp
bGQtPnkoKSwgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjaGlsZC0+Y29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSwgY2hpbGQtPnN0eWxl
KCktPm1hcmdpblJpZ2h0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoY2hpbGQtPnko
KSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICBjaFBvcyA9IHJpZ2h0T2ZmIC0gY2hpbGQtPm1h
cmdpblJpZ2h0KCkgLSBjaGlsZC0+d2lkdGgoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjgwNyw3ICsyODA3LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0SG9yaXpvbnRhbFNlbGVj
dGlvbgogCiBpbnQgUmVuZGVyQmxvY2s6OmxlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sq
IHJvb3RCbG9jaywgaW50IHlQb3MpCiB7Ci0gICAgaW50IGxlZnQgPSBsZWZ0T2Zmc2V0KHlQb3Ms
IGZhbHNlKTsKKyAgICBpbnQgbGVmdCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSh5UG9zLCBm
YWxzZSk7CiAgICAgaWYgKGxlZnQgPT0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSkgewog
ICAgICAgICBpZiAocm9vdEJsb2NrICE9IHRoaXMpCiAgICAgICAgICAgICAvLyBUaGUgYm9yZGVy
IGNhbiBwb3RlbnRpYWxseSBiZSBmdXJ0aGVyIGV4dGVuZGVkIGJ5IG91ciBjb250YWluaW5nQmxv
Y2soKS4KQEAgLTI4MjcsNyArMjgyNyw3IEBAIGludCBSZW5kZXJCbG9jazo6bGVmdFNlbGVjdGlv
bk9mZnNldChSZW4KIAogaW50IFJlbmRlckJsb2NrOjpyaWdodFNlbGVjdGlvbk9mZnNldChSZW5k
ZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgeVBvcykKIHsKLSAgICBpbnQgcmlnaHQgPSByaWdodE9m
ZnNldCh5UG9zLCBmYWxzZSk7CisgICAgaW50IHJpZ2h0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9y
TGluZSh5UG9zLCBmYWxzZSk7CiAgICAgaWYgKHJpZ2h0ID09IChjb250ZW50V2lkdGgoKSArIChi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpKSkpIHsKICAgICAgICAgaWYgKHJvb3RCbG9jayAh
PSB0aGlzKQogICAgICAgICAgICAgLy8gVGhlIGJvcmRlciBjYW4gcG90ZW50aWFsbHkgYmUgZnVy
dGhlciBleHRlbmRlZCBieSBvdXIgY29udGFpbmluZ0Jsb2NrKCkuCkBAIC0zMDA4LDggKzMwMDgs
OCBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cygpCiAKICAgICAgICAgUmVu
ZGVyQm94KiBvID0gZi0+bV9yZW5kZXJlcjsKIAotICAgICAgICBpbnQgcm8gPSByaWdodE9mZnNl
dCgpOyAvLyBDb25zdGFudCBwYXJ0IG9mIHJpZ2h0IG9mZnNldC4KLSAgICAgICAgaW50IGxvID0g
bGVmdE9mZnNldCgpOyAvLyBDb25zdGFudCBwYXJ0IG9mIGxlZnQgb2Zmc2V0LgorICAgICAgICBp
bnQgcm8gPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KCk7IC8vIENvbnN0YW50IHBhcnQg
b2YgcmlnaHQgb2Zmc2V0LgorICAgICAgICBpbnQgbG8gPSBsb2dpY2FsTGVmdE9mZnNldEZvckNv
bnRlbnQoKTsgLy8gQ29uc3RhbnQgcGFydCBvZiBsZWZ0IG9mZnNldC4KICAgICAgICAgaW50IGZ3
aWR0aCA9IGYtPm1fd2lkdGg7IC8vIFRoZSB3aWR0aCB3ZSBsb29rIGZvci4KICAgICAgICAgaWYg
KHJvIC0gbG8gPCBmd2lkdGgpCiAgICAgICAgICAgICBmd2lkdGggPSBybyAtIGxvOyAvLyBOZXZl
ciBsb29rIGZvciBtb3JlIHRoYW4gd2hhdCB3aWxsIGJlIGF2YWlsYWJsZS4KQEAgLTMwMjQsMTAg
KzMwMjQsMTAgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogICAgICAg
ICBpZiAoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSA9PSBGTEVGVCkgewogICAgICAgICAgICAgaW50
IGhlaWdodFJlbWFpbmluZ0xlZnQgPSAxOwogICAgICAgICAgICAgaW50IGhlaWdodFJlbWFpbmlu
Z1JpZ2h0ID0gMTsKLSAgICAgICAgICAgIGludCBmeCA9IGxlZnRSZWxPZmZzZXQoeSwgbG8sIGZh
bHNlLCAmaGVpZ2h0UmVtYWluaW5nTGVmdCk7Ci0gICAgICAgICAgICB3aGlsZSAocmlnaHRSZWxP
ZmZzZXQoeSwgcm8sIGZhbHNlLCAmaGVpZ2h0UmVtYWluaW5nUmlnaHQpLWZ4IDwgZndpZHRoKSB7
CisgICAgICAgICAgICBpbnQgZnggPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoeSwgbG8sIGZh
bHNlLCAmaGVpZ2h0UmVtYWluaW5nTGVmdCk7CisgICAgICAgICAgICB3aGlsZSAobG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZSh5LCBybywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdSaWdodCktZngg
PCBmd2lkdGgpIHsKICAgICAgICAgICAgICAgICB5ICs9IG1pbihoZWlnaHRSZW1haW5pbmdMZWZ0
LCBoZWlnaHRSZW1haW5pbmdSaWdodCk7Ci0gICAgICAgICAgICAgICAgZnggPSBsZWZ0UmVsT2Zm
c2V0KHksIGxvLCBmYWxzZSwgJmhlaWdodFJlbWFpbmluZ0xlZnQpOworICAgICAgICAgICAgICAg
IGZ4ID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHksIGxvLCBmYWxzZSwgJmhlaWdodFJlbWFp
bmluZ0xlZnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnggPSBtYXgoMCwgZngpOwog
ICAgICAgICAgICAgZi0+bV9sZWZ0ID0gZng7CkBAIC0zMDM1LDEwICszMDM1LDEwIEBAIGJvb2wg
UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGludCBoZWlnaHRSZW1haW5pbmdMZWZ0ID0gMTsKICAgICAgICAgICAgIGludCBoZWln
aHRSZW1haW5pbmdSaWdodCA9IDE7Ci0gICAgICAgICAgICBpbnQgZnggPSByaWdodFJlbE9mZnNl
dCh5LCBybywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdSaWdodCk7Ci0gICAgICAgICAgICB3aGls
ZSAoZnggLSBsZWZ0UmVsT2Zmc2V0KHksIGxvLCBmYWxzZSwgJmhlaWdodFJlbWFpbmluZ0xlZnQp
IDwgZndpZHRoKSB7CisgICAgICAgICAgICBpbnQgZnggPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JM
aW5lKHksIHJvLCBmYWxzZSwgJmhlaWdodFJlbWFpbmluZ1JpZ2h0KTsKKyAgICAgICAgICAgIHdo
aWxlIChmeCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSh5LCBsbywgZmFsc2UsICZoZWlnaHRS
ZW1haW5pbmdMZWZ0KSA8IGZ3aWR0aCkgewogICAgICAgICAgICAgICAgIHkgKz0gbWluKGhlaWdo
dFJlbWFpbmluZ0xlZnQsIGhlaWdodFJlbWFpbmluZ1JpZ2h0KTsKLSAgICAgICAgICAgICAgICBm
eCA9IHJpZ2h0UmVsT2Zmc2V0KHksIHJvLCBmYWxzZSwgJmhlaWdodFJlbWFpbmluZ1JpZ2h0KTsK
KyAgICAgICAgICAgICAgICBmeCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoeSwgcm8sIGZh
bHNlLCAmaGVpZ2h0UmVtYWluaW5nUmlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Zi0+bV9sZWZ0ID0gZnggLSBmLT5tX3dpZHRoOwogICAgICAgICAgICAgby0+c2V0TG9jYXRpb24o
ZnggLSBvLT5tYXJnaW5SaWdodCgpIC0gby0+d2lkdGgoKSwgeSArIG8tPm1hcmdpblRvcCgpKTsK
QEAgLTMyMDEsMTIgKzMyMDEsMTIgQEAgSGFzaFNldDxSZW5kZXJCb3gqPiogUmVuZGVyQmxvY2s6
OnBlcmNlbgogICAgIHJldHVybiBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwID8gZ1BlcmNl
bnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KHRoaXMpIDogMDsKIH0KIAotaW50IFJlbmRlckJs
b2NrOjpsZWZ0T2Zmc2V0KCkgY29uc3QKK2ludCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZz
ZXRGb3JDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKTsKIH0KIAotaW50IFJlbmRlckJsb2NrOjpsZWZ0UmVsT2Zmc2V0KGludCB5LCBpbnQg
Zml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5kZW50LCBpbnQqIGhlaWdodFJlbWFpbmluZykg
Y29uc3QKK2ludCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGludCB5LCBp
bnQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5kZW50LCBpbnQqIGhlaWdodFJlbWFpbmlu
ZykgY29uc3QKIHsKICAgICBpbnQgbGVmdCA9IGZpeGVkT2Zmc2V0OwogICAgIGlmIChtX2Zsb2F0
aW5nT2JqZWN0cykgewpAQCAtMzIzNCwxMiArMzIzNCwxMiBAQCBpbnQgUmVuZGVyQmxvY2s6Omxl
ZnRSZWxPZmZzZXQoaW50IHksIGluCiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKLWludCBSZW5kZXJC
bG9jazo6cmlnaHRPZmZzZXQoKSBjb25zdAoraW50IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRP
ZmZzZXRGb3JDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSArIGF2YWlsYWJsZVdpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJCbG9jazo6cmln
aHRSZWxPZmZzZXQoaW50IHksIGludCBmaXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQs
IGludCogaGVpZ2h0UmVtYWluaW5nKSBjb25zdAoraW50IFJlbmRlckJsb2NrOjpsb2dpY2FsUmln
aHRPZmZzZXRGb3JMaW5lKGludCB5LCBpbnQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5k
ZW50LCBpbnQqIGhlaWdodFJlbWFpbmluZykgY29uc3QKIHsKICAgICBpbnQgcmlnaHQgPSBmaXhl
ZE9mZnNldDsKIApAQCAtMzI2OSw5ICszMjY5LDkgQEAgaW50IFJlbmRlckJsb2NrOjpyaWdodFJl
bE9mZnNldChpbnQgeSwgaQogfQogCiBpbnQKLVJlbmRlckJsb2NrOjpsaW5lV2lkdGgoaW50IHks
IGJvb2wgZmlyc3RMaW5lKSBjb25zdAorUmVuZGVyQmxvY2s6OmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aEZvckxpbmUoaW50IHBvc2l0aW9uLCBib29sIGZpcnN0TGluZSkgY29uc3QKIHsKLSAgICBpbnQg
cmVzdWx0ID0gcmlnaHRPZmZzZXQoeSwgZmlyc3RMaW5lKSAtIGxlZnRPZmZzZXQoeSwgZmlyc3RM
aW5lKTsKKyAgICBpbnQgcmVzdWx0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShwb3NpdGlv
biwgZmlyc3RMaW5lKSAtIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RM
aW5lKTsKICAgICByZXR1cm4gKHJlc3VsdCA8IDApID8gMCA6IHJlc3VsdDsKIH0KIApAQCAtMzkz
OCw3ICszOTM4LDcgQEAgaW50IFJlbmRlckJsb2NrOjpnZXRDbGVhckRlbHRhKFJlbmRlckJveAog
CiAgICAgICAgIGludCB5ID0geVBvczsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
ICAgIGludCB3aWR0aEF0WSA9IGxpbmVXaWR0aCh5LCBmYWxzZSk7CisgICAgICAgICAgICBpbnQg
d2lkdGhBdFkgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKHksIGZhbHNlKTsKICAgICAg
ICAgICAgIGlmICh3aWR0aEF0WSA9PSBhdmFpbGFibGVXaWR0aCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4geSAtIHlQb3M7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24g
NjgyNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsMTUgKzEwMiwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc0Zsb2F0cygp
IHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+aXNFbXB0
eSgpOyB9CiAgICAgYm9vbCBjb250YWluc0Zsb2F0KFJlbmRlck9iamVjdCopOwogCi0gICAgaW50
IGxpbmVXaWR0aChpbnQgeSwgYm9vbCBmaXJzdExpbmUpIGNvbnN0OworICAgIGludCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGhGb3JMaW5lKGludCBwb3NpdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0
OworICAgIGludCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGludCBwb3NpdGlvbiwgYm9vbCBm
aXJzdExpbmUpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUocG9zaXRp
b24sIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoKSwgZmlyc3RMaW5lKTsgfQorICAgIGlu
dCBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaW50IHBvc2l0aW9uLCBib29sIGZpcnN0TGluZSkg
Y29uc3QgeyByZXR1cm4gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBvc2l0aW9uLCBsb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQoKSwgZmlyc3RMaW5lKTsgfQogICAgIAogICAgIHZpcnR1YWwg
aW50IGxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3IgPSB0cnVlLCBi
b29sIGluY2x1ZGVTZWxmID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgcmlnaHRtb3N0
UG9zaXRpb24oYm9vbCBpbmNsdWRlT3ZlcmZsb3dJbnRlcmlvciA9IHRydWUsIGJvb2wgaW5jbHVk
ZVNlbGYgPSB0cnVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBsZWZ0bW9zdFBvc2l0aW9uKGJv
b2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3IgPSB0cnVlLCBib29sIGluY2x1ZGVTZWxmID0gdHJ1
ZSkgY29uc3Q7Ci0KLSAgICBpbnQgcmlnaHRPZmZzZXQoaW50IHksIGJvb2wgZmlyc3RMaW5lKSBj
b25zdCB7IHJldHVybiByaWdodFJlbE9mZnNldCh5LCByaWdodE9mZnNldCgpLCBmaXJzdExpbmUp
OyB9Ci0gICAgaW50IGxlZnRPZmZzZXQoaW50IHksIGJvb2wgZmlyc3RMaW5lKSBjb25zdCB7IHJl
dHVybiBsZWZ0UmVsT2Zmc2V0KHksIGxlZnRPZmZzZXQoKSwgZmlyc3RMaW5lKTsgfQotCisgICAg
CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQ
b2ludCYpOwogICAgIAogICAgIC8vIEJsb2NrIGZsb3dzIHN1YmNsYXNzIGF2YWlsYWJsZVdpZHRo
IHRvIGhhbmRsZSBtdWx0aSBjb2x1bW4gbGF5b3V0IChzaHJpbmtpbmcgdGhlIHdpZHRoIGF2YWls
YWJsZSB0byBjaGlsZHJlbiB3aGVuIGxheWluZyBvdXQuKQpAQCAtMjIyLDggKzIyMSwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwogCi0gICAgaW50IHJpZ2h0UmVsT2Zmc2V0KGludCB5LCBpbnQgZml4ZWRPZmZzZXQs
IGJvb2wgYXBwbHlUZXh0SW5kZW50ID0gdHJ1ZSwgaW50KiBoZWlnaHRSZW1haW5pbmcgPSAwKSBj
b25zdDsKLSAgICBpbnQgbGVmdFJlbE9mZnNldChpbnQgeSwgaW50IGZpeGVkT2Zmc2V0LCBib29s
IGFwcGx5VGV4dEluZGVudCA9IHRydWUsIGludCogaGVpZ2h0UmVtYWluaW5nID0gMCkgY29uc3Q7
CisgICAgaW50IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoKSBjb25zdDsKKyAgICBpbnQg
bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KCkgY29uc3Q7CisgICAgaW50IGxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUoaW50IHBvc2l0aW9uLCBpbnQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlU
ZXh0SW5kZW50ID0gdHJ1ZSwgaW50KiBsb2dpY2FsSGVpZ2h0UmVtYWluaW5nID0gMCkgY29uc3Q7
CisgICAgaW50IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShpbnQgcG9zaXRpb24sIGludCBmaXhl
ZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQgPSB0cnVlLCBpbnQqIGxvZ2ljYWxIZWlnaHRS
ZW1haW5pbmcgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwg
aW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKIApAQCAtNDA5LDggKzQxMCw2IEBAIHByaXZhdGU6CiAg
ICAgaW5saW5lIGludCBsZWZ0Qm90dG9tKCk7CiAgICAgaW5saW5lIGludCByaWdodEJvdHRvbSgp
OwogCi0gICAgaW50IHJpZ2h0T2Zmc2V0KCkgY29uc3Q7Ci0gICAgaW50IGxlZnRPZmZzZXQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENvbHVtbnMoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVz
dEFjdGlvbik7CiAgICAgdmlydHVhbCBib29sIGhpdFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBI
aXRUZXN0QWN0aW9uKTsKICAgICBib29sIGhpdFRlc3RGbG9hdHMoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSk7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9u
IDY4Mjc2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMyMyw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RMaW4KIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGJvb2wgZmlyc3RMaW5l
LCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFj
aGVkRW5kLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAp
CiB7CiAgICAgLy8gRmlyc3QgZGV0ZXJtaW5lIG91ciB0b3RhbCB3aWR0aC4KLSAgICBpbnQgYXZh
aWxhYmxlV2lkdGggPSBsaW5lV2lkdGgoaGVpZ2h0KCksIGZpcnN0TGluZSk7CisgICAgaW50IGF2
YWlsYWJsZVdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShoZWlnaHQoKSwgZmly
c3RMaW5lKTsKICAgICBpbnQgdG90V2lkdGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2luZ0xvZ2lj
YWxXaWR0aCgpOwogICAgIGJvb2wgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwogICAgIHVuc2ln
bmVkIG51bVNwYWNlcyA9IDA7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
Y29tcHV0ZUlubGluZURpcmVjdGlvbgogICAgIC8vIHdlIG5vdyBleGFtaW5lIG91ciB0ZXh0LWFs
aWduIHByb3BlcnR5IGluIG9yZGVyIHRvIGRldGVybWluZSB3aGVyZSB0byBwb3NpdGlvbiB0aGUK
ICAgICAvLyBvYmplY3RzIGhvcml6b250YWxseS4gIFRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgbGlu
ZSBjYW4gYmUgaW5jcmVhc2VkIGlmIHdlIGVuZCB1cAogICAgIC8vIGp1c3RpZnlpbmcgdGV4dC4K
LSAgICBpbnQgeCA9IGxlZnRPZmZzZXQoaGVpZ2h0KCksIGZpcnN0TGluZSk7CisgICAgaW50IHgg
PSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0KCksIGZpcnN0TGluZSk7CiAgICAgc3dp
dGNoICh0ZXh0QWxpZ24pIHsKICAgICAgICAgY2FzZSBMRUZUOgogICAgICAgICBjYXNlIFdFQktJ
VF9MRUZUOgpAQCAtODAyLDEyICs4MDIsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5s
aW5lQ2hpbGRyZW4oYgogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkanVzdG1lbnQgPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlv
bihsaW5lQm94LCBhZGp1c3RtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGp1
c3RtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9sZExpbmVXaWR0aCA9
IGxpbmVXaWR0aChvbGRIZWlnaHQsIGZpcnN0TGluZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG9sZExpbmVXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUob2xk
SGVpZ2h0LCBmaXJzdExpbmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3gt
PmFkanVzdFBvc2l0aW9uKDAsIGFkanVzdG1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh1c2VSZXBhaW50Qm91bmRzKSAvLyBUaGlzIGNhbiBvbmx5IGJlIGEgcG9zaXRpdmUg
YWRqdXN0bWVudCwgc28gbm8gbmVlZCB0byB1cGRhdGUgcmVwYWludFRvcC4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwYWludEJvdHRvbSA9IG1heChyZXBhaW50Qm90dG9tLCBs
aW5lQm94LT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lV2lkdGgob2xk
SGVpZ2h0ICsgYWRqdXN0bWVudCwgZmlyc3RMaW5lKSAhPSBvbGRMaW5lV2lkdGgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShv
bGRIZWlnaHQgKyBhZGp1c3RtZW50LCBmaXJzdExpbmUpICE9IG9sZExpbmVXaWR0aCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRlbGV0ZSB0aGlzIGxp
bmUsIHJlbW92ZSBhbGwgZmxvYXRzIHRoYXQgZ290IGFkZGVkLCBhbmQgbGV0IGxpbmUgbGF5b3V0
IHJlLXJ1bi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+ZGVsZXRl
TGluZShyZW5kZXJBcmVuYSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVt
b3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cobGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgb2xkSGVp
Z2h0KTsKQEAgLTEyNzksMTQgKzEyNzksMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2tpcFRyYWls
aW5nV2hpdGVzcGFjZQogICAgICAgICAgICAgICAgIC8vIEEgcmVsYXRpdmUgcG9zaXRpb25lZCBp
bmxpbmUgZW5jbG9zZXMgdXMuICBJbiB0aGlzIGNhc2UsIHdlIGFsc28gaGF2ZSB0byBkZXRlcm1p
bmUgb3VyCiAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXMgdGhvdWdoIHdlIHdlcmUgYW4g
aW5saW5lLiAgU2V0IHxzdGF0aWNYfCBhbmQgfHN0YXRpY1l8IG9uIHRoZSByZWxhdGl2ZSBwb3Np
dGlvbmVkCiAgICAgICAgICAgICAgICAgLy8gaW5saW5lIHNvIHRoYXQgd2UgY2FuIG9idGFpbiB0
aGUgdmFsdWUgbGF0ZXIuCi0gICAgICAgICAgICAgICAgdG9SZW5kZXJJbmxpbmUoYyktPmxheWVy
KCktPnNldFN0YXRpY1goc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVmdE9mZnNldCho
ZWlnaHQoKSwgZmFsc2UpIDogcmlnaHRPZmZzZXQoaGVpZ2h0KCksIGZhbHNlKSk7CisgICAgICAg
ICAgICAgICAgdG9SZW5kZXJJbmxpbmUoYyktPmxheWVyKCktPnNldFN0YXRpY1goc3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gTFRSID8gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBm
YWxzZSkgOiBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBmYWxzZSkpOwogICAg
ICAgICAgICAgICAgIHRvUmVuZGVySW5saW5lKGMpLT5sYXllcigpLT5zZXRTdGF0aWNZKGhlaWdo
dCgpKTsKICAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0g
dG9SZW5kZXJCb3gob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChib3gtPnN0eWxlKCktPmhhc1N0
YXRpY1goKSkgewogICAgICAgICAgICAgICAgIGlmIChib3gtPnN0eWxlKCktPmlzT3JpZ2luYWxE
aXNwbGF5SW5saW5lVHlwZSgpKQotICAgICAgICAgICAgICAgICAgICBib3gtPmxheWVyKCktPnNl
dFN0YXRpY1goc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVmdE9mZnNldChoZWlnaHQo
KSwgZmFsc2UpIDogd2lkdGgoKSAtIHJpZ2h0T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSkpOworICAg
ICAgICAgICAgICAgICAgICBib3gtPmxheWVyKCktPnNldFN0YXRpY1goc3R5bGUoKS0+ZGlyZWN0
aW9uKCkgPT0gTFRSID8gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBmYWxzZSkg
OiB3aWR0aCgpIC0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQoKSwgZmFsc2UpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJveC0+bGF5ZXIoKS0+
c2V0U3RhdGljWChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBib3JkZXJMZWZ0KCkgKyBw
YWRkaW5nTGVmdCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKTsKICAgICAgICAg
ICAgIH0KQEAgLTEzMDEsMTIgKzEzMDEsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2tpcFRyYWls
aW5nV2hpdGVzcGFjZQogaW50IFJlbmRlckJsb2NrOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNMaW5lRW1w
dHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUpCiB7Ci0gICAgaW50IGF2YWlsYWJsZVdpZHRoID0gbGluZVdpZHRoKGhlaWdodCgpLCBmaXJz
dExpbmUpOworICAgIGludCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZv
ckxpbmUoaGVpZ2h0KCksIGZpcnN0TGluZSk7CiAgICAgd2hpbGUgKCFyZXNvbHZlci5wb3NpdGlv
bigpLmF0RW5kKCkgJiYgIXJlcXVpcmVzTGluZUJveChyZXNvbHZlci5wb3NpdGlvbigpLCBpc0xp
bmVFbXB0eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KSkgewogICAgICAgICBSZW5kZXJPYmpl
Y3QqIG9iamVjdCA9IHJlc29sdmVyLnBvc2l0aW9uKCkub2JqOwogICAgICAgICBpZiAob2JqZWN0
LT5pc0Zsb2F0aW5nKCkpIHsKICAgICAgICAgICAgIHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoaW5z
ZXJ0RmxvYXRpbmdPYmplY3QodG9SZW5kZXJCb3gob2JqZWN0KSksIGxhc3RGbG9hdEZyb21QcmV2
aW91c0xpbmUpOwotICAgICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBsaW5lV2lkdGgoaGVpZ2h0
KCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aEZvckxpbmUoaGVpZ2h0KCksIGZpcnN0TGluZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAob2JqZWN0LT5pc1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBt
YXRoIGhlcmUgaXMgYWN0dWFsbHkgbm90IHJlYWxseSByaWdodC4gIEl0J3MgYSBiZXN0LWd1ZXNz
IGFwcHJveGltYXRpb24gdGhhdAogICAgICAgICAgICAgLy8gd2lsbCB3b3JrIGZvciB0aGUgY29t
bW9uIGNhc2VzCkBAIC0xMzE1LDE0ICsxMzE1LDE0IEBAIGludCBSZW5kZXJCbG9jazo6c2tpcExl
YWRpbmdXaGl0ZXNwYWNlKEkKICAgICAgICAgICAgICAgICAvLyBBIHJlbGF0aXZlIHBvc2l0aW9u
ZWQgaW5saW5lIGVuY2xvc2VzIHVzLiAgSW4gdGhpcyBjYXNlLCB3ZSBhbHNvIGhhdmUgdG8gZGV0
ZXJtaW5lIG91cgogICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGFzIHRob3VnaCB3ZSB3ZXJl
IGFuIGlubGluZS4gIFNldCB8c3RhdGljWHwgYW5kIHxzdGF0aWNZfCBvbiB0aGUgcmVsYXRpdmUg
cG9zaXRpb25lZAogICAgICAgICAgICAgICAgIC8vIGlubGluZSBzbyB0aGF0IHdlIGNhbiBvYnRh
aW4gdGhlIHZhbHVlIGxhdGVyLgotICAgICAgICAgICAgICAgIHRvUmVuZGVySW5saW5lKGMpLT5s
YXllcigpLT5zZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGxlZnRPZmZz
ZXQoaGVpZ2h0KCksIGZpcnN0TGluZSkgOiByaWdodE9mZnNldChoZWlnaHQoKSwgZmlyc3RMaW5l
KSk7CisgICAgICAgICAgICAgICAgdG9SZW5kZXJJbmxpbmUoYyktPmxheWVyKCktPnNldFN0YXRp
Y1goc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5l
KGhlaWdodCgpLCBmaXJzdExpbmUpIDogbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQo
KSwgZmlyc3RMaW5lKSk7CiAgICAgICAgICAgICAgICAgdG9SZW5kZXJJbmxpbmUoYyktPmxheWVy
KCktPnNldFN0YXRpY1koaGVpZ2h0KCkpOwogICAgICAgICAgICAgfQogICAgIAogICAgICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvYmplY3QpOwogICAgICAgICAgICAgaWYg
KGJveC0+c3R5bGUoKS0+aGFzU3RhdGljWCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+
c3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGJveC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBsZWZ0T2Zmc2V0KGhlaWdodCgpLCBmaXJzdExpbmUpIDogd2lkdGgoKSAtIHJpZ2h0T2Zmc2V0
KGhlaWdodCgpLCBmaXJzdExpbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgYm94LT5sYXllcigp
LT5zZXRTdGF0aWNYKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZShoZWlnaHQoKSwgZmlyc3RMaW5lKSA6IHdpZHRoKCkgLSBsb2dpY2FsUmlnaHRP
ZmZzZXRGb3JMaW5lKGhlaWdodCgpLCBmaXJzdExpbmUpKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGJveC0+bGF5ZXIoKS0+c2V0U3RhdGljWChzdHlsZSgpLT5k
aXJlY3Rpb24oKSA9PSBMVFIgPyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpIDogYm9yZGVy
UmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKTsKICAgICAgICAgICAgIH0KQEAgLTEzNjUsNyArMTM2
NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmZpdEJlbG93RmxvYXRzKGludCB3aWQKICAgICAgICAg
aWYgKCFmbG9hdEJvdHRvbSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIG5ld0xpbmVX
aWR0aCA9IGxpbmVXaWR0aChmbG9hdEJvdHRvbSwgZmlyc3RMaW5lKTsKKyAgICAgICAgbmV3TGlu
ZVdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShmbG9hdEJvdHRvbSwgZmlyc3RM
aW5lKTsKICAgICAgICAgbGFzdEZsb2F0Qm90dG9tID0gZmxvYXRCb3R0b207CiAgICAgICAgIGlm
IChuZXdMaW5lV2lkdGggPj0gd2lkdGhUb0ZpdCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUx
NSw3ICsxNTE1LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQog
ICAgICAgICAgICAgICAgIC8vIGl0IGFmdGVyIG1vdmluZyB0byBuZXh0IGxpbmUgKGluIG5ld0xp
bmUoKSBmdW5jKQogICAgICAgICAgICAgICAgIGlmIChmbG9hdHNGaXRPbkxpbmUgJiYgZmxvYXRC
b3gtPndpZHRoKCkgKyBmbG9hdEJveC0+bWFyZ2luTGVmdCgpICsgZmxvYXRCb3gtPm1hcmdpblJp
Z2h0KCkgKyB3ICsgdG1wVyA8PSB3aWR0aCkgewogICAgICAgICAgICAgICAgICAgICBwb3NpdGlv
bk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpOwotICAgICAgICAg
ICAgICAgICAgICB3aWR0aCA9IGxpbmVXaWR0aChoZWlnaHQoKSwgZmlyc3RMaW5lKTsKKyAgICAg
ICAgICAgICAgICAgICAgd2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGhlaWdo
dCgpLCBmaXJzdExpbmUpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
ICAgICBmbG9hdHNGaXRPbkxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoby0+
aXNQb3NpdGlvbmVkKCkpIHsKQEAgLTIxMDIsOCArMjEwMiw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmNoZWNrTGluZXNGb3JUZXh0T3ZlcmYKICAgICAvLyBJbmNsdWRlIHRoZSBzY3JvbGxiYXIgZm9y
IG92ZXJmbG93IGJsb2Nrcywgd2hpY2ggbWVhbnMgd2Ugd2FudCB0byB1c2UgImNvbnRlbnRXaWR0
aCgpIgogICAgIGJvb2wgbHRyID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSOwogICAgIGZv
ciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+bmV4dFJvb3RCb3goKSkgewotICAgICAgICBpbnQgYmxvY2tSaWdodEVkZ2UgPSByaWdodE9m
ZnNldChjdXJyLT55KCksIGN1cnIgPT0gZmlyc3RSb290Qm94KCkpOwotICAgICAgICBpbnQgYmxv
Y2tMZWZ0RWRnZSA9IGxlZnRPZmZzZXQoY3Vyci0+eSgpLCBjdXJyID09IGZpcnN0Um9vdEJveCgp
KTsKKyAgICAgICAgaW50IGJsb2NrUmlnaHRFZGdlID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGlu
ZShjdXJyLT55KCksIGN1cnIgPT0gZmlyc3RSb290Qm94KCkpOworICAgICAgICBpbnQgYmxvY2tM
ZWZ0RWRnZSA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShjdXJyLT55KCksIGN1cnIgPT0gZmly
c3RSb290Qm94KCkpOwogICAgICAgICBpbnQgbGluZUJveEVkZ2UgPSBsdHIgPyBjdXJyLT54KCkg
KyBjdXJyLT5sb2dpY2FsV2lkdGgoKSA6IGN1cnItPngoKTsKICAgICAgICAgaWYgKChsdHIgJiYg
bGluZUJveEVkZ2UgPiBibG9ja1JpZ2h0RWRnZSkgfHwgKCFsdHIgJiYgbGluZUJveEVkZ2UgPCBi
bG9ja0xlZnRFZGdlKSkgewogICAgICAgICAgICAgLy8gVGhpcyBsaW5lIHNwaWxscyBvdXQgb2Yg
b3VyIGJveCBpbiB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9uLiAgTm93IHdlIG5lZWQgdG8gc2Vl
IGlmIHRoZSBsaW5lCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDY4Mjc2
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAzOSw3ICsxMDM5LDcgQEAgaW50IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrV2lkdGhGb3JD
bwogewogICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChz
aHJpbmtUb0F2b2lkRmxvYXRzKCkpCi0gICAgICAgIHJldHVybiBjYi0+bGluZVdpZHRoKHkoKSwg
ZmFsc2UpOworICAgICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUo
eSgpLCBmYWxzZSk7CiAgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVXaWR0aCgpOwogfQogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiA2ODI3NikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxMCw4ICsxMDEwLDggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YXBwbHlMaW5l
Q2xhbXAoRgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaW50IGx0ciA9
IHRydWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGludCBibG9ja1JpZ2h0RWRnZSA9IGRl
c3RCbG9jay0+cmlnaHRPZmZzZXQobGFzdFZpc2libGVMaW5lLT55KCksIGZhbHNlKTsKLSAgICAg
ICAgICAgIGludCBibG9ja0xlZnRFZGdlID0gZGVzdEJsb2NrLT5sZWZ0T2Zmc2V0KGxhc3RWaXNp
YmxlTGluZS0+eSgpLCBmYWxzZSk7CisgICAgICAgICAgICBpbnQgYmxvY2tSaWdodEVkZ2UgPSBk
ZXN0QmxvY2stPmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobGFzdFZpc2libGVMaW5lLT55KCks
IGZhbHNlKTsKKyAgICAgICAgICAgIGludCBibG9ja0xlZnRFZGdlID0gZGVzdEJsb2NrLT5sb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUobGFzdFZpc2libGVMaW5lLT55KCksIGZhbHNlKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaW50IGJsb2NrRWRnZSA9IGx0ciA/IGJsb2NrUmlnaHRFZGdl
IDogYmxvY2tMZWZ0RWRnZTsKICAgICAgICAgICAgIGlmICghbGFzdFZpc2libGVMaW5lLT5jYW5B
Y2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gNjgyNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lk
IFJlbmRlckxpc3RJdGVtOjpwb3NpdGlvbkxpc3RNYXJrZXIoCiAgICAgICAgIC8vIGFuZCByZWFs
bHkgc2hvdWxkbid0IGtlZXAgcHJvcGFnYXRpbmcgb3ZlcmZsb3cgdXAuICBUaGlzIHdvbid0IHJl
YWxseSBicmVhayBhbnl0aGluZyBvdGhlciB0aGFuIHJlcGFpbnRpbmcKICAgICAgICAgLy8gbm90
IGJlaW5nIGFzIHRpZ2h0IGFzIGl0IGNvdWxkIGJlIHRob3VnaC4KICAgICAgICAgaWYgKHN0eWxl
KCktPmRpcmVjdGlvbigpID09IExUUikgewotICAgICAgICAgICAgaW50IGxlZnRMaW5lT2Zmc2V0
ID0gbGVmdFJlbE9mZnNldCh5T2Zmc2V0LCBsZWZ0T2Zmc2V0KHlPZmZzZXQsIGZhbHNlKSwgZmFs
c2UpOworICAgICAgICAgICAgaW50IGxlZnRMaW5lT2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRG
b3JMaW5lKHlPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSh5T2Zmc2V0LCBmYWxzZSks
IGZhbHNlKTsKICAgICAgICAgICAgIG1hcmtlclhQb3MgPSBsZWZ0TGluZU9mZnNldCAtIHhPZmZz
ZXQgLSBwYWRkaW5nTGVmdCgpIC0gYm9yZGVyTGVmdCgpICsgbV9tYXJrZXItPm1hcmdpbkxlZnQo
KTsKICAgICAgICAgICAgIG1fbWFya2VyLT5pbmxpbmVCb3hXcmFwcGVyKCktPmFkanVzdFBvc2l0
aW9uKG1hcmtlclhQb3MgLSBtYXJrZXJPbGRYLCAwKTsKICAgICAgICAgICAgIGZvciAoSW5saW5l
Rmxvd0JveCogYm94ID0gbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+cGFyZW50KCk7IGJv
eDsgYm94ID0gYm94LT5wYXJlbnQoKSkgewpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUmVuZGVy
TGlzdEl0ZW06OnBvc2l0aW9uTGlzdE1hcmtlcigKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgcmlnaHRMaW5lT2Zmc2V0
ID0gcmlnaHRSZWxPZmZzZXQoeU9mZnNldCwgcmlnaHRPZmZzZXQoeU9mZnNldCwgZmFsc2UpLCBm
YWxzZSk7CisgICAgICAgICAgICBpbnQgcmlnaHRMaW5lT2Zmc2V0ID0gbG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yTGluZSh5T2Zmc2V0LCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHlPZmZzZXQsIGZh
bHNlKSwgZmFsc2UpOwogICAgICAgICAgICAgbWFya2VyWFBvcyA9IHJpZ2h0TGluZU9mZnNldCAt
IHhPZmZzZXQgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCkgKyBtX21hcmtlci0+bWFy
Z2luTGVmdCgpOwogICAgICAgICAgICAgbV9tYXJrZXItPmlubGluZUJveFdyYXBwZXIoKS0+YWRq
dXN0UG9zaXRpb24obWFya2VyWFBvcyAtIG1hcmtlck9sZFgsIDApOwogICAgICAgICAgICAgZm9y
IChJbmxpbmVGbG93Qm94KiBib3ggPSBtX21hcmtlci0+aW5saW5lQm94V3JhcHBlcigpLT5wYXJl
bnQoKTsgYm94OyBib3ggPSBib3gtPnBhcmVudCgpKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCShyZXZpc2lvbiA2ODI3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUmVuZGVyVGFi
bGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFuIGF1
dG8gd2lkdGggdGFibGUgc2hvdWxkIHNocmluayB0byBmaXQgd2l0aGluIHRoZSBsaW5lIHdpZHRo
IGlmIG5lY2Vzc2FyeSBpbiBvcmRlciB0byAKICAgICAgICAgLy8gYXZvaWQgb3ZlcmxhcHBpbmcg
ZmxvYXRzLgotICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGNiLT5saW5lV2lkdGgoeSgpLCBmYWxz
ZSk7CisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZv
ckxpbmUoeSgpLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICAvLyBTdWJ0cmFjdCBvdXQgYW55
IGZpeGVkIG1hcmdpbnMgZnJvbSBvdXIgYXZhaWxhYmxlIHdpZHRoIGZvciBhdXRvIHdpZHRoIHRh
Ymxlcy4KICAgICAgICAgaW50IG1hcmdpblRvdGFsID0gMDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiA2ODIwNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsMTAgKzM1MywxMCBAQCBpbnQg
Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKICAgICAgICAgLy8gVGhpcyBsaW5l
IGhhcyBhY3R1YWxseSBiZWVuIG1vdmVkIGZ1cnRoZXIgZG93biwgcHJvYmFibHkgZnJvbSBhIGxh
cmdlIGxpbmUtaGVpZ2h0LCBidXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGlu
ZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zm
c2V0cywgYW5kIG9ubHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIHByZXZpb3VzCiAgICAgICAgIC8v
IGxpbmUncyBib3R0b20gb3ZlcmZsb3cgaWYgdGhlIG9mZnNldHMgYXJlIGdyZWF0ZXIgb24gYm90
aCBzaWRlcy4KLSAgICAgICAgaW50IHByZXZMZWZ0ID0gYmxvY2soKS0+bGVmdE9mZnNldChwcmV2
Qm90dG9tLCAhcHJldlJvb3RCb3goKSk7Ci0gICAgICAgIGludCBwcmV2UmlnaHQgPSBibG9jaygp
LT5yaWdodE9mZnNldChwcmV2Qm90dG9tLCAhcHJldlJvb3RCb3goKSk7Ci0gICAgICAgIGludCBu
ZXdMZWZ0ID0gYmxvY2soKS0+bGVmdE9mZnNldChzZWxlY3Rpb25Ub3AsICFwcmV2Um9vdEJveCgp
KTsKLSAgICAgICAgaW50IG5ld1JpZ2h0ID0gYmxvY2soKS0+cmlnaHRPZmZzZXQoc2VsZWN0aW9u
VG9wLCAhcHJldlJvb3RCb3goKSk7CisgICAgICAgIGludCBwcmV2TGVmdCA9IGJsb2NrKCktPmxv
Z2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCAhcHJldlJvb3RCb3goKSk7CisgICAg
ICAgIGludCBwcmV2UmlnaHQgPSBibG9jaygpLT5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHBy
ZXZCb3R0b20sICFwcmV2Um9vdEJveCgpKTsKKyAgICAgICAgaW50IG5ld0xlZnQgPSBibG9jaygp
LT5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoc2VsZWN0aW9uVG9wLCAhcHJldlJvb3RCb3goKSk7
CisgICAgICAgIGludCBuZXdSaWdodCA9IGJsb2NrKCktPmxvZ2ljYWxSaWdodE9mZnNldEZvckxp
bmUoc2VsZWN0aW9uVG9wLCAhcHJldlJvb3RCb3goKSk7CiAgICAgICAgIGlmIChwcmV2TGVmdCA+
IG5ld0xlZnQgfHwgcHJldlJpZ2h0IDwgbmV3UmlnaHQpCiAgICAgICAgICAgICByZXR1cm4gc2Vs
ZWN0aW9uVG9wOwogICAgIH0K
</data>
<flag name="review"
          id="58284"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>