|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
java SSL on MQ 6 (again...) JCS compability problems |
« View previous topic :: View next topic » |
Author |
Message
|
billybong |
Posted: Wed Sep 13, 2006 4:36 am Post subject: java SSL on MQ 6 (again...) JCS compability problems |
|
|
 Disciple
Joined: 22 Jul 2005 Posts: 150 Location: Stockholm, Sweden
|
Hi guys!
I'm having quite some problems trying to imblement SSL from a java application against a 6.0 queue manager.
Just to clarify things, I have tried without SSL succesfully and I've implemented SSL on many occasions against 5.3 before, so I have probably not screwed the most basic configuration.
I have a keyStore.jks created by the IBM Key management tool bundled with MQ 6. It contains 2 certificates in a chain and a private key for the client. The client and the server are issued by the same CA, the last in the chain of the 2 CA's.
When I enable trace on the client I find some contact admin 2397 reason code due to some ArrayIndexOutOfBoundsException
------------------------------------------------------------------------------------
Code: |
14:10:51 | %% No cached client session
14:10:51 | *** ClientHello, SSLv3
14:10:51 | RandomCookie: GMT: 1158083915 bytes = { 116, 210, 118, 52, 36, 92, 197, 188, 29, 161, 117, 93, 81, 24, 179, 110, 20, 245, 22, 233, 4, 188, 49, 29, 79, 118, 223, 181 }
14:10:51 | Session ID: {}
14:10:51 | Cipher Suites: [SSL_RSA_WITH_NULL_MD5]
14:10:51 | Compression Methods: { 0 }
14:10:51 | ***
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, WRITE: SSLv3 Handshake, length = 45
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, READ: SSLv3 Handshake, length = 3628
14:10:51 | *** ServerHello, SSLv3
14:10:51 | RandomCookie: GMT: 0 bytes = { 101, 190, 250, 251, 134, 179, 166, 21, 38, 7, 212, 242, 171, 150, 238, 155, 98, 42, 23, 13, 34, 248, 60, 240, 159, 128, 138, 132 }
14:10:51 | Session ID: {0, 0, 67, 44, 16, 1, 198, 169, 3, 235, 65, 246, 194, 235, 136, 3, 208, 83, 148, 212, 88, 88, 88, 88, 0, 0, 0, 0, 0, 0, 0, 0}
14:10:51 | Cipher Suite: SSL_RSA_WITH_NULL_MD5
14:10:51 | Compression Method: 0
14:10:51 | ***
14:10:51 | %% Created: [Session-3, SSL_RSA_WITH_NULL_MD5]
14:10:51 | ** SSL_RSA_WITH_NULL_MD5
14:10:51 | *** Certificate chain
14:10:51 | chain [0] = [
14:10:51 | [
14:10:51 | Version: V3
14:10:51 | Subject: EMAILADDRESS=mail@company.se, CN=STOH21CT, OU=Global Server MQ, O=company IT, ST=Stockholm, C=SE
14:10:51 | Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
14:10:51 |
14:10:51 | Key: Sun RSA public key, 1024 bits
14:10:51 | modulus: 126286574395116712785908493361209656028326154199394659348093848974451701585572320811895592739518370749650937579972248839758468696876031618473593742192470403184531885693224076132886720672729689051226595897415583246158653646618668108126653364533357835285676880128128744289168822103004267978352771489972183478539
14:10:51 | public exponent: 65537
14:10:51 | Validity: [From: Wed Aug 23 07:28:02 CEST 2006,
14:10:51 | To: Fri Aug 22 07:28:02 CEST 2008]
14:10:51 | Issuer: EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST CA MQ, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE
14:10:51 | SerialNumber: [ 74710029]
14:10:51 |
14:10:51 | Certificate Extensions: 4
14:10:51 | [1]: ObjectId: 2.5.29.14 Criticality=false
14:10:51 | SubjectKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: EF FC 0C 16 80 13 5C 8D D2 69 7F 52 BF 3B C1 CF ......\..i.R.;..
14:10:51 | 0010: 12 D4 81 6C ...l
14:10:51 | ]
14:10:51 | ]
14:10:51 |
14:10:51 | [2]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
14:10:51 | NetscapeCertType [
14:10:51 | SSL client
14:10:51 | ]
14:10:51 |
14:10:51 | [3]: ObjectId: 2.5.29.35 Criticality=false
14:10:51 | AuthorityKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: 41 94 0F EE 5F 59 E7 50 81 E9 63 67 F8 FE 10 21 A..._Y.P..cg...!
14:10:51 | 0010: A5 60 E8 18 .`..
14:10:51 | ]
14:10:51 |
14:10:51 | [EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE]
14:10:51 | SerialNumber: [ 747001]
14:10:51 | ]
14:10:51 |
14:10:51 | [4]: ObjectId: 2.5.29.19 Criticality=false
14:10:51 | BasicConstraints:[
14:10:51 | CA:false
14:10:51 | PathLen: undefined
14:10:51 | ]
14:10:51 |
14:10:51 | ]
14:10:51 | Algorithm: [MD5withRSA]
14:10:51 | Signature:
14:10:51 | 0000: 62 37 02 1F 2F 0A 62 51 93 E8 9F 50 C5 61 94 4B b7../.bQ...P.a.K
14:10:51 | 0010: C4 BF 3C 07 E4 D1 EF 4F 7C F6 33 89 F9 FD A6 45 ..<....O..3....E
14:10:51 | 0020: 73 CF 2F 5C ED 6E 02 33 EF BB 52 7A B5 E3 12 B6 s./\.n.3..Rz....
14:10:51 | 0030: C5 65 9A B9 BE 9E 95 18 1F 24 1A 87 AD EB 73 88 .e.......$....s.
14:10:51 | 0040: 33 FD AB AE 55 D5 07 54 15 55 72 15 6C 1D AE B6 3...U..T.Ur.l...
14:10:51 | 0050: B0 6A 70 0B E4 E9 C5 68 62 71 89 04 F8 D8 BE 60 .jp....hbq.....`
14:10:51 | 0060: 45 0A 93 68 9B 2E 94 D1 F8 C5 05 4F 6F 84 D9 10 E..h.......Oo...
14:10:51 | 0070: E4 0D A0 2D 01 EE 60 18 68 75 4F 78 60 A9 95 BB ...-..`.huOx`...
14:10:51 |
14:10:51 | ]
14:10:51 | chain [1] = [
14:10:51 | [
14:10:51 | Version: V3
14:10:51 | Subject: EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST CA MQ, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE
14:10:51 | Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
14:10:51 |
14:10:51 | Key: Sun RSA public key, 1024 bits
14:10:51 | modulus: 105081647701711510589697670534632927737859276314352318812088860006533953069047669460647251933283946978537945921087789632196307423287937924750029800371853786096605307133874823876872377127686360413026968728331094034260434961962076384019440342832310665182123124434864853212646541887356003578093941128124895407839
14:10:51 | public exponent: 65537
14:10:51 | Validity: [From: Wed Nov 16 16:32:54 CET 2005,
14:10:51 | To: Sat Nov 14 16:32:54 CET 2015]
14:10:51 | Issuer: EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE
14:10:51 | SerialNumber: [ 747001]
14:10:51 |
14:10:51 | Certificate Extensions: 4
14:10:51 | [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
14:10:51 | NetscapeCertType [
14:10:51 | SSL CA
14:10:51 | ]
14:10:51 |
14:10:51 | [2]: ObjectId: 2.5.29.14 Criticality=false
14:10:51 | SubjectKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: 41 94 0F EE 5F 59 E7 50 81 E9 63 67 F8 FE 10 21 A..._Y.P..cg...!
14:10:51 | 0010: A5 60 E8 18 .`..
14:10:51 | ]
14:10:51 | ]
14:10:51 |
14:10:51 | [3]: ObjectId: 2.5.29.35 Criticality=false
14:10:51 | AuthorityKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: EE CB B3 80 C4 BA 95 A3 DF 42 88 05 D2 4C 86 05 .........B...L..
14:10:51 | 0010: 43 E4 55 5B C.U[
14:10:51 | ]
14:10:51 |
14:10:51 | [EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE]
14:10:51 | SerialNumber: [ 00]
14:10:51 | ]
14:10:51 |
14:10:51 | [4]: ObjectId: 2.5.29.19 Criticality=false
14:10:51 | BasicConstraints:[
14:10:51 | CA:true
14:10:51 | PathLen:2147483647
14:10:51 | ]
14:10:51 |
14:10:51 | ]
14:10:51 | Algorithm: [MD5withRSA]
14:10:51 | Signature:
14:10:51 | 0000: 33 24 E1 5C 4C DF CA AB DD 2D CC BF 15 37 C1 46 3$.\L....-...7.F
14:10:51 | 0010: BE 82 B2 4C 2C 0D F6 D6 65 FF 6E 10 A5 FA F6 B7 ...L,...e.n.....
14:10:51 | 0020: 09 68 97 0F 85 14 FC 94 15 A3 4F 06 1E F1 72 FC .h........O...r.
14:10:51 | 0030: 59 6F 71 63 7E D2 07 BF D5 A3 34 D2 2A 74 45 A8 Yoqc......4.*tE.
14:10:51 | 0040: AB 46 9B D6 DF 98 43 26 9B EA F4 89 60 4D 3F 1A .F....C&....`M?.
14:10:51 | 0050: 26 B4 F9 36 01 3C 6B C0 7D BF CE 57 32 1F E6 BB &..6.<k....W2...
14:10:51 | 0060: 68 2C 47 90 96 F3 46 BD 87 C6 67 30 4A F2 61 48 h,G...F...g0J.aH
14:10:51 | 0070: C7 6D 30 B8 C4 A3 04 E3 44 1B 2C 33 EA 4B 32 51 .m0.....D.,3.K2Q
14:10:51 |
14:10:51 | ]
14:10:51 | chain [2] = [
14:10:51 | [
14:10:51 | Version: V3
14:10:51 | Subject: EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE
14:10:51 | Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4
14:10:51 |
14:10:51 | Key: Sun RSA public key, 1024 bits
14:10:51 | modulus: 120422078243527668998643186933452747893700122188573828789796945357093364350159286171348035591794840312029482661499759358563980825256817735634554494995744422862552914301493693526265610708232569413039527446166317535666874403765941916175370864343573054536956324096045683583202524076421592476233485042036195288591
14:10:51 | public exponent: 65537
14:10:51 | Validity: [From: Wed Nov 16 16:16:26 CET 2005,
14:10:51 | To: Sun Nov 10 16:16:26 CET 2030]
14:10:51 | Issuer: EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE
14:10:51 | SerialNumber: [ 00]
14:10:51 |
14:10:51 | Certificate Extensions: 3
14:10:51 | [1]: ObjectId: 2.5.29.14 Criticality=false
14:10:51 | SubjectKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: EE CB B3 80 C4 BA 95 A3 DF 42 88 05 D2 4C 86 05 .........B...L..
14:10:51 | 0010: 43 E4 55 5B C.U[
14:10:51 | ]
14:10:51 | ]
14:10:51 |
14:10:51 | [2]: ObjectId: 2.5.29.35 Criticality=false
14:10:51 | AuthorityKeyIdentifier [
14:10:51 | KeyIdentifier [
14:10:51 | 0000: EE CB B3 80 C4 BA 95 A3 DF 42 88 05 D2 4C 86 05 .........B...L..
14:10:51 | 0010: 43 E4 55 5B C.U[
14:10:51 | ]
14:10:51 |
14:10:51 | [EMAILADDRESS=companyITKeyManagement@company.se, CN=company Internal TEST Root CA, OU=Information Security, O=company IT, L=myCity, ST=Stockholm, C=SE]
14:10:51 | SerialNumber: [ 00]
14:10:51 | ]
14:10:51 |
14:10:51 | [3]: ObjectId: 2.5.29.19 Criticality=false
14:10:51 | BasicConstraints:[
14:10:51 | CA:true
14:10:51 | PathLen:2147483647
14:10:51 | ]
14:10:51 |
14:10:51 | ]
14:10:51 | Algorithm: [MD5withRSA]
14:10:51 | Signature:
14:10:51 | 0000: 1C E7 CA 4E 79 12 D5 BF 47 10 B8 63 2D 4A 0B 0C ...Ny...G..c-J..
14:10:51 | 0010: BF 04 BD F5 D5 85 1C 0F 16 AA 23 B2 61 F3 D1 89 ..........#.a...
14:10:51 | 0020: 31 35 C4 C2 14 D4 96 CE 9A F3 19 1D C3 F5 8A 33 15.............3
14:10:51 | 0030: 81 AD 47 ED B9 47 1A 8B 28 6C 3A BB 3E A1 A9 83 ..G..G..(l:.>...
14:10:51 | 0040: 1F 6D 0D 40 91 48 A0 14 97 83 E2 56 0F 6F 73 70 .m.@.H.....V.osp
14:10:51 | 0050: 48 33 93 0E E6 37 25 B2 E5 76 79 C3 3E 62 2D 43 H3...7%..vy.>b-C
14:10:51 | 0060: 67 F6 F0 F3 EA A4 84 14 74 9F 14 A0 86 32 3F 1D g.......t....2?.
14:10:51 | 0070: 3B 9F 52 5D D5 A0 98 3C 91 FF 98 DA 22 07 18 CD ;.R]...<...."...
14:10:51 |
14:10:51 | ]
14:10:51 | ***
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, handling exception: java.lang.ArrayIndexOutOfBoundsException: 1
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, SEND SSLv3 ALERT: fatal, description = internal_error
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, WRITE: SSLv3 Alert, length = 2
14:10:51 | LOQ.UAX.STO.ACOS.STO@STOH21CT, called closeSocket()
14:10:51 | MQJE001: An MQException occurred: Completion Code 2, Reason 2397
14:10:51 | MQJE056: Initial negotiation failure
14:10:51 | MQJE001: Completion Code 2, Reason 2397
14:10:51 | 2006-09-13 14:10:51,654 [LOQ.UAX.STO.ACOS.STO@STOH21CT] ERROR se.acme.mq2file.Mq2FileThread - Error while connecting to Queue Manager STOH21CT RC: 2397 Cause: java.lang.ArrayIndexOutOfBoundsException: 1
14:10:51 | com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2397
14:10:51 | at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:219)
14:10:51 | at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:318)
14:10:51 | at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:338)
14:10:51 | at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:84)
14:10:51 | at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:168)
14:10:51 | at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:772)
14:10:51 | at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:697)
14:10:51 | at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:657)
14:10:51 | at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:153)
14:10:51 | at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:451)
14:10:51 | at se.acme.MqSuper.mqConnect(MqSuper.java:132)
14:10:51 | at se.acme.MqSuper.mqReconnect(MqSuper.java:297)
14:10:51 | at se.acme.mq2file.Mq2FileThread.run(Mq2FileThread.java:111)
14:10:51 | Caused by: javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException: 1
14:10:51 | at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
14:10:51 | at com.ibm.mq.SSLHelper.configureSSLSocket(SSLHelper.java:596)
14:10:51 | at com.ibm.mq.SSLHelper.createSSLSocket(SSLHelper.java:144)
14:10:51 | at com.ibm.mq.MQInternalCommunications.createSocketConnection(MQInternalCommunications.java:2276)
14:10:51 | at com.ibm.mq.MQv6InternalCommunications$1.run(MQv6InternalCommunications.java:164)
14:10:51 | at java.security.AccessController.doPrivileged(Native Method)
14:10:51 | at com.ibm.mq.MQv6InternalCommunications.initialize(MQv6InternalCommunications.java:161)
14:10:51 | at com.ibm.mq.MQv6InternalCommunications.<init>(MQv6InternalCommunications.java:109)
14:10:51 | at com.ibm.mq.MQSESSIONClient.MQCONNX(MQSESSIONClient.java:1337)
14:10:51 | at com.ibm.mq.MQSESSIONClient.MQCONN(MQSESSIONClient.java:1246)
14:10:51 | at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:184)
14:10:51 | ... 12 more
14:10:51 | Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
14:10:51 | at sun.security.x509.NetscapeCertTypeExtension.isSet(Unknown Source)
14:10:51 | at sun.security.x509.NetscapeCertTypeExtension.get(Unknown Source)
14:10:51 | at sun.security.validator.SimpleValidator.getNetscapeCertTypeBit(Unknown Source)
14:10:51 | at sun.security.validator.EndEntityChecker.checkTLSServer(Unknown Source)
14:10:51 | at sun.security.validator.EndEntityChecker.check(Unknown Source)
14:10:51 | at sun.security.validator.Validator.validate(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
14:10:51 | at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
14:10:51 | ... 24 more
|
This looks to me that there is some issues with my jks keystore that is generated using SUN's JCS.
If I change JRE to IBM 1.4 supplied with the MQ client my certificates wont event list using "keytool -list -keystore keyStore.jks" _________________ IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Integration Developer V6.0
IBM Certified System Administrator - WebSphere MQ V6.0
IBM Certified Solution Developer - WebSphere DataPower |
|
Back to top |
|
 |
sysmq |
Posted: Wed Sep 13, 2006 4:40 am Post subject: |
|
|
Novice
Joined: 04 Jun 2006 Posts: 22
|
|
Back to top |
|
 |
billybong |
Posted: Wed Sep 13, 2006 5:10 am Post subject: |
|
|
 Disciple
Joined: 22 Jul 2005 Posts: 150 Location: Stockholm, Sweden
|
Thanks for the quick reply even tough I dont think it's that issue. The certs/key are all brand new and the jks keystore is as I said created from scratch by the IBM Key Management GUI tool bundled with MQ 6 server _________________ IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Integration Developer V6.0
IBM Certified System Administrator - WebSphere MQ V6.0
IBM Certified Solution Developer - WebSphere DataPower |
|
Back to top |
|
 |
vennela |
Posted: Wed Sep 13, 2006 10:53 am Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
|
Back to top |
|
 |
billybong |
Posted: Tue Oct 10, 2006 4:32 am Post subject: |
|
|
 Disciple
Joined: 22 Jul 2005 Posts: 150 Location: Stockholm, Sweden
|
I've come a bit on the way with some help from SSL experts at our company. It seems that there is a problem with the Netscape certificate extension. Namely the value:
Code: |
14:10:51 | [2]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
14:10:51 | NetscapeCertType [
14:10:51 | SSL client
14:10:51 | ] |
and
Code: |
14:10:51 | Certificate Extensions: 4
14:10:51 | [1]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
14:10:51 | NetscapeCertType [
14:10:51 | SSL CA
14:10:51 | ]
|
According to our security experts the netscape extension is depreceated and should not be used anymore. Just wanted to update you on this problem if someone else has the same. _________________ IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Integration Developer V6.0
IBM Certified System Administrator - WebSphere MQ V6.0
IBM Certified Solution Developer - WebSphere DataPower |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|