本帖最后由 1五湖四海1 于 2016-8-25 22:44 编辑 / u+ U" i% |* D& z5 t
2 u; s( }# l. k4 m% ?* J4 O! J这个defaults.h文件作为一个中央默认设置配置不同的机器类型,从DIY米尔斯数控CNC转换的现成的机器。这里的设置所列出的文件是由用户提供的,: Q; P, R: ~7 k; Q# Y# V0 S
所以您的你的需求可能不同。所以应该你了解你的机器和调整设置根据你的个性的需求,制造机器。4 g/ p$ Z& f1 V2 j
defaults_h文件是选择是否将一些参数设置为默认值3 L: ]0 c( q1 m( j7 m0 i" @3 a
定义各种参数
3 c& S" N; J `1.defaults/defaults_generic.h //Grbl通过通用默认设置就可以在不同的机器上工作。
" f+ L' n% x! y" K2.defaults/defaults_sherline.h //描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机0 V. k2 L: i$ j! l9 g! g# `
3.defaults/defaults_shapeoko.h // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的# Q' q* s) X+ r2 J/ M
4.defaults/defaults_shapeoko3 //描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
: v# Y0 ?4 [8 L9 O5.defaults/defaults_x_carve_500mm //描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。 v# o5 V/ o+ Y/ k% y1 n, }" d, ^
6.defaults/defaults_zen_toolworks_7x7 //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。由30 v 6电源和TI DRV8811步进电机驱动程序0 I- h/ l! {8 \3 b, S! @' T
7.defaults/defaults_oxcnc // Grbl设置OpenBuilds牛数控机床: r/ ]6 \ n* H. B W
8.defaults/defaults_simulator* I: i# n7 f% c8 ~* p0 G( d
4 l* x$ G7 q9 e. U: \8 ~
/*
' a4 X/ m! c+ w; R; H$ P7 `" ?! u defaults.h - defaults settings configuration file, U* H- B. z3 f" J
Part of Grbl; w8 r& X& ^* k o# L/ N6 ^. y" I
1 t1 _4 @& L# O) k7 [5 e Copyright (c) 2012-2015 Sungeun K. Jeon7 Z' j6 N3 ~; ~
& ~4 w, z, U9 O2 Y Grbl is free software: you can redistribute it and/or modify, `* K' q4 z& \( y4 r
it under the terms of the GNU General Public License as published by# r, b8 @, w# `; b/ R2 r; h
the Free Software Foundation, either version 3 of the License, or z5 e6 [: z1 c
(at your option) any later version.
! N' ^7 {4 [6 ~# t( B b9 Q" a! t
Grbl is distributed in the hope that it will be useful,( [4 `8 x% n6 I$ j4 V% P
but WITHOUT ANY WARRANTY; without even the implied warranty of: S# u+ R; i( I
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
' C+ @9 M! F1 i2 y- V) \8 s9 B( x; G GNU General Public License for more details.5 Z, a9 S/ e" ?) k1 p9 F% o. f
6 A R6 Q7 F; t: f+ y( H+ Z
You should have received a copy of the GNU General Public License
. A, X3 w6 O$ f along with Grbl. If not, see <http://www.gnu.org/licenses/>.
0 ]0 l4 N, K- @- [& F. U*/
+ A3 g3 S9 S( u1 F- H/ f8 y$ M9 ~' W; k" O6 [4 f* n
/* The defaults.h file serves as a central default settings selector for different machine$ H v1 C& m8 i2 W# _( v
types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings
0 ?) b# l( @8 ^. F8 H; m- h files listed here are supplied by users, so your results may vary. However, this should
: U6 `( u' z @( I* w give you a good starting point as you get to know your machine and tweak the settings for. N$ j h/ _, x/ ~
your nefarious needs. q( m1 N5 q2 d) M! t3 c
Ensure one and only one of these DEFAULTS_XXX values is defined in config.h 3 H, k2 {+ P I$ l
1 Z# Q- i9 ~" h- M, Z R
The defaults.h文件作为一个中央默认设置选择不同的机器- k$ W# [9 U4 p
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置! K& r. a. }4 C! ?! S
这里列出的文件是由用户提供的,所以您的结果可能不同。然而,这应该
/ n" W# k" ~( w 给你一个很好的起点,你了解你的机器和调整设置6 ?9 L) M6 \7 ~! k
你的个性的需求。
( o5 \7 g& @" J U3 P2 Q* L: X 确保一个且只有一个这些DEFAULTS_XXX config.h中定义的值
& M2 p$ Q9 R- ]' x' U */
+ V1 @; ^; j" m; M9 S! I, Y! D9 e- ~8 S& J, s
#ifndef defaults_h7 P" o2 s: B0 u2 |& |- B
" n7 [' B& M$ s+ e) r$ I// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file.
' ~. D! Z, R1 Q; W2 Z, \; V// Don't #define defaults_h here, let the selected file do it. Prevents including more than one.3 m7 d1 D& n3 U/ |- b$ Y! a/ b
//只有定义DEFAULT_XXX在哪里可以找到相应的DEFAULT_XXX。h文件。" y$ O! \4 \3 g+ s2 K) U
//别在这里# define defaults_h,让选中的文件。防止包括不止一个。
! u: j o: z: k* _" L, z3 Q' R( p5 a1 u! x9 p* K! W
#ifdef DEFAULTS_GENERIC
8 @: Q! @4 m' W2 R" H // Grbl generic default settings. Should work across different machines., \; m7 o. ~6 P$ b
// Grbl通过通用默认设置就可以在不同的机器上工作。
6 K$ `3 Z6 ~/ ~ D #include "defaults/defaults_generic.h"
3 t! l. P, U0 B' X3 P$ `, D& c#endif# M6 I; G8 H! D ?8 {/ r& @( B3 C
5 P+ j8 n& g: H" j9 Z+ t4 v
#ifdef DEFAULTS_SHERLINE_5400; D4 ~5 @$ E2 O+ h2 c6 ~
// Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors,
, x8 I, }* ?; C) m0 a1 t0 M6 A5 T // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding.1 g* ]; i l( f
//描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机,
! @+ E/ F, q' u5 A) m- o, s //由三个Pololu A4988步进驱动30 v,6在每1.5绕组供电。
1 h0 y# Q c5 v/ }' q% @1 h9 O, W! n& _- n
#include "defaults/defaults_sherline.h"9 S$ y c" P* A# Y, Y- V
#endif
- v+ h; J* d) Z; k4 B7 c) w) H
4 y4 `7 ?2 u [( O; w#ifdef DEFAULTS_SHAPEOKO6 j* }" p f# T5 n: r
// Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos J; {8 b" M; v" H) t! ?' D
// grblShield with a 24V, 4.2A power supply.- s" k) ?6 @8 e; o8 U
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的, g- A; r5 L* {$ q" ^
// grblShield 24 v,4.2电源。+ t: j/ q7 F7 y; Z; P- @3 }( S5 b2 `
' e' G' o/ C6 k8 Q9 O. W% Z! Z #include "defaults/defaults_shapeoko.h"
4 U* z" Q' m7 L1 S# F; m#endif
. `3 n' l- W6 ?/ N5 U+ P9 \6 e8 U
, H* d0 o) t0 [# | @#ifdef DEFAULTS_SHAPEOKO_2/ Q& g ^& U: w. ~- E
// Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos7 E4 N0 q" P; U: n k7 V
// grblShield at 28V.' b5 _" H; g; i$ R
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
% M) q' M6 n) T. X4 e L // grblShield 28 v。
* }1 m. g! \) M; Y; v8 y" u
0 k( T! g( K3 Y. H! {. n" o #include "defaults/defaults_shapeoko2.h"
5 p. _" U6 i, ^, Q0 A#endif3 @% f+ N; J: Q' P! i
# D* i" Y! c% {5 u. k5 r#ifdef DEFAULTS_SHAPEOKO_3
- L, {' G8 N6 t7 f% w8 B8 a // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion
: W0 S% ^7 b$ o8 E // 描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的- K" N' U- m& f
2 }/ j( O: r+ F1 h9 }! h8 t: P
#include "defaults/defaults_shapeoko3.h"
. `" o3 b1 b, v* f( n) {#endif, H" J' I* C8 y4 [+ n' ?/ j
& D4 ~% ?6 v. h( K) N! \3 q
#ifdef DEFAULTS_X_CARVE_500MM7 k: I1 s8 ?. ^6 M9 o- n
// Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos
- U- p5 c5 S) x$ @ f; |/ V$ B // grblShield at 24V./ t o G/ v, _1 q) v
// 描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。
1 g1 Q. k) d& K" ? i% |5 H #include "defaults/defaults_x_carve_500mm.h"! C' a4 P" O/ f
#endif0 A ?! K. a2 c, P; R+ } W
: y9 t/ ^( R& Y; h6 b! f
#ifdef DEFAULTS_X_CARVE_1000MM+ ?8 ^) N. W) ]/ G1 b
// Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos# m6 M/ A" X/ H/ s
// grblShield at 24V.1 X! h! |+ v ]* k- F4 _
#include "defaults/defaults_x_carve_1000mm.h": N0 @8 l$ ]8 [
#endif2 |; y+ O! R5 ^% C
5 q$ m- H4 H- u% x% o2 d& {9 ^#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7
4 N9 c# i8 ~1 l( G // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors.
( P8 v& F. O. \$ M // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here./ o& D5 W. t- ?# ]. O1 E
// Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers.! m( _4 }* \, T% n" c& ^3 u; @
//描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。
P/ i6 D$ d/ e //导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。
0 P8 `4 d0 y+ j" Y5 v. ? //由30 v 6电源和TI DRV8811步进电机驱动程序。, O/ m$ ]; k6 X8 N: i
. S+ I7 d x3 o$ g& Q
#include "defaults/defaults_zen_toolworks_7x7.h"" D# t3 K1 v, ]$ R- C3 Q$ Y
#endif0 K2 r4 n9 Y7 H9 q
1 @- \: _, _ ?% [$ f* {
#ifdef DEFAULTS_OXCNC
2 r$ L0 L: I2 }/ u" Q0 l // Grbl settings for OpenBuilds OX CNC Machine% G d% q1 U/ M3 z" x" {1 ^
// http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/
j- }, l c: O& J; k+ l
5 O- }" r; d; v9 c' }: k3 Y# ~ // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ $ L0 t/ M$ O2 w9 [3 K
#include "defaults/defaults_oxcnc.h" // Grbl设置OpenBuilds牛数控机床
" u) s1 W* h X#endif
" T" Z! V- z$ o7 J( i. B0 f
+ K7 b5 E! [3 M2 r$ k4 M#ifdef DEFAULTS_SIMULATOR
: @& C. V) U: P6 D2 f c4 _ // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim)
" b3 q( v6 ]! F5 _ #include "defaults/defaults_simulator.h" //设置只对Grbl模拟器(www.github.com/grbl/grbl-sim); G2 k; s8 _' _6 j
#endif, U, q8 w8 y* d! S6 c1 L* N3 o9 h
6 x1 A- Y2 \$ m3 M9 k#endif
) e+ q: I* ?4 M; y. Z( |
$ k( b2 {! ?& H c) l v__________________________________________________________________________________________________________________; z8 E. j+ j' p% ]
/*6 J" l: x, ?5 p3 Y! L
defaults_generic.h -默认设置配置文件Grbl的一部分
9 B4 ?$ r/ |, [3 ~! M+ k- S5 Y+ |. f版权(c)2012 - 2015 Sungeun k全
. m" q9 j9 s2 d+ q: sGrbl是免费软件:可以重新分配和/或修改
- [8 A- A' A% t& l/ d3 L8 k* n$ wGNU通用公共许可证的条款下发布的
3 o/ V$ O6 J1 g8 s自由软件基金会,版本3的许可,或* L4 s5 M* b) s& l `# Y
(任您选)其后的版本。* l' `: G, y' f$ ^/ k/ {
2 v% s* p! d+ hGrbl分布,希望这将是有用的,
+ q! G( I; t2 M! s" F. ]但是没有任何保证;没有即使的默示保证' r; i- f: u2 y5 h. {& ^
适销性或健身为特定目的。看到
) L9 P9 M6 {) x; P3 k. |, mGNU通用公共许可证的更多细节。
, }2 M% K# ]1 P8 [( Z- A, G
" ~+ O" H2 S) K& G你应该收到了GNU通用公共许可证的副本
4 N4 o3 T! s, V连同Grbl。如果没有,看< http://www.gnu.org/licenses/ >。
# S K9 O/ o) D2 t9 m* /
8 j# E5 [; g; S8 ^$ n( U8 X& c x0 a# r1 e
/ *默认值。h文件作为一个中央默认设置文件不同的机器6 j' d0 z# v p/ ]
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置7 i. }% @: P. ?! \( f0 b$ Y
这是由用户提供,所以您的结果可能不同。然而,这应该给你
; z9 ]) S+ }9 b0 j1 y0 S一个好的起点,你了解你的机器和调整的设置
1 B" c8 n. M4 w4 i7 u2 t, s9 x邪恶的需求。*/
! x: b3 F% P9 {8 `9 @6 S3 [; _- G$ [4 r
* g8 S; h0 p& A9 R* e5 W e& R#ifndef defaults_h2 Y+ d: P: u2 z, v8 G- F
#define defaults_h2 t1 o7 \( r6 W* Y7 X. V
" U% Y$ B# N) C0 o7 @: [, U S
// Grbl generic default settings. Should work across different machines.
0 U4 H2 G1 L' K2 R9 v; J #define DEFAULT_X_STEPS_PER_MM 250.0 //X轴每mm脉冲当量 6 s0 j0 ~: P3 ~4 o. [1 D; q
#define DEFAULT_Y_STEPS_PER_MM 250.0
9 D8 u6 e' x o" I- X* C+ p+ ` #define DEFAULT_Z_STEPS_PER_MM 250.0; [, C! H7 G3 f e
#define DEFAULT_X_MAX_RATE 500.0 // mm/min 最大速度
; t2 a, [0 n1 I4 _. x: f! f# y) N& R #define DEFAULT_Y_MAX_RATE 500.0 // mm/min% @. N& h' T% b3 s, g
#define DEFAULT_Z_MAX_RATE 500.0 // mm/min2 S; p4 k1 o; X+ l
/*这是毫米/秒/秒的加速度。
/ |2 ?+ o3 g' Y' |$ w1 G你不需要理解这是什么意思,我只想说,一个较低的值给smooooother加速度而价值更高的收益率更严格的措施,达到所需的进料速度更快。5 l4 N' m/ J% A9 P4 n q, a
从技术角度讲,这是您的机器的点对点的加速度,独立于轴。设置加速度值高达你最限制轴可以让你在不丢失任何步骤。
: s9 U$ U. e# `$ |, S: j" t' T+ s" _通常你想给自己一些缓冲,因为如果你失去了步骤,Grbl不知道这发生了(开环控制步进),并将继续。*/5 t0 F7 t& [1 a* A4 w
#define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 加速度& k: o5 s: D( A3 b
#define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
+ e/ S m- H% L #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^26 Z9 _ ~3 w' J: i: P3 y+ ^
#define DEFAULT_X_MAX_TRAVEL 200.0 // mm 最大步行# B% B9 @7 p* x0 C+ m6 |4 g% [
#define DEFAULT_Y_MAX_TRAVEL 200.0 // mm
, a- w4 ?' n" o' p' @/ N7 E. ]8 @ #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm
- v# m6 T( ~/ s- d1 G5 J #define DEFAULT_STEP_PULSE_MICROSECONDS 10 //步进驱动脉冲长度7 k$ L! |- s! }. d
#define DEFAULT_STEPPING_INVERT_MASK 0 //步进是否反转7 ?! \' W# p6 B1 s( C
#define DEFAULT_DIRECTION_INVERT_MASK 0 //方向是否反转2 i; y) k( L. b& C+ [
/*- Z" R3 I# Z7 M
每次你完成步进运动和停止,Grbl将禁用默认步进。
; B$ e4 ^/ w: l; u) K `# w锁步进空闲时间时间长度Grbl将步进锁之前禁用。0 |/ A* O0 y) O7 m$ ]1 Z3 ~
根据系统中,您可以将这个参数设置为零,禁用它。对他人,你可能需要25 - 50毫秒来确保你的斧子来完成禁用前停止。(我的机器往往漂移稍微如果我没有启用。): P% D/ k* h2 j# i/ ]' a' |
或者,你可以让你的轴在任何时候启用通过将这个值设置为最大255毫秒。再次重复,你总是可以保持所有轴通过设置启用7美元= 255。*/ p! F/ W) |' R
#define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)步进闲着时间8 R! @! w a( L) ?
#define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) //是否打印状态报告
, k5 H2 c: Y: z/ e4 Q) |! Y/*一些高低cnc-stepper控制器需要输入反方向和步骤。& m/ a7 [, z" d% Y- T; B+ n0 u+ s3 x8 k+ O
信号线路通常是高或低信号方向或高,低了几微秒一步事件信号。为了达到这个目标,Grbl可以反转输出比特来满足特定的需求。
3 _5 y8 K) v8 C反掩码值是一个字节,xor的步骤和方向步进港数据之前发送。这样你可以使用这两个转化步骤脉冲或转化的一个或多个方向的轴。
9 H% \3 C% `+ W( \这个字节对应的比特分配给介入config.h别针。请注意,不用于反演位0和1。默认比特分配是这样的:*/
1 y4 E! J$ N* l, p
3 S( p+ ]3 p( b' j) ?+ J/* 转弯路口偏差使用加速度经理决定它如何快速穿过一条路径。/ ]: p" Y9 |) f/ X! \6 x
数学有点复杂,但总的来说,更高的价值给一般快,可能的波动运动。低价值使得加速度经理更加谨慎,将导致小心和慢转弯。
/ J# }/ Q2 G Z+ e- p 如果你遇到问题,你的机器试图把一个角落太快,降低此值使它慢下来。8 `7 \! u* |9 \
如果你想让你的机器通过连接移动得更快,增加这个值速度。
% K! \& @4 D- m; b" `# @9 S, ]7 f 为技术人员,点击这个链接阅读关于Grbl转弯算法,速度和结角占一个很简单,高效和可靠的方法。*/
6 p8 j& t) c* ?8 U7 U
( T, R' ` X! X. C9 W #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm //偏差+ B3 S1 ~$ G( M& f" G( k
#define DEFAULT_ARC_TOLERANCE 0.002 // mm //圆弧公差; e3 b; U' A/ _% T& q y
#define DEFAULT_REPORT_INCHES 0 // false //打印英寸
4 o. \. X3 _7 [8 K" p9 i$ b /*默认情况下,步进使销是启用禁用高和低。如果您的设置需要相反的,只是反步进使销通过输入15美元= 1。禁用与15美元= 0。(可能需要一个动力循环加载的变化。)*/* s3 V0 H, H; S/ c
#define DEFAULT_INVERT_ST_ENABLE 0 // false
7 i) @; c/ u% u c #define DEFAULT_INVERT_LIMIT_PINS 0 // false //反转限位引脚5 A' m5 `9 ^. I7 T% ^3 r7 E
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false //软件限位
! h8 T3 V3 e, L1 h #define DEFAULT_HARD_LIMIT_ENABLE 0 // false //硬件限位
& r" V/ L! w+ `( w" K #define DEFAULT_HOMING_ENABLE 0 // false //回原点使能
, O% \. q" A( V; w. t0 ^$ k #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir# T+ ]9 O; _0 I' }, n
#define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min
; _9 l. p# y/ J3 E #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min. {# A4 T& B0 t; ^
#define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)防抖动延时
7 y$ E3 b& [4 x K& d4 { #define DEFAULT_HOMING_PULLOFF 1.0 // mm0 @+ H+ S# r+ z& M( _& Y
2 X- e) S4 D) m( o
#endif
. _# g" {* h! z0 a3 W
5 @8 ^, P0 ]: v; T$ O- H
! L2 q6 [ C/ h9 i( l# S
3 D" R; L8 r! w* X4 v0 ^
, q4 s" W+ _' F: P1 E* x2 `
# c6 D* g- z" N/ k9 d! k% \# j4 g$ _; E% ^4 f0 L
, Y6 f2 Z H X3 ~: l% o6 }- P
: y/ p: ^7 F( Q$ | Z9 G- y9 g+ O5 C8 n
$ u4 G( O' g& L( w. ~8 v) D9 h) q. Y! o7 B
, u( Y9 Q! A: t: w( N G8 U; f
8 [ ]: t1 G7 @. P& |5 A
4 s* ~( ~/ i5 J& Z$ _9 ^+ _. ]" `- S, T: U7 v! |# g7 O
; q# B+ v+ a6 I* J% F# c
; a+ n1 ^$ ], J( V
% P; d- ?9 W& ^1 v0 L0 a
, C3 V$ Z* i, N
1 {9 y# u4 K7 S" N1 R5 D# V. V9 ~4 S/ ? D$ ~9 K- }3 n! R! |+ Q9 h' e
9 W5 X) X' h6 O6 i
9 z8 I0 K$ J* N, P. Z7 q! C' _% ?9 x% P
, c' s6 B0 Q. _1 m4 j! E; p
1 f$ V; l: P8 Y( i |