Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tq1YD-00Fmt0-Eg for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 03:05:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tq1YB-00DKMv-Gr for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 03:05:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tq1YA-00DKKq-UV for pgsql-hackers@lists.postgresql.org; Thu, 06 Mar 2025 03:05:31 +0000 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tq1Y7-001DrO-2z for pgsql-hackers@postgresql.org; Thu, 06 Mar 2025 03:05:30 +0000 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-523cbce071bso78162e0c.0 for ; Wed, 05 Mar 2025 19:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741230327; x=1741835127; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=r+G5irc7V7xgDSDxJQan92dSJrAhWqdllBdnuVLvFAY=; b=YczKxbasK1+cTe5QyI+F22dV/WxCHIaxwZj4ELOgswryW9LAYPkUOkkkhoIkO8ujMk N4zm0TpWsnOBwQC3iFnr88E5nSqUwxpWVlmBLF9BpJ1KuHiCImCvFLnDhZJQCbkpxac3 vrclbbh/pREEPKKZ9TvUDFZGePEttDpQxJSrn70XI3TnxwPw7k7gj1mxi/E4zKjpOvbx brXNPMjBjL40PI8UWQSJU3FHPSJ9cEGmKQKWUqjAHXjQdoICmxWX/uTqHvJ70JNWhC1z GkThLhOVB7o55SlPL3ZFR87KIuk0z/ohhphB1TLaI7B6okqKLVdq5roFPPzAeClfYXKd F8oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741230327; x=1741835127; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=r+G5irc7V7xgDSDxJQan92dSJrAhWqdllBdnuVLvFAY=; b=o3LYe6fpD81q32Vy3jIxeOxwj1PAnjRP951vzTu91sNe3mz2MEUAYvaykV1ahaLdQg cRX+RTEZ16l7/PH7WvkuBOfoN9vXS5H8IV2uBBHrfaFWeQ35vWrLDc0g3TDVIyevZts/ YY3SbH6bQtPHGgDkycutW+pcAQIPGIuEOLMwqvB9uORU2yGIUbPchaTHdiTMj7px1ncW X4tKU80sd6D0lhBf85NPh1dZ8Ni3cGy4qOCqUkEx7XbkYUBdQ0JjdUFSaZqhal9mkPwh aOYqH/sPtUSNHnpcz4H54blrJHbBpZTjfqA7xqLKzp9r2XJL6aHgZizLZzjoeD3Np176 qMuQ== X-Gm-Message-State: AOJu0YwErF67sMqVua5euykdDXAvcUiBDNWv7b4Vc1a6p20uCJ2De80H IAbY6E6/2m9vLg3EcumCDuHiJka56RpnTmlMvJTqPMjXI5jHUWk1g/72EFx4t7YNgI80aFxBmra YKXwL2SGkMLiCF4iciBfnrHCY5ucOg3Faxy0gdg== X-Gm-Gg: ASbGncvME8vkBqSSvNNFmAN8tJTx5ELAXLmBriVRURjdhfXh0X/5ifWZpFdwBPSfPtO eM5BEFHtfln9smAcAQ3AHbMXAJglw6xYfB/cHNxY/aBDHWSj4f79HPUklL0grX/TQ+8oYVS8XT5 T+QPRxoITSxJYk9cXkCbbCbzGf2rRndzBbRuTtqwovGqgYJv/Ha/OACtCegw== X-Google-Smtp-Source: AGHT+IGUOu+bSFwGKW/jO51xX+veWf6kNvcN0Ai5tiK1g6mkiS80jXIhOcnAcF/xh8/xb8mLNGdFTzZzE7uuJnApips= X-Received: by 2002:a05:6122:ec3:b0:520:60c2:3fb with SMTP id 71dfb90a1353d-523c5dbe24fmr3321768e0c.0.1741230326984; Wed, 05 Mar 2025 19:05:26 -0800 (PST) MIME-Version: 1.0 References: <229413.1741144420@sss.pgh.pa.us> In-Reply-To: From: jian he Date: Thu, 6 Mar 2025 11:04:50 +0800 X-Gm-Features: AQ5f1JpZK8TtjzR429oNXj_MDVnFDcXHk1koSQP1M8cnE0i34BvRfVlMEZG0kLU Message-ID: Subject: Re: support fast default for domain with constraints To: Tom Lane Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000001d950a062fa3c7dc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d950a062fa3c7dc Content-Type: text/plain; charset="UTF-8" hi. rearrange the patch. v3-0001 and v3-0002 is preparare patches. v3-0001 add function: ExecPrepareExprSafe and ExecInitExprSafe. v3-0002 add function: DomainHaveVolatileConstraints v3-0003 tests and apply fast default for domain with constraints. v3-0003 table with empty rows aligned with master behavior. also no table rewrite if the domain has volatile check constraints, so less surprising behavior. --0000000000001d950a062fa3c7dc Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-soft-error-variant-of-ExecPrepareExpr-ExecInitExp.patch" Content-Disposition: attachment; filename="v3-0001-soft-error-variant-of-ExecPrepareExpr-ExecInitExp.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7wriq8y2 RnJvbSBiMmI0MmEyN2JjYWQ2NzBlM2Y1ODQzYjlkYjRlZTM2OWUzZjMwZDljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNSBNYXIgMjAyNSAyMDozNzozMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg MS8zXSBzb2Z0IGVycm9yIHZhcmlhbnQgb2YgRXhlY1ByZXBhcmVFeHByLCBFeGVjSW5pdEV4cHIK CkV4ZWNQcmVwYXJlRXhwclNhZmUgYW5kIEV4ZWNJbml0RXhwclNhZmUuCkV4ZWNQcmVwYXJlRXhw clNhZmUgaW5pdGlhbGl6ZSBmb3IgZXhwcmVzc2lvbiBleGVjdXRpb24gd2l0aCBzb2Z0IGVycm9y IHN1cHBvcnQuCm5vdCBhbGwgZXhwcmVzc2lvbiBub2RlIHN1cHBvcnQgaXQuIHNvbWUgbGlrZSBD b2VyY2VUb0RvbWFpbiBkbyBzdXBwb3J0IGl0LgoKWFhYIG1vcmUgY29tbWVudHMuCgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhFXytpWkJSMWk0OWtfQUhpZ3BwUHdMVEpp NmttOE5Pc0M3Rld2S2RFbW1YZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggfCAgMiArKwogMiBmaWxlcyBjaGFuZ2VkLCA2 NSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggMDM1NjZjNGQxODEu LjA0ZjhiODM5ZDMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTE3MCw2ICsxNzAsNDYg QEAgRXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQogCXJldHVybiBz dGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNJbml0RXhwcjogc29mdCBlcnJvciB2YXJpYW50IG9mIEV4 ZWNJbml0RXhwci4KKyAqIHVzZSBpdCBvbmx5IGZvciBleHByZXNzaW9uIG5vZGVzIHN1cHBvcnQg c29mdCBlcnJvcnMsIG5vdCBhbGwgZXhwcmVzc2lvbgorICogbm9kZXMgc3VwcG9ydCBpdC4KKyov CitFeHByU3RhdGUgKgorRXhlY0luaXRFeHByU2FmZShFeHByICpub2RlLCBQbGFuU3RhdGUgKnBh cmVudCkKK3sKKwlFeHByU3RhdGUgICpzdGF0ZTsKKwlFeHByRXZhbFN0ZXAgc2NyYXRjaCA9IHsw fTsKKworCS8qIFNwZWNpYWwgY2FzZTogTlVMTCBleHByZXNzaW9uIHByb2R1Y2VzIGEgTlVMTCBF eHByU3RhdGUgcG9pbnRlciAqLworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBOVUxMOwor CisJLyogSW5pdGlhbGl6ZSBFeHByU3RhdGUgd2l0aCBlbXB0eSBzdGVwIGxpc3QgKi8KKwlzdGF0 ZSA9IG1ha2VOb2RlKEV4cHJTdGF0ZSk7CisJc3RhdGUtPmV4cHIgPSBub2RlOworCXN0YXRlLT5w YXJlbnQgPSBwYXJlbnQ7CisJc3RhdGUtPmV4dF9wYXJhbXMgPSBOVUxMOworCXN0YXRlLT5lc2Nv bnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVDb250ZXh0KTsKKwlzdGF0ZS0+ZXNjb250ZXh0LT50 eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCXN0YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3Vy cmVkID0gZmFsc2U7CisJc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSB0cnVlOwor CisJLyogSW5zZXJ0IHNldHVwIHN0ZXBzIGFzIG5lZWRlZCAqLworCUV4ZWNDcmVhdGVFeHByU2V0 dXBTdGVwcyhzdGF0ZSwgKE5vZGUgKikgbm9kZSk7CisKKwkvKiBDb21waWxlIHRoZSBleHByZXNz aW9uIHByb3BlciAqLworCUV4ZWNJbml0RXhwclJlYyhub2RlLCBzdGF0ZSwgJnN0YXRlLT5yZXN2 YWx1ZSwgJnN0YXRlLT5yZXNudWxsKTsKKworCS8qIEZpbmFsbHksIGFwcGVuZCBhIERPTkUgc3Rl cCAqLworCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9ET05FOworCUV4cHJFdmFsUHVzaFN0ZXAoc3Rh dGUsICZzY3JhdGNoKTsKKworCUV4ZWNSZWFkeUV4cHIoc3RhdGUpOworCisJcmV0dXJuIHN0YXRl OworfQorCiAvKgogICogRXhlY0luaXRFeHByV2l0aFBhcmFtczogcHJlcGFyZSBhIHN0YW5kYWxv bmUgZXhwcmVzc2lvbiB0cmVlIGZvciBleGVjdXRpb24KICAqCkBAIC03NzgsNiArODE4LDI5IEBA IEV4ZWNQcmVwYXJlRXhwcihFeHByICpub2RlLCBFU3RhdGUgKmVzdGF0ZSkKIAlyZXR1cm4gcmVz dWx0OwogfQogCisvKgorICogRXhlY1ByZXBhcmVFeHByU2FmZTogc29mdCBlcnJvciB2YXJpYW50 IG9mIEV4ZWNQcmVwYXJlRXhwci4KKyAqCisgKiB1c2UgaXQgd2hlbiBleHByZXNzaW9uIG5vZGUg KnN1cHBvcnQqIHNvZnQgZXJyb3IgZXhwcmVzc2lvbiBleGVjdXRpb24uCisgKiBFeGVjUHJlcGFy ZUV4cHIgY29tbWVudHMgYXBwbHkgdG8gaGVyZSB0b28uCisgKi8KK0V4cHJTdGF0ZSAqCitFeGVj UHJlcGFyZUV4cHJTYWZlKEV4cHIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlKQoreworCUV4cHJTdGF0 ZSAgKnJlc3VsdDsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCW5vZGUgPSBl eHByZXNzaW9uX3BsYW5uZXIobm9kZSk7CisKKwlyZXN1bHQgPSBFeGVjSW5pdEV4cHJTYWZlKG5v ZGUsIE5VTEwpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0 dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEV4ZWNQcmVwYXJlUXVhbCAtLS0gaW5pdGlhbGl6ZSBm b3IgcXVhbCBleGVjdXRpb24gb3V0c2lkZSBhIG5vcm1hbAogICogUGxhbiB0cmVlIGNvbnRleHQu CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBkMTJlM2Y0NTFkMi4uYjdhYjk1NDM3ZmUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMzA1LDYgKzMwNSw3IEBAIEV4ZWNQcm9jTm9kZShQ bGFuU3RhdGUgKm5vZGUpCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNFeHBy LmMKICAqLwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5T dGF0ZSAqcGFyZW50KTsKK2V4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0RXhwclNhZmUoRXhwciAq bm9kZSwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHBy V2l0aFBhcmFtcyhFeHByICpub2RlLCBQYXJhbUxpc3RJbmZvIGV4dF9wYXJhbXMpOwogZXh0ZXJu IEV4cHJTdGF0ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0ZSAqcGFyZW50KTsK IGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0Q2hlY2soTGlzdCAqcXVhbCwgUGxhblN0YXRlICpw YXJlbnQpOwpAQCAtMzUzLDYgKzM1NCw3IEBAIGV4dGVybiBQcm9qZWN0aW9uSW5mbyAqRXhlY0J1 aWxkVXBkYXRlUHJvamVjdGlvbihMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJCQkJCQkJIFR1cGxl VGFibGVTbG90ICpzbG90LAogCQkJCQkJCQkJCQkJIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVy biBFeHByU3RhdGUgKkV4ZWNQcmVwYXJlRXhwcihFeHByICpub2RlLCBFU3RhdGUgKmVzdGF0ZSk7 CitleHRlcm4gRXhwclN0YXRlICpFeGVjUHJlcGFyZUV4cHJTYWZlKEV4cHIgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlKTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNQcmVwYXJlUXVhbChMaXN0ICpxdWFs LCBFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gRXhwclN0YXRlICpFeGVjUHJlcGFyZUNoZWNrKExp c3QgKnF1YWwsIEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBMaXN0ICpFeGVjUHJlcGFyZUV4cHJM aXN0KExpc3QgKm5vZGVzLCBFU3RhdGUgKmVzdGF0ZSk7Ci0tIAoyLjM0LjEKCg== --0000000000001d950a062fa3c7dc Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0002-add-function-DomainHaveVolatileConstraints.patch" Content-Disposition: attachment; filename="v3-0002-add-function-DomainHaveVolatileConstraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7wriq8w1 RnJvbSA5ODg1Y2RhNzA2NTEzZWQ3ZDhlODU1OTc0NDA2MDljNDExNjc4ZGNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAwOTo1ODo1NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Mi8zXSBhZGQgZnVuY3Rpb24gRG9tYWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMKCmJvb2wgRG9t YWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMoT2lkIHR5cGVfaWQsIGJvb2wgKmhhdmVfdm9sYXRp bGUpOwoKUmV0dXJucyB0cnVlIGlmIHRoZSBEb21haW4gaGFzIGFueSBjb25zdHJhaW50cy4KSWYg eW91IHdhbnQgY2hlY2sgdGhpcyBkb21haW4gaGF2ZSBhbnkgdm9sYXRpbGUgY2hlY2sgY29uc3Ry YWludHMsCm1ha2Ugc3VyZSBoYXZlX3ZvbGF0aWxlIGlzIG5vdCBOVUxMLgoKZGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4RV8raVpCUjFpNDlrX0FIaWdwcFB3TFRKaTZrbThO T3NDN0ZXdktkRW1tWGdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS90eXBjYWNoZS5jIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgIHwgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAzOCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggNWEzYjM3ODhk MDIuLjYxN2QwZWMyN2NmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTE0OTgs NiArMTQ5OCw0MyBAQCBEb21haW5IYXNDb25zdHJhaW50cyhPaWQgdHlwZV9pZCkKIH0KIAogCisv KgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBEb21haW4gaGFzIGFueSBjb25zdHJhaW50cy4KKyAq IFRvIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygdm9sYXRpbGUgY29uc3RyYWludHMsIGVuc3Vy ZQorICogaGF2ZV92b2xhdGlsZSBpcyBub3QgTlVMTC4gSWYgYSB2b2xhdGlsZSBjb25zdHJhaW50 IGV4aXN0cywKKyAqIGhhdmVfdm9sYXRpbGUgd2lsbCBiZSB0cnVlLgorICovCitib29sCitEb21h aW5IYXZlVm9sYXRpbGVDb25zdHJhaW50cyhPaWQgdHlwZV9pZCwgYm9vbCAqaGF2ZV92b2xhdGls ZSkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisKKwkvKgorCSAqIE5vdGU6IGEgc2lk ZSBlZmZlY3QgaXMgdG8gY2F1c2UgdGhlIHR5cGNhY2hlJ3MgZG9tYWluIGRhdGEgdG8gYmVjb21l CisJICogdmFsaWQuICBUaGlzIGlzIGZpbmUgc2luY2Ugd2UnbGwgbGlrZWx5IG5lZWQgaXQgc29v biBpZiB0aGVyZSBpcyBhbnkuCisJICovCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0 eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmICh0eXBlbnRyeS0+ ZG9tYWluRGF0YSAhPSBOVUxMKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJZm9yZWFjaChs YywgdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzKQorCQl7CisJCQlEb21haW5Db25z dHJhaW50U3RhdGUgKnIgPSAoRG9tYWluQ29uc3RyYWludFN0YXRlICopIGxmaXJzdChsYyk7CisK KwkJCWlmIChyLT5jb25zdHJhaW50dHlwZSA9PSBET01fQ09OU1RSQUlOVF9DSEVDSyAmJgorCQkJ CWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIHItPmNoZWNrX2V4cHIpKQorCQkJ eworCQkJCSpoYXZlX3ZvbGF0aWxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQly ZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogYXJyYXlfZWxlbWVu dF9oYXNfZXF1YWxpdHkgYW5kIGZyaWVuZHMgYXJlIGhlbHBlciByb3V0aW5lcyB0byBjaGVjawog ICogd2hldGhlciB3ZSBzaG91bGQgYmVsaWV2ZSB0aGF0IGFycmF5X2VxIGFuZCByZWxhdGVkIGZ1 bmN0aW9ucyB3aWxsIHdvcmsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hl LmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDU2MmE1ODEzMzNhLi4zNjI1 N2M0MjQwYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xODMsNiArMTgzLDcgQEAgZXh0ZXJuIHZv aWQgSW5pdERvbWFpbkNvbnN0cmFpbnRSZWYoT2lkIHR5cGVfaWQsIERvbWFpbkNvbnN0cmFpbnRS ZWYgKnJlZiwKIGV4dGVybiB2b2lkIFVwZGF0ZURvbWFpbkNvbnN0cmFpbnRSZWYoRG9tYWluQ29u c3RyYWludFJlZiAqcmVmKTsKIAogZXh0ZXJuIGJvb2wgRG9tYWluSGFzQ29uc3RyYWludHMoT2lk IHR5cGVfaWQpOworZXh0ZXJuIGJvb2wgRG9tYWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMoT2lk IHR5cGVfaWQsIGJvb2wgKmhhdmVfdm9sYXRpbGUpOwogCiBleHRlcm4gVHVwbGVEZXNjIGxvb2t1 cF9yb3d0eXBlX3R1cGRlc2MoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKLS0gCjIuMzQu MQoK --0000000000001d950a062fa3c7dc Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0003-fast-default-for-domain-with-constraints.patch" Content-Disposition: attachment; filename="v3-0003-fast-default-for-domain-with-constraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7wriq8p0 RnJvbSBjNjcxYjE3YzExZjMzZWViYjJkNDU3MTkxYzYwNmI5OTI0MjFkNmQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAxMDo0NDoxMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMg My8zXSBmYXN0IGRlZmF1bHQgZm9yIGRvbWFpbiB3aXRoIGNvbnN0cmFpbnRzCgpUaGlzIGlzIHBy aW1hcmlseSBkb25lIGJ5IGV2YWx1YXRpbmcgQ29lcmNlVG9Eb21haW4gd2l0aCBzb2Z0IGVycm9y IHN1cHBvcnQuCgpJZiB3ZSBldmFsdWF0ZSBDb2VyY2VUb0RvbWFpbiB0byBmYWxzZSwgaW4gQVRF eGVjQWRkQ29sdW1uLCB0aGUgZGVmdmFsIG5vZGUKZXZhbHVhdGlvbiB2YWx1ZSBjYW5ub3QgYmUg Y2FzdCB0byB0aGUgZG9tYWluLiAgSG93ZXZlciwgaW4gc29tZSBzY2FyZW5pbyB3ZQpjYW5ub3Qg ZmFpbCBhdCB0aGUgUGhhc2UgMiBzdGFnZSBpbiBjYXNlcyB3aGVyZSB0aGUgdGFibGUgaXMgZW1w dHkuIEZvciBleGFtcGxlLAp0aGUgdG8gYmUgYWRkZWQgY29sdW1uIGlzIGRvbWFpbiB4IGFuZCBk b21haW4geCBpcyAiY2hlY2sodmFsdWUgPiAxMCkgZGVmYXVsdCA4Ii4KClRoZXJlZm9yZSwgaWYg YW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXZhbHVhdGlvbiwgZG8gbm90IHJhaXNlIHRoZSBlcnJv ciwKd2Ugc2lnbmFsIFBoYXNlIDMgdG8gZG8gdGFibGUgcmV3cml0ZSwgZXJyb3Igd2lsbCBiZSBy YWlzZWQgb24gUGhhc2UgMy4KClRoYW5rcyB0byBjb21taXQgYWFhZjk0NDllYzZiZTYyY2IwZDMw ZWQzNTg4ZGMzODRmNTYyNzRiZlsxXSwKRXhwclN0YXRlLmVzY29udGV4dCAoRXJyb3JTYXZlQ29u dGV4dCkgd2FzIGFkZGVkLCBhbmQgRXhlY0V2YWxDb25zdHJhaW50Tm90TnVsbCwKRXhlY0V2YWxD b25zdHJhaW50Q2hlY2sgd2VyZSBjaGFuZ2VkIHRvIHVzZSBlcnJzYXZlIGluc3RlYWQgb2YgaGFy ZCBlcnJvci4KTm93IHdlIGNhbiBldmFsdWF0ZSBDb2VyY2VUb0RvbWFpbiBpbiBhIHNvZnQgZXJy b3Igd2F5LgoKSG93ZXZlciB3ZSBkbyBuZWVkIHRhYmxlIHJld3JpdGUgZm9yIGRvbWFpbiB3aXRo IHZvbGF0aWxlIGNoZWNrIGNvbnN0cmFpbnRzLgpzbyB0aGVyZSB3aWxsIGJlIGxlc3Mgc3VycHJp c2luZyBiZWhhdmlvci4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEVf K2laQlIxaTQ5a19BSGlncHBQd0xUSmk2a204Tk9zQzdGV3ZLZEVtbVhnQG1haWwuZ21haWwuY29t ClsxXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dpdC9wb3N0Z3Jlc3FsLmdpdC9jb21t aXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRjMzg0ZjU2Mjc0YmYKLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAgNTMgKysrKysrKysrLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZmFzdF9kZWZhdWx0Lm91dCB8IDEwMyArKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwgICAg ICB8ICA3MSArKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDU5MTU2YTFj MWY2Li41NWQ3NTI4ZGVhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTczMzIsNiAr NzMzMiw3IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkgKiBOVUxMIGlmIHNvLCBzbyB3aXRob3V0IGFueSBtb2Rp ZmljYXRpb24gb2YgdGhlIHR1cGxlIGRhdGEgd2Ugd2lsbCBnZXQKIAkgKiB0aGUgZWZmZWN0IG9m IE5VTEwgdmFsdWVzIGluIHRoZSBuZXcgY29sdW1uLgogCSAqCisJICogWFhYWCB0aGlzIHBhcmEg c2hvdWxkIGJlIHJlbW92ZWQ/CiAJICogQW4gZXhjZXB0aW9uIG9jY3VycyB3aGVuIHRoZSBuZXcg Y29sdW1uIGlzIG9mIGEgZG9tYWluIHR5cGU6IHRoZSBkb21haW4KIAkgKiBtaWdodCBoYXZlIGEg bm90LW51bGwgY29uc3RyYWludCwgb3IgYSBjaGVjayBjb25zdHJhaW50IHRoYXQgaW5kaXJlY3Rs eQogCSAqIHJlamVjdHMgbnVsbHMuICBJZiB0aGVyZSBhcmUgYW55IGRvbWFpbiBjb25zdHJhaW50 cyB0aGVuIHdlIGNvbnN0cnVjdApAQCAtNzM1OSw2ICs3MzYwLDggQEAgQVRFeGVjQWRkQ29sdW1u KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXsK IAkJYm9vbAkJaGFzX2RvbWFpbl9jb25zdHJhaW50czsKIAkJYm9vbAkJaGFzX21pc3NpbmcgPSBm YWxzZTsKKwkJYm9vbAkJbm9fZXhwbGljaXRfZGVmdmFsID0gZmFsc2U7CisJCWJvb2wJCWhhc192 b2xhdGlsZSA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIEZvciBhbiBpZGVudGl0eSBjb2x1bW4sIHdl IGNhbid0IHVzZSBidWlsZF9jb2x1bW5fZGVmYXVsdCgpLApAQCAtNzM3Niw4ICs3Mzc5LDI5IEBA IEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAkJZWxzZQogCQkJZGVmdmFsID0gKEV4cHIgKikgYnVpbGRfY29sdW1uX2Rl ZmF1bHQocmVsLCBhdHRyaWJ1dGUtPmF0dG51bSk7CiAKKwkJLyoKKwkJICogaWYgZGVmdmFsIGlz IHRoZXJlLCBhdHRoYXNkZWYgaXMgZmFsc2UsIHRoYXQgbWVhbnMgdGhlIGRlZnZhbCBjb21lcwor CQkgKiBmcm9tIGRvbWFpbiBkZWZhdWx0IHZhbHVlLCBubyBleHBsaWNpdCBERUZBVUxUIGV4cHJl c3Npb24gc3BlY2lmaWVkLgorCQkgKiBJbiB0aGF0IGNhc2Ugd2UgbmVlZCBldmFsdWF0ZSBkZWZ2 YWwgZXJyb3Igc2FmZSB3YXksIHNvCisJCSAqIGRvbWFpbiBzcGVjaWZpY2F0aW9uIHN1Y2ggYXMg YGBjaGVjayh2YWx1ZSA+IDEwKSBkZWZhdWx0IDggYGAKKwkJICogY2FuIGJlIGFkZGVkIHRvIGVt cHR5IHRhYmxlLgorCQkqLworCQlpZiAoZGVmdmFsKQorCQl7CisJCQlUdXBsZURlc2MJcmRfYXR0 ID0gcmVsLT5yZF9hdHQ7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRfdHVwID0gVHVwbGVEZXNj QXR0cihyZF9hdHQsIGF0dHJpYnV0ZS0+YXR0bnVtIC0gMSk7CisJCQlpZiAoIWF0dF90dXAtPmF0 dGhhc2RlZikKKwkJCQlub19leHBsaWNpdF9kZWZ2YWwgPSB0cnVlOworCQl9CisKIAkJLyogQnVp bGQgQ29lcmNlVG9Eb21haW4oTlVMTCkgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KLQkJaGFzX2Rv bWFpbl9jb25zdHJhaW50cyA9IERvbWFpbkhhc0NvbnN0cmFpbnRzKGF0dHJpYnV0ZS0+YXR0dHlw aWQpOworCQloYXNfZG9tYWluX2NvbnN0cmFpbnRzID0gRG9tYWluSGF2ZVZvbGF0aWxlQ29uc3Ry YWludHMoYXR0cmlidXRlLT5hdHR0eXBpZCwgJmhhc192b2xhdGlsZSk7CisJCWlmIChoYXNfdm9s YXRpbGUpCisJCXsKKwkJCUFzc2VydChoYXNfZG9tYWluX2NvbnN0cmFpbnRzKTsKKwkJCXRhYi0+ cmV3cml0ZSB8PSBBVF9SRVdSSVRFX0RFRkFVTFRfVkFMOworCQl9CisKIAkJaWYgKCFkZWZ2YWwg JiYgaGFzX2RvbWFpbl9jb25zdHJhaW50cykKIAkJewogCQkJT2lkCQkJYmFzZVR5cGVJZDsKQEAg LTczOTgsNiArNzQyMiwxMiBAQCBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCQkJLTEpOwogCQkJaWYg KGRlZnZhbCA9PSBOVUxMKSAvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1Is ICJmYWlsZWQgdG8gY29lcmNlIGJhc2UgdHlwZSB0byBkb21haW4iKTsKKwkJCS8qCisJCQkgKiBp ZiBkb21haW4gaGF2ZSBub3QtbnVsbCBjb25zdHJhaW50IG9yIGNoZWNrIGNvbnN0cmFpbnQKKwkJ CSAqIGVxdWl2YWxlbnQgdG8gbm90LW51bGwsIHdlIG9ubHkgd2FudCBpdCBmYWlsdXJlIHdoZW4g dGFibGUgaGF2ZQorCQkJICogc29tZSByb3dzLiBzbyBkbyBpdCBpbiBzb2Z0IGVycm9yIHdheS4K KwkJCSovCisJCQlub19leHBsaWNpdF9kZWZ2YWwgPSB0cnVlOwogCQl9CiAKIAkJaWYgKGRlZnZh bCkKQEAgLTc0MjAsMTMgKzc0NTAsMTQgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUs IEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJICogc3BlY2lmaWVkIERF RkFVTFQgdmFsdWUgb3V0c2lkZSBvZiB0aGUgaGVhcC4gIFRoaXMgaXMgb25seQogCQkJICogYWxs b3dlZCBmb3IgcGxhaW4gcmVsYXRpb25zIGFuZCBub24tZ2VuZXJhdGVkIGNvbHVtbnMsIGFuZCB0 aGUKIAkJCSAqIGRlZmF1bHQgZXhwcmVzc2lvbiBjYW4ndCBiZSB2b2xhdGlsZSAoc3RhYmxlIGlz IE9LKS4gIE5vdGUgdGhhdAotCQkJICogY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMgZGVlbXMg Q29lcmNlVG9Eb21haW4gaW1tdXRhYmxlLCBidXQKLQkJCSAqIGhlcmUgd2UgY29uc2lkZXIgdGhh dCBjb2VyY2lvbiB0byBhIGRvbWFpbiB3aXRoIGNvbnN0cmFpbnRzIGlzCi0JCQkgKiB2b2xhdGls ZTsgZWxzZSBpdCBtaWdodCBmYWlsIGV2ZW4gd2hlbiB0aGUgdGFibGUgaXMgZW1wdHkuCisJCQkg KiBjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucyBkZWVtcyBDb2VyY2VUb0RvbWFpbiBpbW11dGFi bGUuCisJCQkgKiBXZSBkbyBzdXBwb3J0IHNvZnQgZXJyb3IgZXZhbHVhdGlvbiBvZiBDb2VyY2VU b0RvbWFpbiBpZgorCQkJICogRXhwclN0YXRlLT5lc2NvbnRleHQgaXMgbm90IE5VTEwuIEluIHRo YXQgY2FzZSBpZiBldmFsdWF0aW9uIGZhaWxlZCwKKwkJCSAqIHNldCB0YWJsZSByZXdyaXRlIHRv IHRydWUsIGxldCdzIGZhaWwgb24gUGhhc2UgMy4KIAkJCSAqLwogCQkJaWYgKHJlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJCQkhY29sRGVmLT5nZW5lcmF0ZWQg JiYKLQkJCQkhaGFzX2RvbWFpbl9jb25zdHJhaW50cyAmJgorCQkJCSFoYXNfdm9sYXRpbGUgJiYK IAkJCQkhY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoKE5vZGUgKikgZGVmdmFsKSkKIAkJCXsK IAkJCQlFU3RhdGUJICAgKmVzdGF0ZTsKQEAgLTc0MzYsMTAgKzc0NjcsMjAgQEAgQVRFeGVjQWRk Q29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCiAJCQkJLyogRXZhbHVhdGUgdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiAqLwogCQkJCWVzdGF0 ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKLQkJCQlleHByU3RhdGUgPSBFeGVjUHJlcGFyZUV4 cHIoZGVmdmFsLCBlc3RhdGUpOworCQkJCWlmICghbm9fZXhwbGljaXRfZGVmdmFsKQorCQkJCQll eHByU3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoZGVmdmFsLCBlc3RhdGUpOworCQkJCWVsc2UKKwkJ CQkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByU2FmZShkZWZ2YWwsIGVzdGF0ZSk7CisKIAkJ CQltaXNzaW5ndmFsID0gRXhlY0V2YWxFeHByKGV4cHJTdGF0ZSwKIAkJCQkJCQkJCQkgIEdldFBl clR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwKIAkJCQkJCQkJCQkgICZtaXNzaW5nSXNOdWxsKTsK KworCQkJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJTdGF0ZS0+ZXNjb250ZXh0KSkKKwkJ CQl7CisJCQkJCW1pc3NpbmdJc051bGwgPSB0cnVlOworCQkJCQl0YWItPnJld3JpdGUgfD0gQVRf UkVXUklURV9ERUZBVUxUX1ZBTDsKKwkJCQl9CiAJCQkJLyogSWYgaXQgdHVybnMgb3V0IE5VTEws IG5vdGhpbmcgdG8gZG87IGVsc2Ugc3RvcmUgaXQgKi8KIAkJCQlpZiAoIW1pc3NpbmdJc051bGwp CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mYXN0X2RlZmF1 bHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mYXN0X2RlZmF1bHQub3V0CmluZGV4 IGNjYmNkZjg0MDNmLi45MWM5NGNmMWUyZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9mYXN0X2RlZmF1bHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZmFzdF9kZWZhdWx0Lm91dApAQCAtMzE3LDExICszMTcsMTE0IEBAIFNFTEVDVCBhLCBiLCBsZW5n dGgoYykgPSAzIGFzIGNfb2ssIGQsIGUgPj0gMTAgYXMgZV9vayBGUk9NIHQyOwogIDIgfCAzIHwg dCAgICB8IHtUaGlzLGlzLGFiY2QsdGhlLHJlYWwsd29ybGR9IHwgdAogKDIgcm93cykKIAorLS0t dGVzdCBmYXN0IGRlZmF1bHQgb3ZlciBkb21haW5zIHdpdGggY2hlY2sgY29uc3RyYWludAorQ1JF QVRFIERPTUFJTiBkb21haW41IEFTIGludCBjaGVjayh2YWx1ZSA+IDEwKSBkZWZhdWx0IDg7CitD UkVBVEUgRE9NQUlOIGRvbWFpbjYgYXMgaW50IG5vdCBudWxsOworQ1JFQVRFIERPTUFJTiBkb21h aW43IGFzIGludCBjaGVjayh2YWx1ZSBpcyBub3QgbnVsbCk7CitDUkVBVEUgRE9NQUlOIGRvbWFp bjggYXMgaW50IGNoZWNrKHZhbHVlID4gMTApIERFRkFVTFQgcmFuZG9tKG1pbj0+MTAsIG1heD0+ MTAwKTsKK0NSRUFURSBUQUJMRSB0MyhhIGludCk7CitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1O IGIgZG9tYWluNSBkZWZhdWx0IDE7IC0tZXJyb3IKK0VSUk9SOiAgdmFsdWUgZm9yIGRvbWFpbiBk b21haW41IHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImRvbWFpbjVfY2hlY2siCitBTFRFUiBU QUJMRSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNiBkZWZhdWx0IE5VTEw7IC0tZXJyb3IKK0VSUk9S OiAgZG9tYWluIGRvbWFpbjYgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0FMVEVSIFRBQkxF IHQzIEFERCBDT0xVTU4gYiBkb21haW42IGRlZmF1bHQgMTEgKyBOVUxMOyAtLWVycm9yCitFUlJP UjogIGRvbWFpbiBkb21haW42IGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitBTFRFUiBUQUJM RSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNyBkZWZhdWx0IDExICsgTlVMTDsgLS1lcnJvcgorRVJS T1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRvbWFpbjcgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAi ZG9tYWluN19jaGVjayIKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42OyAtLW9r LiBiZWNhdXNlIHQzIGlzIGVtcHR5CitOT1RJQ0U6ICByZXdyaXRpbmcgdGFibGUgdDMgZm9yIHJl YXNvbiAyCitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGMgZG9tYWluNzsgLS1vay4gYmVjYXVz ZSB0MyBpcyBlbXB0eQorTk9USUNFOiAgcmV3cml0aW5nIHRhYmxlIHQzIGZvciByZWFzb24gMgor QUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBkIGRvbWFpbjU7IC0tb2suIGJlY2F1c2UgdDMgaXMg ZW1wdHkKK05PVElDRTogIHJld3JpdGluZyB0YWJsZSB0MyBmb3IgcmVhc29uIDIKK0lOU0VSVCBJ TlRPIHQzIGRlZmF1bHQgdmFsdWVzOyAtLWVycm9yCitFUlJPUjogIGRvbWFpbiBkb21haW42IGRv ZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitJTlNFUlQgSU5UTyB0MyhhLGIsYyxkKSB2YWx1ZXMo MSwyLCAzLCAxMik7IC0tb2sKK0RST1AgVEFCTEUgdDM7CitDUkVBVEUgVEFCTEUgdDMoYSBpbnQp OworSU5TRVJUIElOVE8gdDMgVkFMVUVTKDEpLCgyKTsKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xV TU4gYiBkb21haW41OyAtLXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorTk9USUNFOiAgcmV3cml0 aW5nIHRhYmxlIHQzIGZvciByZWFzb24gMgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRvbWFp bjUgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZG9tYWluNV9jaGVjayIKK0FMVEVSIFRBQkxF IHQzIEFERCBDT0xVTU4gYiBkb21haW42OyAtLXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorTk9U SUNFOiAgcmV3cml0aW5nIHRhYmxlIHQzIGZvciByZWFzb24gMgorRVJST1I6ICBkb21haW4gZG9t YWluNiBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQUxURVIgVEFCTEUgdDMgQUREIENPTFVN TiBiIGRvbWFpbjc7IC0tdGFibGUgcmV3cml0ZSwgdGhlbiBmYWlsCitOT1RJQ0U6ICByZXdyaXRp bmcgdGFibGUgdDMgZm9yIHJlYXNvbiAyCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZG9tYWlu NyB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkb21haW43X2NoZWNrIgorQUxURVIgVEFCTEUg dDMgQUREIENPTFVNTiBiIGRvbWFpbjUgZGVmYXVsdCAxMjsgLS1ubyB0YWJsZSByZXdyaXRlCitB TFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGMgZG9tYWluNiBkZWZhdWx0IDEzOyAtLW5vIHRhYmxl IHJld3JpdGUKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gZCBkb21haW43IGRlZmF1bHQgMTQ7 IC0tbm8gdGFibGUgcmV3cml0ZQorLS1ubyB0YWJsZSByZXdyaXRlLCB3ZSBjb25zaWRlciBleHBs aWNpdCBjb2x1bW4gZGVmYXVsdCBleHByZXNzaW9uLCBub3QgdGhlIGRvbWFpbiBkZWZhdWx0CitB TFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGUgZG9tYWluOCBkZWZhdWx0IDE1OworU0VMRUNUIGF0 dG51bSwgYXR0bmFtZSwgYXR0aGFzbWlzc2luZywgYXR0aGFzZGVmLCBhdHRtaXNzaW5ndmFsCitG Uk9NIHBnX2F0dHJpYnV0ZQorV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndDMnOjpy ZWdjbGFzcyBBTkQgYXR0aXNkcm9wcGVkIGlzIGZhbHNlCitPUkRFUiBCWSBhdHRudW07CisgYXR0 bnVtIHwgYXR0bmFtZSB8IGF0dGhhc21pc3NpbmcgfCBhdHRoYXNkZWYgfCBhdHRtaXNzaW5ndmFs IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0KKyAgICAgIDEgfCBhICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgICB8 IAorICAgICAgMiB8IGIgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezEyfQor ICAgICAgMyB8IGMgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezEzfQorICAg ICAgNCB8IGQgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezE0fQorICAgICAg NSB8IGUgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezE1fQorKDUgcm93cykK KworLS10YWJsZSByZXdyaXRlLiB3ZSBhcmUgYXBwbHlpbmcgZG9tYWluIHZvbGF0aWxlIGRlZmF1 bHQgZXhwcmVzaW9uCitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGYgZG9tYWluODsKK05PVElD RTogIHJld3JpdGluZyB0YWJsZSB0MyBmb3IgcmVhc29uIDIKK1NFTEVDVCBhdHRudW0sIGF0dG5h bWUsIGF0dGhhc21pc3NpbmcsIGF0dGhhc2RlZiwgYXR0bWlzc2luZ3ZhbAorRlJPTSBwZ19hdHRy aWJ1dGUKK1dIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3QzJzo6cmVnY2xhc3MKK09S REVSIEJZIGF0dG51bTsKKyBhdHRudW0gfCBhdHRuYW1lIHwgYXR0aGFzbWlzc2luZyB8IGF0dGhh c2RlZiB8IGF0dG1pc3Npbmd2YWwgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgMSB8IGEgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgIHwgCisgICAgICAyIHwgYiAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgICAgfCAKKyAgICAgIDMgfCBjICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgICB8IAorICAgICAgNCB8IGQgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgIHwg CisgICAgICA1IHwgZSAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgfCAKKyAgICAg IDYgfCBmICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgICB8IAorKDYgcm93cykKKwor U0VMRUNUIGEsYixjLGQsZSxmID4gMTAgYXMgZl9vayBGUk9NIHQzIE9SREVSIEJZIGE7CisgYSB8 IGIgIHwgYyAgfCBkICB8IGUgIHwgZl9vayAKKy0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0t LQorIDEgfCAxMiB8IDEzIHwgMTQgfCAxNSB8IHQKKyAyIHwgMTIgfCAxMyB8IDE0IHwgMTUgfCB0 CisoMiByb3dzKQorCistLS0tLS10ZXN0IHRhYmxlIHJld3JpdGUgZm9yIHZvbGF0aWxlIGRvbWFp biBjb25zdHJhaW50cy4KK0NSRUFURSBET01BSU4gZG9tYWluOSBhcyBpbnQgY2hlY2soKHZhbHVl ICsgcmFuZG9tKG1pbj0+MTE6OmludCwgbWF4PT4xMSkpID4gMTIpOyAtLXZvbGF0aWxlCitDUkVB VEUgRE9NQUlOIGRvbWFpbjEwIGFzIGludCBjaGVjaygodmFsdWUgKyByYW5kb20obWluPT4xMTo6 aW50LCBtYXg9PjExKSkgPiAxMikgZGVmYXVsdCAxOyAtLXZvbGF0aWxlCitDUkVBVEUgVEFCTEUg dDQoYSBpbnQpOworSU5TRVJUIElOVE8gdDQgVkFMVUVTKDEpLCgyKTsKKy0tYWxsIHRoZXNlIHdp bGwgdGFibGUgcmV3cml0ZSBhbmQgYmUgb2suCitBTFRFUiBUQUJMRSB0NCBBREQgQ09MVU1OIGIg ZG9tYWluOTsgLS1kZWZhdWx0IHRvIE5VTEwKK05PVElDRTogIHJld3JpdGluZyB0YWJsZSB0NCBm b3IgcmVhc29uIDIKK0FMVEVSIFRBQkxFIHQ0IEFERCBDT0xVTU4gYyBkb21haW45IGRlZmF1bHQg MTQ7CitOT1RJQ0U6ICByZXdyaXRpbmcgdGFibGUgdDQgZm9yIHJlYXNvbiAyCitTRUxFQ1QgQ09V TlQoKikgQVMgZXhwZWN0X3plcm8KK0ZST00gcGdfYXR0cmlidXRlCitXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICd0NCc6OnJlZ2NsYXNzIEFORCBhdHRtaXNzaW5ndmFsIElTIE5PVCBO VUxMOworIGV4cGVjdF96ZXJvIAorLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAwCisoMSByb3cp CisKIERST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0NDsKIERST1Ag RE9NQUlOIGRvbWFpbjE7CiBEUk9QIERPTUFJTiBkb21haW4yOwogRFJPUCBET01BSU4gZG9tYWlu MzsKIERST1AgRE9NQUlOIGRvbWFpbjQ7CitEUk9QIERPTUFJTiBkb21haW41OworRFJPUCBET01B SU4gZG9tYWluNjsKK0RST1AgRE9NQUlOIGRvbWFpbjc7CitEUk9QIERPTUFJTiBkb21haW44Owor RFJPUCBET01BSU4gZG9tYWluOTsKK0RST1AgRE9NQUlOIGRvbWFpbjEwOwogRFJPUCBGVU5DVElP TiBmb28oSU5UKTsKIC0tIEZhbGwgYmFjayB0byBmdWxsIHJld3JpdGUgZm9yIHZvbGF0aWxlIGV4 cHJlc3Npb25zCiBDUkVBVEUgVEFCTEUgVChwayBJTlQgTk9UIE5VTEwgUFJJTUFSWSBLRVkpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZmFzdF9kZWZhdWx0LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwKaW5kZXggMDY4ZGQwYmM4YWEuLmY1ZjZj ZGI0OGI4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mYXN0X2RlZmF1bHQuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwKQEAgLTI4NywxMSAr Mjg3LDgyIEBAIE9SREVSIEJZIGF0dG51bTsKIAogU0VMRUNUIGEsIGIsIGxlbmd0aChjKSA9IDMg YXMgY19vaywgZCwgZSA+PSAxMCBhcyBlX29rIEZST00gdDI7CiAKKy0tLXRlc3QgZmFzdCBkZWZh dWx0IG92ZXIgZG9tYWlucyB3aXRoIGNoZWNrIGNvbnN0cmFpbnQKK0NSRUFURSBET01BSU4gZG9t YWluNSBBUyBpbnQgY2hlY2sodmFsdWUgPiAxMCkgZGVmYXVsdCA4OworQ1JFQVRFIERPTUFJTiBk b21haW42IGFzIGludCBub3QgbnVsbDsKK0NSRUFURSBET01BSU4gZG9tYWluNyBhcyBpbnQgY2hl Y2sodmFsdWUgaXMgbm90IG51bGwpOworQ1JFQVRFIERPTUFJTiBkb21haW44IGFzIGludCBjaGVj ayh2YWx1ZSA+IDEwKSBERUZBVUxUIHJhbmRvbShtaW49PjEwLCBtYXg9PjEwMCk7CisKK0NSRUFU RSBUQUJMRSB0MyhhIGludCk7CitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNSBk ZWZhdWx0IDE7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42IGRl ZmF1bHQgTlVMTDsgLS1lcnJvcgorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRvbWFpbjYg ZGVmYXVsdCAxMSArIE5VTEw7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBk b21haW43IGRlZmF1bHQgMTEgKyBOVUxMOyAtLWVycm9yCisKK0FMVEVSIFRBQkxFIHQzIEFERCBD T0xVTU4gYiBkb21haW42OyAtLW9rLiBiZWNhdXNlIHQzIGlzIGVtcHR5CitBTFRFUiBUQUJMRSB0 MyBBREQgQ09MVU1OIGMgZG9tYWluNzsgLS1vay4gYmVjYXVzZSB0MyBpcyBlbXB0eQorQUxURVIg VEFCTEUgdDMgQUREIENPTFVNTiBkIGRvbWFpbjU7IC0tb2suIGJlY2F1c2UgdDMgaXMgZW1wdHkK K0lOU0VSVCBJTlRPIHQzIGRlZmF1bHQgdmFsdWVzOyAtLWVycm9yCitJTlNFUlQgSU5UTyB0Myhh LGIsYyxkKSB2YWx1ZXMoMSwyLCAzLCAxMik7IC0tb2sKKworRFJPUCBUQUJMRSB0MzsKK0NSRUFU RSBUQUJMRSB0MyhhIGludCk7CitJTlNFUlQgSU5UTyB0MyBWQUxVRVMoMSksKDIpOworCitBTFRF UiBUQUJMRSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNTsgLS10YWJsZSByZXdyaXRlLCB0aGVuIGZh aWwKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42OyAtLXRhYmxlIHJld3JpdGUs IHRoZW4gZmFpbAorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRvbWFpbjc7IC0tdGFibGUg cmV3cml0ZSwgdGhlbiBmYWlsCisKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW41 IGRlZmF1bHQgMTI7IC0tbm8gdGFibGUgcmV3cml0ZQorQUxURVIgVEFCTEUgdDMgQUREIENPTFVN TiBjIGRvbWFpbjYgZGVmYXVsdCAxMzsgLS1ubyB0YWJsZSByZXdyaXRlCitBTFRFUiBUQUJMRSB0 MyBBREQgQ09MVU1OIGQgZG9tYWluNyBkZWZhdWx0IDE0OyAtLW5vIHRhYmxlIHJld3JpdGUKKy0t bm8gdGFibGUgcmV3cml0ZSwgd2UgY29uc2lkZXIgZXhwbGljaXQgY29sdW1uIGRlZmF1bHQgZXhw cmVzc2lvbiwgbm90IHRoZSBkb21haW4gZGVmYXVsdAorQUxURVIgVEFCTEUgdDMgQUREIENPTFVN TiBlIGRvbWFpbjggZGVmYXVsdCAxNTsKKworU0VMRUNUIGF0dG51bSwgYXR0bmFtZSwgYXR0aGFz bWlzc2luZywgYXR0aGFzZGVmLCBhdHRtaXNzaW5ndmFsCitGUk9NIHBnX2F0dHJpYnV0ZQorV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndDMnOjpyZWdjbGFzcyBBTkQgYXR0aXNkcm9w cGVkIGlzIGZhbHNlCitPUkRFUiBCWSBhdHRudW07CisKKy0tdGFibGUgcmV3cml0ZS4gd2UgYXJl IGFwcGx5aW5nIGRvbWFpbiB2b2xhdGlsZSBkZWZhdWx0IGV4cHJlc2lvbgorQUxURVIgVEFCTEUg dDMgQUREIENPTFVNTiBmIGRvbWFpbjg7CisKK1NFTEVDVCBhdHRudW0sIGF0dG5hbWUsIGF0dGhh c21pc3NpbmcsIGF0dGhhc2RlZiwgYXR0bWlzc2luZ3ZhbAorRlJPTSBwZ19hdHRyaWJ1dGUKK1dI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3QzJzo6cmVnY2xhc3MKK09SREVSIEJZIGF0 dG51bTsKKworU0VMRUNUIGEsYixjLGQsZSxmID4gMTAgYXMgZl9vayBGUk9NIHQzIE9SREVSIEJZ IGE7CisKKworLS0tLS0tdGVzdCB0YWJsZSByZXdyaXRlIGZvciB2b2xhdGlsZSBkb21haW4gY29u c3RyYWludHMuCitDUkVBVEUgRE9NQUlOIGRvbWFpbjkgYXMgaW50IGNoZWNrKCh2YWx1ZSArIHJh bmRvbShtaW49PjExOjppbnQsIG1heD0+MTEpKSA+IDEyKTsgLS12b2xhdGlsZQorQ1JFQVRFIERP TUFJTiBkb21haW4xMCBhcyBpbnQgY2hlY2soKHZhbHVlICsgcmFuZG9tKG1pbj0+MTE6OmludCwg bWF4PT4xMSkpID4gMTIpIGRlZmF1bHQgMTsgLS12b2xhdGlsZQorCitDUkVBVEUgVEFCTEUgdDQo YSBpbnQpOworSU5TRVJUIElOVE8gdDQgVkFMVUVTKDEpLCgyKTsKKworLS1hbGwgdGhlc2Ugd2ls bCB0YWJsZSByZXdyaXRlIGFuZCBiZSBvay4KK0FMVEVSIFRBQkxFIHQ0IEFERCBDT0xVTU4gYiBk b21haW45OyAtLWRlZmF1bHQgdG8gTlVMTAorQUxURVIgVEFCTEUgdDQgQUREIENPTFVNTiBjIGRv bWFpbjkgZGVmYXVsdCAxNDsKKworU0VMRUNUIENPVU5UKCopIEFTIGV4cGVjdF96ZXJvCitGUk9N IHBnX2F0dHJpYnV0ZQorV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndDQnOjpyZWdj bGFzcyBBTkQgYXR0bWlzc2luZ3ZhbCBJUyBOT1QgTlVMTDsKKwogRFJPUCBUQUJMRSB0MjsKK0RS T1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQ0OwogRFJPUCBET01BSU4gZG9tYWluMTsKIERST1Ag RE9NQUlOIGRvbWFpbjI7CiBEUk9QIERPTUFJTiBkb21haW4zOwogRFJPUCBET01BSU4gZG9tYWlu NDsKK0RST1AgRE9NQUlOIGRvbWFpbjU7CitEUk9QIERPTUFJTiBkb21haW42OworRFJPUCBET01B SU4gZG9tYWluNzsKK0RST1AgRE9NQUlOIGRvbWFpbjg7CitEUk9QIERPTUFJTiBkb21haW45Owor RFJPUCBET01BSU4gZG9tYWluMTA7CiBEUk9QIEZVTkNUSU9OIGZvbyhJTlQpOwogCiAtLSBGYWxs IGJhY2sgdG8gZnVsbCByZXdyaXRlIGZvciB2b2xhdGlsZSBleHByZXNzaW9ucwotLSAKMi4zNC4x Cgo= --0000000000001d950a062fa3c7dc--