X-Original-To: pgsql-interfaces-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [64.117.224.193]) by svr1.postgresql.org (Postfix) with ESMTP id 2DFBC310268 for ; Fri, 27 Jun 2003 15:19:05 +0000 (GMT) Received: from svr1.postgresql.org ([64.117.224.193]) by localhost (svr1.postgresql.org [64.117.224.193]) (amavisd-new, port 10024) with ESMTP id 92407-02 for ; Fri, 27 Jun 2003 12:18:54 -0300 (ADT) Received: from ms-smtp-01.tampabay.rr.com (ms-smtp-01.tampabay.rr.com [65.32.1.43]) by svr1.postgresql.org (Postfix) with ESMTP id E2C43310113 for ; Fri, 27 Jun 2003 12:18:48 -0300 (ADT) Received: from shamrock (121.83.35.65.cfl.rr.com [65.35.83.121]) by ms-smtp-01.tampabay.rr.com (8.12.5/8.12.5) with ESMTP id h5RFIaqM006788; Fri, 27 Jun 2003 11:18:37 -0400 (EDT) Date: Fri, 27 Jun 2003 11:18:35 -0400 From: Jim Parker To: valval@porta.net Cc: interfaces Subject: Re: ECPG examples Message-ID: <20030627111835.C354@shamrock.cfl.rr.com\000> References: <199901022201.35635.valval@porta.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_liOOAslEiF7prF" Content-Transfer-Encoding: 8bit In-Reply-To: <199901022201.35635.valval@porta.net>; from valval@porta.net on Sat, Jan 02, 1999 at 22:01:35 -0500 X-Mailer: Balsa 1.2.4 Lines: 532 X-Archive-Number: 200306/100 X-Sequence-Number: 4311 --=_liOOAslEiF7prF Content-Type: text/plain; format=flowed; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Here are some example files I wrote with the help of the book: Neil Matthew, and Richard Stones; "Profesional Linux Programming"; Wrox Press Ltd., Birmingham, UK; 2000 cheers, Jim Parker BTW I appologize to the list for the number and length of the files. If someone could add them to a tutorial or other documentation, that would be great. The ECPG docs are limited at best :-( On 1999.01.02 22:01 Christian Valverde wrote: > im trying to build some objects to interact with QT dialog i just maid > . > please could anypne point me a site where to see examples on ECPG > im actually interested in examples of reciving data fron databases . i > already > send data to pg but cant receive data form pg . > -- > nver let the bed bug bite > > ---------------------------(end of > broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > --=_liOOAslEiF7prF Content-Type: text/x-makefile; charset=us-ascii Content-Disposition: attachment; filename=Makefile # # Makefile for GtkCAD database module # all: # The compiler of choice CC = gcc # Installation directory INSTDIR = . # Include file(s): INCLUDE = -I../include PG_INC = -I/usr/include/postgresql GTK_INC = -I/usr/include/gtk-1.2 # Options for development CFLAGS = -g -Wall -ansi `gtk-config --cflags` # Options for release # CFLAGS = -O2 -Wall -ansi `gtk-config --cflags` # GTK+ library GTKLIB = `gtk-config --libs` # LIBRARIES LIBS = -lecpg -lpq `gtk-config --libs` # Test object files # OBJS = test_db_ecpg.o \ test_createdb_ecpg.o \ test_get_ecpg.o \ test_edit_ecpg.o \ test_insert_ecpg.o # Suffix rule to make a .c file from a .pgc file %.c: %.pgc ecpg -t $(PG_INC) -o $@ $< # Suffix rule to make a object file from a .c file %.o: %.c $(CC) -c $(PG_INC) $(CFLAGS) -o $@ $< # Make the executable test_db: $(OBJS) $(CC) $(LIBS) -o test_db $(OBJS) clean: rm ./*.o rm test_db --=_liOOAslEiF7prF Content-Type: text/x-c Content-Disposition: attachment; filename="test.h" /* GtkCAD - A free modular CAD/CAE/CAM software * * Copyright (C) 2000-2002 H. James Parker * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later * version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* --- test.h --- * * Change Log: * * 13 Mar 02 - Created file; */ /* * --- Include files */ #include #include #include #include #include /* * --- Define Statements */ #define SUCCESS 0 #define FAILURE 1 #define SMALL 1.0 #define NORMAL 2.0 #define BIG 3.0 /* * --- Data structures */ typedef struct { int color; int size; int part; int group; int layer; } typCurrent; typedef struct { int id; float x; float y; float z; int saved; int modified; int deleted; } typPoint; /* * --- Function prototypes */ int db_get_points (void); int db_process_point_query (void); int db_find_point (int point_id); int db_add_point (typPoint *point); int db_edit_point (typPoint *point); int db_delete_point (int point_id); int db_connect_ecpg (char *database); int db_cleanup (void); int db_createdb (char *dbname); int db_save (void); int db_selectdb (void); GSList *insert_point (GSList *list, gint id , gfloat x, gfloat y, gfloat z, int saved, int modified, int deleted); /* * --- Internal Global Variables */ extern typPoint point; extern typCurrent currentType; extern GSList *points; extern GSList *pnode; extern typPoint *point_t; extern char server[50]; extern char database[25]; extern char connection[25]; extern char login[25]; extern char password[25]; --=_liOOAslEiF7prF Content-Type: application/octet-stream; charset=us-ascii Content-Disposition: attachment; filename="test_createdb_ecpg.pgc" Content-Transfer-Encoding: base64 LyogR3RrQ0FEIC0gQSBmcmVlIG1vZHVsYXIgQ0FEL0NBRS9DQU0gc29mdHdh cmUKICoKICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgSC4gSmFtZXMgUGFy a2VyIDxob3BleWVAY2ZsLnJyLmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli cmFyeSBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciAKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgCiAq IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCAKICogUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogKiBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KICovCgovKiAtLS0gdGVzdF9kYl9lY3BnLnBnYyAtLS0KICoK ICogQ2hhbmdlIExvZzoKICoKICogMDUgTWFyIDAyIC0gQ3JlYXRlZCBmaWxl OwogKgogKiAxMyBNYXIgMDIgLSBSZW1vdmVkIGZ1bmN0aW9uIGZyb20gbWFp bjsKICovCgovKgogKiAtLS0gSW5jbHVkZSBmaWxlcwogKi8KI2luY2x1ZGUg InRlc3QuaCIKCmV4ZWMgc3FsIGluY2x1ZGUgc3FsY2E7CgoKCi8qCiAqIC0t LSBEZWZpbmUgU3RhdGVtZW50cwogKi8KCgoKLyoKICogLS0tIEdsb2JhbCB2 YXJpYWJsZXMKICovCgpleGVjIHNxbCBiZWdpbiBkZWNsYXJlIHNlY3Rpb247 CgogIGNoYXIgY3JlYXRlX3N0clsyNV07CiAgY2hhciBkYm5hbWUgWzI1XTsK CmV4ZWMgc3FsIGVuZCBkZWNsYXJlIHNlY3Rpb247CgoKCi8qIC0tLSBGdW5j dGlvbnMgYmVnaW4gaGVyZSAtLS0gKi8KCgovKiBkYl9jcmVhdGVkYiAoICkK ICoKICogQ3JlYXRlIGEgbmV3IGRhdGFiYXNlLgogKi8KaW50CmRiX2NyZWF0 ZWRiIChjaGFyICpkYm5hbWUpCnsgCiAgLyogc3RyY3B5IChkYm5hbWUsICJ0 ZXN0MiIpOyAqLwogIHN0cmNweSAoY3JlYXRlX3N0ciwgImNyZWF0ZWRiICIp OwoKICBzdHJjYXQoY3JlYXRlX3N0ciwgZGJuYW1lKTsKCiAgcHJpbnRmKCJB dHRlbXB0aW5nIHRvIGNyZWF0ZSBkYXRhYmFzZSwgJXNcbiIsIGRibmFtZSk7 CiAgc3lzdGVtIChjcmVhdGVfc3RyKTsKICAKICAvKiBleGVjIHNxbCBjb25u ZWN0IHRvIDpkYm5hbWU7ICovCiAgZGJfY29ubmVjdF9lY3BnKGRibmFtZSk7 CgogIGlmIChzcWxjYS5zcWxjb2RlICE9IDApCiAgewogICAgcHJpbnRmKCJj b25uZWN0aW9uIHRvIGRhdGFiYXNlLCAlcywgZmFpbGVkXG4iLCBkYm5hbWUp OwogICAgcmV0dXJuIChGQUlMVVJFKTsKICB9IGVsc2UgewogICAgcHJpbnRm KCJTdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgY29ubmVjdGVkIHRvIGRhdGFi YXNlLCAlc1xuIixkYm5hbWUpOwogIH0KCiAgZXhlYyBzcWwgQkVHSU4gV09S SzsKCiAgZXhlYyBzcWwgQ1JFQVRFIFRBQkxFIFRQb2ludHMgKAogICAgICAg ICAgICAgaWQgICAgICAgICAgaW50MiAgIFBSSU1BUlkgS0VZLAogICAgICAg ICAgICAgeCAgICAgICAgICAgZmxvYXQ0LAogICAgICAgICAgICAgeSAgICAg ICAgICAgZmxvYXQ0LAogICAgICAgICAgICAgeiAgICAgICAgICAgZmxvYXQ0 LAogICAgICAgICAgICAgc2F2ZWQgICAgICAgaW50MiwKICAgICAgICAgICAg IG1vZGlmaWVkICAgIGludDIsCQkJCiAgICAgICAgICAgICBkZWxldGVkICAg ICBpbnQyICk7CgogIGlmIChzcWxjYS5zcWxjb2RlICE9IDApCiAgewogICAg cHJpbnRmKCJDcmVhdGUgdGFibGUsIFRQb2ludHMsIGZhaWxlZFxuIik7CiAg ICByZXR1cm4gKEZBSUxVUkUpOwogIH0KCiAgZXhlYyBzcWwgQ09NTUlUIFdP Uks7CgogIC8qIGV4ZWMgc3FsIGRpc2Nvbm5lY3QgYWxsOyAqLwoKICByZXR1 cm4oU1VDQ0VTUyk7Cn0K --=_liOOAslEiF7prF Content-Type: application/octet-stream; charset=us-ascii Content-Disposition: attachment; filename="test_db_ecpg.pgc" Content-Transfer-Encoding: base64 LyogR3RrQ0FEIC0gQSBmcmVlIG1vZHVsYXIgQ0FEL0NBRS9DQU0gc29mdHdh cmUKICoKICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgSC4gSmFtZXMgUGFy a2VyIDxob3BleWVAY2ZsLnJyLmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli cmFyeSBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciAKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgCiAq IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCAKICogUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogKiBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KICovCgovKiAtLS0gdGVzdF9kYl9lY3BnLnBnYyAtLS0KICoK ICogQ2hhbmdlIExvZzoKICoKICogMTMgTWFyIDAyIC0gQ3JlYXRlZCBmaWxl OwogKgogKiAxNiBNYXIgMDIgLSBBZGRlZCAiZGJfc2F2ZSggKSIgcm91dGlu ZTsKICovCgovKgogKiAtLS0gSW5jbHVkZSBmaWxlcwogKi8KI2luY2x1ZGUg InRlc3QuaCIKCmV4ZWMgc3FsIGluY2x1ZGUgc3FsY2E7CgoKLyoKICogLS0t IERlZmluZSBTdGF0ZW1lbnRzCiAqLwoKCgovKgogKiAtLS0gSW50ZXJuYWwg R2xvYmFsIGRhdGEgc3RydWN0dXJlcwogKi8KCgoKLyoKICogLS0tIEludGVy bmFsIGZ1bmN0aW9uIHByb3RvdHlwZXMKICovCgoKCi8qCiAqIC0tLSBJbnRl cm5hbCBHbG9iYWwgVmFyaWFibGVzCiAqLwoKZXhlYyBzcWwgYmVnaW4gZGVj bGFyZSBzZWN0aW9uOwoKICBpbnQgICBwb2ludF9pZDsKICBmbG9hdCB4Owog IGZsb2F0IHk7CiAgZmxvYXQgejsKICBpbnQgICBzYXZlZDsKICBpbnQgICBt b2RpZmllZDsKICBpbnQgICBkZWxldGVkOwoKICBjaGFyIGNvbm5lY3Rfc3Ry WzI1Nl07CiAgY2hhciBhc19zdHJbMjVdOwogIGNoYXIgdXNlcl9zdHJbMjVd OwogIGNoYXIgdXNpbmdfc3RyWzI1XTsKCiAgY2hhciBkYm5hbWVbMjVdOwog IGNoYXIgY3JlYXRlX3N0clsyNV07CgogIGNoYXIgb3duZXJbMjVdOwogIFZB UkNIQVIgZW5jb2RpbmdbMjVdOwoKZXhlYyBzcWwgZW5kIGRlY2xhcmUgc2Vj dGlvbjsKCmNoYXIgc2VydmVyWzUwXTsKY2hhciBkYXRhYmFzZVsyNV07CmNo YXIgY29ubmVjdGlvblsyNV07CmNoYXIgbG9naW5bMjVdOwpjaGFyIHBhc3N3 b3JkWzI1XTsKCnR5cFBvaW50ICAgcG9pbnQ7CgpHU0xpc3QgICAgKnBvaW50 cyA9IE5VTEw7CkdTTGlzdCAgICAqcG5vZGU7CnR5cFBvaW50ICAqcG9pbnRf dDsKCgoKLyogLS0tIGZ1bmN0aW9ucyBiZWdpbiBoZXJlIC0tLSAqLwoKaW50 Cm1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICBpbnQgaTsKCiAg ZGJfY29ubmVjdF9lY3BnKCJkaWNlIik7CiAgZGJfc2VsZWN0ZGIoICk7Cgog IC8qIC0tLSBDcmVhdGUgZGF0YWJhc2UgYW5kIHRhYmxlcyAtLS0gKi8KICBk Yl9jcmVhdGVkYigidGVzdDIiKTsKCiAgLyogLS0tIENyZWF0ZSBsaW5rZWQg bGlzdCB0byBob2xkIGRhdGEgLS0tICovCiAgZm9yIChpPTA7IGk8MTA7IGkr KykKICB7CiAgICBwb2ludC5pZCA9IGkrMTsKICAgIHBvaW50LnggPSAxMC4w K2k7CiAgICBwb2ludC55ID0gMTAuMCtpOwogICAgcG9pbnQueiA9IDEwLjAr aTsKCiAgICBwb2ludHMgPSBpbnNlcnRfcG9pbnQgKHBvaW50cywgcG9pbnQu aWQsIHBvaW50LngsIHBvaW50LnksIHBvaW50LnosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwgRkFMU0UpOwogIH0KCiAgLyog LS0tIFdyaXRlIGxpbmtlZCBsaXN0IHRvIGRhdGFiYXNlIC0tLSAqLwogIGRi X3NhdmUoICk7CiAKICAvKiAtLS0gUmV0cmlldmUgcG9pbnRzIGZyb20gZGF0 YWJhc2UgaW50byB0aGUgbGlua2VkIGxpc3QgLS0tICovCiAgZGJfZ2V0X3Bv aW50cyggKTsKCiAgLyogLS0tIE1vZGlmeSB0aGUgZGF0YSBpbiB0aGUgZGF0 YWJhc2UgLS0tICovCiAgZm9yIChpPTA7IGk8MTA7IGkrKykKICB7CiAgICBw b2ludC5pZCA9IGkrMTsKICAgIHBvaW50LnggPSAxMC4wK2kgKzI7CiAgICBw b2ludC55ID0gMTAuMCtpICsyOwogICAgcG9pbnQueiA9IDEwLjAraSArMjsK CiAgICBkYl9lZGl0X3BvaW50ICgmcG9pbnQpOwogIH0KCiAgZGJfY29ubmVj dF9lY3BnKCJ0ZXN0MiIpOwoKICAvKiAtLS0gVmVyaWZ5IHRoZSBjb250ZW50 cyBvZiB0aGUgZGF0YWJhc2UgLS0tICovCiAgZGJfZ2V0X3BvaW50cyggKTsK CiAgLyogLS0tIENsb3NlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFz ZSAtLS0gKi8KICBkYl9jbGVhbnVwKCApOwoKICAvKiAtLS0gRXhpdCBwcm9n cmFtIC0tLSAqLwogIHJldHVybihTVUNDRVNTKTsKfQoKCgovKiBkYl9jb25u ZWN0KCkKICoKICogQ29ubmVjdCB0byBhIGRhdGFiYXNlIHVzaW5nIGEgY29u bmVjdCBzdHJpbmcKICovCmludApkYl9jb25uZWN0X2VjcGcoY2hhciAqZGF0 YWJhc2UpCnsKICAvKiBJbnB1dERpYWxvZyAoICk7ICovCgogIHN0cmNweShk Ym5hbWUsIGRhdGFiYXNlKTsKCiAgc3RyY3B5KGNvbm5lY3Rfc3RyLCAidGNw OnBvc3RncmVzcWw6Ly8iKTsKICBzdHJjYXQoY29ubmVjdF9zdHIsICJsb2Nh bGhvc3QiKTsKICBzdHJjYXQoY29ubmVjdF9zdHIsIjo1NDMyLyIpOwogIHN0 cmNhdChjb25uZWN0X3N0ciwgZGF0YWJhc2UpOwoKICBzdHJjcHkoYXNfc3Ry LCAianBhcmtlciIpOwogIHN0cmNweSh1c2VyX3N0ciwgImpwYXJrZXIiKTsK ICBzdHJjcHkodXNpbmdfc3RyLCAicGFzc3dvcmQiKTsKCiAgcHJpbnRmKCJj b25uZWN0IHRvICVzIGFzICVzIHVzZXIgJXMgdXNpbmcgJXNcbiIsIGNvbm5l Y3Rfc3RyLCBhc19zdHIsCiAgICAgICAgIHVzZXJfc3RyLCB1c2luZ19zdHIp OwoKICBleGVjIHNxbCBjb25uZWN0IHRvIDpjb25uZWN0X3N0ciBhcyA6YXNf c3RyIHVzZXIgOnVzZXJfc3RyIAogICAgICAgICAgIHVzaW5nIDp1c2luZ19z dHI7CgogLyogZXhlYyBzcWwgY29ubmVjdCA6ZGJuYW1lOyAqLwoKICBpZiAo c3FsY2Euc3FsY29kZSAhPSAwKQogIHsKICAgIHByaW50ZigiQ29ubmVjdGlv biB0byAlcyBmYWlsZWRcbiIsIGRibmFtZSk7CiAgICByZXR1cm4gKEZBSUxV UkUpOwogIH0KICBlbHNlCiAgewogICAgcHJpbnRmKCJDb25uZWN0aW9uIHRv ICVzIHN1Y2Nlc3NmdWxcbiIsIGRibmFtZSk7CiAgfQogIHJldHVybiAoU1VD Q0VTUyk7Cn0KCgoKLyogZGJfY2xlYW51cCgpCiAqCiAqIERpc2Nvbm5lY3Qg Zm9ybSBhbGwgb3BlbiBkYXRhYmFzZXMKICovCmludApkYl9jbGVhbnVwKHZv aWQpCnsKICBleGVjIHNxbCBDT01NSVQgV09SSzsKICBleGVjIHNxbCBkaXNj b25uZWN0IGFsbDsKCiAgcHJpbnRmKCJEaXNjb25uZWN0ZWQgZnJvbSBhbGwg ZGF0YWJhc2VzXG4iKTsKICByZXR1cm4oU1VDQ0VTUyk7Cn0KCgoKLyogaW5z ZXJ0X3BvaW50ICgpCiAqCiAqIEluc2VydCBwb2ludCBkYXRhIGludG8gbGlu a2VkIGxpc3QKICovCkdTTGlzdCAqCmluc2VydF9wb2ludCAoR1NMaXN0ICps aXN0LCBnaW50IGlkLCBnZmxvYXQgeCwgZ2Zsb2F0IHksIGdmbG9hdCB6LAog ICAgICAgICAgICAgIGludCBzYXZlZCwgaW50IG1vZGlmaWVkLCBpbnQgZGVs ZXRlZCkKewogIHR5cFBvaW50ICp0ZXN0OwogICAgICAgIAogIHRlc3QgPSBn X25ldyAodHlwUG9pbnQsIDEpOwoKICB0ZXN0LT5pZCA9IGlkOwogIHRlc3Qt PnggPSB4OwogIHRlc3QtPnkgPSB5OwogIHRlc3QtPnogPSB6OwogIHRlc3Qt PnNhdmVkID0gc2F2ZWQ7CiAgdGVzdC0+bW9kaWZpZWQgPSBtb2RpZmllZDsK ICB0ZXN0LT5kZWxldGVkID0gZGVsZXRlZDsKCiAgcHJpbnRmKCJJbiBpbnNl cnRfcG9pbnQoKTogICIpOwogIHByaW50ZigiaWQgPSAlZCwgeCA9ICVmLCB5 ID0gJWYsIHogPSAlZlxuIiwgaWQsIHgsIHksIHopOwogICAgICAgIAogIGxp c3QgPSBnX3NsaXN0X2FwcGVuZCAobGlzdCwgdGVzdCk7CgogIHJldHVybiBs aXN0Owp9CgoKLyogZGJfc2F2ZSAoKQogKgogKiByb3V0aW5lIHRvIHNhdmUg dGhlIHZhcmlvdXMgbGlua2VkIGxpc3RzIHRvIHRoZSBkYXRhYmFzZS4gIEFm dGVyIHRoZQogKiBpbnRpYWwgc2F2ZSBpdCBvbmx5IHNhdmVzIHRoZSBsYXRl c3QgYWRkaXRpb25zLgogKi8KaW50CmRiX3NhdmUgKHZvaWQpCnsKICBpbnQg aTsKCiAgZm9yIChpID0gMDsgKHBub2RlID0gZ19zbGlzdF9udGggKHBvaW50 cywgaSkpOyBpKyspCiAgewogICAgcG9pbnRfdCA9IHBub2RlLT5kYXRhOwog ICAgaWYgKHBvaW50X3QtPnNhdmVkID09IEZBTFNFKQogICAgewogICAgICBw b2ludC5pZCA9IHBvaW50X3QtPmlkOwogICAgICBwb2ludC54ID0gcG9pbnRf dC0+eDsKICAgICAgcG9pbnQueSA9IHBvaW50X3QtPnk7CiAgICAgIHBvaW50 LnogPSBwb2ludF90LT56OwoKICAgICAgZGJfYWRkX3BvaW50ICgmcG9pbnQp OwogICAgICBwb2ludF90LT5zYXZlZCA9IFRSVUU7CiAgICB9CiAgfQoKICBy ZXR1cm4oU1VDQ0VTUyk7Cn0KCgppbnQgCmRiX3NlbGVjdGRiKHZvaWQpCnsK ICBleGVjIHNxbCBCRUdJTiBXT1JLOwoKICBleGVjIHNxbCBERUNMQVJFIG15 Y3Vyc29yIENVUlNPUiBGT1IKCVNFTEVDVCBwZ19kYXRhYmFzZS5kYXRuYW1l LCBwZ191c2VyLnVzZW5hbWUKICAgICAgICBGUk9NICAgcGdfZGF0YWJhc2Us IHBnX3VzZXIKCVdIRVJFICBwZ19kYXRhYmFzZS5kYXRkYmEgPSBwZ191c2Vy LnVzZXN5c2lkOwoKICBleGVjIHNxbCBPUEVOIG15Y3Vyc29yOwoKICBleGVj IHNxbCBGRVRDSCBORVhUIElOIG15Y3Vyc29yIGludG8gOmRibmFtZSwgOm93 bmVyOwoKICBpZiAoc3FsY2Euc3FsY29kZSA8IDApCiAgICBmcHJpbnRmKHN0 ZGVyciwgImVycm9yIGNvZGUgJWxkLCBtZXNzYWdlICVzLCByb3dzICVsZCwg d2FybmluZyAlY1xuIiwKCSAgICBzcWxjYS5zcWxjb2RlLCBzcWxjYS5zcWxl cnJtLnNxbGVycm1jLCBzcWxjYS5zcWxlcnJkWzJdLCAKICAgICAgICAgICAg c3FsY2Euc3Fsd2FyblswXSk7CgogIHdoaWxlIChzcWxjYS5zcWxjb2RlID09 IDApCiAgewogICAgaWYgKHNxbGNhLnNxbGNvZGUgPj0gMCkKICAgIHsKICAg ICAgZnByaW50ZihzdGRvdXQsImRhdGFiYXNlOiAlcywgIE93bmVyOiAlc1xu IiwgZGJuYW1lLCBvd25lcik7CiAgICB9CgogICAgZXhlYyBzcWwgRkVUQ0gg TkVYVCBJTiBteWN1cnNvciBpbnRvIDpkYm5hbWUsIDpvd25lcjsKCiAgICBp ZiAoc3FsY2Euc3FsY29kZSA8IDApCiAgICAgIGZwcmludGYoc3RkZXJyLCAi ZXJyb3IgY29kZSAlbGQsIG1lc3NhZ2UgJXMsIHJvd3MgJWxkLCB3YXJuaW5n ICVjXG4iLAogICAgICAgICAgICAgc3FsY2Euc3FsY29kZSwgc3FsY2Euc3Fs ZXJybS5zcWxlcnJtYywgc3FsY2Euc3FsZXJyZFsyXSwKICAgICAgICAgICAg IHNxbGNhLnNxbHdhcm5bMF0pOwogIH0KICBleGVjIHNxbCBDTE9TRSBteWN1 cnNvcjsKICBleGVjIHNxbCBDT01NSVQgV09SSzsKCiAgcmV0dXJuIChTVUND RVNTKTsKfQ== --=_liOOAslEiF7prF Content-Type: application/octet-stream; charset=us-ascii Content-Disposition: attachment; filename="test_edit_ecpg.pgc" Content-Transfer-Encoding: base64 LyogR3RrQ0FEIC0gQSBmcmVlIG1vZHVsYXIgQ0FEL0NBRS9DQU0gc29mdHdh cmUKICoKICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgSC4gSmFtZXMgUGFy a2VyIDxob3BleWVAY2ZsLnJyLmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli cmFyeSBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciAKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgCiAq IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCAKICogUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogKiBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KICovCgovKiAtLS0gdGVzdF9lZGl0X2VjcGcucGdjIC0tLQog KgogKiBDaGFuZ2UgTG9nOgogKgogKiAxMyBNYXIgMDIgLSBDcmVhdGVkIGZp bGU7CiAqLwoKLyoKICogLS0tIEluY2x1ZGUgZmlsZXMKICovCiNpbmNsdWRl ICJ0ZXN0LmgiCgpleGVjIHNxbCBpbmNsdWRlIHNxbGNhOwoKCi8qCiAqIC0t LSBEZWZpbmUgU3RhdGVtZW50cwogKi8KCgoKLyoKICogLS0tIEludGVybmFs IEdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKICovCgoKCi8qCiAqIC0tLSBJbnRl cm5hbCBmdW5jdGlvbiBwcm90b3R5cGVzCiAqLwogCgoKLyoKICogLS0tIElu dGVybmFsIEdsb2JhbCBWYXJpYWJsZXMKICovCgpleGVjIHNxbCBiZWdpbiBk ZWNsYXJlIHNlY3Rpb247CgogIGludCAgIHBvaW50X2lkOwogIGZsb2F0IHg7 CiAgZmxvYXQgeTsKICBmbG9hdCB6OwogIGludCAgIHNhdmVkOwogIGludCAg IG1vZGlmaWVkOwogIGludCAgIGRlbGV0ZWQ7CgpleGVjIHNxbCBlbmQgZGVj bGFyZSBzZWN0aW9uOwoKCgovKgogKiAtLS0gZnVuY3Rpb25zIGJlZ2luIGhl cmUgLi4uCiAqLwoKCi8qCiAqIGRiX2VkaXRfcG9pbnQgKCApCiAqCiAqIFVw ZGF0ZSBhIHJvdyBpbiB0aGUgcG9pbnRzIHRhYmxlIHdpdGggbmV3IHZhbHVl cy4KICovCmludApkYl9lZGl0X3BvaW50ICh0eXBQb2ludCAqcG9pbnQpCnsK ICBleGVjIHNxbCBCRUdJTiBXT1JLOwoKICBwb2ludF9pZCA9IHBvaW50LT5p ZDsKICB4ID0gcG9pbnQtPng7CiAgeSA9IHBvaW50LT55OwogIHogPSBwb2lu dC0+ejsKICBzYXZlZCA9IFRSVUU7CiAgbW9kaWZpZWQgPSBUUlVFOwogIGRl bGV0ZWQgPSBGQUxTRTsKCiAgcHJpbnRmKCJBdHRlbXB0aW5nIHRvIG1vZGlm eTogJWQsICVmLCAlZiwgJWYsICVkLCAlZCwgJWRcbiIsCiAgICAgICAgIHBv aW50X2lkLCB4LCB5LCB6LCBzYXZlZCwgbW9kaWZpZWQsIGRlbGV0ZWQpOwoK ICBleGVjIHNxbCBVUERBVEUgdHBvaW50cwogICAgICAgICAgIFNFVCB4ID0g OngsCiAgICAgICAgICAgICAgIHkgPSA6eSwKICAgICAgICAgICAgICAgeiA9 IDp6LAogICAgICAgICAgICAgICBzYXZlZCA9IDpzYXZlZCwKICAgICAgICAg ICAgICAgbW9kaWZpZWQgPSA6bW9kaWZpZWQsCiAgICAgICAgICAgICAgIGRl bGV0ZWQgPSA6ZGVsZXRlZAogICAgICAgICAgIFdIRVJFIGlkID0gOnBvaW50 X2lkOwoKICBpZiAoc3FsY2Euc3FsY29kZSA8IDApCiAgewogICAgcHJpbnRm KCJNZXNzYWdlIDE6IE1vZGlmeSBwb2ludHMgdGFibGUgZmFpbGVkXG4iKTsK ICAgIGV4ZWMgc3FsIFJPTExCQUNLIFdPUks7CgogICAgcmV0dXJuIChGQUlM VVJFKTsKCiAgfSAKICBlbHNlIAogIHsKICAgIGlmIChzcWxjYS5zcWxlcnJk WzJdICE9IDEpCiAgICB7CiAgICAgIHByaW50ZigiTWVzc2FnZSAyOiBNb2Rp ZnkgcG9pbnRzIHRhYmxlIGZhaWxlZFxuIik7CiAgICAgIGV4ZWMgc3FsIFJP TExCQUNLIFdPUks7CgogICAgICByZXR1cm4gKEZBSUxVUkUpOwogICAgfQog IH0KCiAgZXhlYyBzcWwgQ09NTUlUIFdPUks7CiAgcmV0dXJuIChTVUNDRVNT KTsKfQ== --=_liOOAslEiF7prF Content-Type: application/octet-stream; charset=us-ascii Content-Disposition: attachment; filename="test_get_ecpg.pgc" Content-Transfer-Encoding: base64 LyogR3RrQ0FEIC0gQSBmcmVlIG1vZHVsYXIgQ0FEL0NBRS9DQU0gc29mdHdh cmUKICoKICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgSC4gSmFtZXMgUGFy a2VyIDxob3BleWVAY2ZsLnJyLmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli cmFyeSBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciAKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgCiAq IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCAKICogUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogKiBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KICovCgovKiAtLS0gdGVzdF9kYl9lY3BnLnBnYyAtLS0KICoK ICogQ2hhbmdlIExvZzoKICoKICogMTMgTWFyIDAyIC0gQ3JlYXRlZCBmaWxl OwogKi8KCi8qCiAqIC0tLSBJbmNsdWRlIGZpbGVzCiAqLwoKI2luY2x1ZGUg InRlc3QuaCIKCmV4ZWMgc3FsIGluY2x1ZGUgc3FsY2E7CgoKLyoKICogLS0t IERlZmluZSBTdGF0ZW1lbnRzCiAqLwoKCgovKgogKiAtLS0gSW50ZXJuYWwg R2xvYmFsIGRhdGEgc3RydWN0dXJlcwogKi8KCgoKLyoKICogLS0tIEludGVy bmFsIGZ1bmN0aW9uIHByb3RvdHlwZXMKICovCgoKCi8qCiAqIC0tLSBJbnRl cm5hbCBHbG9iYWwgVmFyaWFibGVzCiAqLwoKZXhlYyBzcWwgYmVnaW4gZGVj bGFyZSBzZWN0aW9uOwoKICBpbnQgICBwb2ludF9pZDsKICBmbG9hdCB4Owog IGZsb2F0IHk7CiAgZmxvYXQgejsKICBpbnQgc2F2ZWQ7CiAgaW50IG1vZGlm aWVkOwogIGludCBkZWxldGVkOwoKZXhlYyBzcWwgZW5kIGRlY2xhcmUgc2Vj dGlvbjsKCgoKLyoKICogLS0tIGZ1bmN0aW9ucyBiZWdpbiBoZXJlIC4uLgog Ki8KCgovKgogKiBkYl9nZXRfcG9pbnRzICggKSAKICoKICogUHV0IHRoZSBy ZXN1bHRzIGZyb20gYSBxdWVyeSB0byB0aGUgZGF0YWJhc2UgaW50byBhIGxp bmtlZCBsaXN0IChHTGlzdCkuCiAqLwppbnQKZGJfZ2V0X3BvaW50cyAodm9p ZCkKewogIGV4ZWMgc3FsIEJFR0lOIFdPUks7CgogIGV4ZWMgc3FsIERFQ0xB UkUgbXljdXJzb3IgQ1VSU09SIEZPUiAKICAgICAgICBTRUxFQ1QgaWQsIHgs IHksIHosIHNhdmVkLCBtb2RpZmllZCwgZGVsZXRlZAogICAgICAgIEZST00g dHBvaW50czsKCiAgZXhlYyBzcWwgT1BFTiBteWN1cnNvcjsKCiAgZXhlYyBz cWwgRkVUQ0ggTkVYVCBJTiBteWN1cnNvciBpbnRvIDpwb2ludF9pZCwgOngs IDp5LCA6eiwgOnNhdmVkLAogICAgICAgICAgICAgICAgIDptb2RpZmllZCwg OmRlbGV0ZWQ7CgogIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkKICAgIHByaW50 ZigiZXJyb3IgY29kZSAlbGQsIG1lc3NhZ2UgJXMsIHJvd3MgJWxkLCB3YXJu aW5nICVjXG4iLCBzcWxjYS5zcWxjb2RlLAoJICAgc3FsY2Euc3FsZXJybS5z cWxlcnJtYywgc3FsY2Euc3FsZXJyZFsyXSwgc3FsY2Euc3Fsd2FyblswXSk7 CgogIHdoaWxlIChzcWxjYS5zcWxjb2RlID09IDApCiAgewogICAgaWYgKHNx bGNhLnNxbGNvZGUgPj0gMCkKICAgIHsKICAgICAgcHJpbnRmKCJJbiBkYl9n ZXRfcG9pbnRzKCk6ICAiKTsKICAgICAgcHJpbnRmKCJpZCA9ICVkLCB4ID0g JWYsIHkgPSAlZiwgeiA9ICVmXG4iLCBwb2ludF9pZCwgeCwgeSwgeik7CiAg ICAgIHBvaW50cyA9IGluc2VydF9wb2ludCAocG9pbnRzLAoJCQkgICAgIHBv aW50X2lkLCB4LCB5LCB6LCBUUlVFLCBGQUxTRSwgRkFMU0UpOwogICAgfQoK ICAgIGV4ZWMgc3FsIEZFVENIIE5FWFQgSU4gbXljdXJzb3IgaW50byA6cG9p bnRfaWQsIDp4LCA6eSwgOnosIDpzYXZlZCwKICAgICAgICAgICAgICAgICAg IDptb2RpZmllZCwgOmRlbGV0ZWQ7CgogICAgaWYgKHNxbGNhLnNxbGNvZGUg PCAwKQogICAgICBwcmludGYoImVycm9yIGNvZGUgJWxkLCBtZXNzYWdlICVz LCByb3dzICVsZCwgd2FybmluZyAlY1xuIiwKICAgICAgICAgICAgIHNxbGNh LnNxbGNvZGUsIHNxbGNhLnNxbGVycm0uc3FsZXJybWMsIHNxbGNhLnNxbGVy cmRbMl0sCiAgICAgICAgICAgICBzcWxjYS5zcWx3YXJuWzBdKTsKICB9Cgog IGV4ZWMgc3FsIENMT1NFIG15Y3Vyc29yOwogIGV4ZWMgc3FsIENPTU1JVCBX T1JLOwoKICByZXR1cm4gKFNVQ0NFU1MpOwp9 --=_liOOAslEiF7prF Content-Type: application/octet-stream; charset=us-ascii Content-Disposition: attachment; filename="test_insert_ecpg.pgc" Content-Transfer-Encoding: base64 LyogR3RrQ0FEIC0gQSBmcmVlIG1vZHVsYXIgQ0FEL0NBRS9DQU0gc29mdHdh cmUKICoKICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgSC4gSmFtZXMgUGFy a2VyIDxob3BleWVAY2ZsLnJyLmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli cmFyeSBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciAKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgCiAq IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCAKICogUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlCiAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogKiBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KICovCgovKiAtLS0gdGVzdF9kYl9lY3BnLnBnYyAtLS0KICoK ICogQ2hhbmdlIExvZzoKICoKICogMTMgTWFyIDAyIC0gQ3JlYXRlZCBmaWxl OyAgICAgICAgICAgICAgICAgICAgICAgOwogKi8KCi8qCiAqIC0tLSBJbmNs dWRlIGZpbGVzCiAqLwojaW5jbHVkZSAidGVzdC5oIgpleGVjIHNxbCBpbmNs dWRlIHNxbGNhOwoKCi8qCiAqIC0tLSBEZWZpbmUgU3RhdGVtZW50cwogKi8K CgoKLyoKICogLS0tIEludGVybmFsIEdsb2JhbCBkYXRhIHN0cnVjdHVyZXMK ICovCgoKCi8qCiAqIC0tLSBJbnRlcm5hbCBmdW5jdGlvbiBwcm90b3R5cGVz CiAqLwoKCgovKgogKiAtLS0gSW50ZXJuYWwgR2xvYmFsIFZhcmlhYmxlcwog Ki8KCmV4ZWMgc3FsIGJlZ2luIGRlY2xhcmUgc2VjdGlvbjsKCiAgaW50ICAg cG9pbnRfaWQ7CiAgZmxvYXQgeDsKICBmbG9hdCB5OwogIGZsb2F0IHo7CiAg aW50ICAgc2F2ZWQ7CiAgaW50ICAgbW9kaWZpZWQ7CiAgaW50ICAgZGVsZXRl ZDsKCmV4ZWMgc3FsIGVuZCBkZWNsYXJlIHNlY3Rpb247CgoKCi8qCiAqIC0t LSBmdW5jdGlvbnMgYmVnaW4gaGVyZSAuLi4KICovCgoKLyoKICogZGJfYWRk X3BvaW50KCkgCiAqCiAqIFRoaXMgbG9va3MgbGlrZSBpdCBhZGRzIGEgc2lu Z2xlIHBvaW50IHRvIHRoZSBkYXRhYmFzZSB0YWJsZXMuICAKICoKICogUVVF U1RJT046IElzIHRoaXMgd2hhdCB3ZSB3YW50IG9yIGRvIHdlIGFkZCB0aGUg ZW50aXJlIGxpc3QgPyAgCiAqIElmIHRoZSBlbnRpcmUgbGlzdCwgaG93IGRv IHdlIGF2b2lkIGR1cGxpY2F0ZXMgPwogKi8KaW50CmRiX2FkZF9wb2ludCAo dHlwUG9pbnQgKnBvaW50KQp7CiAgZXhlYyBzcWwgQkVHSU4gV09SSzsKCiAg cG9pbnRfaWQgPSBwb2ludC0+aWQ7CiAgeCA9IHBvaW50LT54OwogIHkgPSBw b2ludC0+eTsKICB6ID0gcG9pbnQtPno7CiAgc2F2ZWQgPSBUUlVFOwogIG1v ZGlmaWVkID0gRkFMU0U7CiAgZGVsZXRlZCA9IEZBTFNFOwoKICBwcmludGYo IkF0dGVtcHRpbmcgdG8gaW5zZXJ0OiAlZCwgJWYsICVmLCAlZiwgJWQsICVk LCAlZFxuIiwKICAgICAgICAgcG9pbnRfaWQsIHgsIHksIHosIHNhdmVkLCBt b2RpZmllZCwgZGVsZXRlZCk7CgogIGV4ZWMgc3FsIElOU0VSVCBJTlRPIHRw b2ludHMgKCBpZCwgeCwgeSwgeiwgc2F2ZWQsIG1vZGlmaWVkLCBkZWxldGVk ICkKICAgICAgICAgICBWQUxVRVMgKCA6cG9pbnRfaWQsIDp4LCA6eSwgOnos IDpzYXZlZCwgOm1vZGlmaWVkLCA6ZGVsZXRlZCApOwoKICBpZiAoc3FsY2Eu c3FsY29kZSA8IDApCiAgewogICAgcHJpbnRmKCJNZXNzYWdlIDE6IEluc2Vy dCBpbnRvIHBvaW50cyB0YWJsZSBmYWlsZWRcbiIpOwogICAgZXhlYyBzcWwg Uk9MTEJBQ0sgV09SSzsKCiAgICByZXR1cm4gKEZBSUxVUkUpOwoKICB9IAog IGVsc2UgCiAgewogICAgaWYgKHNxbGNhLnNxbGVycmRbMl0gIT0gMSkKICAg IHsKICAgICAgcHJpbnRmKCJNZXNzYWdlIDI6IEluc2VydCBpbnRvIHBvaW50 cyB0YWJsZSBmYWlsZWRcbiIpOwogICAgICBleGVjIHNxbCBST0xMQkFDSyBX T1JLOwoKICAgICAgcmV0dXJuIChGQUlMVVJFKTsKICAgIH0KICB9CgogIGV4 ZWMgc3FsIENPTU1JVCBXT1JLOwoKICByZXR1cm4oU1VDQ0VTUyk7Cn0K --=_liOOAslEiF7prF--