ColorEditDialog.st
author Stefan Vogel <sv@exept.de>
Tue, 20 Feb 2018 21:52:40 +0100
changeset 3541 23028559b7b2
parent 3527 74f4d5106d99
child 3578 9965b6b7e99b
permissions -rw-r--r--
#OTHER by stefan changed: #commonPostBuild rename #useAlienInfoLabeloHolder methodto #useAlienInfoLabel to avoid recursion

"
 COPYRIGHT (c) 1995 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libtool2' }"

"{ NameSpace: Smalltalk }"

SimpleDialog subclass:#ColorEditDialog
	instanceVariableNames:'red green blue hue light saturation colorNameHolder
		htmlColorNameHolder colorDefinitionStringHolder previewBox
		brightnessStringHolder'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-UIPainter'
!

!ColorEditDialog class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1995 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
!

documentation
"
    An edit-dialog for colors.
"
!

examples
"
                                                                                [exBegin]                                      
    |editor color|

    editor := ColorEditDialog new.
    editor color:(Color green).
    editor open.
    editor accepted ifTrue:[
        editor color inspect.
    ]
                                                                                [exEnd]
"
! !

!ColorEditDialog class methodsFor:'help specs'!

helpSpec
    "This resource specification was automatically generated
     by the UIHelpTool of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIHelpTool may not be able to read the specification."

    "
     UIHelpTool openOnClass:ColorEditDialog    
    "

    <resource: #help>

    ^ super helpSpec addPairsFrom:#(

#pickColor
'Pick a Color from the Screen'

#brightness
'The Color''s brightness value (0..1)'

#colorDefinitionString
'A Smalltalk expression to construct the color'

#colorName
'The standard colorname (as used in the X-Window System), if known'

#copyToClipboard
'Copy the color to the clipboard'

#hlsMixer
'Mix color from hls (hue-light-saturation) components'

#htmlColorName
'The color as used in an HTML page'

#pasteFromClipboard
'Paste color from the Clipboard'

#rgbMixer
'Mix color from rgb (red-green-blue) components'

)

    "Modified: / 09-08-2012 / 09:35:29 / cg"
! !

!ColorEditDialog class methodsFor:'image specs'!

