4.1 : Database Objects
1 . Create the Customer table with the following columns.
CustomerId Number( 5 )
Cust_Name varchar2( 20 )
Address1 Varchar2( 30 )
Address2 Varchar2( 30 )
==> create table customer
(
customerid number( 5 ) ,
cust_name varchar2( 20 ) ,
Address1 varchar2( 30 ) ,
Address2 varchar2( 30 )
) ;
2 . Modify the Customer table Cust_Name column of datatype with Varchar2( 30 ) , rename the column to CustomerName and it should not accept Nulls.
==> Alter table customer rename column cust_name to customername;
==> Alter table customer modify customername varchar2( 30 ) Not Null;
3 . a) Add the following Columns to the Customer table.
Gender Varchar2( 1 )
Age Number( 3 )
PhoneNo Number( 10 )
==> Alter table customer add Gender varchar2( 1 ) ;
==> Alter table customer add Age Number( 3 ) ;
==> Alter table customer add phoneNo( 10 ) ;
b) Rename the Customer table to Cust_Table
==> Rename customer to cust_table;
4 . Insert rows with the following data in to the Customer table.
==> insert into cust_table( & Customerid,'&cust_Name' ,'&Address1' ,'&Address2' ,'&Gender' ,& Age,& phoneNo) ;
==> 1000 , ‘Allen’, ‘#115 Chicago’, ‘#115 Chicago’, ‘M’, ‘25, 7878776’
==> 1001 , George, #116 France, #116 France, M, 25, 434524
==> 1002 , Becker, #114 New York, #114 New York, M, 45, 431525
5 . Add the Primary key constraint for Customerld with the name Custld_Prim.
==> Alter table cust_table add constraints Custid_prim PRIMARY KEY ( customerid) ;
6 . Insert the row given below in the Customer table and see the message generated by the Oracle server.
1002 , John, #114 Chicago, #114 Chicago, M, 45, 439525
==>
7 . Disable the constraint on CustomerId, and insert the following data:
1002 , Becker, #114 New York, #114 New york , M, 45, 431525
1003 , Nanapatekar, #115 India, #115 India , M, 45, 431525
==> Alter table cust_table drop PRIMARY KEY custid_prim;
8 . Enable the constraint on CustomerId of the Customer table, and see the message generated by the Oracle server.
==> Alter table cust_table add constraints Custid_prim PRIMARY KEY ( customerid) ;
==>
9 . Drop the constraint Custld_Prim on CustomerId and insert the following Data. Alter Customer table, drop constraint Custid_Prim.
1002 , Becker, #114 New York, #114 New york , M, 45, 431525, 15000.50
1003 , Nanapatekar, #115 India, #115 India , M, 45, 431525, 20000.50
==> Alter table cust_table drop PRIMARY KEY custid_prim;
==> Insert into cust_table( 1002 , Becker, #114 New York, #114 New york , M, 45,431525, 15000.50);
==> Insert into cust_table( 1003 , Nanapatekar, #115 India, #115 India , M, 45, 431525,20000.50);
10 . Delete all the existing rows from Customer table, and let the structure remain itself using TRUNCATE statement.
==> TRUNCATE table cust_table;
11 . In the Customer table, add a column E_mail.
==> Alter table add e_mail varchar2( 30 ) ;
12 . Drop the E_mail column from Customer table.
==> Alter table cust_table DROP e_mail;
13 . Create the Suppliers table based on the structure of the Customer table. Include only the CustomerId, CustomerName, Address1, Address2, and phoneno columns.
Name the columns in the new table as SuppID, SName, Addr1, Addr2, and Contactno respectively.
==> create table Suppliers as select( customerid as suppid,customername as sname,adddress1 as addr1,address2 as addr2,phoneno as contactno) from cust_table;
14 . Drop the above table and recreate the following table with the name CustomerMaster.
Customerid Number( 5 ) Primary key( Name of constraint is CustId_PK)
CustomerName Varchar2( 30 ) Not Null
Addressl Varchar2( 30 ) Not Null
Address2 Varchar2( 30 )
Gender Varchar2( l)
Age Number( 3 )
PhoneNo Number( 10 )
==> Drop table Suppliers;
==> create table customermaster( customerid( 10 ) primary key( custid_pk) ,customername varchar2( 30 ) ,Address1 varchar2 ( 30 ) ,Address2 varchar2( 30 ) ,Gender varchar2( 1 ) ,Age number( 3 ) ,phoneno number( 10 ) ) ;
15 . Create the AccountsMaster table with the following Columns. Use sequence to generate Account number
Customerid Number( 5 )
AccountNumber Number( 10 ,2 ) Primary key( Name of constraint is Acc_PK)
AccountType Char( 3 )
LedgerBalance Number( 10 ,2 ) Not Null
==> Create table Accoutnmaster( customerid number( 5 ) ,Accountnumber number( 10 ) primary key( acno) ,accounttype char ( 3 ) ,ledgerbalance number( 10 ) Not Null) ;
==> Create sequence seq_ano
MINVALUE 101
MAXVALUE 10000
START WITH 101
INCREMENT BY 1
CACHE 101 ;
16 . Relate AccountsMaster table and CustomerMaster table through Customerld column with the constraint name Cust_acc.
==> Alter table Accountmaster ADD constraint ass_fk FOREIGN KEY( customerid) REFERENCES customermaster( customerid) ;
17 . Insert the following rows to the CustomerMaster table:
1000 , Allen, #115 Chicago, #115 Chicago, M, 25, 7878776
1001 , George, #116 France, #116 France, M, 25, 434524
1002 , Becker, #114 New York, #114 New York, M, 45, 431525
==> Insert into customermaster values( 1000 , Allen, #115 Chicago, #115 Chicago, M, 25, 7878776);
==> Insert into customermaster values( 1001 , George, #116 France, #116 France, M, 25, 4345240;
==> Insert into customermaster values( 1002 , Becker, #114 New York, #114 New York, M, 45, 4315250;
18 . Modify the AccountMaster table with the Check constraint to ensure AccountType should be either NRI or IND.
==> alter table Accountmaster add constraint ck_ac check( accountype='NRI' or accountype='IND' ) ;
19 . Modify the AccountsMaster table keeping a Check constraint with the name Balance_Check for the Minimum Balance which should be greater than 5000 .
==> alter table Accountmaster add constraint Balance_check( ledger balance > 5000 ) ;
20 . Modify the AccountsMaster table such that if Customer is deleted from Customer table then all his details should be deleted from AccountsMaster table.
==> Delete from Accountmaster,customertable where customerid = 1001
21 . Create Backup copy for the AccountsMaster table with the name ‘AccountDetails’.
==> Create table accountdetails as select * from Accountmaster;
22 . Create a view ‘Acc_view’ with columns Customerld, CustomerName, AccountNumber, AccountType, and LedgerBalance from AccountsMaster. In the view Acc_view, the column names should be CustomerCode, AccountHolderName, AccountNumber, Type, and Balance for the respective columns from AccountsMaster table.
==> CREATE VIEW Acc_view AS SELECT( Customerid,Customername,Accountnumber,AccountType,ledgerBalance)
from AccountMaster;
23 . Create a view on AccountsMaster table with name vAccs_Dtls. This view should list all customers whose AccountType is ‘IND’ and their balance amount should not be less than 10000 . Using this view any DML operation should not violate the view conditions.
==> CREATE VIEW vAccs_Dtls AS SELECT Accounttype,ledgerbalance from Accountmaster where accounttype = 'IND' and ledgerbalance < 10000 ;
24 . Create a view accsvw10 which will not allow DML statement against it.
==>
25 . Create a Sequence with the name Seq_Dept on Deptno column of Department_Masters table. It should start from 40 and stop at 200 . Increment parameter for the sequence Seq_Dept should be in step of 10 .
==> CREATE sequence SEQ_DEPTt minvalue 40 start with 40
increment by 10 cache 40 ;
26 . Insert three sample rows by using the above sequence in Department_Masters table.
==> create table departmentmaster( deptno number( 50 ) ,Dname varchar2( 25 ) ,location varchar2( 25 ) ) ;
==> insert into departmentmaster values( seq_dept.NEXTVAL,'MARKETING' ,'NEW DELHI' ) ;
==> ==> insert into departmentmaster values( seq_dept.NEXTVAL,'SALES' ,'chennai' ) ;
==> ==> insert into departmentmaster values( seq_dept.NEXTVAL,'RESEARCH' ,'BOSTON' ) ;
27 . Drop the Seq_Dept sequence.
==> DROP sequence seq_dept;
28 . Get information on the index No_Name from the Data Dictionary.
==> CREATE INDEX no_name on emp( empno) ;
==> select * from emp;
29 . Create synonym synEmp for the EMP table.
==> create SYNONYM synemp for emp;
30 . Get Information on synonym synEmp from the Data Dictionary.
==> select * from synemp;
CQkJCQkJCTQuMTogRGF0YWJhc2UgT2JqZWN0cwoKCjEuCUNyZWF0ZSB0aGUgQ3VzdG9tZXIgdGFibGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbHVtbnMuIAoJQ3VzdG9tZXJJZAlOdW1iZXIoNSkKCUN1c3RfTmFtZQl2YXJjaGFyMigyMCkKCUFkZHJlc3MxCVZhcmNoYXIyKDMwKQoJQWRkcmVzczIgCVZhcmNoYXIyKDMwKQoJICAgPT0+Y3JlYXRlIHRhYmxlIGN1c3RvbWVyCgkoCgljdXN0b21lcmlkIG51bWJlcig1KSwKCWN1c3RfbmFtZSB2YXJjaGFyMigyMCksCglBZGRyZXNzMSB2YXJjaGFyMigzMCksCglBZGRyZXNzMiB2YXJjaGFyMigzMCkKCSk7CgoyLglNb2RpZnkgdGhlIEN1c3RvbWVyIHRhYmxlIEN1c3RfTmFtZSBjb2x1bW4gb2YgZGF0YXR5cGUgd2l0aCBWYXJjaGFyMigzMCksIHJlbmFtZSB0aGUgY29sdW1uIHRvIEN1c3RvbWVyTmFtZSBhbmQgaXQgc2hvdWxkIG5vdCAJYWNjZXB0IE51bGxzLgoJICAgPT0+QWx0ZXIgdGFibGUgY3VzdG9tZXIgcmVuYW1lIGNvbHVtbiBjdXN0X25hbWUgdG8gY3VzdG9tZXJuYW1lOwoJICAgPT0+QWx0ZXIgdGFibGUgY3VzdG9tZXIgbW9kaWZ5IGN1c3RvbWVybmFtZSAgdmFyY2hhcjIoMzApIE5vdCBOdWxsOwoKMy4JYSkgQWRkIHRoZSBmb2xsb3dpbmcgQ29sdW1ucyB0byB0aGUgQ3VzdG9tZXIgdGFibGUuIAoJR2VuZGVyCVZhcmNoYXIyKDEpCglBZ2UgTnVtYmVyKDMpCglQaG9uZU5vCU51bWJlcigxMCkKCSAgID09PkFsdGVyIHRhYmxlIGN1c3RvbWVyIGFkZCBHZW5kZXIgdmFyY2hhcjIoMSk7CgkgICA9PT5BbHRlciB0YWJsZSBjdXN0b21lciBhZGQgQWdlIE51bWJlcigzKTsKCSAgID09PkFsdGVyIHRhYmxlIGN1c3RvbWVyIGFkZCBwaG9uZU5vKDEwKTsKCSBiKSBSZW5hbWUgdGhlIEN1c3RvbWVyIHRhYmxlIHRvIEN1c3RfVGFibGUKCSAgID09PlJlbmFtZSBjdXN0b21lciB0byBjdXN0X3RhYmxlOwoKNC4JSW5zZXJ0IHJvd3Mgd2l0aCB0aGUgZm9sbG93aW5nIGRhdGEgaW4gdG8gdGhlIEN1c3RvbWVyIHRhYmxlLgoJICAgPT0+aW5zZXJ0IGludG8gY3VzdF90YWJsZSgmQ3VzdG9tZXJpZCwnJmN1c3RfTmFtZScsJyZBZGRyZXNzMScsJyZBZGRyZXNzMicsJyZHZW5kZXInLCZBZ2UsJnBob25lTm8pOwoJICAgPT0+MTAwMCwg4oCYQWxsZW7igJksIOKAmCMxMTUgQ2hpY2Fnb+KAmSwg4oCYIzExNSBDaGljYWdv4oCZLCDigJhN4oCZLCDigJgyNSwgNzg3ODc3NuKAmQoJICAgPT0+MTAwMSwgR2VvcmdlLCAjMTE2IEZyYW5jZSwgIzExNiBGcmFuY2UsIE0sIDI1LCA0MzQ1MjQKCSAgID09PjEwMDIsIEJlY2tlciwgIzExNCBOZXcgWW9yaywgIzExNCBOZXcgWW9yaywgTSwgNDUsIDQzMTUyNQoKNS4JQWRkIHRoZSBQcmltYXJ5IGtleSBjb25zdHJhaW50IGZvciBDdXN0b21lcmxkIHdpdGggdGhlIG5hbWUgQ3VzdGxkX1ByaW0uIAoKCSAgID09PkFsdGVyIHRhYmxlIGN1c3RfdGFibGUgYWRkIGNvbnN0cmFpbnRzIEN1c3RpZF9wcmltIFBSSU1BUlkgS0VZIChjdXN0b21lcmlkKTsKCjYuCUluc2VydCB0aGUgcm93IGdpdmVuIGJlbG93IGluIHRoZSBDdXN0b21lciB0YWJsZSBhbmQgc2VlIHRoZSBtZXNzYWdlIGdlbmVyYXRlZCBieSB0aGUgT3JhY2xlIHNlcnZlci4gCgkxMDAyLCBKb2huLCAjMTE0IENoaWNhZ28sICMxMTQgQ2hpY2FnbywgTSwgNDUsIDQzOTUyNQoKCSAgID09PgoKNy4JRGlzYWJsZSB0aGUgY29uc3RyYWludCBvbiBDdXN0b21lcklkLCBhbmQgaW5zZXJ0IHRoZSAJZm9sbG93aW5nIGRhdGE6CgkxMDAyLCBCZWNrZXIsICMxMTQgTmV3IFlvcmssICMxMTQgTmV3IHlvcmsgLCBNLCA0NSwgNDMxNTI1CgkxMDAzLCBOYW5hcGF0ZWthciwgIzExNSBJbmRpYSwgIzExNSBJbmRpYSAsIE0sIDQ1LCA0MzE1MjUKCgkgICA9PT5BbHRlciB0YWJsZSBjdXN0X3RhYmxlIGRyb3AgUFJJTUFSWSBLRVkgY3VzdGlkX3ByaW07Cgo4LglFbmFibGUgdGhlIGNvbnN0cmFpbnQgb24gQ3VzdG9tZXJJZCBvZiB0aGUgQ3VzdG9tZXIgdGFibGUsIGFuZCBzZWUgdGhlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBPcmFjbGUgc2VydmVyLiAKCgkgICA9PT5BbHRlciB0YWJsZSBjdXN0X3RhYmxlIGFkZCBjb25zdHJhaW50cyBDdXN0aWRfcHJpbSBQUklNQVJZIEtFWSAoY3VzdG9tZXJpZCk7CgkgICA9PT4KCjkuCURyb3AgdGhlIGNvbnN0cmFpbnQgQ3VzdGxkX1ByaW0gb24gQ3VzdG9tZXJJZCBhbmQgaW5zZXJ0IHRoZSBmb2xsb3dpbmcgRGF0YS4gQWx0ZXIgQ3VzdG9tZXIgdGFibGUsIGRyb3AgY29uc3RyYWludCAJQ3VzdGlkX1ByaW0uCgkxMDAyLCBCZWNrZXIsICMxMTQgTmV3IFlvcmssICMxMTQgTmV3IHlvcmsgLCBNLCA0NSwgNDMxNTI1LCAxNTAwMC41MAoJMTAwMywgTmFuYXBhdGVrYXIsICMxMTUgSW5kaWEsICMxMTUgSW5kaWEgLCBNLCA0NSwgNDMxNTI1LCAyMDAwMC41MAkKCgkgICA9PT5BbHRlciB0YWJsZSBjdXN0X3RhYmxlIGRyb3AgUFJJTUFSWSBLRVkgY3VzdGlkX3ByaW07CgkgICA9PT5JbnNlcnQgaW50byBjdXN0X3RhYmxlKDEwMDIsIEJlY2tlciwgIzExNCBOZXcgWW9yaywgIzExNCBOZXcgeW9yayAsIE0sIDQ1LDQzMTUyNSwgMTUwMDAuNTApOwoJICAgPT0+SW5zZXJ0IGludG8gY3VzdF90YWJsZSgxMDAzLCBOYW5hcGF0ZWthciwgIzExNSBJbmRpYSwgIzExNSBJbmRpYSAsIE0sIDQ1LCA0MzE1MjUsMjAwMDAuNTApOwoKMTAuCURlbGV0ZSBhbGwgdGhlIGV4aXN0aW5nIHJvd3MgZnJvbSBDdXN0b21lciB0YWJsZSwgYW5kIGxldCB0aGUgc3RydWN0dXJlIHJlbWFpbiBpdHNlbGYgdXNpbmcgVFJVTkNBVEUgc3RhdGVtZW50LiAKCSAgID09PlRSVU5DQVRFIHRhYmxlIGN1c3RfdGFibGU7CgoKMTEuCUluIHRoZSBDdXN0b21lciB0YWJsZSwgYWRkIGEgY29sdW1uIEVfbWFpbC4gCgkgICA9PT5BbHRlciB0YWJsZSBhZGQgZV9tYWlsIHZhcmNoYXIyKDMwKTsKCgoxMi4JRHJvcCB0aGUgRV9tYWlsIGNvbHVtbiBmcm9tIEN1c3RvbWVyIHRhYmxlLiAKCSAgID09PkFsdGVyIHRhYmxlIGN1c3RfdGFibGUgRFJPUCBlX21haWw7CgoxMy4JQ3JlYXRlIHRoZSBTdXBwbGllcnMgdGFibGUgYmFzZWQgb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgQ3VzdG9tZXIgdGFibGUuIEluY2x1ZGUgb25seSB0aGUgQ3VzdG9tZXJJZCwgQ3VzdG9tZXJOYW1lLCAJCUFkZHJlc3MxLCBBZGRyZXNzMiwgYW5kIHBob25lbm8gY29sdW1ucy4gCglOYW1lIHRoZSBjb2x1bW5zIGluIHRoZSBuZXcgdGFibGUgYXMgU3VwcElELCBTTmFtZSwgQWRkcjEsIAlBZGRyMiwgYW5kIENvbnRhY3RubyByZXNwZWN0aXZlbHkuIAoJICAgPT0+Y3JlYXRlIHRhYmxlIFN1cHBsaWVycyBhcyBzZWxlY3QoY3VzdG9tZXJpZCBhcyBzdXBwaWQsY3VzdG9tZXJuYW1lIGFzIHNuYW1lLGFkZGRyZXNzMSBhcyBhZGRyMSxhZGRyZXNzMiBhcyAJYWRkcjIscGhvbmVubyBhcyBjb250YWN0bm8pIGZyb20gY3VzdF90YWJsZTsKCjE0LglEcm9wIHRoZSBhYm92ZSB0YWJsZSBhbmQgcmVjcmVhdGUgdGhlIGZvbGxvd2luZyB0YWJsZSB3aXRoIHRoZSBuYW1lIEN1c3RvbWVyTWFzdGVyLiAKCUN1c3RvbWVyaWQJTnVtYmVyKDUpIFByaW1hcnkga2V5KE5hbWUgb2YgY29uc3RyYWludCBpcyBDdXN0SWRfUEspCglDdXN0b21lck5hbWUJVmFyY2hhcjIoMzApIE5vdCBOdWxsCglBZGRyZXNzbAlWYXJjaGFyMigzMCkgTm90IE51bGwKCUFkZHJlc3MyCVZhcmNoYXIyKDMwKQoJR2VuZGVyCQlWYXJjaGFyMihsKQoJQWdlCQlOdW1iZXIoMykKCVBob25lTm8JTnVtYmVyKDEwKQoJICAgPT0+RHJvcCB0YWJsZSBTdXBwbGllcnM7CgkgICA9PT5jcmVhdGUgdGFibGUgY3VzdG9tZXJtYXN0ZXIoY3VzdG9tZXJpZCgxMCkgcHJpbWFyeSBrZXkoY3VzdGlkX3BrKSxjdXN0b21lcm5hbWUgdmFyY2hhcjIoMzApLEFkZHJlc3MxIAl2YXJjaGFyMgkoMzApLEFkZHJlc3MyIHZhcmNoYXIyKDMwKSxHZW5kZXIgdmFyY2hhcjIoMSksQWdlIG51bWJlcigzKSxwaG9uZW5vIG51bWJlcigxMCkpOwoKMTUuCUNyZWF0ZSB0aGUgQWNjb3VudHNNYXN0ZXIgdGFibGUgd2l0aCB0aGUgZm9sbG93aW5nIENvbHVtbnMuIFVzZSBzZXF1ZW5jZSB0byBnZW5lcmF0ZSBBY2NvdW50IG51bWJlcgoJQ3VzdG9tZXJpZCBOdW1iZXIoNSkKCUFjY291bnROdW1iZXIgTnVtYmVyKDEwLDIpIFByaW1hcnkga2V5KE5hbWUgb2YgY29uc3RyYWludCBpcyBBY2NfUEspCglBY2NvdW50VHlwZSBDaGFyKDMpCglMZWRnZXJCYWxhbmNlIE51bWJlcigxMCwyKSBOb3QgTnVsbAoJICAgPT0+Q3JlYXRlIHRhYmxlIEFjY291dG5tYXN0ZXIoY3VzdG9tZXJpZCBudW1iZXIoNSksQWNjb3VudG51bWJlciBudW1iZXIoMTApIHByaW1hcnkga2V5KGFjbm8pLGFjY291bnR0eXBlIGNoYXIJKDMpLGxlZGdlcmJhbGFuY2UgbnVtYmVyKDEwKSBOb3QgTnVsbCk7CgkgICA9PT5DcmVhdGUgc2VxdWVuY2Ugc2VxX2FubwoJCU1JTlZBTFVFIDEwMQoJCU1BWFZBTFVFIDEwMDAwCgkJU1RBUlQgV0lUSCAxMDEKCQlJTkNSRU1FTlQgQlkgMQoJCUNBQ0hFIDEwMTsKIAoxNi4JUmVsYXRlIEFjY291bnRzTWFzdGVyIHRhYmxlIGFuZCBDdXN0b21lck1hc3RlciB0YWJsZSB0aHJvdWdoIEN1c3RvbWVybGQgY29sdW1uIHdpdGggdGhlIGNvbnN0cmFpbnQgbmFtZSBDdXN0X2FjYy4KCSAgID09PkFsdGVyIHRhYmxlIEFjY291bnRtYXN0ZXIgQUREIGNvbnN0cmFpbnQgYXNzX2ZrIEZPUkVJR04gS0VZKGN1c3RvbWVyaWQpIFJFRkVSRU5DRVMgY3VzdG9tZXJtYXN0ZXIoY3VzdG9tZXJpZCk7CgoxNy4JSW5zZXJ0IHRoZSBmb2xsb3dpbmcgcm93cyB0byB0aGUgQ3VzdG9tZXJNYXN0ZXIgdGFibGU6CgkxMDAwLCBBbGxlbiwgIzExNSBDaGljYWdvLCAjMTE1IENoaWNhZ28sIE0sIDI1LCA3ODc4Nzc2CgkxMDAxLCBHZW9yZ2UsICMxMTYgRnJhbmNlLCAjMTE2IEZyYW5jZSwgTSwgMjUsIDQzNDUyNAoJMTAwMiwgQmVja2VyLCAjMTE0IE5ldyBZb3JrLCAjMTE0IE5ldyBZb3JrLCBNLCA0NSwgNDMxNTI1CgkgICA9PT5JbnNlcnQgaW50byBjdXN0b21lcm1hc3RlciB2YWx1ZXMoMTAwMCwgQWxsZW4sICMxMTUgQ2hpY2FnbywgIzExNSBDaGljYWdvLCBNLCAyNSwgNzg3ODc3Nik7CgkgICA9PT5JbnNlcnQgaW50byBjdXN0b21lcm1hc3RlciB2YWx1ZXMoMTAwMSwgR2VvcmdlLCAjMTE2IEZyYW5jZSwgIzExNiBGcmFuY2UsIE0sIDI1LCA0MzQ1MjQwOwoJICAgPT0+SW5zZXJ0IGludG8gY3VzdG9tZXJtYXN0ZXIgdmFsdWVzKDEwMDIsIEJlY2tlciwgIzExNCBOZXcgWW9yaywgIzExNCBOZXcgWW9yaywgTSwgNDUsIDQzMTUyNTA7CgoxOC4JTW9kaWZ5IHRoZSBBY2NvdW50TWFzdGVyIHRhYmxlIHdpdGggdGhlIENoZWNrIGNvbnN0cmFpbnQgdG8gZW5zdXJlIEFjY291bnRUeXBlIHNob3VsZCBiZSBlaXRoZXIgTlJJIG9yIElORC4KCSAgID09PmFsdGVyIHRhYmxlIEFjY291bnRtYXN0ZXIgYWRkIGNvbnN0cmFpbnQgY2tfYWMgY2hlY2soYWNjb3VudHlwZT0nTlJJJyBvciBhY2NvdW50eXBlPSdJTkQnKTsKCjE5LglNb2RpZnkgdGhlIEFjY291bnRzTWFzdGVyIHRhYmxlIGtlZXBpbmcgYSBDaGVjayBjb25zdHJhaW50IHdpdGggdGhlIG5hbWUgQmFsYW5jZV9DaGVjayBmb3IgdGhlIE1pbmltdW0gQmFsYW5jZSB3aGljaCAJCQlzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDUwMDAuIAoJICAgPT0+YWx0ZXIgdGFibGUgQWNjb3VudG1hc3RlciBhZGQgY29uc3RyYWludCAJQmFsYW5jZV9jaGVjayhsZWRnZXIgYmFsYW5jZSA+IDUwMDApOwoKMjAuCU1vZGlmeSB0aGUgQWNjb3VudHNNYXN0ZXIgdGFibGUgc3VjaCB0aGF0IGlmIEN1c3RvbWVyIGlzIGRlbGV0ZWQgZnJvbSBDdXN0b21lciB0YWJsZSB0aGVuIGFsbCBoaXMgZGV0YWlscyBzaG91bGQgYmUgCQkJZGVsZXRlZCBmcm9tIEFjY291bnRzTWFzdGVyIHRhYmxlLiAKCSAgID09PkRlbGV0ZSBmcm9tIEFjY291bnRtYXN0ZXIsY3VzdG9tZXJ0YWJsZSB3aGVyZSBjdXN0b21lcmlkID0gMTAwMQoKCjIxLglDcmVhdGUgQmFja3VwIGNvcHkgZm9yIHRoZSBBY2NvdW50c01hc3RlciB0YWJsZSB3aXRoIHRoZSBuYW1lIOKAmEFjY291bnREZXRhaWxz4oCZLiAKIAoJICAgPT0+Q3JlYXRlIHRhYmxlIGFjY291bnRkZXRhaWxzIGFzIHNlbGVjdCAqIGZyb20gQWNjb3VudG1hc3RlcjsKCjIyLglDcmVhdGUgYSB2aWV3IOKAmEFjY192aWV34oCZIHdpdGggY29sdW1ucyBDdXN0b21lcmxkLCBDdXN0b21lck5hbWUsIEFjY291bnROdW1iZXIsIEFjY291bnRUeXBlLCBhbmQgTGVkZ2VyQmFsYW5jZSBmcm9tIAkJQWNjb3VudHNNYXN0ZXIuIEluIHRoZSB2aWV3IEFjY192aWV3LCAJdGhlIGNvbHVtbiBuYW1lcyBzaG91bGQgYmUgQ3VzdG9tZXJDb2RlLCBBY2NvdW50SG9sZGVyTmFtZSwgQWNjb3VudE51bWJlciwgVHlwZSwgYW5kIAkJQmFsYW5jZSBmb3IgdGhlIHJlc3BlY3RpdmUgY29sdW1ucyBmcm9tIEFjY291bnRzTWFzdGVyIHRhYmxlLiAKCSAgID09PkNSRUFURSBWSUVXIEFjY192aWV3IEFTIFNFTEVDVChDdXN0b21lcmlkLEN1c3RvbWVybmFtZSxBY2NvdW50bnVtYmVyLEFjY291bnRUeXBlLGxlZGdlckJhbGFuY2UpCglmcm9tIEFjY291bnRNYXN0ZXI7CgoyMy4JQ3JlYXRlIGEgdmlldyBvbiBBY2NvdW50c01hc3RlciB0YWJsZSB3aXRoIG5hbWUgdkFjY3NfRHRscy4gVGhpcyB2aWV3IHNob3VsZCBsaXN0IGFsbCBjdXN0b21lcnMgd2hvc2UgQWNjb3VudFR5cGUgaXMg4oCYSU5E4oCZIAkJYW5kIHRoZWlyIGJhbGFuY2UgYW1vdW50IHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIDEwMDAwLiBVc2luZyB0aGlzIHZpZXcgYW55IERNTCBvcGVyYXRpb24gc2hvdWxkIG5vdCB2aW9sYXRlIHRoZSB2aWV3IAkJY29uZGl0aW9ucy4gCgkgICA9PT5DUkVBVEUgVklFVyB2QWNjc19EdGxzIEFTIFNFTEVDVCAJQWNjb3VudHR5cGUsbGVkZ2VyYmFsYW5jZSBmcm9tIEFjY291bnRtYXN0ZXIgd2hlcmUgCWFjY291bnR0eXBlID0gJ0lORCcgYW5kIAkJbGVkZ2VyYmFsYW5jZSA8IDEwMDAwOwoKMjQuCUNyZWF0ZSBhIHZpZXcgYWNjc3Z3MTAgd2hpY2ggd2lsbCBub3QgYWxsb3cgRE1MIHN0YXRlbWVudCBhZ2FpbnN0IGl0LgoJICAgPT0+CgoyNS4JQ3JlYXRlIGEgU2VxdWVuY2Ugd2l0aCB0aGUgbmFtZSBTZXFfRGVwdCBvbiBEZXB0bm8gY29sdW1uIG9mIERlcGFydG1lbnRfTWFzdGVycyB0YWJsZS4gSXQgc2hvdWxkIHN0YXJ0IGZyb20gNDAgYW5kIHN0b3AgYXQgCQkyMDAuIEluY3JlbWVudCBwYXJhbWV0ZXIgZm9yIHRoZSBzZXF1ZW5jZSBTZXFfRGVwdCBzaG91bGQgYmUgaW4gc3RlcCBvZiAxMC4KCSAgID09PkNSRUFURSBzZXF1ZW5jZSBTRVFfREVQVHQgbWludmFsdWUgNDAgc3RhcnQgd2l0aCA0MAoJaW5jcmVtZW50IGJ5IDEwIGNhY2hlIDQwOwoKMjYuCUluc2VydCB0aHJlZSBzYW1wbGUgcm93cyBieSB1c2luZyB0aGUgYWJvdmUgc2VxdWVuY2UgaW4gRGVwYXJ0bWVudF9NYXN0ZXJzIHRhYmxlLgoJICAgPT0+Y3JlYXRlIHRhYmxlIGRlcGFydG1lbnRtYXN0ZXIoZGVwdG5vIG51bWJlcig1MCksRG5hbWUgdmFyY2hhcjIoMjUpLGxvY2F0aW9uIHZhcmNoYXIyKDI1KSk7CgkgICA9PT5pbnNlcnQgaW50byBkZXBhcnRtZW50bWFzdGVyICB2YWx1ZXMoc2VxX2RlcHQuTkVYVFZBTCwnTUFSS0VUSU5HJywnTkVXIERFTEhJJyk7CgkgICA9PT49PT5pbnNlcnQgaW50byBkZXBhcnRtZW50bWFzdGVyICB2YWx1ZXMoc2VxX2RlcHQuTkVYVFZBTCwnU0FMRVMnLCdjaGVubmFpJyk7CgkgICA9PT49PT5pbnNlcnQgaW50byBkZXBhcnRtZW50bWFzdGVyICB2YWx1ZXMoc2VxX2RlcHQuTkVYVFZBTCwnUkVTRUFSQ0gnLCdCT1NUT04nKTsKCjI3LglEcm9wIHRoZSBTZXFfRGVwdCBzZXF1ZW5jZS4gCgoJICAgPT0+RFJPUCBzZXF1ZW5jZSBzZXFfZGVwdDsKCjI4LglHZXQgaW5mb3JtYXRpb24gb24gdGhlIGluZGV4IE5vX05hbWUgZnJvbSB0aGUgRGF0YSBEaWN0aW9uYXJ5LiAKCSAgID09PkNSRUFURSBJTkRFWCBub19uYW1lIG9uIGVtcChlbXBubyk7CgkgICA9PT5zZWxlY3QgKiBmcm9tIGVtcDsKMjkuCUNyZWF0ZSBzeW5vbnltIHN5bkVtcCBmb3IgdGhlIEVNUCB0YWJsZS4gCgkgICA9PT5jcmVhdGUgU1lOT05ZTSBzeW5lbXAgZm9yIGVtcDsKCjMwLglHZXQgSW5mb3JtYXRpb24gb24gc3lub255bSBzeW5FbXAgZnJvbSB0aGUgRGF0YSBEaWN0aW9uYXJ5LiAKCSAgID09PnNlbGVjdCAqIGZyb20gc3luZW1wOw==