Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mxSuH-00077H-Ul for pgsql-admin@arkaria.postgresql.org; Wed, 15 Dec 2021 11:57:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mxSuG-0004ph-3J for pgsql-admin@arkaria.postgresql.org; Wed, 15 Dec 2021 11:57:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mxSuF-0004pX-Dl for pgsql-admin@lists.postgresql.org; Wed, 15 Dec 2021 11:57:11 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mxSuC-0000lm-DA for pgsql-admin@lists.postgresql.org; Wed, 15 Dec 2021 11:57:10 +0000 Received: by mail-wm1-x335.google.com with SMTP id z206so2169315wmc.1 for ; Wed, 15 Dec 2021 03:57:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cTJrq58Sy+IqGndFNFJsXO3LGpcMm0tSgpCQ0StIaKQ=; b=HsgChBoDgBa77gwH0tlOLSD5EH3nv7rgKzsKkktimu1CUJTaJJ8oy+7KlJuh+jEF3l H8ERAZTBEE0VzAKCK1eAPo+gV06SS5tBh6Y7llqSb28HHg57fGocBEUi6RiaBkITwRjx NB1KDq2xm0koOOMq5z0i9d9cjSF8NsOABzvVjvoIUPgyHGLbUHM3cBQ7RNKfy8L0JfVy XexD9xV6pYaVCM4GySKblhLvLY+rNmBv04bJ9uTk23V/DN/ssHsNVRg+LFoE44yZ6IMB k17ltScq/PtdtI/saetwHsxWQ+4IxT8TLEgKs5C5XGInTd++TNFKoD7hDUTIW/dUp4aA HP9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cTJrq58Sy+IqGndFNFJsXO3LGpcMm0tSgpCQ0StIaKQ=; b=uqdojwqx5THs1AxUS5BJKsT07OX42L2VN3fA24eskGrnIl1XOwHmd9jWQtOMxMU+gt gz7jc5w8q9Oi7B8f3z08m/RWFrm8yGvChvVBufNwQXtVD+ciULNbCEtAIq+5Wi91Mlm9 jfnihfB3YaVytt1HAtSVd+fcrAPewYE5ham1IN7xxGaFQ4jum2H9pH/DzXQx36ZUPENd tZbhHffSxRbs9ynyCemkqQHLRorve7jgiJO//x+wln11KZgq7GSU0CSltN4SdOWbSKbo Wl77nJlXsQoDiYxfHTCrlf97MxtSEmwE+14rzPW4up/mgHB0hyxvjPphxivRIEvJSlKR 0ezg== X-Gm-Message-State: AOAM532NvmHEogB4TdC7KCY109Pexq/SO0SqHtLe8NFbM+Qd0jyUc0xx OSj+r6JFh4KEMtuIgcu3qR1FKNsL8zjirYaDi0WvLcLaF/M= X-Google-Smtp-Source: ABdhPJz8hEF4IblJweOqIExQFfsajTRCgHdTbIRK8p6/ZuDzNswTK4KiaP+KQUdugdKIEFXaR3wyh8N9jHjQjBa6QuY= X-Received: by 2002:a7b:c1cb:: with SMTP id a11mr4249144wmj.30.1639569425958; Wed, 15 Dec 2021 03:57:05 -0800 (PST) MIME-Version: 1.0 References: <5B05AAB3-8FAB-45E2-ABE5-277E4C0902E8@sqlexec.com> In-Reply-To: From: Daulat Date: Wed, 15 Dec 2021 17:26:54 +0530 Message-ID: Subject: Re: [EXTERNAL] Re: Limits user connection in pgbouncer To: Achilleas Mantzios Cc: pgsql-admin Content-Type: multipart/mixed; boundary="0000000000003820f305d32e01f9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003820f305d32e01f9 Content-Type: multipart/alternative; boundary="0000000000003820f105d32e01f7" --0000000000003820f105d32e01f7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks ! max_connections =3D100 in postgresql.conf I am attaching my .ini file , help where I need to change . The Goal is to limit the number of connections from a specific app - when the db name is db1 and user is user1, only 55 connections are allowed (max_db_connections). On Wed, Dec 15, 2021 at 2:58 PM Achilleas Mantzios < achill@matrix.gatewaynet.com> wrote: > On 14/12/21 6:25 =CE=BC.=CE=BC., Daulat wrote: > > still i am able to login more than 2 connections after making changes > under the database section . > [databases] > > db1 =3D host=3Dlocalhost port=3D5432 dbname=3Ddb1 pool_mode =3D transacti= on > pool_size=3D2 max_db_connections=3D2 user=3Duser1 > > Thanks > > The point with pgbouncer is to map N user connections to n DB connections > where N >> n. So pgbouncer will allow up to max_client_conn in total, but > every user (user1) will have max 2 real DB connections to this pgbouncer = db > (db1). > Makes sense? > > > On Tue, Dec 14, 2021 at 7:16 PM Michaeldba@sqlexec.com < > Michaeldba@sqlexec.com> wrote: > >> Do it under the databases section >> >> Sent from my iPad >> >> On Dec 14, 2021, at 2:28 AM, Daulat wrote: >> >> =EF=BB=BF >> Hi Michael , >> >> I have tried by setting the below entry under the users section but stil= l >> I am able to make more than 2 connections. Please suggest what I am miss= ing >> here ? >> >> [users] >> user1 =3D pool_mode=3Dtransaction max_user_connections=3D2 >> >> Here are my other details: >> >> [databases] >> db1 =3D host=3Dlocalhost dbname=3Ddb1 >> >> logfile =3D /var/log/pgbouncer/pgbouncer.log >> pidfile =3D /var/run/pgbouncer/pgbouncer.pid >> listen_addr =3D * >> listen_port =3D 6432 >> auth_type =3D md5 >> auth_file =3D /etc/pgbouncer/userlist.txt >> admin_users =3D postgres >> pool_mode =3D session >> max_client_conn =3D 300 >> max_db_connections =3D 2 >> max_user_connections =3D 2 >> >> On Mon, Dec 13, 2021 at 6:38 PM MichaelDBA >> wrote: >> >>> Hi all, >>> >>> If you add the user to the database specification, then you can limit >>> connections per user: >>> db1 =3D host=3Dlocalhost dbname=3Ddb1 pool_size=3D2 user=3Dmyuser >>> >>> Regards, >>> Michael Vitale >>> >>> >>> Godfrin, Philippe E wrote on 12/13/2021 7:57 AM: >>> >>> On 13/12/21 10:05 =CF=80.=CE=BC., Daulat wrote: >>> >>> Hello Team, >>> How can we limit the user to make a specific number of connections to >>> the database? >>> >>> Just specify this in the db definition configuration : >>> >>> db1 =3D host=3Dlocalhost dbname=3Ddb1 pool_size=3D2 >>> >>> but it will apply to every user, so that every user's pool will have ma= x >>> 2 connections, not only user1. >>> >>> Alternatively you could set "ALTER ROLE .. CONNECTION LIMIT connlimit " >>> for user1 individually. >>> >>> >>> > > -- > Achilleas Mantzios > DBA, Analyst, IT Lead > IT DEPT > Dynacom Tankers Mgmt > > --0000000000003820f105d32e01f7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks =C2=A0!
max_connections =3D100 in postgresq= l.conf

I am attaching my .ini file , help where I need to change .
=C2=A0
The Goal is to limit the number of connections from a s= pecific app - when the db name is db1 and user is user1, only 55 connection= s are allowed (max_db_connections).

On Wed, Dec 15, 2021 at 2:58 P= M Achilleas Mantzios <ac= hill@matrix.gatewaynet.com> wrote:
=20 =20 =20
On 14/12/21 6:25 =CE=BC.=CE=BC., Daulat wrote:
=20
still i am able to login more than 2 connections after making changes under the database section .=C2=A0
[databases]

db1 =3D host=3Dlocalhost port=3D5432 dbname=3Ddb1 pool_mode =3D transaction pool_size=3D2 max_db_connections=3D2 user=3Duser1

Thanks
The point with pgbouncer is to map N user connections to n DB connections where N >> n. So pgbouncer will allow up to max_client_conn in total, but every user (user1) will have max 2 real DB connections to this pgbouncer db (db1).
Makes sense?

On Tue, Dec 14, 2021 at 7:16 PM Mi= chaeldba@sqlexec.com <Michaeldba@sqlexec.com> wrote:
Do it under the databases section

Sent from my iPad

On Dec 14, 2021, at 2:28 AM, Daulat <daulat.dba@gmail.com> wrote:

=EF=BB=BF
Hi Michael ,

I have tried by setting the below entry under the users section but still I am able to make more than 2 connections. Please suggest what=C2=A0I am missing he= re ?

[users]
user1 =3D pool_mode=3Dtransaction max_user_connections= =3D2

Here are my other details:

[databases]
db1 =3D host=3Dlocalhost dbname=3Ddb1

logfile =3D /var/log/pgbouncer/pgbouncer.log
pidfile =3D /var/run/pgbouncer/pgbouncer.pid
listen_addr =3D *
listen_port =3D 6432
auth_type =3D md5
auth_file =3D /etc/pgbouncer/userlist.txt
admin_users =3D postgres
pool_mode =3D session
max_client_conn =3D 300
max_db_connections =3D 2
max_user_connections =3D 2

On Mon, Dec 13, 202= 1 at 6:38 PM MichaelDBA <MichaelDBA@sqlexec.com> wrote:
Hi all,

If you add the user to the database specification, then you can limit connections per user:
db1 =3D host=3Dlocalhost dbname=3Ddb1 pool_size=3D2 user=3Dmyuser

Regards,
Michael Vitale


Godfrin, Philippe E wrote on 12/13/2021 7:57 AM:
On 13/12/21 10:05 =CF=80.= =CE=BC., Daulat wrote:
Hello Team,
How can we limit the user to=C2=A0 make a specifi= c number of connections to the database?
Just specify this in the db definition configuration :

db1 =3D host=3Dlocalhost dbname=3Ddb1 pool_size=3D2=

but it will apply to every user, so that every user's pool will have max 2 connections, not only user1.

Alternatively you could set "ALTER ROLE .. CONNECTION LIMIT connlimit " for user1 individually.



--=20
Achilleas Mantzios
DBA, Analyst, IT Lead
IT DEPT
Dynacom Tankers Mgmt
--0000000000003820f105d32e01f7-- --0000000000003820f305d32e01f9 Content-Type: application/octet-stream; name="pgbouncer.ini" Content-Disposition: attachment; filename="pgbouncer.ini" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kx7h8whn0 Ozs7DQo7OzsgUGdCb3VuY2VyIGNvbmZpZ3VyYXRpb24gZmlsZQ0KOzs7DQoNCjs7IGRhdGFiYXNl IG5hbWUgPSBjb25uZWN0IHN0cmluZw0KOzsNCjs7IGNvbm5lY3Qgc3RyaW5nIHBhcmFtczoNCjs7 ICAgZGJuYW1lPSBob3N0PSBwb3J0PSB1c2VyPSBwYXNzd29yZD0gYXV0aF91c2VyPQ0KOzsgICBj bGllbnRfZW5jb2Rpbmc9IGRhdGVzdHlsZT0gdGltZXpvbmU9DQo7OyAgIHBvb2xfc2l6ZT0gcmVz ZXJ2ZV9wb29sPSBtYXhfZGJfY29ubmVjdGlvbnM9DQo7OyAgIHBvb2xfbW9kZT0gY29ubmVjdF9x dWVyeT0gYXBwbGljYXRpb25fbmFtZT0NCltkYXRhYmFzZXNdDQo7O3Bvc3RncmVzID0gaG9zdD1s b2NhbGhvc3QgcG9ydD01NDMyIGRibmFtZT1wb3N0Z3Jlcw0KcG9zdGdyZXMgPSBob3N0PWxvY2Fs aG9zdCBkYm5hbWU9cG9zdGdyZXMNCmRiMSA9IGhvc3Q9bG9jYWxob3N0IGRibmFtZT1kYjEgcG9v bF9zaXplPTIgbWF4X2RiX2Nvbm5lY3Rpb25zPTINCg0KOzsgZm9vZGIgb3ZlciBVbml4IHNvY2tl dA0KO2Zvb2RiID0NCg0KOzsgcmVkaXJlY3QgYmFyZGIgdG8gYmF6ZGIgb24gbG9jYWxob3N0DQo7 YmFyZGIgPSBob3N0PWxvY2FsaG9zdCBkYm5hbWU9YmF6ZGINCg0KOzsgYWNjZXNzIHRvIGRlc3Qg ZGF0YWJhc2Ugd2lsbCBnbyB3aXRoIHNpbmdsZSB1c2VyDQo7Zm9yY2VkYiA9IGhvc3Q9bG9jYWxo b3N0IHBvcnQ9MzAwIHVzZXI9YmF6IHBhc3N3b3JkPWZvbyBjbGllbnRfZW5jb2Rpbmc9VU5JQ09E RSBkYXRlc3R5bGU9SVNPIGNvbm5lY3RfcXVlcnk9J1NFTEVDVCAxJw0KDQo7OyB1c2UgY3VzdG9t IHBvb2wgc2l6ZXMNCjtub25kZWZhdWx0ZGIgPSBwb29sX3NpemU9NTAgcmVzZXJ2ZV9wb29sPTEw DQoNCjs7IHVzZSBhdXRoX3VzZXIgd2l0aCBhdXRoX3F1ZXJ5IGlmIHVzZXIgbm90IHByZXNlbnQg aW4gYXV0aF9maWxlDQo7OyBhdXRoX3VzZXIgbXVzdCBleGlzdCBpbiBhdXRoX2ZpbGUNCjsgZm9v ZGIgPSBhdXRoX3VzZXI9YmFyDQoNCjs7IGZhbGxiYWNrIGNvbm5lY3Qgc3RyaW5nDQo7KiA9IGhv c3Q9dGVzdHNlcnZlcg0KDQo7OyBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24NClt1c2Vyc10N Cg0KOzsgQ29uZmlndXJhdGlvbiBzZWN0aW9uDQpbcGdib3VuY2VyXQ0KaWdub3JlX3N0YXJ0dXBf cGFyYW1ldGVycyA9IGV4dHJhX2Zsb2F0X2RpZ2l0cw0KOzs7DQo7OzsgQWRtaW5pc3RyYXRpdmUg c2V0dGluZ3MNCjs7Ow0KDQpsb2dmaWxlID0gL3Zhci9sb2cvcGdib3VuY2VyL3BnYm91bmNlci5s b2cNCnBpZGZpbGUgPSAvdmFyL3J1bi9wZ2JvdW5jZXIvcGdib3VuY2VyLnBpZA0KDQo7OzsNCjs7 OyBXaGVyZSB0byB3YWl0IGZvciBjbGllbnRzDQo7OzsNCg0KOzsgSVAgYWRkcmVzcyBvciAqIHdo aWNoIG1lYW5zIGFsbCBJUHMNCg0KbGlzdGVuX2FkZHIgPSAqDQpsaXN0ZW5fcG9ydCA9IDY0MzIN Cg0KOzsgVW5peCBzb2NrZXQgaXMgYWxzbyB1c2VkIGZvciAtUi4NCjs7IE9uIERlYmlhbiBpdCBz aG91bGQgYmUgL3Zhci9ydW4vcG9zdGdyZXNxbA0KO3VuaXhfc29ja2V0X2RpciA9IC90bXANCjt1 bml4X3NvY2tldF9tb2RlID0gMDc3Nw0KO3VuaXhfc29ja2V0X2dyb3VwID0NCg0KOzs7DQo7Ozsg VExTIHNldHRpbmdzIGZvciBhY2NlcHRpbmcgY2xpZW50cw0KOzs7DQoNCjs7IGRpc2FibGUsIGFs bG93LCByZXF1aXJlLCB2ZXJpZnktY2EsIHZlcmlmeS1mdWxsDQo7Y2xpZW50X3Rsc19zc2xtb2Rl ID0gZGlzYWJsZQ0KDQo7OyBQYXRoIHRvIGZpbGUgdGhhdCBjb250YWlucyB0cnVzdGVkIENBIGNl cnRzDQo7Y2xpZW50X3Rsc19jYV9maWxlID0gPHN5c3RlbSBkZWZhdWx0Pg0KDQo7OyBQcml2YXRl IGtleSBhbmQgY2VydCB0byBwcmVzZW50IHRvIGNsaWVudHMuDQo7OyBSZXF1aXJlZCBmb3IgYWNj ZXB0aW5nIFRMUyBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMuDQo7Y2xpZW50X3Rsc19rZXlfZmls ZSA9DQo7Y2xpZW50X3Rsc19jZXJ0X2ZpbGUgPQ0KDQo7OyBmYXN0LCBub3JtYWwsIHNlY3VyZSwg bGVnYWN5LCA8Y2lwaGVyc3VpdGUgc3RyaW5nPg0KO2NsaWVudF90bHNfY2lwaGVycyA9IGZhc3QN Cg0KOzsgYWxsLCBzZWN1cmUsIHRsc3YxLjAsIHRsc3YxLjEsIHRsc3YxLjIsIHRsc3YxLjMNCjtj bGllbnRfdGxzX3Byb3RvY29scyA9IHNlY3VyZQ0KDQo7OyBub25lLCBhdXRvLCBsZWdhY3kNCjtj bGllbnRfdGxzX2RoZXBhcmFtcyA9IGF1dG8NCg0KOzsgbm9uZSwgYXV0bywgPGN1cnZlIG5hbWU+ DQo7Y2xpZW50X3Rsc19lY2RoY3VydmUgPSBhdXRvDQoNCjs7Ow0KOzs7IFRMUyBzZXR0aW5ncyBm b3IgY29ubmVjdGluZyB0byBiYWNrZW5kIGRhdGFiYXNlcw0KOzs7DQoNCjs7IGRpc2FibGUsIGFs bG93LCByZXF1aXJlLCB2ZXJpZnktY2EsIHZlcmlmeS1mdWxsDQo7c2VydmVyX3Rsc19zc2xtb2Rl ID0gZGlzYWJsZQ0KDQo7OyBQYXRoIHRvIHRoYXQgY29udGFpbnMgdHJ1c3RlZCBDQSBjZXJ0cw0K O3NlcnZlcl90bHNfY2FfZmlsZSA9IDxzeXN0ZW0gZGVmYXVsdD4NCg0KOzsgUHJpdmF0ZSBrZXkg YW5kIGNlcnQgdG8gcHJlc2VudCB0byBiYWNrZW5kLg0KOzsgTmVlZGVkIG9ubHkgaWYgYmFja2Vu ZCBzZXJ2ZXIgcmVxdWlyZSBjbGllbnQgY2VydC4NCjtzZXJ2ZXJfdGxzX2tleV9maWxlID0NCjtz ZXJ2ZXJfdGxzX2NlcnRfZmlsZSA9DQoNCjs7IGFsbCwgc2VjdXJlLCB0bHN2MS4wLCB0bHN2MS4x LCB0bHN2MS4yLCB0bHN2MS4zDQo7c2VydmVyX3Rsc19wcm90b2NvbHMgPSBzZWN1cmUNCg0KOzsg ZmFzdCwgbm9ybWFsLCBzZWN1cmUsIGxlZ2FjeSwgPGNpcGhlcnN1aXRlIHN0cmluZz4NCjtzZXJ2 ZXJfdGxzX2NpcGhlcnMgPSBmYXN0DQoNCjs7IGFsbCwgc2VjdXJlLCB0bHN2MS4wLCB0bHN2MS4x LCB0bHN2MS4yLCB0bHN2MS4zDQo7c2VydmVyX3Rsc19wcm90b2NvbHMgPSBzZWN1cmUNCg0KOzsg ZmFzdCwgbm9ybWFsLCBzZWN1cmUsIGxlZ2FjeSwgPGNpcGhlcnN1aXRlIHN0cmluZz4NCjtzZXJ2 ZXJfdGxzX2NpcGhlcnMgPSBmYXN0DQoNCjs7Ow0KOzs7IEF1dGhlbnRpY2F0aW9uIHNldHRpbmdz DQo7OzsNCg0KOzsgYW55LCB0cnVzdCwgcGxhaW4sIG1kNSwgY2VydCwgaGJhLCBwYW0NCmF1dGhf dHlwZSA9IG1kNQ0KYXV0aF9maWxlID0gL2V0Yy9wZ2JvdW5jZXIvdXNlcmxpc3QudHh0DQoNCjs7 IFBhdGggdG8gSEJBLXN0eWxlIGF1dGggY29uZmlnDQo7YXV0aF9oYmFfZmlsZSA9DQojIyMjI2F1 dGhfaGJhX2ZpbGUgPSAvZXRjL3BnYm91bmNlci9wZ19oYmEuY29uZg0KOzsgUXVlcnkgdG8gdXNl IHRvIGZldGNoIHBhc3N3b3JkIGZyb20gZGF0YWJhc2UuICBSZXN1bHQNCjs7IG11c3QgaGF2ZSAy IGNvbHVtbnMgLSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaGFzaC4NCjthdXRoX3F1ZXJ5ID0gU0VM RUNUIHVzZW5hbWUsIHBhc3N3ZCBGUk9NIHBnX3NoYWRvdyBXSEVSRSB1c2VuYW1lPSQxDQoNCjs7 Ow0KOzs7IFVzZXJzIGFsbG93ZWQgaW50byBkYXRhYmFzZSAncGdib3VuY2VyJw0KOzs7DQoNCjs7 IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHVzZXJzIHdobyBhcmUgYWxsb3dlZCB0byBjaGFuZ2Ug c2V0dGluZ3MNCjthZG1pbl91c2VycyA9IHVzZXIyLCBzb21lYWRtaW4sIG90aGVyYWRtaW4NCmFk bWluX3VzZXJzID0gcG9zdGdyZXMsZHJzZGczNTQ5DQo7OyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv ZiB1c2VycyB3aG8gYXJlIGp1c3QgYWxsb3dlZCB0byB1c2UgU0hPVyBjb21tYW5kDQo7c3RhdHNf dXNlcnMgPSBzdGF0cywgcm9vdA0Kc3RhdHNfdXNlcnMgPSBwb3N0Z3Jlcyxyb290LGRyc2RnMzU0 OSxzdGF0cw0KOzs7DQo7OzsgUG9vbGVyIHBlcnNvbmFsaXR5IHF1ZXN0aW9ucw0KOzs7DQoNCjs7 OyBQb29sZXIgcGVyc29uYWxpdHkgcXVlc3Rpb25zDQo7OzsNCg0KOzsgV2hlbiBzZXJ2ZXIgY29u bmVjdGlvbiBpcyByZWxlYXNlZCBiYWNrIHRvIHBvb2w6DQo7OyAgIHNlc3Npb24gICAgICAtIGFm dGVyIGNsaWVudCBkaXNjb25uZWN0cyAoZGVmYXVsdCkNCjs7ICAgdHJhbnNhY3Rpb24gIC0gYWZ0 ZXIgdHJhbnNhY3Rpb24gZmluaXNoZXMNCjs7ICAgc3RhdGVtZW50ICAgIC0gYWZ0ZXIgc3RhdGVt ZW50IGZpbmlzaGVzDQo7O3Bvb2xfbW9kZSA9IHNlc3Npb24NCnBvb2xfbW9kZSA9IHRyYW5zYWN0 aW9uDQo7OyBRdWVyeSBmb3IgY2xlYW5pbmcgY29ubmVjdGlvbiBpbW1lZGlhdGVseSBhZnRlciBy ZWxlYXNpbmcgZnJvbQ0KOzsgY2xpZW50LiAgTm8gbmVlZCB0byBwdXQgUk9MTEJBQ0sgaGVyZSwg cGdib3VuY2VyIGRvZXMgbm90IHJldXNlDQo7OyBjb25uZWN0aW9ucyB3aGVyZSB0cmFuc2FjdGlv biBpcyBsZWZ0IG9wZW4uDQo7c2VydmVyX3Jlc2V0X3F1ZXJ5ID0gRElTQ0FSRCBBTEwNCg0KOzsg V2hldGhlciBzZXJ2ZXJfcmVzZXRfcXVlcnkgc2hvdWxkIHJ1biBpbiBhbGwgcG9vbGluZyBtb2Rl cy4gIElmIGl0DQo7OyBpcyBvZmYsIHNlcnZlcl9yZXNldF9xdWVyeSBpcyB1c2VkIG9ubHkgZm9y IHNlc3Npb24tcG9vbGluZy4NCjtzZXJ2ZXJfcmVzZXRfcXVlcnlfYWx3YXlzID0gMA0KDQo7OyBD b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIGlnbm9yZSB3aGVuIGdpdmVuIGlu IHN0YXJ0dXANCjs7IHBhY2tldC4gIE5ld2VyIEpEQkMgdmVyc2lvbnMgcmVxdWlyZSB0aGUgZXh0 cmFfZmxvYXRfZGlnaXRzIGhlcmUuDQo7aWdub3JlX3N0YXJ0dXBfcGFyYW1ldGVycyA9IGV4dHJh X2Zsb2F0X2RpZ2l0cw0KDQo7OyBXaGVuIHRha2luZyBpZGxlIHNlcnZlciBpbnRvIHVzZSwgdGhp cyBxdWVyeSBpcyBydW4gZmlyc3QuDQo7c2VydmVyX2NoZWNrX3F1ZXJ5ID0gc2VsZWN0IDENCg0K OzsgSWYgc2VydmVyIHdhcyB1c2VkIG1vcmUgcmVjZW50bHkgdGhhdCB0aGlzIG1hbnkgc2Vjb25k cyBhZ28sDQo7IHNraXAgdGhlIGNoZWNrIHF1ZXJ5LiAgVmFsdWUgMCBtYXkgb3IgbWF5IG5vdCBy dW4gaW4gaW1tZWRpYXRlbHkuDQo7c2VydmVyX2NoZWNrX2RlbGF5ID0gMzANCg0KOzsgQ2xvc2Ug c2VydmVycyBpbiBzZXNzaW9uIHBvb2xpbmcgbW9kZSBhZnRlciBhIFJFQ09OTkVDVCwgUkVMT0FE LA0KOzsgZXRjLiB3aGVuIHRoZXkgYXJlIGlkbGUgaW5zdGVhZCBvZiBhdCB0aGUgZW5kIG9mIHRo ZSBzZXNzaW9uLg0KO3NlcnZlcl9mYXN0X2Nsb3NlID0gMA0KDQo7OyBVc2UgPGFwcG5hbWUgLSBo b3N0PiBhcyBhcHBsaWNhdGlvbl9uYW1lIG9uIHNlcnZlci4NCjthcHBsaWNhdGlvbl9uYW1lX2Fk ZF9ob3N0ID0gMA0KDQo7OyBQZXJpb2QgZm9yIHVwZGF0aW5nIGFnZ3JlZ2F0ZWQgc3RhdHMuDQoN Cjs7IFBlcmlvZCBmb3IgdXBkYXRpbmcgYWdncmVnYXRlZCBzdGF0cy4NCjtzdGF0c19wZXJpb2Qg PSA2MA0KDQo7OzsNCjs7OyBDb25uZWN0aW9uIGxpbWl0cw0KOzs7DQoNCjs7IFRvdGFsIG51bWJl ciBvZiBjbGllbnRzIHRoYXQgY2FuIGNvbm5lY3QNCjttYXhfY2xpZW50X2Nvbm4gPSAxMDANCm1h eF9jbGllbnRfY29ubiA9IDUwMA0KOzsgRGVmYXVsdCBwb29sIHNpemUuICAyMCBpcyBnb29kIG51 bWJlciB3aGVuIHRyYW5zYWN0aW9uIHBvb2xpbmcNCjs7IGlzIGluIHVzZSwgaW4gc2Vzc2lvbiBw b29saW5nIGl0IG5lZWRzIHRvIGJlIHRoZSBudW1iZXIgb2YNCjs7IG1heCBjbGllbnRzIHlvdSB3 YW50IHRvIGhhbmRsZSBhdCBhbnkgbW9tZW50DQo7O2RlZmF1bHRfcG9vbF9zaXplID0gMjANCmRl ZmF1bHRfcG9vbF9zaXplID0gMjANCjs7IE1pbmltdW0gbnVtYmVyIG9mIHNlcnZlciBjb25uZWN0 aW9ucyB0byBrZWVwIGluIHBvb2wuDQo7bWluX3Bvb2xfc2l6ZSA9IDANCg0KOyBob3cgbWFueSBh ZGRpdGlvbmFsIGNvbm5lY3Rpb24gdG8gYWxsb3cgaW4gY2FzZSBvZiB0cm91YmxlDQo7cmVzZXJ2 ZV9wb29sX3NpemUgPSAwDQo7OyBJZiBhIGNsaWVudHMgbmVlZHMgdG8gd2FpdCBtb3JlIHRoYW4g dGhpcyBtYW55IHNlY29uZHMsIHVzZSByZXNlcnZlDQo7OyBwb29sLg0KO3Jlc2VydmVfcG9vbF90 aW1lb3V0ID0gNQ0KDQo7OyBNYXhpbXVtIG51bWJlciBvZiBzZXJ2ZXIgY29ubmVjdGlvbnMgZm9y IGEgZGF0YWJhc2UNCjttYXhfZGJfY29ubmVjdGlvbnMgPSAwDQo7O21heF9kYl9jb25uZWN0aW9u cyA9IDUwDQo7OyBNYXhpbXVtIG51bWJlciBvZiBzZXJ2ZXIgY29ubmVjdGlvbnMgZm9yIGEgdXNl cg0KO21heF91c2VyX2Nvbm5lY3Rpb25zID0gMA0KOzttYXhfdXNlcl9jb25uZWN0aW9ucyA9IDUw DQo7OyBJZiBvZmYsIHRoZW4gc2VydmVyIGNvbm5lY3Rpb25zIGFyZSByZXVzZWQgaW4gTElGTyBt YW5uZXINCjtzZXJ2ZXJfcm91bmRfcm9iaW4gPSAwDQoNCjs7Ow0KOzs7IExvZ2dpbmcNCjs7Ow0K OzsgU3lzbG9nIHNldHRpbmdzDQo7c3lzbG9nID0gMA0KO3N5c2xvZ19mYWNpbGl0eSA9IGRhZW1v bg0KO3N5c2xvZ19pZGVudCA9IHBnYm91bmNlcg0KDQo7OyBsb2cgaWYgY2xpZW50IGNvbm5lY3Rz IG9yIHNlcnZlciBjb25uZWN0aW9uIGlzIG1hZGUNCjtsb2dfY29ubmVjdGlvbnMgPSAxDQoNCjs7 IGxvZyBpZiBhbmQgd2h5IGNvbm5lY3Rpb24gd2FzIGNsb3NlZA0KO2xvZ19kaXNjb25uZWN0aW9u cyA9IDENCg0KOzsgbG9nIGVycm9yIG1lc3NhZ2VzIHBvb2xlciBzZW5kcyB0byBjbGllbnRzDQo7 bG9nX3Bvb2xlcl9lcnJvcnMgPSAxDQoNCjs7IHdyaXRlIGFnZ3JlZ2F0ZWQgc3RhdHMgaW50byBs b2cNCjtsb2dfc3RhdHMgPSAxDQoNCjs7IExvZ2dpbmcgdmVyYm9zaXR5LiAgU2FtZSBhcyAtdiBz d2l0Y2ggb24gY29tbWFuZCBsaW5lLg0KO3ZlcmJvc2UgPSAwDQoNCjs7Ow0KOzs7IFRpbWVvdXRz DQo7OzsNCg0KOzsgQ2xvc2Ugc2VydmVyIGNvbm5lY3Rpb24gaWYgaXRzIGJlZW4gY29ubmVjdGVk IGxvbmdlci4NCjtzZXJ2ZXJfbGlmZXRpbWUgPSAzNjAwDQoNCjs7IENsb3NlIHNlcnZlciBjb25u ZWN0aW9uIGlmIGl0cyBub3QgYmVlbiB1c2VkIGluIHRoaXMgdGltZS4gIEFsbG93cw0KOzsgdG8g Y2xlYW4gdW5uZWNlc3NhcnkgY29ubmVjdGlvbnMgZnJvbSBwb29sIGFmdGVyIHBlYWsuDQo7c2Vy dmVyX2lkbGVfdGltZW91dCA9IDYwMA0KDQo7OyBDYW5jZWwgY29ubmVjdGlvbiBhdHRlbXB0IGlm IHNlcnZlciBkb2VzIG5vdCBhbnN3ZXIgdGFrZXMgbG9uZ2VyLg0KO3NlcnZlcl9jb25uZWN0X3Rp bWVvdXQgPSAxNQ0KDQo7OyBJZiBzZXJ2ZXIgbG9naW4gZmFpbGVkIChzZXJ2ZXJfY29ubmVjdF90 aW1lb3V0IG9yIGF1dGggZmFpbHVyZSkNCjs7IHRoZW4gd2FpdCB0aGlzIG1hbnkgc2Vjb25kLg0K O3NlcnZlcl9sb2dpbl9yZXRyeSA9IDE1DQoNCjs7IERhbmdlcm91cy4gIFNlcnZlciBjb25uZWN0 aW9uIGlzIGNsb3NlZCBpZiBxdWVyeSBkb2VzIG5vdCByZXR1cm4gaW4NCjs7IHRoaXMgdGltZS4g IFNob3VsZCBiZSB1c2VkIHRvIHN1cnZpdmUgbmV0d29yayBwcm9ibGVtcywgX25vdF8gYXMNCjs7 IHN0YXRlbWVudF90aW1lb3V0LiAoZGVmYXVsdDogMCkNCjtxdWVyeV90aW1lb3V0ID0gMA0KDQo7 OyBEYW5nZXJvdXMuICBDbGllbnQgY29ubmVjdGlvbiBpcyBjbG9zZWQgaWYgdGhlIHF1ZXJ5IGlz IG5vdA0KOzsgYXNzaWduZWQgdG8gYSBzZXJ2ZXIgaW4gdGhpcyB0aW1lLiAgU2hvdWxkIGJlIHVz ZWQgdG8gbGltaXQgdGhlDQo7OyBudW1iZXIgb2YgcXVldWVkIHF1ZXJpZXMgaW4gY2FzZSBvZiBh IGRhdGFiYXNlIG9yIG5ldHdvcmsNCjs7IGZhaWx1cmUuIChkZWZhdWx0OiAxMjApDQo7cXVlcnlf d2FpdF90aW1lb3V0ID0gMTIwDQoNCjs7IERhbmdlcm91cy4gIENsaWVudCBjb25uZWN0aW9uIGlz IGNsb3NlZCBpZiBubyBhY3Rpdml0eSBpbiB0aGlzDQo7OyB0aW1lLiAgU2hvdWxkIGJlIHVzZWQg dG8gc3Vydml2ZSBuZXR3b3JrIHByb2JsZW1zLiAoZGVmYXVsdDogMCkNCjtjbGllbnRfaWRsZV90 aW1lb3V0ID0gMA0KDQo7OyBEaXNjb25uZWN0IGNsaWVudHMgd2hvIGhhdmUgbm90IG1hbmFnZWQg dG8gbG9nIGluIGFmdGVyIGNvbm5lY3RpbmcNCjs7IGluIHRoaXMgbWFueSBzZWNvbmRzLg0KO2Ns aWVudF9sb2dpbl90aW1lb3V0ID0gNjANCg0KOzsgQ2xlYW4gYXV0b21hdGljYWxseSBjcmVhdGVk IGRhdGFiYXNlIGVudHJpZXMgKHZpYSAiKiIpIGlmIHRoZXkgc3RheQ0KOzsgdW51c2VkIGluIHRo aXMgbWFueSBzZWNvbmRzLg0KOyBhdXRvZGJfaWRsZV90aW1lb3V0ID0gMzYwMA0KDQo7OyBDbG9z ZSBjb25uZWN0aW9ucyB3aGljaCBhcmUgaW4gIklETEUgaW4gdHJhbnNhY3Rpb24iIHN0YXRlIGxv bmdlcg0KOzsgdGhhbiB0aGlzIG1hbnkgc2Vjb25kcy4NCjtpZGxlX3RyYW5zYWN0aW9uX3RpbWVv dXQgPSAwDQoNCjs7IEhvdyBsb25nIFNVU1BFTkQvLVIgd2FpdHMgZm9yIGJ1ZmZlciBmbHVzaCBi ZWZvcmUgY2xvc2luZw0KOzsgY29ubmVjdGlvbi4NCjtzdXNwZW5kX3RpbWVvdXQgPSAxMA0KDQo7 OzsNCjs7OyBMb3ctbGV2ZWwgdHVuaW5nIG9wdGlvbnMNCjs7Ow0KOzsgYnVmZmVyIGZvciBzdHJl YW1pbmcgcGFja2V0cw0KO3BrdF9idWYgPSA0MDk2DQoNCjs7IG1hbiAyIGxpc3Rlbg0KO2xpc3Rl bl9iYWNrbG9nID0gMTI4DQoNCjs7IE1heCBudW1iZXIgcGt0X2J1ZiB0byBwcm9jZXNzIGluIG9u ZSBldmVudCBsb29wLg0KO3NidWZfbG9vcGNudCA9IDUNCg0KOzsgTWF4aW11bSBQb3N0Z3JlU1FM IHByb3RvY29sIHBhY2tldCBzaXplLg0KO21heF9wYWNrZXRfc2l6ZSA9IDIxNDc0ODM2NDcNCg0K OzsgU2V0IFNPX1JFVVNFUE9SVCBzb2NrZXQgb3B0aW9uDQo7c29fcmV1c2Vwb3J0ID0gMA0KDQo7 OyBuZXR3b3JraW5nIG9wdGlvbnMsIGZvciBpbmZvOiBtYW4gNyB0Y3ANCg0KOzsgTGludXg6IE5v dGlmeSBwcm9ncmFtIGFib3V0IG5ldyBjb25uZWN0aW9uIG9ubHkgaWYgdGhlcmUgaXMgYWxzbw0K OzsgZGF0YSByZWNlaXZlZC4gIChTZWNvbmRzIHRvIHdhaXQuKSAgT24gTGludXggdGhlIGRlZmF1 bHQgaXMgNDUsIG9uDQo7OyBvdGhlciBPUydlcyAwLg0KO3RjcF9kZWZlcl9hY2NlcHQgPSAwDQoN Cjs7IEluLWtlcm5lbCBidWZmZXIgc2l6ZSAoTGludXggZGVmYXVsdDogNDA5NikNCjt0Y3Bfc29j a2V0X2J1ZmZlciA9IDANCg0KOzsgd2hldGhlciB0Y3Aga2VlcGFsaXZlIHNob3VsZCBiZSB0dXJu ZWQgb24gKDAvMSkNCjt0Y3Bfa2VlcGFsaXZlID0gMQ0KDQo7OyBUaGUgZm9sbG93aW5nIG9wdGlv bnMgYXJlIExpbnV4LXNwZWNpZmljLiAgVGhleSBhbHNvIHJlcXVpcmUNCjs7IHRjcF9rZWVwYWxp dmU9MS4NCg0KOzsgQ291bnQgb2Yga2VlcGFsaXZlIHBhY2tldHMNCjt0Y3Bfa2VlcGNudCA9IDAN Cg0KOzsgSG93IGxvbmcgdGhlIGNvbm5lY3Rpb24gY2FuIGJlIGlkbGUgYmVmb3JlIHNlbmRpbmcg a2VlcGFsaXZlDQo7OyBwYWNrZXRzDQo7dGNwX2tlZXBpZGxlID0gMA0KOzsgVGhlIHRpbWUgYmV0 d2VlbiBpbmRpdmlkdWFsIGtlZXBhbGl2ZSBwcm9iZXMNCjt0Y3Bfa2VlcGludHZsID0gMA0KDQo7 OyBIb3cgbG9uZyBtYXkgdHJhbnNtaXR0ZWQgZGF0YSByZW1haW4gdW5hY2tub3dsZWRnZWQgYmVm b3JlIFRDUA0KOzsgY29ubmVjdGlvbiBpcyBjbG9zZWQgKGluIG1pbGxpc2Vjb25kcykNCjt0Y3Bf dXNlcl90aW1lb3V0ID0gMA0KDQo7OyBETlMgbG9va3VwIGNhY2hpbmcgdGltZQ0KO2Ruc19tYXhf dHRsID0gMTUNCg0KOzsgRE5TIHpvbmUgU09BIGxvb2t1cCBwZXJpb2QNCjtkbnNfem9uZV9jaGVj a19wZXJpb2QgPSAwDQoNCjs7IEROUyBuZWdhdGl2ZSByZXN1bHQgY2FjaGluZyB0aW1lDQo7ZG5z X254ZG9tYWluX3R0bCA9IDE1DQoNCjs7IEN1c3RvbSByZXNvbHYuY29uZiBmaWxlLCB0byBzZXQg Y3VzdG9tIEROUyBzZXJ2ZXJzIG9yIG90aGVyIG9wdGlvbnMNCjs7IChkZWZhdWx0OiBlbXB0eSA9 IHVzZSBPUyBzZXR0aW5ncykNCjtyZXNvbHZfY29uZiA9IC9ldGMvcGdib3VuY2VyL3Jlc29sdi5j b25mDQoNCjs7Ow0KOzs7IFJhbmRvbSBzdHVmZg0KOzs7DQoNCjs7IEhhY2tpc2ggc2VjdXJpdHkg ZmVhdHVyZS4gIEhlbHBzIGFnYWluc3QgU1FMIGluamVjdGlvbjogd2hlbiBQUWV4ZWMNCjs7IGlz IGRpc2FibGVkLCBtdWx0aS1zdGF0ZW1lbnQgY2Fubm90IGJlIG1hZGUuDQo7ZGlzYWJsZV9wcWV4 ZWMgPSAwDQoNCjs7IENvbmZpZyBmaWxlIHRvIHVzZSBmb3IgbmV4dCBSRUxPQUQvU0lHSFVQDQo7 OyBCeSBkZWZhdWx0IGNvbnRhaW5zIGNvbmZpZyBmaWxlIGZyb20gY29tbWFuZCBsaW5lLg0KO2Nv bmZmaWxlDQoNCjs7IFdpbmRvd3Mgc2VydmljZSBuYW1lIHRvIHJlZ2lzdGVyIGFzLiAgam9iX25h bWUgaXMgYWxpYXMgZm9yDQo7OyBzZXJ2aWNlX25hbWUsIHVzZWQgYnkgc29tZSBTa3l0b29scyBz Y3JpcHRzLg0KO3NlcnZpY2VfbmFtZSA9IHBnYm91bmNlcg0KO2pvYl9uYW1lID0gcGdib3VuY2Vy DQoNCiJwZ2JvdW5jZXIuaW5pIiAzNjBMLCA5ODQyQyAgICAgICAgICAgIA== --0000000000003820f305d32e01f9--