hueGradientImage
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self hueGradientImage inspect
     ImageEditor openOnClass:self andSelector:#hueGradientImage
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
        constantNamed:'ColorEditDialog hueGradientImage'
        ifAbsentPut:[(Depth8Image new) width:400; height:50; bits:(ByteArray fromPackedString:'
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE
''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F/+1 XFA"R$+"8.K!!&''"N^''''@I\@%WVU$TEAPA(:N#"(*J"(X_G1-,[F0UEQUOS6]OR;]K\WM1\R8.K"9>_''9>_''9>''Y46''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD1APTEAPTEAPTFK"8.K"8.K"5YVU")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)
Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0
LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''
Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LE$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR
_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,[F1[V5-[Z&)
Y&Y&Y&X#H2L#BP$IBU%YVPDA@PE;^7,8NC 8G1<_F1,[F1\WE6]''Y6^7-;]3\7M3[6=/[0HB@ HB@ H6M#Z]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (D9N$I@)ZV%+Z9^WGA8^RT$"
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):
^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.
K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@,KB0,VPQXVPQXVE!!ZKHB@ HB@ HB(*J")VU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAPTEAY2\''I26-+XRD!!I?_7=?F!!(Z!!8^G
!!8\7M0=PTE@@@@@@VE!!XVI.[&9-5]WVO#8>O#3@0LC@0LC@0^''):^''):^''*E!!XVE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+:<XFA X$)J8.K"8Y)8#'')90
BW@IU5%YEAPT@ZN#(8*J"(*FG1<[[F1,EQTUS4=''S4.7R7E3\WD.K"8._''9>_''9>_)6]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1L
E$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7Z"("\''/K0?O2%)ZTQ+Q4\J-[T$IAD"$YD;N36(P(RD
!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE
!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0L
W%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6
''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"
N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<
@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:
.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA
(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK
"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]*J"I2^</C<?JV%)QF-GQ0*5-RP$DRJQ$S,;OZ!!B!!HRD,%1\, 9 XF@P
TZ^T%IR''KR4EKTYFQ$Y4]GP%IRU?ZF!!(*1*+!!5-[V5.I"P<OC5A<_@A<KB0,KI&Y&Y.H"H"OST6OSS@YFQ$0FQ$YNS$9NS%:^'')CP4MCP8VE#(8<OC2N#"</
K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HAT
UJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6****
********-KR4-KR4-KP+J2,+J2,+J2,KSD0KB0,KE$DVE$DVE!!XV"2@ HB@ HB@*J"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5
MZB S$:P$B%)ZV-+%9\\G!!9IRRH"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[
]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF-
 XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_
F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WE22C&A XAAQ)9RT%J\-KPT-
Q$YFQ''Q4]BT%IW=(ZF"+F*.GV5-[V8&IC0<OTG1<@G0,KB0,&Y&Y&8"H"H=MSX=MLA$YFS@YFQ$9NS$9NW):^$MCP4MC!!XVN##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)
Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0
LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''
Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KB0,KE$DVE$DVE!!XV"2@ HB@ HB@*J"(*U%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB S$:P$B%)ZV-+%9\\G!!9IRRH"#X4;N36(P(RD!!KI\WKHNXFA DEF''%IRT)24-AR5FQ$YF]GQ4IRT%
_6!!(ZJ,Z*8][V5-["X$OC0=P_G0@_B0,KB2Y&Y&["H"H#45M#440FQ$YLA$YFS$9NS$9^''):P4MCP4NE!!X:NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&)
.FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB41LSDEAPTEAPTEAPX.K"8.K"8.KU%YVJ%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (D9N$I@)ZV%+Z9^WGA8^RT$"
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):
^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F1,V5-[V6)*VY&Y&Y&H2L#H0$IBP%YVU$A@PDA^7-;NC 8NA<_G1,[F1,WE1]''Y6]''-;^7\7M3\6=/
[6<B@ HB@ HBM#X6''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD1APTEAPTEAPTFK"8.K"8.K"5YVU")VU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JANS)BPJV%)Z6.W%10^G$%IH"JM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.G
V8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0
BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1L
E$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD
!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE
!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0L
W%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6
''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"
N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<
@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:
.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA
(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@,KB0,VPQXVPQXVE!!ZK
HB@ HB@ HB(*J")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]*J"I2^</C<?JV%)QF-GQ0*5-RP$DRJQ$S,;OZ!!B!!HRD,%22, 8NC 9Q
TYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</
K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HAT
UJZ&)FM#XVF3,:>1,[E-[V5-*Z%&Y&Y&Y"L#H2LIBP$IVU%Y@PDA@W-;^3 8NC _G1<[F1,[E1\WY6]''Y;^7-7M3\7M/[6=/@ HB@ HB@#X6M)6]''SX6****
********-KR4-KR4-KP+J2,+J2,+J2,KSD0KB0,KE$DVE$DVE!!XV"2@ HB@ HB@*J"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5
MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@TEAPV\''I2\-+Z6D!!HR_7=?_1(ZF(^G!!8^GM3\OTEAP@@@@@E!!XVE"[&9.[
]WU5#8>O#8<0LC@0LC@0LG):^''):^''):!!XVE!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF-
 XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,[F1[V5-[Z&)Y&Y&Y&X#H2L#BP$IBU%YVPDA@PE;^7,8NC 8G1<_
F1,[F1\WE6]''Y6^7-;]3\7M3[6=/[0HB@ HB@ H6M#Z]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WE22C&A XAAQ)9RT%J\-APT-
Q$YFQ''Q4-"T%IW=?_6"+F*.G!!5.GV8$7C5APT@@@@G0,VB0,&Y&[&8"H"H=MSX=MLA$YFS@YFQ$9^#$9NW):^$NE!!TMC!!XVN##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F1,V5-[V6)*VY&Y&Y&H2L#H0$IBP%YVU$A@PDA^7-;NC 8NA<_G1,[F1,WE1]''Y6]''-;^7\7M3\6=/[6<B@ HB@ HBM#X6''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)
Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAPTEAY2\''I26-+XRD!!I?_7=?F!!(Z!!8^G!!8\7M0=PTE@@@@@@VE!!XVI.[&9-5]WVO#8>O#3@0
LC@0LC@0^''):^''):^''*E!!XVE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1,[E-[V5-*Z%&Y&Y&Y"L#H2LIBP$IVU%Y@PDA@W-;^3 8NC _G1<[F1,[E1\WY6]''
Y;^7-7M3\7M/[6=/@ HB@ HB@#X6M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LE$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB S$:P$B%)ZV-+%9\\G!!9IRRH"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@TEAPV\''I2\-+Z6D!!HR
_7=?_1(ZF(^G!!8^GM3\OTEAP@@@@@E!!XVE"[&9.[]WU5#8>O#8<0LC@0LC@0LG):^''):^''):!!XVE!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&)
.FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$Q
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):
^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F1,V5-[V6)*VY&Y&Y&H2L#H0$IBP%YVU$A@PDA^7-;NC 8NA<_G1,[F1,WE1]''Y6]''-;^7\7M3\6=/
[6<B@ HB@ HBM#X6''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@,KB0,VPQXVPQXVE!!ZKHB@ HB@ HB(*J")VU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JANS)BPJV%)Z6.W%10^G$%IH"JM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.G
V8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+:<XFA X$)J8.K"8Y)8#'')90
BW@IU5%YEAPT@ZN#(8*J"(*FG1<[[F1,EQTUS4=''S4.7R7E3\WD.K"8._''9>_''9>_)6]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KB0,K
E$DVE$DVE!!XV"2@ HB@ HB@*J"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD
!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE
!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0L
W%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6
''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"
N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEAPTE''I2\''KZ6-!!HRD''=?_7<ZF!!*G!!8^G!!3\7C5APT@@@
@@AXVE!!X&9.[&7U5]X>O#8>OLC@0LC@0LCA:^''):^''):^(VE!!XVE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:
.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F1,V5-[V6)*VY&Y&Y&H2L#H0$IBP%YVU$A@PDA
^7-;NC 8NA<_G1,[F1,WE1]''Y6]''-;^7\7M3\6=/[6<B@ HB@ HBM#X6''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK
"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JANS)BPJV%)Z6.W%10^G$%IH"JM#S,;OZ!!B!!HRD,%22, 8NC 9Q
TYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</
K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HAT
UJZ&)FM#XVF3,:>1+:<XFA X$)J8.K"8Y)8#'')90BW@IU5%YEAPT@ZN#(8*J"(*FG1<[[F1,EQTUS4=''S4.7R7E3\WD.K"8._''9>_''9>_)6]M)6]''SX6****
********-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LE$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5
MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[
]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF-
 XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>/FA XFIJR.K"8.FZ^H9:^\@%0BU]YVQPTE@F#(:NJ"(*J!!!!<_
F61,[ATUET=OY4=K-4-1\7E1K"8.K''9>_''9>_'':]''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WE22C&A XAAQ)9RT%J\-KPT-
Q$YFQ''Q4]BT%IW=(ZF"+F*.GV5-[V8&IC0<OTG1<@G0,KB0,&Y&Y&8"H"H=MSX=MLA$YFS@YFQ$9NS$9NW):^$MCP4MC!!XVN##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JANS)BPJV%)
Z6.W%10^G$%IH"JM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0
LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''
Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LE$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB S$:P$B%)ZV-+%9\\G!!9IRRH"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR
_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&)
.FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB41LSDEAPTEAPTEAPX.K"8.K"8.KU%YVJ%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (D9N$I@)ZV%+Z9^WGA8^RT$"
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEAPTE''I2\''KZ6-!!HRD''=?_7<ZF!!*G!!8^G!!3\7C5APT@@@@@AXVE!!X&9.[&7U5]X>O#8>OLC@0LC@0LCA:^''):
^''):^(VE!!XVE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.
K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.G
V8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0
BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1L
E$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB S$:P$B%)ZV-+%9\\G!!9IRRH"#X4;N36(P(RD
!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE
!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0L
W%82L%)Z+HB@UER&)*Q#X6E!!,;N/,[F1[V5-[Z&)Y&Y&Y&X#H2L#BP$IBU%YVPDA@PE;^7,8NC 8G1<_F1,[F1\WE6]''Y6^7-;]3\7M3[6=/[0HB@ HB@ H6
M#Z]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSDEAPTEAPTEAPX.K"8.K"8.KU%YVJ%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"
N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<
@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:
.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/+1 XFA"R$+"8.K!!&''"N^''''@I\@%WVU$TEAPA
(:N#"(*J"(X_G1-,[F0UEQUOS6]OR;]K\WM1\R8.K"9>_''9>_''9>''Y46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK
"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JANS)BPJV%)Z6.W%10^G$%IH"JM#S,;OZ!!B!!HRD,%22, 8NC 9Q
TYRT%IRTAPTEAY2\''I26-+XRD!!I?_7=?F!!(Z!!8^G!!8\7M0=PTE@@@@@@VE!!XVI.[&9-5]WVO#8>O#3@0LC@0LC@0^''):^''):^''*E!!XVE!!XVEOH8<OC2N#"</
K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HAT
UJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6****
********-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LPTEAPTEAPTEA"8.K"8.K"8-VU%X*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5
MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[
]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF-
 XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>/FA XFIJR.K"8.FZ^H9:^\@%0BU]YVQPTE@F#(:NJ"(*J!!!!<_
F61,[ATUET=OY4=K-4-1\7E1K"8.K''9>_''9>_'':]''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$QH(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEAPTE
''I2\''KZ6-!!HRD''=?_7<ZF!!*G!!8^G!!3\7C5APT@@@@@AXVE!!X&9.[&7U5]X>O#8>OLC@0LC@0LCA:^''):^''):^(VE!!XVE!!XT<##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ%YVU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)
Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0
LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1,[E-[V5-*Z%&Y&Y&Y"L#H2LIBP$IVU%Y@PDA@W-;^3 8NC _G1<[F1,[E1\WY6]''
Y;^7-7M3\7M/[6=/@ HB@ HB@#X6M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LE$EAPTEAPQYA"8.K"8.K"8-VU"(*U%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\WKHNXFA DEF''%IRT)24-AR5FQ$YF]GQ4IRT%
_6!!(ZJ,Z*8][V5-["X$OC0=P_G0@_B0,KB2Y&Y&["H"H#45M#440FQ$YLA$YFS$9NS$9^''):P4MCP4NE!!X:NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&)
.FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$Q
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):
^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.
K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ")VU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.G
V8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0
BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1L
E$EAPTEAPQYA"8.K"8.K"8-VU"(SU%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD
!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE
!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0L
W%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6
''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSDEAPTEAPTEAPX.K"8.K"8.KU%YVD5YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"
N#*Z&#NCA0]6(*H''I;2<O3<)ZV%DZ4]GB+V5IBPQH)FQN3,=*DJD!!HR2WE22C&A XAAQ)9RT%J\-KPT-Q$YFQ''Q4]BT%IW=(ZF"+F*.GV5-[V8&IC0<OTG1<
@G0,KB0,&Y&Y&8"H"H=MSX=MLA$YFS@YFQ$9NS$9NW):^$MCP4MC!!XVN##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:
.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA
(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@,KB0,VPQXVPQXVE!!ZK
HB@ HB@ HB(*J!!MVU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9Q
TYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.GV8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</
K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HAT
UJZ&)FM#XVF3,:>1,[E-[V5-*Z%&Y&Y&Y"L#H2LIBP$IVU%Y@PDA@W-;^3 8NC _G1<[F1,[E1\WY6]''Y;^7-7M3\7M/[6=/@ HB@ HB@#X6M)6]''SX6****
********-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LPTEAPTEAPTEA"8.K"8.K"8-VU%X*U%ZBA XHBCP4''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5
MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\,+HNC 8NTUFT%IRT%@T-APV\''I2\-+Y4D!!HR_6!!(_1(ZF(][!!5.GM8$OC0=P_G0@@E ,VE"[&9&[
]WU5#8>O#8<0LC@0LC@0LG(9^''):^''):!!TMC!!XVE!!S2NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF-
 XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&).FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_
F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+J2,+B41LB41LSAYAPTEAPTDVPX.K"8.K"8.KU%X*
J%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (D9N$I@)ZV%+Z9^WGA8^RT$"H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEKPTE
''I2\''KZ6]AHRD''=(ZG<ZF!!*GV8][!!3^IC0<OTG1<@@AXKE!!X&9.Y&7U5]X>O#8>OLC@0LC@0LCA:NW):^''):^(UCP8VE!!XT<##0<OH:NK2</K2</K2=9^W%9
^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LCZ&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3
+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4
-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ%YVU(HFA  HMCR_]7^9.;-ST4A@%&9.,KAHRBD!!X#(:&)(3 0\G]#T5(JB<S)@?JV%)
Z6.WQ125G$%IDRJM#S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAPTEAY2\''I26-+XRD!!I?_7=?F!!(Z!!8^G!!8\7M0=PTE@@@@@@VE!!XVI.[&9-5]WVO#8>O#3@0
LC@0LC@0^''):^''):^''*E!!XVE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL
#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1,[E-[V5-*Z%&Y&Y&Y"L#H2LIBP$IVU%Y@PDA@W-;^3 8NC _G1<[F1,[E1\WY6]''
Y;^7-7M3\7M/[6=/@ HB@ HB@#X6M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KSD1LPTEAPTEAPTEA"8.K"8.K"8-VU%ZBU%ZBA XHBCP4
''7]7.[.;T5M@PIY.[+B0RD !!HVH:N)*ZL8LGA7X5MZB /D:PO2%)ZV-+%4\\-Q9IRQD"#X4;N36(P(RD!!KI\WKHNXFA DEF''%IRT)24EAR5FQ$YF]GR6IRT%
_7=?ZJ,Z*8^GV8]["S\OTEAP@@@@_B1XKB2Y&Y.["H"H#45M#440FQ$YLA$YFS%:NS$9^''):P8VEP4NE!!X:NOC0<#(8/K2</K2</K7%9^W%9^W%9+*:.+*:.
+&U%YVU%YVU%YTUEAIVU$9MRT+*:^G MW55]LSF- XEUUS8>)ZU$#H1JR''I2GQ6X@0M*Z''5=JB &(P0LW%82L%)Z+HB@UER&)*Q#X6E!!,;N/,Z>1FF5-FJ&)
.FY&Y&X#H98#\@$IBU%YVPDA@PF#(7,8NH(8G1<_F60[F1\WE6]''Y6^7-4-3\7M3[28.[0HB@ HB_ H6''SZ]''Y46M************+R4-KR4-KR4J2,+J2,+
J2,+B41LB0,KB1YAE!!YAE!!XVE(, HB@ HB@ J"(*A%YV  XFB@ 4MI=7];&;.5MSPDBV[&:0,D!!HHRE"N#*Z&#NCA0]6MSV (K1N$C<)ZV%+Z9]GGKT^RT$Q
H(6MN3,=*DJD!!HR2WKJ2C 8NC%EQ%IRT%IPEAPTE''I2\''KZ6-!!HRD''=?_7<ZF!!*G!!8^G!!3\7C5APT@@@@@AXVE!!X&9.[&7U5]X>O#8>OLC@0LC@0LCA:^''):
^''):^(VE!!XVE!!XT<##0<OH:NK2</K2</K2=9^W%9^W%9^Z:.+*:.+*9%YVU%YVU%YVUEQPRU%YNST%J:.''!!8CU=]WSD1+XFAUUT>O*V%YH2LR$)2\!!4]&@LC
Z&)=_R (I*DLCE9^L#IZV*2@ EQT)*Z$X6M!!X[N3+;F/,Q!!-[Q")*[!!&Y&Y&H2N^H7@IBP%YVU$A@PDA(:M;NC"JNA<_G1-,F1,WE1]''Y6]''-;]K\7M3\6<.
K&<B@ HB@''8BM)46''Y6]M#Z************4-KR4-KR4-B,+J2,+J2,+J0-LS@-LSD0VPTEAPTEAE$FK"8.K"8.K"5YVJ#QVU(HFA  HMCR_]7^9.;-ST4A@
%&9.,KAHRBD!!X#(:&)(3 0\G]*J"I2^</C<?JV%)QF-GQ0*5-RP$DRJQ$S,;OZ!!B!!HRD,%22, 8NC 9QTYRT%IRTAR4EAY2\''I26-''PRD!!I?ZF!!?F!!(Z!!5.G
V8\7"P<OC5A<_@@@VB1XVI.[&Y-5]WVO#8>O#3@0LC@0LC@0^#%:^''):^''*EP4NE!!XVEOH8<OC2N#"</K2</K2</^W%9^W%9^W&.+*:.+*:.YVU%YVU%YVU%
QTTD%YVS$5IR.+)8^@5_WU41LZ6A UUUO#:%)VRL#D)J\''H]GY C@6)*_W4(JBZ!!C@1^W#H2V%*, HATUJZ&)FM#XVF3,:>1+;DX[V4X*Z&8Y&Y&Y"L#''"M0
BP$IVU%Y@PDA@ZN#^3 8"# _G1<[[A,[E1\WY6]''Y;^7R7M3\7M/K"9/@ HB@ I>@#Z]M)6]''SX6************-KR4-KR4-KP+J2,+J2,+J2,KSD0KB0,K
E$DVE$DVE!!XV"2@ HB@ HB@*J"(b') ; colorMapFromArray:#[108 168 80 124 90 170 164 90 170 92 122 170 92 164 170 144 168 80 164 96 90 168 132 80 164 98 90 116 90 170 164 152 80 164 90 120 92 110 170 92 152 170 156 168 80 112 166 80 152 166 80 164 158 80 132 168 80 164 88 90 124 88 170 144 88 170 164 90 110 144 90 170 100 88 170 92 166 90 124 168 80 140 90 170 168 152 80 92 126 170 168 154 80 136 90 170 164 90 100 164 122 90 168 158 80 112 90 170 164 156 80 132 166 80 92 114 170 164 138 80 92 116 170 168 144 80 164 90 90 164 90 130 104 166 80 144 166 80 160 88 170 92 166 130 92 168 90 92 146 170 92 106 170 164 130 80 164 100 90 168 136 80 164 90 160 116 168 80 132 90 170 92 166 100 164 126 90 168 162 80 92 168 120 168 164 80 92 138 170 164 142 80 164 112 90 164 92 110 164 166 80 92 166 110 164 148 80 92 166 170 140 166 80 164 150 80 164 120 90 168 156 80 92 130 170 152 88 170 164 92 120 92 166 80 168 140 80 148 88 170 112 168 80 152 168 80 92 158 170 164 110 90 92 98 170 92 140 170 164 92 90 120 88 170 104 168 80 120 90 170 92 104 170 120 166 80 160 166 80 92 148 170 92 108 170 92 150 170 156 166 80 92 90 170 164 124 90 92 92 170 92 134 170 92 166 160 108 90 170 148 90 170 128 166 80 168 146 80 92 120 170 168 148 80 140 88 170 100 90 170 164 116 90 160 90 170 116 88 170 156 88 170 92 128 170 156 90 170 136 166 80 96 168 80 164 134 80 164 104 90 92 154 170 92 166 140 92 168 100 128 90 170 108 166 80 92 118 170 164 88 170 128 168 80 92 100 170 92 142 170 164 94 90 168 130 80 164 168 80 92 168 110 136 88 170 120 168 80 96 166 80 116 166 80 132 88 170 164 92 100 92 132 170 168 160 80 92 166 120 92 168 80 168 142 80 164 160 80 104 88 170 92 160 170 148 168 80 92 162 170 164 114 90 168 150 80 92 124 170 100 166 80 164 128 80 100 168 80 140 168 80 164 88 160 112 88 170 164 102 90 168 138 80 92 112 170 164 136 80 128 88 170 92 94 170 92 136 170 92 96 170 148 166 80 168 166 80 104 90 170 164 90 150 124 166 80 92 102 170 92 144 170 92 166 150 96 88 170 164 118 90 96 90 170 160 168 80 92 88 170 164 90 140 164 154 80 136 168 80 152 90 170 108 88 170 164 106 90 92 156 170 164 108 90 164 140 80]; yourself]
!

pickColorIcon
    ^ ToolbarIconLibrary pipette16x16Icon
! !

!ColorEditDialog class methodsFor:'interface specs'!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:ColorEditDialog andSelector:#windowSpec
     ColorEditDialog new openInterface:#windowSpec
     ColorEditDialog open
    "

    <resource: #canvas>

    ^ 
    #(FullSpec
       name: windowSpec
       window: 
      (WindowSpec
         label: 'Define Color'
         name: 'Define Color'
         min: (Point 440 360)
         bounds: (Rectangle 0 0 440 360)
       )
       component: 
      (SpecCollection
         collection: (
          (VerticalPanelViewSpec
             name: 'RGBLabelPanel'
             layout: (LayoutFrame 0 0 0 0 90 0 76 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (LabelSpec
                   label: 'Red:'
                   name: 'RedLabel'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                (LabelSpec
                   label: 'Green:'
                   name: 'GreenLabel'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                (LabelSpec
                   label: 'Blue:'
                   name: 'BlueLabel'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'RGBSliderPanel'
             layout: (LayoutFrame 90 0 0 0 -177 1 76 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (SliderSpec
                   name: 'RedSlider'
                   tabable: false
                   model: red
                   orientation: horizontal
                   stop: 255
                   step: 1
                   backgroundColor: (Color 100.0 0.0 0.0)
                   extent: (Point 173 16)
                 )
                (SliderSpec
                   name: 'GreenSlider'
                   tabable: false
                   model: green
                   orientation: horizontal
                   stop: 255
                   step: 1
                   backgroundColor: (Color 0.0 100.0 0.0)
                   extent: (Point 173 16)
                 )
                (SliderSpec
                   name: 'BlueSlider'
                   tabable: false
                   model: blue
                   orientation: horizontal
                   stop: 255
                   step: 1
                   backgroundColor: (Color 0.0 0.0 100.0)
                   extent: (Point 173 16)
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'RGBFieldPanel'
             layout: (LayoutFrame -173 1 0 0 -130 1 76 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (InputFieldSpec
                   name: 'RedField'
                   model: red
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                (InputFieldSpec
                   name: 'GreenField'
                   model: green
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                (InputFieldSpec
                   name: 'BlueField'
                   model: blue
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'RGBFieldPanelHex'
             layout: (LayoutFrame -130 1 0 0 -100 1 76 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (InputFieldSpec
                   name: 'EntryField4'
                   model: red
                   type: hexIntegerInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 28 20)
                 )
                (InputFieldSpec
                   name: 'EntryField5'
                   model: green
                   type: hexIntegerInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 28 20)
                 )
                (InputFieldSpec
                   name: 'EntryField6'
                   model: blue
                   type: hexIntegerInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 255
                   acceptOnPointerLeave: false
                   extent: (Point 28 20)
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'HLSLabelPanel'
             layout: (LayoutFrame 0 0 86 0 90 0 163 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (LabelSpec
                   label: 'Hue:'
                   name: 'Label1'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                (LabelSpec
                   label: 'Light:'
                   name: 'Label2'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                (LabelSpec
                   label: 'Saturation:'
                   name: 'Label3'
                   translateLabel: true
                   adjust: right
                   useDefaultExtent: true
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'HLSSliderPanel'
             layout: (LayoutFrame 90 0 86 0 -177 1 163 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (SliderSpec
                   name: 'HueSlider'
                   tabable: false
                   model: hue
                   orientation: horizontal
                   stop: 359
                   step: 1
                   keyboardStep: 1
                   extent: (Point 173 16)
                 )
                (SliderSpec
                   name: 'LightSlider'
                   tabable: false
                   model: light
                   orientation: horizontal
                   step: 1
                   backgroundColor: (Color 67.0 67.0 67.0)
                   keyboardStep: 1
                   extent: (Point 173 16)
                 )
                (SliderSpec
                   name: 'SaturationSlider'
                   tabable: false
                   model: saturation
                   orientation: horizontal
                   step: 1
                   backgroundColor: (Color 67.0 67.0 67.0)
                   keyboardStep: 1
                   extent: (Point 173 16)
                 )
                )
              
             )
           )
          (VerticalPanelViewSpec
             name: 'HLSFieldPanel'
             layout: (LayoutFrame -173 1 86 0 -130 1 163 0)
             horizontalLayout: fit
             verticalLayout: spreadSpace
             horizontalSpace: 3
             verticalSpace: 3
             component: 
            (SpecCollection
               collection: (
                (InputFieldSpec
                   name: 'EntryField1'
                   model: hue
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 359
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                (InputFieldSpec
                   name: 'EntryField2'
                   model: light
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 100
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                (InputFieldSpec
                   name: 'EntryField3'
                   model: saturation
                   type: numberInRange
                   numChars: 3
                   minValue: 0
                   maxValue: 100
                   acceptOnPointerLeave: false
                   extent: (Point 41 20)
                 )
                )
              
             )
           )
          (ViewSpec
             name: 'PreviewBoxFrame'
             layout: (LayoutFrame -100 1 4 0.0 -3 1.0 -39 1.0)
             level: 1
             component: 
            (SpecCollection
               collection: (
                (LabelSpec
                   label: 'Preview'
                   name: 'PreviewBox'
                   layout: (LayoutFrame 2 0.0 2 0.0 -2 1.0 -2 1.0)
                   level: -1
                   translateLabel: true
                   postBuildCallback: postBuildPreviewBox:
                 )
                )
              
             )
           )
          (LabelSpec
             label: 'Brightness:'
             name: 'Label5'
             layout: (LayoutFrame 0 0 175 0 90 0 197 0)
             activeHelpKey: brightness
             translateLabel: true
             adjust: right
           )
          (InputFieldSpec
             name: 'EntryField8'
             layout: (LayoutFrame 90 0 175 0 -277 1 197 0)
             activeHelpKey: brightness
             model: brightnessStringHolder
             isReadOnly: true
             immediateAccept: false
             acceptOnReturn: true
             acceptOnTab: true
             acceptOnLostFocus: true
             acceptOnPointerLeave: true
           )
          (LabelSpec
             label: 'Color Name:'
             name: 'ColorNameLabel'
             layout: (LayoutFrame 2 0 214 0 135 0 236 0)
             activeHelpKey: colorName
             translateLabel: true
             adjust: right
           )
          (InputFieldSpec
             name: 'ColorNameField'
             layout: (LayoutFrame 135 0 214 0 -122 1 236 0)
             activeHelpKey: colorName
             model: colorNameHolder
             immediateAccept: false
             acceptOnReturn: true
             acceptOnTab: true
             acceptOnLostFocus: true
             acceptOnPointerLeave: true
           )
          (LabelSpec
             label: 'HTML Color Name:'
             name: 'HTMLColorNameLabel'
             layout: (LayoutFrame 2 0 240 0 135 0 262 0)
             activeHelpKey: htmlColorName
             translateLabel: true
             adjust: right
           )
          (InputFieldSpec
             name: 'MLHTColorNameFieldField'
             layout: (LayoutFrame 135 0 240 0 -122 1 262 0)
             activeHelpKey: htmlColorName
             model: htmlColorNameHolder
             immediateAccept: false
             acceptOnReturn: true
             acceptOnTab: true
             acceptOnLostFocus: true
             acceptOnPointerLeave: true
           )
          (LabelSpec
             label: 'Color Definition:'
             name: 'Label4'
             layout: (LayoutFrame 2 0 266 0 135 0 288 0)
             activeHelpKey: colorDefinitionString
             translateLabel: true
             adjust: right
           )
          (InputFieldSpec
             name: 'EntryField7'
             layout: (LayoutFrame 135 0 266 0 -122 1 288 0)
             activeHelpKey: colorDefinitionString
             model: colorDefinitionStringHolder
             isReadOnly: true
             immediateAccept: false
             acceptOnReturn: true
             acceptOnTab: true
             acceptOnLostFocus: true
             acceptOnPointerLeave: true
           )
          (ActionButtonSpec
             label: 'Copy Color'
             name: 'CopyColor'
             layout: (LayoutFrame 12 0 298 0 120 0 320 0)
             activeHelpKey: hlsMixer
             translateLabel: true
             resizeForLabel: true
             tabable: true
             model: copyColor
           )
          (ActionButtonSpec
             label: 'Paste Color'
             name: 'PasteColor'
             layout: (LayoutFrame 122 0 298 0 240 0 320 0)
             translateLabel: true
             resizeForLabel: true
             tabable: true
             model: pasteColor
           )
          (ActionButtonSpec
             label: 'pickColorIcon'
             name: 'Button1'
             layout: (LayoutFrame 285 0 298 0 312 0 325 0)
             activeHelpKey: pickColor
             hasCharacterOrientedLabel: false
             translateLabel: true
             resizeForLabel: true
             tabable: true
             model: pickColor
           )
          (HorizontalPanelViewSpec
             name: 'HorizontalPanel1'
             layout: (LayoutFrame 0 0.0 -32 1 -16 1.0 0 1.0)
             horizontalLayout: okCancelBox
             verticalLayout: centerMax
             horizontalSpace: 3
             verticalSpace: 3
             reverseOrderIfOKAtLeft: true
             component: 
            (SpecCollection
               collection: (
                (ActionButtonSpec
                   label: 'Cancel'
                   name: 'CancelButton'
                   translateLabel: true
                   resizeForLabel: false
                   tabable: true
                   model: cancel
                   useDefaultExtent: true
                 )
                (ActionButtonSpec
                   label: 'OK'
                   name: 'OKButton'
                   translateLabel: true
                   resizeForLabel: false
                   tabable: true
                   model: accept
                   isDefault: true
                   defaultable: true
                   useDefaultExtent: true
                 )
                )
              
             )
             keepSpaceForOSXResizeHandleH: true
           )
          )
        
       )
     )
! !

!ColorEditDialog class methodsFor:'startup'!

openOn:aColor
    ^ self new
        color:aColor;
        open;
        yourself

    "
     self openOn:Color red
    "
! !

!ColorEditDialog methodsFor:'accessing'!

color
    |colorName|

    colorName := self colorName.
    colorName notEmptyOrNil ifTrue:[
        ^ Color name:(colorName asSymbol)
    ].
    ^ Color redByte:(red value) greenByte:(green value) blueByte:(blue value)
!

color:aColor
    aColor isNil ifTrue:[
        ^ self
    ].

    aColor isSymbol ifTrue:[
        self colorNameHolder value:aColor
    ] ifFalse:[
        self red value:aColor redByte.
        self green value:aColor greenByte.
        self blue value:aColor blueByte.
    ]
!

colorName
    ^ colorNameHolder value
!

colorNameOrColor
    |colorName|

    colorName := self colorName.
    colorName notEmptyOrNil ifTrue:[
        "/ ^ Color name:(colorName asSymbol)
        ^ colorName asSymbol
    ].
    ^ Color redByte:(red value) greenByte:(green value) blueByte:(blue value)
!

htmlColorName
    ^ htmlColorNameHolder value
! !

!ColorEditDialog methodsFor:'actions'!

colorChanged
    |clr nm|

    clr := self colorNameOrColor.
    clr isColor ifTrue:[
        "not a symbol"
        self setPreview:clr.
        self htmlColorNameHolder value:(clr htmlPrintString) withoutNotifying:self.

        nm := #(white red green blue black) detect:[:nm | clr = (Color perform:nm)] ifNone:nil.
        nm notNil ifTrue:[
            self colorDefinitionStringHolder value:('Color ',nm).
        ] ifFalse:[
            self colorDefinitionStringHolder value:('Color rgbValue:16r',(clr rgbValue hexPrintString leftPaddedTo:6 with:$0)).
        ].
        self brightnessStringHolder value:((clr brightness asFixedPoint:3) printString).
    ].

    "Modified: / 27-01-2011 / 12:54:04 / cg"
!

colorChangedTo:clr
    "compute rgb and hls (if possible)"

    |h|

    self red   value:clr redByte withoutNotifying:self.
    self green value:clr greenByte withoutNotifying:self.
    self blue  value:clr blueByte withoutNotifying:self.

    h := clr hue.
    h notNil ifTrue:[
        self hue        value:(h rounded) withoutNotifying:self.
    ].
    self light      value:(clr light rounded) withoutNotifying:self.
    self saturation value:(clr saturation rounded) withoutNotifying:self.

    self colorChanged

    "Modified: / 27-01-2011 / 12:48:28 / cg"
!

colorNameChanged
    "compute rgb and hls (if possible)"

    |clr|

    clr := Color name:(self colorName) ifIllegal:nil.
    clr isNil ifTrue:[
        ^ self
    ].
    self colorChangedTo:clr.
!

copyColor
    self window setClipboardObject:self color
!

copyColorName
    self window setClipboardText:self htmlColorName
!

hlsSliderChanged
    "compute rgb"

    Color withRGBFromHue:hue value light:light value saturation:saturation value do:[:r :g :b |
        red    value:(r * 255 / 100) rounded withoutNotifying:self.
        green  value:(g * 255 / 100) rounded withoutNotifying:self.
        blue   value:(b * 255 / 100) rounded withoutNotifying:self.
    ].
    colorNameHolder value:'' withoutNotifying:self.
    self colorChanged
!

htmlColorNameChanged
    "compute rgb and hls (if possible)"

    |clr|

    htmlColorNameHolder value isEmptyOrNil ifTrue:[
        ^ self.
    ].

    clr := Color rgbValue:(Integer 
                                readFrom:(htmlColorNameHolder value copyFrom:2)
                                radix:16
                                onError:nil).
    clr isNil ifTrue:[
        ^ self
    ].
    self colorNameHolder value:'' withoutNotifying:self.
    self colorChangedTo:clr.
!

pasteColor
    |copyBufferColor|

    copyBufferColor := self window getClipboardObject.
    copyBufferColor isColor ifFalse:[
        self window beepInEditor.
        ^ self
    ].
    self color:copyBufferColor
!

pickColor
    |color|

    color := Color fromUserWithFeedBack:[:clr | self setPreview:clr].
    color notNil ifTrue:[
        self color:color.
    ]
!

rgbSliderChanged
    "compute hls"

    |r g b|

    r := self red value.
    g := self green value.
    b := self blue value.

    Color withHLSFromRed:(r * 100 / 255) green:(g * 100 / 255) blue:(b * 100 / 255) do:[:h :l :s |
        h isNil ifTrue:[
            "/ achromatic
        ] ifFalse:[
            self hue    value:(h rounded) withoutNotifying:self.
        ].
        self light      value:(l rounded) withoutNotifying:self.
        self saturation value:(s rounded) withoutNotifying:self.
    ].
    self colorNameHolder value:'' withoutNotifying:self.
    self colorChanged
!

setPreview:color
    previewBox isNil ifTrue:[^ self "called before setup"].

    previewBox backgroundColor:color.
    previewBox foregroundColor:color contrastingBlackOrWhite.
! !

!ColorEditDialog methodsFor:'aspects'!

blue
    blue isNil ifTrue:[
        blue := 0 asValue.
        blue addDependent:self.
    ].
    ^blue
!

brightnessStringHolder
    brightnessStringHolder isNil ifTrue:[
        brightnessStringHolder := 0 asValue.
        "/ brightness addDependent:self.
    ].
    ^ brightnessStringHolder

    "Created: / 27-01-2011 / 12:48:00 / cg"
!

colorDefinitionStringHolder
    colorDefinitionStringHolder isNil ifTrue:[
        colorDefinitionStringHolder := '' asValue.
        "/ colorDefinitionStringHolder addDependent:self.
    ].
    ^colorDefinitionStringHolder

    "Created: / 27-01-2011 / 12:38:12 / cg"
!

colorNameHolder
    colorNameHolder isNil ifTrue:[
        colorNameHolder := '' asValue.
        colorNameHolder addDependent:self.
    ].
    ^colorNameHolder
!

green
    green isNil ifTrue:[
        green := 0 asValue.
        green addDependent:self.
    ].
    ^green
!

htmlColorNameHolder
    htmlColorNameHolder isNil ifTrue:[
        htmlColorNameHolder := '' asValue.
        htmlColorNameHolder addDependent:self.
    ].
    ^htmlColorNameHolder
!

hue
    hue isNil ifTrue:[
        hue := 0 asValue.
        hue addDependent:self.
    ].
    ^hue
!

light
    light isNil ifTrue:[
        light := 0 asValue.
        light addDependent:self.
    ].
    ^light
!

red
    red isNil ifTrue:[
        red := 0 asValue.
        red addDependent:self.
    ].
    ^red
!

saturation
    saturation isNil ifTrue:[
        saturation := 0 asValue.
        saturation addDependent:self.
    ].
    ^saturation
! !

!ColorEditDialog methodsFor:'change & update'!

update:something with:aParameter from:changedObject
    (changedObject == red
    or:[changedObject == green
    or:[changedObject == blue]]) ifTrue:[
        self rgbSliderChanged.
        ^ self
    ].

    (changedObject == hue
    or:[changedObject == light
    or:[changedObject == saturation]]) ifTrue:[
        self hlsSliderChanged.
        ^ self
    ].

    (changedObject == colorNameHolder) ifTrue:[
        self colorNameChanged.
        ^ self
    ].
    (changedObject == htmlColorNameHolder) ifTrue:[
        self htmlColorNameChanged.
        ^ self
    ].

    super update:something with:aParameter from:changedObject
! !

!ColorEditDialog methodsFor:'startup & release'!

postBuildPreviewBox:aView
    previewBox := aView
!

postBuildWith:aBuilder
    super postBuildWith:aBuilder.
    (aBuilder componentAt:'HueSlider') 
        viewBackground:
            (ImageBackground new 
                image:(self class hueGradientImage);
                align:#fit;
                yourself).
    self colorChanged.

    "Modified: / 6.9.1998 / 22:55:25 / cg"
! !

!ColorEditDialog class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !