Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> Fwd: Re: DATABASE COMPARE SCRIPT
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
The database compare script didn't come out to well the first time, so I've just embedded them in this post.
The scripts are:
clears.sql
columns.sql
title.sql
schema_diff.sql
Jared
rem TITLE.SQL - This SQL*Plus script builds a standard report rem heading for database reports that are XX columns rem column TODAY NEW_VALUE CURRENT_DATE NOPRINT column TIME NEW_VALUE CURRENT_TIME NOPRINT column DATABASE NEW_VALUE DATA_BASE NOPRINTset term off feed off
SQL.PNO SKIP 1 LEFT "Time: " current_time CENTER heading RIGHT - format a15 SQL.USER SKIP 1 CENTER format a20 data_base SKIP 2rem
TO_CHAR(SYSDATE,'HH:MI AM') TIME, --DATABASE||' Database' DATABASE, --rtrim(database) passout name||' Database' DATABASE, lower(rtrim(name)) passout
col blocks format 99,999,999 head 'BLOCKS'
col db_link format a30 head 'DB LINK' col db_link_instance format a30 head 'DB LINK|INSTANCE' col db_link_username format a10 head 'DB LINK|USERNAME'col empty_blocks format 99,999,999 head 'EMPTY BLOCKS' col host format a10 head 'HOST'
col max_blocks format 9,999,999 head 'MAX BLOCKS' col max_bytes format 99,999,999,999 head 'MAX BYTES' col max_extents format 999,999 head 'MAX|EXTENTS' col min_extents format 999 head 'MIN|EXT'col next_extent format 9,999,999,999 head 'NEXT|EXTENT' col object_name format a30 head 'OBJECT NAME' col owner format a10 head 'OWNER'
col pct_free format 999 head 'PCT|FREE' col pct_increase format 999 head 'PCT|INC' col pct_used format 999 head 'PCT|USED'
col package_name format a30 head 'PACKAGE NAME' col package_body_name format a30 head 'PACKAGE BODY NAME' col segment_name format a30 head 'SEGMENT NAME'
----------------------
clear col
clear break
clear computes
btitle ''
ttitle ''
btitle off
ttitle off
@clears
@columns
col cuser_1 noprint new_value uuser_1
col cuser_2 noprint new_value uuser_2
col cinstance_1 noprint new_value uinstance_1
col cinstance_2 noprint new_value uinstance_2
prompt
prompt
prompt schema_diff will report differences in tables
prompt between any 2 users on any 2 databases
prompt
set term on feed on
prompt User 1:
set term off feed off
select upper('&1') cuser_1 from dual;
set term on feed on
prompt instance 1:
set term off feed off
select upper('&2') cinstance_1 from dual;
set term on feed on
prompt User 2:
set term off feed off
select upper('&3') cuser_2 from dual;
set term on feed on
prompt instance 2:
set term off feed off
select upper('&4') cinstance_2 from dual;
set term on feed on
drop table table_diff;
create table table_diff as
select table_name, column_name, data_type, data_length, data_precision,
data_scale
from all_tab_columns@&&uinstance_1
where 1=2
/
alter table table_diff add( instance varchar2(8) );
create index table_diff_idx on table_diff ( table_name, column_name, instance );
insert into table_diff ( table_name, column_name, data_type, data_length, data_precision, data_scale )
select table_name, column_name, data_type, data_length, data_precision, data_scale
from all_tab_columns@&&uinstance_1 where owner = '&&uuser_1' minus select table_name, column_name, data_type, data_length, data_precision, data_scale from all_tab_columns@&&uinstance_2 where owner = '&&uuser_2'
update table_diff set instance = '&&uinstance_1';
insert into table_diff ( table_name, column_name, data_type, data_length, data_precision, data_scale )
select table_name, column_name, data_type, data_length, data_precision, data_scale
from all_tab_columns@&&uinstance_2 where owner = '&&uuser_2' minus select table_name, column_name, data_type, data_length, data_precision, data_scale from all_tab_columns@&&uinstance_1 where owner = '&&uuser_1'
update table_diff set instance = '&&uinstance_2' where instance is null;
commit;
drop table index_diff;
create table index_diff as
select index_name, table_name, column_name, column_position, column_length
from all_ind_columns@&&uinstance_1
where 1=2
/
alter table index_diff add( instance varchar2(8) );
create index index_diff_idx on index_diff (
table_name, column_name, column_position, column_length)
insert into index_diff ( index_name, table_name, column_name, column_position, column_length )
select index_name, table_name, column_name, column_position, column_length from all_ind_columns@&&uinstance_1 where index_owner = '&&uuser_1' minus select index_name, table_name, column_name, column_position, column_length from all_ind_columns@&&uinstance_2 where index_owner = '&&uuser_2'
update index_diff set instance = '&&uinstance_1';
insert into index_diff ( index_name, table_name, column_name, column_position, column_length )
select index_name, table_name, column_name, column_position, column_length from all_ind_columns@&&uinstance_2 where index_owner = '&&uuser_2' minus select index_name, table_name, column_name, column_position, column_length from all_ind_columns@&&uinstance_1 where index_owner = '&&uuser_1'
update index_diff set instance = '&&uinstance_2' where instance is null;
commit;
drop table arg_diff;
create table arg_diff as
SELECT
obj# obj# ,procedure$ procedure ,argument argument ,type type
,sequence# sequence
,default# "DEFAULT" ,in_out in_out ,level# "LEVEL" ,length length ,precision "PRECISION"
alter table arg_diff add( instance varchar2(8), object_name varchar2(30),
object_type varchar2(13) );
alter table arg_diff modify( obj# null );
create index arg_diff_idx on arg_diff ( obj#, argument, type );
insert into arg_diff
( object_name, object_type, procedure, argument, type, overload,position,
"DEFAULT", in_out, "LEVEL", length, "PRECISION", scale, radix ) select obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# ,arg.in_out ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix from sys.argument$@&&uinstance_1 arg, dba_objects@&&uinstance_1 obj where arg.obj# = obj.object_id and obj.owner = '&&uuser_1' minus select obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# ,arg.in_out ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix from sys.argument$@&&uinstance_2 arg, dba_objects@&&uinstance_2 obj where arg.obj# = obj.object_id and obj.owner = '&&uuser_2'
update arg_diff
set instance = '&&uinstance_1'
/
drop table remote_dba_objects;
drop table remote_arguments;
create table remote_dba_objects
as
select *
from dba_objects@&&uinstance_1
/
create index remote_dba_object_idx1
on remote_dba_objects( object_type, object_id )
/
create index remote_dba_object_idx2
on remote_dba_objects( object_id )
/
create table remote_arguments
as
select
obj#, procedure$,overload#,position,sequence#,level#, argument,type,default#,in_out,length,precision,scale, radix,deflength
create index remote_arguments_idx1
on remote_arguments( argument, type )
/
update arg_diff diff
set obj# = (
select obj# from remote_arguments arg, remote_dba_objects obj where arg.obj# = obj.object_id and obj.object_name = diff.object_name and obj.object_type = diff.object_type and obj.owner = '&&uuser_1' and nvl(arg.procedure$, 'NONE') = nvl(diff.procedure, 'NONE') and arg.argument = diff.argument and arg.type = diff.type and arg.overload# = diff.overload and diff.instance = '&&uinstance_1')
insert into arg_diff
( object_name, object_type, procedure, argument, type, overload,position,
"DEFAULT", in_out, "LEVEL", length, "PRECISION", scale, radix ) select obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# ,arg.in_out ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix from sys.argument$@&&uinstance_2 arg, dba_objects@&&uinstance_2 obj where arg.obj# = obj.object_id and obj.owner = '&&uuser_2' minus select obj.object_name ,obj.object_type ,arg.procedure$ ,arg.argument ,arg.type ,arg.overload# ,arg.position ,arg.sequence# ,arg.default# ,arg.in_out ,arg.level# ,arg.length ,arg.precision ,arg.scale ,arg.radix from sys.argument$@&&uinstance_1 arg, dba_objects@&&uinstance_1 obj where arg.obj# = obj.object_id and obj.owner = '&&uuser_1'
update arg_diff
set instance = '&&uinstance_2'
where instance is null
/
drop table remote_dba_objects;
drop table remote_arguments;
create table remote_dba_objects
as
select *
from dba_objects@&&uinstance_2
/
create index remote_dba_object_idx1
on remote_dba_objects( object_type, object_id )
/
create index remote_dba_object_idx2
on remote_dba_objects( object_id )
/
create table remote_arguments
as
select
obj#, procedure$,overload#,position,sequence#,level#, argument,type,default#,in_out,length,precision,scale, radix,deflength
create index remote_arguments_idx1
on remote_arguments( argument, type )
/
update arg_diff diff
set obj# = (
select obj# from remote_arguments arg, remote_dba_objects obj where arg.obj# = obj.object_id and obj.object_name = diff.object_name and obj.object_type = diff.object_type and obj.owner = '&&uuser_2' and nvl(arg.procedure$, 'NONE') = nvl(diff.procedure, 'NONE') and arg.argument = diff.argument and arg.type = diff.type and arg.overload# = diff.overload and diff.instance = '&&uinstance_2')
drop table remote_dba_objects;
drop table remote_arguments;
break on table_name on column_name on username
col data_precision format 999999 head 'PREC' col data_scale format 999999 head 'SCALE' col data_length format 999999 head 'LENGTH'col column_name format a30 head 'COLUMN NAME'
set trimspool on
spool table_diff.txt
@title 'Table Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 120
select
t1.table_name, t1.column_name, '&&uuser_1' username, instance, t1.data_type, t1.data_precision, t1.data_scale, t1.data_length
and t1.table_name = d1.table_name and t1.column_name = d1.column_name and d1.instance = '&&uinstance_1'
t2.table_name, t2.column_name, '&&uuser_2' username, instance, t2.data_type, t2.data_length, t2.data_scale, t2.data_precision
and t2.table_name = d2.table_name and t2.column_name = d2.column_name and d2.instance = '&&uinstance_2'
break on index_name on table_name
col data_precision format 999999 head 'PREC' col data_scale format 999999 head 'SCALE' col data_length format 999999 head 'LENGTH'col column_name format a30 head 'COLUMN NAME'
col column_position format 999 head 'COL|POS' col column_length format 99999 head 'COL|LEN'
@title 'Index Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 135
col username format a10 head 'INDEX|OWNER'
spool index_diff.txt
select
t1.index_name, '&&uuser_1' username, instance, t1.table_name, t1.column_name, t1.column_position, t1.column_length
and t1.table_name = d1.table_name and t1.column_name = d1.column_name and t1.column_position = d1.column_position and t1.column_length = d1.column_length and d1.instance = '&&uinstance_1'
t2.index_name, '&&uuser_2' username, instance, t2.table_name, t2.column_name, t2.column_position, t2.column_length
and t2.table_name = d2.table_name and t2.column_name = d2.column_name and t2.column_position = d2.column_position and t2.column_length = d2.column_length and d2.instance = '&&uinstance_2'
col procedure format a40 head 'PROCEDURE'
break on procedure on overload
@title 'Argument Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 200
spool arg_diff.txt
SELECT
substr( obj.OBJECT_NAME|| decode( arg.procedure$,null,'','.') || arg.procedure$,1,60 ) procedure ,arg.OVERLOAD# overload ,arg.ARGUMENT ,diff.instance ,obj.object_type ,decode(arg.type, 1, 'VARCHAR2', 2, 'NUMBER', 8, 'LONG', 9, 'VARCHAR', 12, 'DATE', 23, 'RAW', 24, 'LONG RAW', 69, 'ROWID', 96, 'CHAR', 250, 'RECORD', 252, 'BOOLEAN', -- just show type# as default substr(to_char(arg.type),1,10) ) type
,decode(arg.IN_OUT,null,'IN', 2,'IN_OUT', 'UNKNOWN' ) IN_OUT ,NVL(arg.LEVEL#,0) LEVEL#
,NVL(arg.LENGTH,0) LENGTH
,NVL(arg.PRECISION,0) PRECISION ,NVL(arg.SCALE,0) SCALE ,NVL(arg.RADIX,0) RADIX from sys.argument$@&&uinstance_1 arg ,dba_objects@&&uinstance_1 obj ,arg_diff diff
and diff.argument = arg.argument and diff.type = arg.type and diff.overload = arg.overload# and diff.instance = '&&uinstance_1'
substr( obj.OBJECT_NAME|| decode( arg.procedure$,null,'','.') || arg.procedure$,1,60 ) procedure ,arg.OVERLOAD# overload ,arg.ARGUMENT ,diff.instance ,obj.object_type ,decode(arg.type, 1, 'VARCHAR2', 2, 'NUMBER', 8, 'LONG', 9, 'VARCHAR', 12, 'DATE', 23, 'RAW', 24, 'LONG RAW', 69, 'ROWID', 96, 'CHAR', 250, 'RECORD', 252, 'BOOLEAN', -- just show type# as default substr(to_char(arg.type),1,10) ) type
,decode(arg.IN_OUT,null,'IN', 2,'IN_OUT', 'UNKNOWN' ) IN_OUT ,NVL(arg.LEVEL#,0) LEVEL#
,NVL(arg.LENGTH,0) LENGTH
,NVL(arg.PRECISION,0) PRECISION ,NVL(arg.SCALE,0) SCALE ,NVL(arg.RADIX,0) RADIX from sys.argument$@&&uinstance_2 arg ,dba_objects@&&uinstance_2 obj ,arg_diff diff
and diff.argument = arg.argument and diff.type = arg.type and diff.overload = arg.overload# and diff.instance = '&&uinstance_2'
@title 'Sequence Diffs User1: &&uuser_1@&&uinstance_1 User2: &&uuser_2@&&uinstance_2' 110
col sequence_name format a30 head 'SEQUENCE NAME' col last_number format 999999999999 head 'LAST|NUMBER' col min_value format 9999999999 head 'MIN|VALUE' col max_value format 999999999999 head 'MAX|VALUE' col increment_by format 999999 head 'INCREMENT'
col cache_size format 999999 head 'CACHE|SIZE' col cycle_flag format a5 head 'CYCLE|FLAG' col order_flag format a5 head 'ORDER|FLAG'
break on sequence_name skip 1
spool sequence_diff.txt
(
( select sequence_name, '&&uinstance_1' instance ,last_number, min_value,max_value, increment_by,cycle_flag,order_flag, cache_size from dba_sequences@&&uinstance_1 where sequence_owner = '&&uuser_1' ) minus ( select sequence_name, '&&uinstance_2' instance ,last_number, min_value,max_value, increment_by,cycle_flag,order_flag, cache_size from dba_sequences@&&uinstance_2 where sequence_owner = '&&uuser_2' )
( select sequence_name, '&&uinstance_2' instance ,last_number, min_value,max_value, increment_by,cycle_flag,order_flag, cache_size from dba_sequences@&&uinstance_2 where sequence_owner = '&&uuser_2' ) minus ( select sequence_name, '&&uinstance_1' instance ,last_number, min_value,max_value, increment_by,cycle_flag,order_flag, cache_size from dba_sequences@&&uinstance_1 where sequence_owner = '&&uuser_1' )
spool off
undef 1 2 3 4
prompt
prompt
prompt
prompt Your reports in the following files:
prompt
prompt table_diff.txt
prompt index_diff.txt
prompt arg_diff.txt
prompt sequence_diff.txt
prompt
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
charset="iso-8859-1";
name="title.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="title.sql"
Ci0tIHRpdGxlLnNxbCAtIGNvcGllZCBmcm9tIHRpdGxlODAuc3FsCi0tIHNwZWNpZnkgbGluZSB3 aWR0aCB3aGVuIGNhbGxpbmcKLS0gZWcgQHRpdGxlICdyZXBvcnQgaGVhZGluZycgOTAKCnJlbSBU SVRMRS5TUUwgICAtICAgICBUaGlzIFNRTCpQbHVzIHNjcmlwdCBidWlsZHMgYSBzdGFuZGFyZCBy ZXBvcnQgCnJlbSAgICAgICAgICAgICAgICAgICBoZWFkaW5nIGZvciBkYXRhYmFzZSByZXBvcnRz IHRoYXQgYXJlIFhYIGNvbHVtbnMKcmVtCmNvbHVtbiAgVE9EQVkJCU5FV19WQUxVRSAJQ1VSUkVO VF9EQVRFCQlOT1BSSU5UCmNvbHVtbiAgVElNRSAgICAgICAgICAgIE5FV19WQUxVRQlDVVJSRU5U X1RJTUUJCU5PUFJJTlQKY29sdW1uICBEQVRBQkFTRSAgICAgICAgTkVXX1ZBTFVFICAgICAgIERB VEFfQkFTRSAgICAgICAgICAgICAgIE5PUFJJTlQKc2V0IHRlcm0gb2ZmIGZlZWQgb2ZmCnJlbQpk ZWZpbmUgQ09NUEFOWSA9ICJCQ0JTTyIKZGVmaW5lIEhFQURJTkcgPSAiJjEiCmNvbCBjUGFnZU51 bUxvYyBuZXdfdmFsdWUgUGFnZU51bUxvYyBub3ByaW50CnNlbGVjdCAoJyYmMicgLSAxMCApIGNQ YWdlTnVtTG9jIGZyb20gZHVhbDsKcmVtClRUSVRMRSBMRUZUICJEYXRlOiAiIGN1cnJlbnRfZGF0 ZSBDRU5URVIgY29tcGFueSBjb2wgJiZQYWdlTnVtTG9jICJQYWdlOiIgZm9ybWF0IDk5OSAtCiAg ICAgICBTUUwuUE5PIFNLSVAgMSBMRUZUICJUaW1lOiAiIGN1cnJlbnRfdGltZSBDRU5URVIgaGVh ZGluZyBSSUdIVCAtCiAgICAgICBmb3JtYXQgYTE1IFNRTC5VU0VSIFNLSVAgMSBDRU5URVIgZm9y bWF0IGEyMCBkYXRhX2Jhc2UgU0tJUCAyCnJlbQpyZW0Kc2V0IGhlYWRpbmcgb2ZmCnNldCBwYWdl c2l6ZSAwCnJlbQpjb2x1bW4gcGFzc291dCBuZXdfdmFsdWUgZGJuYW1lIG5vcHJpbnQKU0VMRUNU IFRPX0NIQVIoU1lTREFURSwnTU0vREQvWVknKSBUT0RBWSwKICAgICAgIFRPX0NIQVIoU1lTREFU RSwnSEg6TUkgQU0nKSBUSU1FLAogICAgICAgLS1EQVRBQkFTRXx8JyBEYXRhYmFzZScgREFUQUJB U0UsCiAgICAgICAtLXJ0cmltKGRhdGFiYXNlKSBwYXNzb3V0CiAgICAgICBuYW1lfHwnIERhdGFi YXNlJyBEQVRBQkFTRSwKICAgICAgIGxvd2VyKHJ0cmltKG5hbWUpKSBwYXNzb3V0CkZST00gICB2 JGRhdGFiYXNlOwpzZXQgdGVybSBvbiBmZWVkIG9uCnJlbQpzZXQgaGVhZGluZyBvbgpzZXQgcGFn ZXNpemUgNTgKc2V0IGxpbmUgJiYyCnNldCBuZXdwYWdlIDAKZGVmaW5lIGRiID0gJ18mZGJuYW1l Jwp1bmRlZiAxIDIK
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
charset="iso-8859-1";
name="schema_diff.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="schema_diff.sql"
Ci0tIHNjaGVtYV9kaWZmLnNxbAotLSBKYXJlZCBTdGlsbCAKLS0gamtzdGlsbEBiY2Jzby5jb20K LS0gamtzdGlsbEB0ZWxlcG9ydC5jb20KLS0KLS0KLS0gMDcvMTQvMTk5OSBqa3N0aWxsIC0gcmVt b3ZlZCB0YWJsZV9vd25lciBmcm9tIHRoZSBpbmRleF9kaWZmCi0tICAgICAgICAgICAgICAgICAg ICAgIHNlY3Rpb24gYXMgdGhpcyBtYWRlIGFsbCBpbmRleGVzIGFwcGVhcgotLSAgICAgICAgICAg ICAgICAgICAgICBpbiB0aGUgZGlmZmVyZW5jZSByZXBvcnQgaWYgdGhlIHNjaGVtYXMKLS0gICAg ICAgICAgICAgICAgICAgICAgaGFkIGRpZmZlcmVudCBuYW1lcwotLSAgICAgICAgICAgICAgICAg ICAgICAtCi0tIHRoaXMgc2NyaXB0IHdpbGwgY3JlYXRlIHJlcG9ydHMgb2YgdGhlCi0tIGRpZmZl cmVuY2VzIGJldHdlZW4gMiBzY2hlbWFzCi0tIHRoZSByZXBvcnRzIGNyZWF0ZWQgYXJlOgoKLS0g dGFibGVfZGlmZi50eHQKLS0gaW5kZXhfZGlmZi50eHQKLS0gYXJnX2RpZmYudHh0Ci0tIHNlcXVl bmNlX2RpZmYudHh0CgotLSBhbGwgZGlmZmVyZW5jZXMgYXJlIGNoZWNrZWQgYm90aAotLSB3YXlz IC0gc2NoZW1hMSBpcyBjb21wYXJlZCB0byBzY2hlbWEyCi0tIGFuZCB0aGVuIHNjaGVtYTIgaXMg Y29tcGFyZWQgdG8gc2NoZW1hMQotLSBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggZGF0YWJhc2Ug dGhlCi0tIHJlcG9ydHMgYXJlIGluaXRpYXRlZCBmcm9tCgotLSByZXF1aXJlbWVudHM6Ci0tCi0t IGVpdGhlciBnbG9iYWwgbGlua3Mgb3IgZGF0YWJhc2UgbGlua3MgdG8KLS0gdGhlIHNjaGVtYXMg dG8gYmUgY29tcGFyZWQKLS0gCi0tIGRiYSBwcml2aWxlZ2VzCi0tCgotLSB0aGlzIHJlcG9ydCBj cmVhdGVzIHRlbXBvcmFyeSB0YWJsZXMgZm9yIGl0J3MgcmVwb3J0cwotLSB0aGV5IGFyZSBsZWZ0 IGludGFjdCBmb3IgeW91ciBwZXJ1c2FsCi0tIHRhYmxlczoKLS0gICBhcmdfZGlmZgotLSAgIGlu ZGV4X2RpZmYKLS0gICB0YWJsZV9kaWZmCi0tCgotLSBSRVBPUlQgU1VNTUFSWQoKLS0gdGFibGVf ZGlmZi50eHQKLS0gdGhpcyByZXBvcnQgY29tcGFyZXMgdGFibGVzIGZyb20gMiBzY2hlbWFzCi0t IGluY2x1ZGVkIGFyZSAKLS0gICAgdGFibGVzL2NvbHVtbnMgdGhhdCBhcHBlYXIgaW4gYSB0YWJs ZSBpbgotLSAgICBvbmUgc2NoZW1hLCBhbmQgbm90IHRoZSBvdGhlcgotLQotLSAgICBhbnkgZGlm ZmVyZW5jZXMgYmV0d2VlbiBjb2x1bW5zOyBpbmNsdWRlcwotLSAgICBvcmRlciBvZiBjb2x1bW4s IHR5cGUgYW5kIHNpemUuCgoKLS0gaW5kZXhfZGlmZi50eHQKLS0gdGhpcyByZXBvcnQgY29tcGFy ZXMgaW5kZXhlcyBmcm9tIDIgc2NoZW1hcwotLSBpbmNsdWRlZCBhcmUKLS0gICAgaW5kZXhlcyB0 aGF0IGFwcGVhciBpbiBvbmUgc2NoZW1hIAotLSAgICBhbmQgbm90IHRoZSBvdGhlcgotLQotLSAg ICBhbnkgZGlmZmVyZW5jZXMgYmV0d2VlbiBpbmRleCBzdHJ1Y3R1cmVzCi0tICAgIGRvZXMgbm90 IGNoZWNrIGZvciBzdG9yYWdlIHBhcm1zCgotLSBhcmdfZGlmZi50eHQKLS0gdGhpcyByZXBvcnQg Y29tcGFyZXMgYXJndW1lbnRzIGZyb20gMiBzY2hlbWFzCi0tIGluY2x1ZGVkIGFyZQotLSAgICBh bGwgcHJvY2VkdXJlcy9wYWNrYWdlcy9mdW5jdGlvbnMgIGFuZCB0aGVpcgotLSAgICBhcmd1bWVu dHMgKCBpZiBhbnkgKSB0aGF0IGFwcGVhciBpbiBvbmUgc2NoZW1hCi0tICAgIGFuZCBub3QgdGhl IG90aGVyCi0tCi0tICAgIGFueSBkaWZmZXJlbmNlcyBpbiBhcmd1bWVudHMKLS0KLS0gbm90ZTog IHRoaXMgY3VycmVudGx5IHdpbGwgbm90IGZpbmQgcGFja2FnZXMKLS0gICAgICAgIGNyZWF0ZWQg Zm9yIGdsb2JhbCB2YXJpYWJsZXMKLS0gICAgICAgIGkuZS46IHRob3NlIHBhY2thZ2VzIGNyZWF0 ZWQgd2l0aG91dAotLSAgICAgICAgYSBib2R5IGFuZCB3aG9zZSBoZWFkZXIgY29udGFpbnMKLS0g ICAgICAgIG9ubHkgdmFyaWFibGVzCgoKLS0gc2VxdWVuY2VfZGlmZi50eHQKLS0gdGhpcyByZXBv cnQgY29tcGFyZXMgc2VxdWVuY2VzIGZyb20gMiBzY2hlbWFzCi0tCi0tIHRoaXMgcmVwb3J0IG1h eSBpbmNsdWRlIGZhbHNlIHBvc2l0aXZlcyBzaW5jZQotLSBzZXF1ZW5jZSBpbmZvcm1hdGlvbiBp biB0aGUgZGF0YWJhc2UgaXMgZHluYW1pYwoKCgotLSAwNi8xNS8xOTk5IC0gYWRkZWQgc29tZSBt b3JlIGZlYXR1cmVzCgoKQGNsZWFycwpAY29sdW1ucwoKY29sIGN1c2VyXzEgbm9wcmludCBuZXdf dmFsdWUgIHV1c2VyXzEKY29sIGN1c2VyXzIgbm9wcmludCBuZXdfdmFsdWUgIHV1c2VyXzIKY29s IGNpbnN0YW5jZV8xIG5vcHJpbnQgbmV3X3ZhbHVlICB1aW5zdGFuY2VfMQpjb2wgY2luc3RhbmNl XzIgbm9wcmludCBuZXdfdmFsdWUgIHVpbnN0YW5jZV8yCgpwcm9tcHQKcHJvbXB0CnByb21wdCBz Y2hlbWFfZGlmZiB3aWxsIHJlcG9ydCBkaWZmZXJlbmNlcyBpbiB0YWJsZXMKcHJvbXB0IGJldHdl ZW4gYW55IDIgdXNlcnMgb24gYW55IDIgZGF0YWJhc2VzCnByb21wdAoKc2V0IHRlcm0gb24gZmVl ZCBvbgpwcm9tcHQgVXNlciAxOgpzZXQgdGVybSBvZmYgZmVlZCBvZmYKc2VsZWN0IHVwcGVyKCcm MScpIGN1c2VyXzEgZnJvbSBkdWFsOwoKc2V0IHRlcm0gb24gZmVlZCBvbgpwcm9tcHQgaW5zdGFu Y2UgMToKc2V0IHRlcm0gb2ZmIGZlZWQgb2ZmCnNlbGVjdCB1cHBlcignJjInKSBjaW5zdGFuY2Vf MSBmcm9tIGR1YWw7CgpzZXQgdGVybSBvbiBmZWVkIG9uCnByb21wdCBVc2VyIDI6CnNldCB0ZXJt IG9mZiBmZWVkIG9mZgpzZWxlY3QgdXBwZXIoJyYzJykgY3VzZXJfMiBmcm9tIGR1YWw7CgpzZXQg dGVybSBvbiBmZWVkIG9uCnByb21wdCBpbnN0YW5jZSAyOgpzZXQgdGVybSBvZmYgZmVlZCBvZmYK c2VsZWN0IHVwcGVyKCcmNCcpIGNpbnN0YW5jZV8yIGZyb20gZHVhbDsKCnNldCB0ZXJtIG9uIGZl ZWQgb24KCi0tIGRvIHRhYmxlIGRpZmYKcHJvbXB0CnByb21wdCBDcmVhdGluZyB0YWJsZSBkaWZm ZXJlbmNlIGRhdGEKcHJvbXB0Cgpkcm9wIHRhYmxlIHRhYmxlX2RpZmY7CgpjcmVhdGUgdGFibGUg dGFibGVfZGlmZiBhcyAKc2VsZWN0IHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUs IGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNpc2lvbiwgZGF0YV9zY2FsZQpmcm9tIGFsbF90YWJfY29s dW1uc0AmJnVpbnN0YW5jZV8xCndoZXJlICAxPTIKLwoKYWx0ZXIgdGFibGUgdGFibGVfZGlmZiBh ZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpICk7CgoKY3JlYXRlIGluZGV4IHRhYmxlX2RpZmZfaWR4 IG9uIHRhYmxlX2RpZmYgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgaW5zdGFuY2UgKTsKCmlu c2VydCBpbnRvIHRhYmxlX2RpZmYgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGF0YV90eXBl LCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUgKQoJc2VsZWN0IHRhYmxl X25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUsIGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNpc2lv biwgZGF0YV9zY2FsZQoJZnJvbSBhbGxfdGFiX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMQoJd2hlcmUg b3duZXIgPSAnJiZ1dXNlcl8xJwoJbWludXMKCXNlbGVjdCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFt ZSwgZGF0YV90eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUKCWZy b20gYWxsX3RhYl9jb2x1bW5zQCYmdWluc3RhbmNlXzIKCXdoZXJlIG93bmVyID0gJyYmdXVzZXJf MicKLwoKdXBkYXRlIHRhYmxlX2RpZmYgc2V0IGluc3RhbmNlID0gJyYmdWluc3RhbmNlXzEnOwoK aW5zZXJ0IGludG8gdGFibGVfZGlmZiAgKCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGF0YV90 eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUgKQoJc2VsZWN0IHRh YmxlX25hbWUsIGNvbHVtbl9uYW1lLCBkYXRhX3R5cGUsIGRhdGFfbGVuZ3RoLCBkYXRhX3ByZWNp c2lvbiwgZGF0YV9zY2FsZQoJZnJvbSBhbGxfdGFiX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMgoJd2hl cmUgb3duZXIgPSAnJiZ1dXNlcl8yJwoJbWludXMKCXNlbGVjdCB0YWJsZV9uYW1lLCBjb2x1bW5f bmFtZSwgZGF0YV90eXBlLCBkYXRhX2xlbmd0aCwgZGF0YV9wcmVjaXNpb24sIGRhdGFfc2NhbGUK CWZyb20gYWxsX3RhYl9jb2x1bW5zQCYmdWluc3RhbmNlXzEKCXdoZXJlIG93bmVyID0gJyYmdXVz ZXJfMScKLwoKdXBkYXRlIHRhYmxlX2RpZmYgc2V0IGluc3RhbmNlID0gJyYmdWluc3RhbmNlXzIn IHdoZXJlIGluc3RhbmNlIGlzIG51bGw7Cgpjb21taXQ7CgotLSBkbyBpbmRleCBkaWZmCnByb21w dApwcm9tcHQgQ3JlYXRpbmcgaW5kZXggZGlmZmVyZW5jZSBkYXRhCnByb21wdAoKCmRyb3AgdGFi bGUgaW5kZXhfZGlmZjsKCmNyZWF0ZSB0YWJsZSBpbmRleF9kaWZmIGFzIApzZWxlY3QgaW5kZXhf bmFtZSwgdGFibGVfbmFtZSwgY29sdW1uX25hbWUsIGNvbHVtbl9wb3NpdGlvbiwgY29sdW1uX2xl bmd0aApmcm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0YW5jZV8xCndoZXJlICAxPTIKLwoKYWx0 ZXIgdGFibGUgaW5kZXhfZGlmZiBhZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpICk7CgpjcmVhdGUg aW5kZXggaW5kZXhfZGlmZl9pZHggb24gaW5kZXhfZGlmZiAoIAoJdGFibGVfbmFtZSwgCgljb2x1 bW5fbmFtZSwgY29sdW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCikKLwoKaW5zZXJ0IGludG8g aW5kZXhfZGlmZiAoIGluZGV4X25hbWUsICB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29sdW1u X3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoICkKCXNlbGVjdCBpbmRleF9uYW1lLCAgdGFibGVfbmFt ZSwgY29sdW1uX25hbWUsIGNvbHVtbl9wb3NpdGlvbiwgY29sdW1uX2xlbmd0aAoJZnJvbSBhbGxf aW5kX2NvbHVtbnNAJiZ1aW5zdGFuY2VfMQoJd2hlcmUgaW5kZXhfb3duZXIgPSAnJiZ1dXNlcl8x JwoJbWludXMKCXNlbGVjdCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29s dW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCglmcm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0 YW5jZV8yCgl3aGVyZSBpbmRleF9vd25lciA9ICcmJnV1c2VyXzInCi8KCnVwZGF0ZSBpbmRleF9k aWZmIHNldCBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJzsKCmluc2VydCBpbnRvIGluZGV4X2Rp ZmYgKCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgY29sdW1uX3Bvc2l0aW9u LCBjb2x1bW5fbGVuZ3RoICkKCXNlbGVjdCBpbmRleF9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5f bmFtZSwgY29sdW1uX3Bvc2l0aW9uLCBjb2x1bW5fbGVuZ3RoCglmcm9tIGFsbF9pbmRfY29sdW1u c0AmJnVpbnN0YW5jZV8yCgl3aGVyZSBpbmRleF9vd25lciA9ICcmJnV1c2VyXzInCgltaW51cwoJ c2VsZWN0IGluZGV4X25hbWUsIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBjb2x1bW5fcG9zaXRp b24sIGNvbHVtbl9sZW5ndGgKCWZyb20gYWxsX2luZF9jb2x1bW5zQCYmdWluc3RhbmNlXzEKCXdo ZXJlIGluZGV4X293bmVyID0gJyYmdXVzZXJfMScKLwoKdXBkYXRlIGluZGV4X2RpZmYgc2V0IGlu c3RhbmNlID0gJyYmdWluc3RhbmNlXzInIHdoZXJlIGluc3RhbmNlIGlzIG51bGw7CgoKY29tbWl0 OwoKCi0tIGRvIGFyZ3VtZW50IGRpZmYKcHJvbXB0CnByb21wdCBDcmVhdGluZyBhcmd1bWVudHMg ZGlmZmVyZW5jZSBkYXRhCnByb21wdAoKZHJvcCB0YWJsZSBhcmdfZGlmZjsKCmNyZWF0ZSB0YWJs ZSBhcmdfZGlmZiBhcyAKU0VMRUNUCglvYmojIG9iaiMKCSxwcm9jZWR1cmUkIHByb2NlZHVyZQoJ LGFyZ3VtZW50IGFyZ3VtZW50CgksdHlwZSB0eXBlCiAgICxvdmVybG9hZCMgb3ZlcmxvYWQKICAg LHBvc2l0aW9uIHBvc2l0aW9uCgksc2VxdWVuY2UjIHNlcXVlbmNlCiAgICxkZWZhdWx0IyAiREVG QVVMVCIKICAgLGluX291dCBpbl9vdXQKICAgLGxldmVsIyAiTEVWRUwiCgksbGVuZ3RoIGxlbmd0 aAogICAscHJlY2lzaW9uICJQUkVDSVNJT04iCiAgICxzY2FsZSBzY2FsZQogICAscmFkaXggcmFk aXgKRlJPTSBzeXMuQVJHVU1FTlQkQCZ1aW5zdGFuY2VfMQp3aGVyZSAxID0gMgovCgphbHRlciB0 YWJsZSBhcmdfZGlmZiBhZGQoIGluc3RhbmNlIHZhcmNoYXIyKDgpLCBvYmplY3RfbmFtZSB2YXJj aGFyMigzMCksIG9iamVjdF90eXBlIHZhcmNoYXIyKDEzKSApOwphbHRlciB0YWJsZSBhcmdfZGlm ZiBtb2RpZnkoIG9iaiMgbnVsbCApOwoKY3JlYXRlIGluZGV4IGFyZ19kaWZmX2lkeCBvbiBhcmdf ZGlmZiAoIG9iaiMsIGFyZ3VtZW50LCB0eXBlICk7CgppbnNlcnQgaW50byBhcmdfZGlmZiAKCSgK CQkgb2JqZWN0X25hbWUsIG9iamVjdF90eXBlLCBwcm9jZWR1cmUsIGFyZ3VtZW50LCB0eXBlLCBv dmVybG9hZCwgcG9zaXRpb24sIHNlcXVlbmNlLAoJCSJERUZBVUxUIiwgaW5fb3V0LCAiTEVWRUwi LCBsZW5ndGgsICJQUkVDSVNJT04iLCBzY2FsZSwgcmFkaXgKCSkKCXNlbGVjdCAKCQlvYmoub2Jq ZWN0X25hbWUgLG9iai5vYmplY3RfdHlwZSAsYXJnLnByb2NlZHVyZSQgLGFyZy5hcmd1bWVudAoJ CSxhcmcudHlwZSAsYXJnLm92ZXJsb2FkIyAsYXJnLnBvc2l0aW9uICxhcmcuc2VxdWVuY2UjICxh cmcuZGVmYXVsdCMgLGFyZy5pbl9vdXQKICAgCSxhcmcubGV2ZWwjICxhcmcubGVuZ3RoICxhcmcu cHJlY2lzaW9uICxhcmcuc2NhbGUgLGFyZy5yYWRpeAoJZnJvbSBzeXMuYXJndW1lbnQkQCYmdWlu c3RhbmNlXzEgYXJnLCBkYmFfb2JqZWN0c0AmJnVpbnN0YW5jZV8xIG9iagoJd2hlcmUgYXJnLm9i aiMgPSBvYmoub2JqZWN0X2lkCglhbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMScKCW1pbnVzCglz ZWxlY3QgCgkJb2JqLm9iamVjdF9uYW1lICxvYmoub2JqZWN0X3R5cGUgLGFyZy5wcm9jZWR1cmUk ICxhcmcuYXJndW1lbnQKCQksYXJnLnR5cGUgLGFyZy5vdmVybG9hZCMgLGFyZy5wb3NpdGlvbiAs YXJnLnNlcXVlbmNlIyAsYXJnLmRlZmF1bHQjICxhcmcuaW5fb3V0CiAgIAksYXJnLmxldmVsIyAs YXJnLmxlbmd0aCAsYXJnLnByZWNpc2lvbiAsYXJnLnNjYWxlICxhcmcucmFkaXgKCWZyb20gc3lz LmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yIGFyZywgZGJhX29iamVjdHNAJiZ1aW5zdGFuY2VfMiBv YmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5vd25lciA9ICcmJnV1 c2VyXzInCi8KCgp1cGRhdGUgYXJnX2RpZmYgCnNldCBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8x JwovCgotLSBjcmVhdGUgdG1wIHRhYmxlcyB0byBkbyB0aGVzZSB1cGRhdGVzCi0tIGl0IHdpbGwg YmUgTVVDSCBmYXN0ZXIKCmRyb3AgdGFibGUgcmVtb3RlX2RiYV9vYmplY3RzOwpkcm9wIHRhYmxl IHJlbW90ZV9hcmd1bWVudHM7CgpjcmVhdGUgdGFibGUgcmVtb3RlX2RiYV9vYmplY3RzCmFzIApz ZWxlY3QgKgpmcm9tIGRiYV9vYmplY3RzQCYmdWluc3RhbmNlXzEKLwoKY3JlYXRlIGluZGV4IHJl bW90ZV9kYmFfb2JqZWN0X2lkeDEgCm9uIHJlbW90ZV9kYmFfb2JqZWN0cyggb2JqZWN0X3R5cGUs IG9iamVjdF9pZCApCi8KCmNyZWF0ZSBpbmRleCByZW1vdGVfZGJhX29iamVjdF9pZHgyCm9uIHJl bW90ZV9kYmFfb2JqZWN0cyggb2JqZWN0X2lkICkKLwoKY3JlYXRlIHRhYmxlIHJlbW90ZV9hcmd1 bWVudHMKYXMKc2VsZWN0IAoJb2JqIywgcHJvY2VkdXJlJCxvdmVybG9hZCMscG9zaXRpb24sc2Vx dWVuY2UjLGxldmVsIywKCWFyZ3VtZW50LHR5cGUsZGVmYXVsdCMsaW5fb3V0LGxlbmd0aCxwcmVj aXNpb24sc2NhbGUsCglyYWRpeCxkZWZsZW5ndGgKZnJvbSBzeXMuYXJndW1lbnQkQCYmdWluc3Rh bmNlXzEKLwoKY3JlYXRlIGluZGV4IHJlbW90ZV9hcmd1bWVudHNfaWR4MQpvbiByZW1vdGVfYXJn dW1lbnRzKCBhcmd1bWVudCwgdHlwZSApCi8KCnVwZGF0ZSBhcmdfZGlmZiAgZGlmZgpzZXQgIG9i aiMgPSAoCglzZWxlY3Qgb2JqIyAKCWZyb20gcmVtb3RlX2FyZ3VtZW50cyBhcmcsIHJlbW90ZV9k YmFfb2JqZWN0cyBvYmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5v YmplY3RfbmFtZSA9IGRpZmYub2JqZWN0X25hbWUKCWFuZCBvYmoub2JqZWN0X3R5cGUgPSBkaWZm Lm9iamVjdF90eXBlCglhbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMScKCWFuZCBudmwoYXJnLnBy b2NlZHVyZSQsICdOT05FJykgPSBudmwoZGlmZi5wcm9jZWR1cmUsICdOT05FJykKCWFuZCBhcmcu YXJndW1lbnQgPSBkaWZmLmFyZ3VtZW50CglhbmQgYXJnLnR5cGUgPSBkaWZmLnR5cGUKCWFuZCBh cmcub3ZlcmxvYWQjID0gZGlmZi5vdmVybG9hZAoJYW5kIGRpZmYuaW5zdGFuY2UgPSAnJiZ1aW5z dGFuY2VfMScKKQp3aGVyZSBpbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJwovCgogCmluc2VydCBp bnRvIGFyZ19kaWZmIAoJKAoJCW9iamVjdF9uYW1lLCBvYmplY3RfdHlwZSwgcHJvY2VkdXJlLCBh cmd1bWVudCwgdHlwZSwgb3ZlcmxvYWQsIHBvc2l0aW9uLCBzZXF1ZW5jZSwKCQkiREVGQVVMVCIs IGluX291dCwgIkxFVkVMIiwgbGVuZ3RoLCAiUFJFQ0lTSU9OIiwgc2NhbGUsIHJhZGl4CgkpCglz ZWxlY3QgCgkJb2JqLm9iamVjdF9uYW1lICxvYmoub2JqZWN0X3R5cGUgLGFyZy5wcm9jZWR1cmUk ICxhcmcuYXJndW1lbnQKCQksYXJnLnR5cGUgLGFyZy5vdmVybG9hZCMgLGFyZy5wb3NpdGlvbiAs YXJnLnNlcXVlbmNlIyAsYXJnLmRlZmF1bHQjICxhcmcuaW5fb3V0CiAgIAksYXJnLmxldmVsIyAs YXJnLmxlbmd0aCAsYXJnLnByZWNpc2lvbiAsYXJnLnNjYWxlICxhcmcucmFkaXgKCWZyb20gc3lz LmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yIGFyZywgZGJhX29iamVjdHNAJiZ1aW5zdGFuY2VfMiBv YmoKCXdoZXJlIGFyZy5vYmojID0gb2JqLm9iamVjdF9pZAoJYW5kIG9iai5vd25lciA9ICcmJnV1 c2VyXzInCgltaW51cwoJc2VsZWN0IAoJCW9iai5vYmplY3RfbmFtZSAsb2JqLm9iamVjdF90eXBl ICxhcmcucHJvY2VkdXJlJCAsYXJnLmFyZ3VtZW50CgkJLGFyZy50eXBlICxhcmcub3ZlcmxvYWQj ICxhcmcucG9zaXRpb24gLGFyZy5zZXF1ZW5jZSMgLGFyZy5kZWZhdWx0IyAsYXJnLmluX291dAog ICAJLGFyZy5sZXZlbCMgLGFyZy5sZW5ndGggLGFyZy5wcmVjaXNpb24gLGFyZy5zY2FsZSAsYXJn LnJhZGl4Cglmcm9tIHN5cy5hcmd1bWVudCRAJiZ1aW5zdGFuY2VfMSBhcmcsIGRiYV9vYmplY3Rz QCYmdWluc3RhbmNlXzEgb2JqCgl3aGVyZSBhcmcub2JqIyA9IG9iai5vYmplY3RfaWQKCWFuZCBv Ymoub3duZXIgPSAnJiZ1dXNlcl8xJwovCgp1cGRhdGUgYXJnX2RpZmYgCnNldCBpbnN0YW5jZSA9 ICcmJnVpbnN0YW5jZV8yJwp3aGVyZSBpbnN0YW5jZSBpcyBudWxsCi8KCi0tIGNyZWF0ZSB0bXAg dGFibGVzIHRvIGRvIHRoZXNlIHVwZGF0ZXMKLS0gaXQgd2lsbCBiZSBNVUNIIGZhc3RlcgoKZHJv cCB0YWJsZSByZW1vdGVfZGJhX29iamVjdHM7CmRyb3AgdGFibGUgcmVtb3RlX2FyZ3VtZW50czsK CmNyZWF0ZSB0YWJsZSByZW1vdGVfZGJhX29iamVjdHMKYXMgCnNlbGVjdCAqCmZyb20gZGJhX29i amVjdHNAJiZ1aW5zdGFuY2VfMgovCgpjcmVhdGUgaW5kZXggcmVtb3RlX2RiYV9vYmplY3RfaWR4 MSAKb24gcmVtb3RlX2RiYV9vYmplY3RzKCBvYmplY3RfdHlwZSwgb2JqZWN0X2lkICkKLwoKY3Jl YXRlIGluZGV4IHJlbW90ZV9kYmFfb2JqZWN0X2lkeDIKb24gcmVtb3RlX2RiYV9vYmplY3RzKCBv YmplY3RfaWQgKQovCgpjcmVhdGUgdGFibGUgcmVtb3RlX2FyZ3VtZW50cwphcwpzZWxlY3QKCW9i aiMsIHByb2NlZHVyZSQsb3ZlcmxvYWQjLHBvc2l0aW9uLHNlcXVlbmNlIyxsZXZlbCMsCglhcmd1 bWVudCx0eXBlLGRlZmF1bHQjLGluX291dCxsZW5ndGgscHJlY2lzaW9uLHNjYWxlLAoJcmFkaXgs ZGVmbGVuZ3RoCmZyb20gc3lzLmFyZ3VtZW50JEAmJnVpbnN0YW5jZV8yCi8KCmNyZWF0ZSBpbmRl eCByZW1vdGVfYXJndW1lbnRzX2lkeDEKb24gcmVtb3RlX2FyZ3VtZW50cyggYXJndW1lbnQsIHR5 cGUgKQovCgoKdXBkYXRlIGFyZ19kaWZmICBkaWZmCnNldCAgb2JqIyA9ICgKCXNlbGVjdCBvYmoj IAoJZnJvbSByZW1vdGVfYXJndW1lbnRzIGFyZywgcmVtb3RlX2RiYV9vYmplY3RzIG9iagoJd2hl cmUgYXJnLm9iaiMgPSBvYmoub2JqZWN0X2lkCglhbmQgb2JqLm9iamVjdF9uYW1lID0gZGlmZi5v YmplY3RfbmFtZQoJYW5kIG9iai5vYmplY3RfdHlwZSA9IGRpZmYub2JqZWN0X3R5cGUKCWFuZCBv Ymoub3duZXIgPSAnJiZ1dXNlcl8yJwoJYW5kIG52bChhcmcucHJvY2VkdXJlJCwgJ05PTkUnKSA9 IG52bChkaWZmLnByb2NlZHVyZSwgJ05PTkUnKQoJYW5kIGFyZy5hcmd1bWVudCA9IGRpZmYuYXJn dW1lbnQKCWFuZCBhcmcudHlwZSA9IGRpZmYudHlwZQoJYW5kIGFyZy5vdmVybG9hZCMgPSBkaWZm Lm92ZXJsb2FkCglhbmQgZGlmZi5pbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8yJwopCndoZXJlIGlu c3RhbmNlID0gJyYmdWluc3RhbmNlXzInCi8KCgpkcm9wIHRhYmxlIHJlbW90ZV9kYmFfb2JqZWN0 czsKZHJvcCB0YWJsZSByZW1vdGVfYXJndW1lbnRzOwoKCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gcmVwb3J0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgoKYnJlYWsgb24gdGFibGVfbmFtZSBvbiBjb2x1bW5fbmFtZSBvbiB1 c2VybmFtZQoKY29sIGRhdGFfcHJlY2lzaW9uIGZvcm1hdCA5OTk5OTkgaGVhZCAnUFJFQycKY29s IGRhdGFfc2NhbGUgZm9ybWF0IDk5OTk5OSBoZWFkICdTQ0FMRScKY29sIGRhdGFfbGVuZ3RoIGZv cm1hdCA5OTk5OTkgaGVhZCAnTEVOR1RIJwpjb2wgY29sdW1uX25hbWUgZm9ybWF0IGEzMCBoZWFk ICdDT0xVTU4gTkFNRScKCnNldCB0cmltc3Bvb2wgb24KCi0tIHRhYmxlIGRpZmYgcmVwb3J0Cgpz cG9vbCB0YWJsZV9kaWZmLnR4dAoKQHRpdGxlICdUYWJsZSBEaWZmcyBVc2VyMTogJiZ1dXNlcl8x QCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVpbnN0YW5jZV8yJyAxMjAKCnNlbGVj dAoJdDEudGFibGVfbmFtZSwgCgl0MS5jb2x1bW5fbmFtZSwgCgknJiZ1dXNlcl8xJyB1c2VybmFt ZSwKCWluc3RhbmNlLAoJdDEuZGF0YV90eXBlLCAKCXQxLmRhdGFfcHJlY2lzaW9uLCAKCXQxLmRh dGFfc2NhbGUsCgl0MS5kYXRhX2xlbmd0aApmcm9tIGFsbF90YWJfY29sdW1uc0AmJnVpbnN0YW5j ZV8xIHQxLCB0YWJsZV9kaWZmIGQxCndoZXJlIG93bmVyID0gJyYmdXVzZXJfMScKYW5kIHQxLnRh YmxlX25hbWUgID0gZDEudGFibGVfbmFtZQphbmQgdDEuY29sdW1uX25hbWUgPSBkMS5jb2x1bW5f bmFtZQphbmQgZDEuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMScKdW5pb24gYWxsCnNlbGVjdAoJ dDIudGFibGVfbmFtZSwgCgl0Mi5jb2x1bW5fbmFtZSwgCgknJiZ1dXNlcl8yJyB1c2VybmFtZSwK CWluc3RhbmNlLAoJdDIuZGF0YV90eXBlLCAKCXQyLmRhdGFfbGVuZ3RoLCAKCXQyLmRhdGFfc2Nh bGUsCgl0Mi5kYXRhX3ByZWNpc2lvbgpmcm9tIGFsbF90YWJfY29sdW1uc0AmJnVpbnN0YW5jZV8y IHQyLCB0YWJsZV9kaWZmIGQyCndoZXJlIG93bmVyID0gJyYmdXVzZXJfMicKYW5kIHQyLnRhYmxl X25hbWUgID0gZDIudGFibGVfbmFtZQphbmQgdDIuY29sdW1uX25hbWUgPSBkMi5jb2x1bW5fbmFt ZQphbmQgZDIuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwyLDMsNAovCgot LSBpbmRleCBkaWZmIHJlcG9ydAoKYnJlYWsgb24gaW5kZXhfbmFtZSBvbiB0YWJsZV9uYW1lCgpj b2wgZGF0YV9wcmVjaXNpb24gZm9ybWF0IDk5OTk5OSBoZWFkICdQUkVDJwpjb2wgZGF0YV9zY2Fs ZSBmb3JtYXQgOTk5OTk5IGhlYWQgJ1NDQUxFJwpjb2wgZGF0YV9sZW5ndGggZm9ybWF0IDk5OTk5 OSBoZWFkICdMRU5HVEgnCmNvbCBjb2x1bW5fbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ0NPTFVNTiBO QU1FJwoKY29sIGNvbHVtbl9wb3NpdGlvbiBmb3JtYXQgOTk5IGhlYWQgJ0NPTHxQT1MnCmNvbCBj b2x1bW5fbGVuZ3RoIGZvcm1hdCA5OTk5OSBoZWFkICdDT0x8TEVOJwoKQHRpdGxlICdJbmRleCBE aWZmcyBVc2VyMTogJiZ1dXNlcl8xQCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVp bnN0YW5jZV8yJyAxMzUKCmNvbCB1c2VybmFtZSBmb3JtYXQgYTEwIGhlYWQgJ0lOREVYfE9XTkVS JwoKc3Bvb2wgaW5kZXhfZGlmZi50eHQKCnNlbGVjdAoJdDEuaW5kZXhfbmFtZSwgCgknJiZ1dXNl cl8xJyB1c2VybmFtZSwKCWluc3RhbmNlLAoJdDEudGFibGVfbmFtZSwKCXQxLmNvbHVtbl9uYW1l LAoJdDEuY29sdW1uX3Bvc2l0aW9uLAoJdDEuY29sdW1uX2xlbmd0aApmcm9tIGFsbF9pbmRfY29s dW1uc0AmJnVpbnN0YW5jZV8xIHQxLCBpbmRleF9kaWZmIGQxCndoZXJlIGluZGV4X293bmVyID0g JyYmdXVzZXJfMScKYW5kIHQxLnRhYmxlX25hbWUgID0gZDEudGFibGVfbmFtZQphbmQgdDEuY29s dW1uX25hbWUgPSBkMS5jb2x1bW5fbmFtZQphbmQgdDEuY29sdW1uX3Bvc2l0aW9uID0gZDEuY29s dW1uX3Bvc2l0aW9uCmFuZCB0MS5jb2x1bW5fbGVuZ3RoID0gZDEuY29sdW1uX2xlbmd0aAphbmQg ZDEuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMScKdW5pb24gYWxsCnNlbGVjdAoJdDIuaW5kZXhf bmFtZSwgCgknJiZ1dXNlcl8yJyB1c2VybmFtZSwKCWluc3RhbmNlLAoJdDIudGFibGVfbmFtZSwK CXQyLmNvbHVtbl9uYW1lLAoJdDIuY29sdW1uX3Bvc2l0aW9uLAoJdDIuY29sdW1uX2xlbmd0aApm cm9tIGFsbF9pbmRfY29sdW1uc0AmJnVpbnN0YW5jZV8yIHQyLCBpbmRleF9kaWZmIGQyCndoZXJl IGluZGV4X293bmVyID0gJyYmdXVzZXJfMicKYW5kIHQyLnRhYmxlX25hbWUgID0gZDIudGFibGVf bmFtZQphbmQgdDIuY29sdW1uX25hbWUgPSBkMi5jb2x1bW5fbmFtZQphbmQgdDIuY29sdW1uX3Bv c2l0aW9uID0gZDIuY29sdW1uX3Bvc2l0aW9uCmFuZCB0Mi5jb2x1bW5fbGVuZ3RoID0gZDIuY29s dW1uX2xlbmd0aAphbmQgZDIuaW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwy LDMsNCw1LDYKLwoKCi0tIGFyZ3VtZW50IGRpZmYgcmVwb3J0Cgpjb2wgcHJvY2VkdXJlIGZvcm1h dCBhNDAgaGVhZCAnUFJPQ0VEVVJFJwoKYnJlYWsgb24gcHJvY2VkdXJlIG9uIG92ZXJsb2FkCgpA dGl0bGUgJ0FyZ3VtZW50IERpZmZzIFVzZXIxOiAmJnV1c2VyXzFAJiZ1aW5zdGFuY2VfMSBVc2Vy MjogJiZ1dXNlcl8yQCYmdWluc3RhbmNlXzInIDIwMAoKc3Bvb2wgYXJnX2RpZmYudHh0CgpTRUxF Q1QKCXN1YnN0cigKCQlvYmouT0JKRUNUX05BTUV8fAoJCWRlY29kZSggYXJnLnByb2NlZHVyZSQs bnVsbCwnJywnLicpIHx8CgkJYXJnLnByb2NlZHVyZSQsMSw2MAoJKSBwcm9jZWR1cmUKICAgLGFy Zy5PVkVSTE9BRCMgb3ZlcmxvYWQKCSxhcmcuQVJHVU1FTlQKCSxkaWZmLmluc3RhbmNlCgksb2Jq Lm9iamVjdF90eXBlCgksZGVjb2RlKGFyZy50eXBlLAoJCTEsICdWQVJDSEFSMicsCgkJMiwgJ05V TUJFUicsCgkJOCwgJ0xPTkcnLAoJCTksICdWQVJDSEFSJywKCQkxMiwgJ0RBVEUnLAoJCTIzLCAn UkFXJywKCQkyNCwgJ0xPTkcgUkFXJywKCQk2OSwgJ1JPV0lEJywKCQk5NiwgJ0NIQVInLAoJCTI1 MCwgJ1JFQ09SRCcsCgkJMjUyLCAnQk9PTEVBTicsCgkJLS0ganVzdCBzaG93IHR5cGUjIGFzIGRl ZmF1bHQKCQlzdWJzdHIodG9fY2hhcihhcmcudHlwZSksMSwxMCkKCSkgdHlwZQogICAsYXJnLlBP U0lUSU9OCiAgICxOVkwoYXJnLkRFRkFVTFQjLDApIERFRkFVTFQjCgksZGVjb2RlKGFyZy5JTl9P VVQsbnVsbCwnSU4nLCAyLCdJTl9PVVQnLCAnVU5LTk9XTicgKSBJTl9PVVQKICAgLE5WTChhcmcu TEVWRUwjLDApIExFVkVMIwoJLE5WTChhcmcuTEVOR1RILDApIExFTkdUSAogICAsTlZMKGFyZy5Q UkVDSVNJT04sMCkgUFJFQ0lTSU9OCiAgICxOVkwoYXJnLlNDQUxFLDApIFNDQUxFCiAgICxOVkwo YXJnLlJBRElYLDApIFJBRElYCmZyb20KCXN5cy5hcmd1bWVudCRAJiZ1aW5zdGFuY2VfMSBhcmcK CSxkYmFfb2JqZWN0c0AmJnVpbnN0YW5jZV8xIG9iagoJLGFyZ19kaWZmIGRpZmYKd2hlcmUgYXJn Lm9iaiMgPSBvYmoub2JqZWN0X2lkCmFuZCBvYmoub3duZXIgPSAnJiZ1dXNlcl8xJwphbmQgZGlm Zi5vYmojID0gYXJnLm9iaiMKYW5kIG52bChkaWZmLnByb2NlZHVyZSwnTk9ORScpID0gbnZsKGFy Zy5wcm9jZWR1cmUkLCdOT05FJykKYW5kIGRpZmYuYXJndW1lbnQgPSBhcmcuYXJndW1lbnQKYW5k IGRpZmYudHlwZSA9IGFyZy50eXBlCmFuZCBkaWZmLm92ZXJsb2FkID0gYXJnLm92ZXJsb2FkIwph bmQgZGlmZi5pbnN0YW5jZSA9ICcmJnVpbnN0YW5jZV8xJwp1bmlvbiBhbGwKU0VMRUNUCglzdWJz dHIoCgkJb2JqLk9CSkVDVF9OQU1FfHwKCQlkZWNvZGUoIGFyZy5wcm9jZWR1cmUkLG51bGwsJycs Jy4nKSB8fAoJCWFyZy5wcm9jZWR1cmUkLDEsNjAKCSkgcHJvY2VkdXJlCiAgICxhcmcuT1ZFUkxP QUQjIG92ZXJsb2FkCgksYXJnLkFSR1VNRU5UCgksZGlmZi5pbnN0YW5jZQoJLG9iai5vYmplY3Rf dHlwZQoJLGRlY29kZShhcmcudHlwZSwKCQkxLCAnVkFSQ0hBUjInLAoJCTIsICdOVU1CRVInLAoJ CTgsICdMT05HJywKCQk5LCAnVkFSQ0hBUicsCgkJMTIsICdEQVRFJywKCQkyMywgJ1JBVycsCgkJ MjQsICdMT05HIFJBVycsCgkJNjksICdST1dJRCcsCgkJOTYsICdDSEFSJywKCQkyNTAsICdSRUNP UkQnLAoJCTI1MiwgJ0JPT0xFQU4nLAoJCS0tIGp1c3Qgc2hvdyB0eXBlIyBhcyBkZWZhdWx0CgkJ c3Vic3RyKHRvX2NoYXIoYXJnLnR5cGUpLDEsMTApCgkpIHR5cGUKICAgLGFyZy5QT1NJVElPTgog ICAsTlZMKGFyZy5ERUZBVUxUIywwKSBERUZBVUxUIwoJLGRlY29kZShhcmcuSU5fT1VULG51bGws J0lOJywgMiwnSU5fT1VUJywgJ1VOS05PV04nICkgSU5fT1VUCiAgICxOVkwoYXJnLkxFVkVMIyww KSBMRVZFTCMKCSxOVkwoYXJnLkxFTkdUSCwwKSBMRU5HVEgKICAgLE5WTChhcmcuUFJFQ0lTSU9O LDApIFBSRUNJU0lPTgogICAsTlZMKGFyZy5TQ0FMRSwwKSBTQ0FMRQogICAsTlZMKGFyZy5SQURJ WCwwKSBSQURJWApmcm9tCglzeXMuYXJndW1lbnQkQCYmdWluc3RhbmNlXzIgYXJnCgksZGJhX29i amVjdHNAJiZ1aW5zdGFuY2VfMiBvYmoKCSxhcmdfZGlmZiBkaWZmCndoZXJlIGFyZy5vYmojID0g b2JqLm9iamVjdF9pZAphbmQgb2JqLm93bmVyID0gJyYmdXVzZXJfMicKYW5kIGRpZmYub2JqIyA9 IGFyZy5vYmojCmFuZCBudmwoZGlmZi5wcm9jZWR1cmUsJ05PTkUnKSA9IG52bChhcmcucHJvY2Vk dXJlJCwnTk9ORScpCmFuZCBkaWZmLmFyZ3VtZW50ID0gYXJnLmFyZ3VtZW50CmFuZCBkaWZmLnR5 cGUgPSBhcmcudHlwZQphbmQgZGlmZi5vdmVybG9hZCA9IGFyZy5vdmVybG9hZCMKYW5kIGRpZmYu aW5zdGFuY2UgPSAnJiZ1aW5zdGFuY2VfMicKb3JkZXIgYnkgMSwyLDMsNCw1Ci8KCgotLSBzZXF1 ZW5jZSBkaWZmIHJlcG9ydAoKQHRpdGxlICdTZXF1ZW5jZSBEaWZmcyBVc2VyMTogJiZ1dXNlcl8x QCYmdWluc3RhbmNlXzEgVXNlcjI6ICYmdXVzZXJfMkAmJnVpbnN0YW5jZV8yJyAxMTAKCmNvbCBz ZXF1ZW5jZV9uYW1lIGZvcm1hdCBhMzAgaGVhZCAnU0VRVUVOQ0UgTkFNRScKY29sIGxhc3RfbnVt YmVyIGZvcm1hdCA5OTk5OTk5OTk5OTkgaGVhZCAnTEFTVHxOVU1CRVInCmNvbCBtaW5fdmFsdWUg Zm9ybWF0IDk5OTk5OTk5OTkgaGVhZCAnTUlOfFZBTFVFJwpjb2wgbWF4X3ZhbHVlIGZvcm1hdCA5 OTk5OTk5OTk5OTkgaGVhZCAnTUFYfFZBTFVFJwpjb2wgaW5jcmVtZW50X2J5IGZvcm1hdCA5OTk5 OTkgaGVhZCAnSU5DUkVNRU5UJwpjb2wgY2FjaGVfc2l6ZSBmb3JtYXQgOTk5OTk5IGhlYWQgJ0NB Q0hFfFNJWkUnCmNvbCBjeWNsZV9mbGFnIGZvcm1hdCBhNSBoZWFkICdDWUNMRXxGTEFHJwpjb2wg b3JkZXJfZmxhZyBmb3JtYXQgYTUgaGVhZCAnT1JERVJ8RkxBRycKCmJyZWFrIG9uIHNlcXVlbmNl X25hbWUgc2tpcCAxCgpzcG9vbCBzZXF1ZW5jZV9kaWZmLnR4dAoKKAoJKCAKCQlzZWxlY3QKCQkJ c2VxdWVuY2VfbmFtZSwgJyYmdWluc3RhbmNlXzEnIGluc3RhbmNlICxsYXN0X251bWJlciwgbWlu X3ZhbHVlLG1heF92YWx1ZSwKCQkJaW5jcmVtZW50X2J5LGN5Y2xlX2ZsYWcsb3JkZXJfZmxhZywK CQkJY2FjaGVfc2l6ZQoJCWZyb20gZGJhX3NlcXVlbmNlc0AmJnVpbnN0YW5jZV8xCgkJd2hlcmUg c2VxdWVuY2Vfb3duZXIgPSAnJiZ1dXNlcl8xJyAKCSkKCW1pbnVzCgkoIAoJCXNlbGVjdCAKCQkJ c2VxdWVuY2VfbmFtZSwgJyYmdWluc3RhbmNlXzInIGluc3RhbmNlICxsYXN0X251bWJlciwgbWlu X3ZhbHVlLG1heF92YWx1ZSwKCQkJaW5jcmVtZW50X2J5LGN5Y2xlX2ZsYWcsb3JkZXJfZmxhZywK CQkJY2FjaGVfc2l6ZQoJCWZyb20gZGJhX3NlcXVlbmNlc0AmJnVpbnN0YW5jZV8yCgkJd2hlcmUg c2VxdWVuY2Vfb3duZXIgPSAnJiZ1dXNlcl8yJyAKCSkKKQp1bmlvbgooCgkoIAoJCXNlbGVjdAoJ CQlzZXF1ZW5jZV9uYW1lLCAnJiZ1aW5zdGFuY2VfMicgaW5zdGFuY2UgLGxhc3RfbnVtYmVyLCBt aW5fdmFsdWUsbWF4X3ZhbHVlLAoJCQlpbmNyZW1lbnRfYnksY3ljbGVfZmxhZyxvcmRlcl9mbGFn LAoJCQljYWNoZV9zaXplCgkJZnJvbSBkYmFfc2VxdWVuY2VzQCYmdWluc3RhbmNlXzIKCQl3aGVy ZSBzZXF1ZW5jZV9vd25lciA9ICcmJnV1c2VyXzInIAoJKQoJbWludXMKCSggCgkJc2VsZWN0IAoJ CQlzZXF1ZW5jZV9uYW1lLCAnJiZ1aW5zdGFuY2VfMScgaW5zdGFuY2UgLGxhc3RfbnVtYmVyLCBt aW5fdmFsdWUsbWF4X3ZhbHVlLAoJCQlpbmNyZW1lbnRfYnksY3ljbGVfZmxhZyxvcmRlcl9mbGFn LAoJCQljYWNoZV9zaXplCgkJZnJvbSBkYmFfc2VxdWVuY2VzQCYmdWluc3RhbmNlXzEKCQl3aGVy ZSBzZXF1ZW5jZV9vd25lciA9ICcmJnV1c2VyXzEnIAoJKQopCi8KCnNwb29sIG9mZgoKdW5kZWYg MSAyIDMgNAoKcHJvbXB0CnByb21wdApwcm9tcHQKcHJvbXB0IFlvdXIgcmVwb3J0cyBpbiB0aGUg Zm9sbG93aW5nIGZpbGVzOgpwcm9tcHQKcHJvbXB0IHRhYmxlX2RpZmYudHh0CnByb21wdCBpbmRl eF9kaWZmLnR4dApwcm9tcHQgYXJnX2RpZmYudHh0CnByb21wdCBzZXF1ZW5jZV9kaWZmLnR4dApw cm9tcHQKCgo=
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
charset="iso-8859-1";
name="columns.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="columns.sql"
CmNvbCBibG9ja3MgZm9ybWF0IDk5LDk5OSw5OTkgaGVhZCAnQkxPQ0tTJwpjb2wgZGJfbGluayBm b3JtYXQgYTMwIGhlYWQgJ0RCIExJTksnCmNvbCBkYl9saW5rX2luc3RhbmNlIGZvcm1hdCBhMzAg aGVhZCAnREIgTElOS3xJTlNUQU5DRScKY29sIGRiX2xpbmtfdXNlcm5hbWUgZm9ybWF0IGExMCBo ZWFkICdEQiBMSU5LfFVTRVJOQU1FJwpjb2wgZW1wdHlfYmxvY2tzIGZvcm1hdCA5OSw5OTksOTk5 IGhlYWQgJ0VNUFRZIEJMT0NLUycKY29sIGhvc3QgZm9ybWF0IGExMCBoZWFkICdIT1NUJwpjb2wg aW5kZXhfbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ0lOREVYIE5BTUUnCmNvbCBpbml0aWFsX2V4dGVu dCBmb3JtYXQgOSw5OTksOTk5LDk5OSBoZWFkICdJTklUSUFMfEVYVEVOVCcKY29sIGluc3RhbmNl IGZvcm1hdCBhNCBoZWFkICdJTlNUJwpjb2wgbWF4X2Jsb2NrcyBmb3JtYXQgOSw5OTksOTk5IGhl YWQgJ01BWCBCTE9DS1MnCmNvbCBtYXhfYnl0ZXMgZm9ybWF0IDk5LDk5OSw5OTksOTk5IGhlYWQg J01BWCBCWVRFUycKY29sIG1heF9leHRlbnRzIGZvcm1hdCA5OTksOTk5IGhlYWQgJ01BWHxFWFRF TlRTJwpjb2wgbWluX2V4dGVudHMgZm9ybWF0IDk5OSBoZWFkICdNSU58RVhUJwpjb2wgbmV4dF9l eHRlbnQgZm9ybWF0IDksOTk5LDk5OSw5OTkgaGVhZCAnTkVYVHxFWFRFTlQnCmNvbCBvYmplY3Rf bmFtZSBmb3JtYXQgYTMwIGhlYWQgJ09CSkVDVCBOQU1FJwpjb2wgb3duZXIgZm9ybWF0IGExMCBo ZWFkICdPV05FUicKY29sIHBjdF9mcmVlIGZvcm1hdCA5OTkgaGVhZCAnUENUfEZSRUUnCmNvbCBw Y3RfaW5jcmVhc2UgZm9ybWF0IDk5OSBoZWFkICdQQ1R8SU5DJwpjb2wgcGN0X3VzZWQgZm9ybWF0 IDk5OSBoZWFkICdQQ1R8VVNFRCcKY29sIHN5bm9ueW1fbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ1NZ Tk9OWU0gTkFNRScKY29sIHRhYmxlX25hbWUgZm9ybWF0IGEzMCBoZWFkICdUQUJMRSBOQU1FJwpj b2wgdGFibGVfb3duZXIgZm9ybWF0IGExMCBoZWFkICdUQUJMRXxPV05FUicKY29sIHRhYmxlc3Bh Y2VfbmFtZSBmb3JtYXQgYTE1IGhlYWQgJ1RBQkxFU1BBQ0V8TkFNRScKY29sIHRpbWVzdGFtcCBm b3JtYXQgYTE5IGhlYWQgJ1RJTUUgU1RBTVAnCmNvbCB1c2VybmFtZSBmb3JtYXQgYTEwIGhlYWQg J1VTRVJOQU1FJwpjb2wgbGFzdF9kZGxfdGltZSBoZWFkICdMQVNUIERETHxUSU1FJwpjb2wgY3Jl YXRlZCBoZWFkICdDUkVBVEVEJwpjb2wgcHJvY2VkdXJlX25hbWUgZm9ybWF0IGEzMCBoZWFkICdQ Uk9DRURVUkUgTkFNRScKY29sIGZ1bmN0aW9uX25hbWUgZm9ybWF0IGEzMCBoZWFkICdGVU5DVElP TiBOQU1FJwpjb2wgcGFja2FnZV9uYW1lIGZvcm1hdCBhMzAgaGVhZCAnUEFDS0FHRSBOQU1FJwpj b2wgcGFja2FnZV9ib2R5X25hbWUgZm9ybWF0IGEzMCBoZWFkICdQQUNLQUdFIEJPRFkgTkFNRScK Y29sIHNlZ21lbnRfbmFtZSBmb3JtYXQgYTMwIGhlYWQgJ1NFR01FTlQgTkFNRScK
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V
Content-Type: text/plain;
charset="iso-8859-1";
name="clears.sql"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="clears.sql"
CnNldCBwYXVzZSBvZmYKc2V0IGVjaG8gb2ZmCnNldCB0cmltc3Bvb2wgb24Kc2V0IGZlZWQgb24g dGVybSBvbiBlY2hvIG9mZiB2ZXJpZnkgb2ZmCnNldCBsaW5lIDgwCnNldCBwYWdlcyAyNCBoZWFk IG9uCgpjbGVhciBjb2wKY2xlYXIgYnJlYWsKY2xlYXIgY29tcHV0ZXMKCmJ0aXRsZSAnJwp0dGl0 bGUgJycKCmJ0aXRsZSBvZmYKdHRpdGxlIG9mZgoKLS1AQHN0ZGRhdGUKCg==
--------------Boundary-00=_TI6B0KP3KE5T3HEN611V--
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Jared Still
INET: jkstill_at_cybcon.com
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Liststo: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Mon May 14 2001 - 00:20:00 CDT
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message