diff options
Diffstat (limited to 'keyboards/ergodox_ez')
24 files changed, 234 insertions, 72 deletions
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h index fceb1197ff..64289666de 100644 --- a/keyboards/ergodox_ez/config.h +++ b/keyboards/ergodox_ez/config.h @@ -1,6 +1,8 @@ /* Copyright 2012 Jun Wako <wakojun@gmail.com> Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1307 +#define VENDOR_ID 0x3297 +#define PRODUCT_ID 0x4974 #define DEVICE_VER 0x0001 #define MANUFACTURER ZSA Technology Labs Inc #define PRODUCT ErgoDox EZ @@ -152,8 +154,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION //#define DEBUG_MATRIX_SCAN_RATE - -#endif diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index ed0de24cc4..a2bbbfe09d 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -1,3 +1,23 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + #include "ergodox_ez.h" extern inline void ergodox_board_led_on(void); diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h index 5754dc8ae1..a10e0fee63 100644 --- a/keyboards/ergodox_ez/ergodox_ez.h +++ b/keyboards/ergodox_ez/ergodox_ez.h @@ -1,11 +1,36 @@ -#ifndef ERGODOX_EZ_H -#define ERGODOX_EZ_H +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once #include "quantum.h" #include <stdint.h> #include <stdbool.h> #include "i2c_master.h" +#if defined(KEYBOARD_ergodox_ez_glow) +# include "glow.h" +#elif defined(KEYBOARD_ergodox_ez_shine) +# include "shine.h" +#endif + // I2C aliases and register addresses (see "mcp23018.md") #define I2C_ADDR 0b0100000 #define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) @@ -265,5 +290,3 @@ extern keyboard_config_t keyboard_config; { R05, R15, R25, R35, R45, R55 }, \ { R06, R16, R26, R36, R46, KC_NO } \ } - -#endif diff --git a/keyboards/ergodox_ez/glow/config.h b/keyboards/ergodox_ez/glow/config.h new file mode 100644 index 0000000000..e4cdb2625d --- /dev/null +++ b/keyboards/ergodox_ez/glow/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x4976 +#undef PRODUCT +#define PRODUCT ErgoDox EZ Glow diff --git a/keyboards/ergodox_ez/glow/glow.h b/keyboards/ergodox_ez/glow/glow.h new file mode 100644 index 0000000000..a504e4fdfb --- /dev/null +++ b/keyboards/ergodox_ez/glow/glow.h @@ -0,0 +1,20 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#include "ergodox_ez.h" diff --git a/keyboards/ergodox_ez/keymaps/glow/keymap.c b/keyboards/ergodox_ez/glow/keymaps/glow/keymap.c index 526c364029..526c364029 100644 --- a/keyboards/ergodox_ez/keymaps/glow/keymap.c +++ b/keyboards/ergodox_ez/glow/keymaps/glow/keymap.c diff --git a/keyboards/ergodox_ez/glow/keymaps/glow/rules.mk b/keyboards/ergodox_ez/glow/keymaps/glow/rules.mk new file mode 100644 index 0000000000..894a6a5e13 --- /dev/null +++ b/keyboards/ergodox_ez/glow/keymaps/glow/rules.mk @@ -0,0 +1,6 @@ +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = IS31FL3731 # enable later + +SRC += keymaps/default/keymap.c + +LTO_ENABLE = yes diff --git a/keyboards/ergodox_ez/keymaps/reactive/config.h b/keyboards/ergodox_ez/glow/keymaps/reactive/config.h index 6e86f8d9d0..6e86f8d9d0 100644 --- a/keyboards/ergodox_ez/keymaps/reactive/config.h +++ b/keyboards/ergodox_ez/glow/keymaps/reactive/config.h diff --git a/keyboards/ergodox_ez/keymaps/reactive/keymap.c b/keyboards/ergodox_ez/glow/keymaps/reactive/keymap.c index 526c364029..526c364029 100644 --- a/keyboards/ergodox_ez/keymaps/reactive/keymap.c +++ b/keyboards/ergodox_ez/glow/keymaps/reactive/keymap.c diff --git a/keyboards/ergodox_ez/glow/keymaps/reactive/rules.mk b/keyboards/ergodox_ez/glow/keymaps/reactive/rules.mk new file mode 100644 index 0000000000..21a5fb45ce --- /dev/null +++ b/keyboards/ergodox_ez/glow/keymaps/reactive/rules.mk @@ -0,0 +1,7 @@ +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = IS31FL3731 # enable later + +SRC += keymaps/default/keymap.c + +LTO_ENABLE = yes +COMMAND_ENABLE = no diff --git a/keyboards/ergodox_ez/glow/rules.mk b/keyboards/ergodox_ez/glow/rules.mk new file mode 100644 index 0000000000..23e7548e35 --- /dev/null +++ b/keyboards/ergodox_ez/glow/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_ENABLE = IS31FL3731 diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 6f438d0d50..9550d6465c 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -146,11 +146,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case VRSN: SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); return false; - #ifdef RGBLIGHT_ENABLE +#ifdef RGBLIGHT_ENABLE case RGB_SLD: rgblight_mode(1); return false; - #endif +#endif } } return true; diff --git a/keyboards/ergodox_ez/keymaps/glow/rules.mk b/keyboards/ergodox_ez/keymaps/glow/rules.mk deleted file mode 100644 index 3c1b984562..0000000000 --- a/keyboards/ergodox_ez/keymaps/glow/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes # enable later - -SRC += ../default/keymap.c - -LINK_TIME_OPTIMIZATION_ENABLE = yes
\ No newline at end of file diff --git a/keyboards/ergodox_ez/keymaps/oryx/keymap.c b/keyboards/ergodox_ez/keymaps/oryx/keymap.c index 81c8b1b912..f3190852cd 100644 --- a/keyboards/ergodox_ez/keymaps/oryx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/oryx/keymap.c @@ -68,6 +68,7 @@ bool suspended = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { +#ifdef RGBLIGHT_ENABLE case RGB_SLD: if (record->event.pressed) { rgblight_mode(1); @@ -100,6 +101,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif } return false; +#endif } return true; } diff --git a/keyboards/ergodox_ez/keymaps/reactive/rules.mk b/keyboards/ergodox_ez/keymaps/reactive/rules.mk deleted file mode 100644 index b1be2c921b..0000000000 --- a/keyboards/ergodox_ez/keymaps/reactive/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes # enable later - -SRC += ../default/keymap.c - -LINK_TIME_OPTIMIZATION_ENABLE = yes -COMMAND_ENABLE = no diff --git a/keyboards/ergodox_ez/keymaps/webusb/keymap.c b/keyboards/ergodox_ez/keymaps/webusb/keymap.c index 15eb76c15e..d37cc49fc3 100644 --- a/keyboards/ergodox_ez/keymaps/webusb/keymap.c +++ b/keyboards/ergodox_ez/keymaps/webusb/keymap.c @@ -68,6 +68,7 @@ bool suspended = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { +#ifdef RGBLIGHT_ENABLE case RGB_SLD: if (record->event.pressed) { rgblight_mode(1); @@ -100,6 +101,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif } return false; +#endif } return true; } diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c index f5553a8b61..fe40ab797e 100644 --- a/keyboards/ergodox_ez/led_i2c.c +++ b/keyboards/ergodox_ez/led_i2c.c @@ -1,31 +1,27 @@ /* - * light weight WS2812 lib V2.0b - * - * Controls WS2811/WS2812/WS2812B RGB-LEDs - * Author: Tim (cpldcpu@gmail.com) - * - * Jan 18th, 2014 v2.0b Initial Version - * Nov 29th, 2015 v2.3 Added SK6812RGBW support - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + #ifdef RGBLIGHT_ENABLE # include "ergodox_ez.h" -extern rgblight_config_t rgblight_config; - void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) { i2c_init(); i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT); diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c index fd68a5dea7..d18800f19b 100644 --- a/keyboards/ergodox_ez/matrix.c +++ b/keyboards/ergodox_ez/matrix.c @@ -5,7 +5,10 @@ This is not a file you want to be messing with. All of the interesting stuff for you is under keymaps/ :) Love, Erez +Copyright 2012 Jun Wako <wakojun@gmail.com> Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/ergodox_ez/post_config.h b/keyboards/ergodox_ez/post_config.h index 526cc8c417..0d4fe5c683 100644 --- a/keyboards/ergodox_ez/post_config.h +++ b/keyboards/ergodox_ez/post_config.h @@ -1,3 +1,23 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + #pragma once #if !defined(ERGODOX_LED_15) && !defined(ERGODOX_LED_30) diff --git a/keyboards/ergodox_ez/readme.md b/keyboards/ergodox_ez/readme.md index bce8ff3c6f..59a2840fd0 100644 --- a/keyboards/ergodox_ez/readme.md +++ b/keyboards/ergodox_ez/readme.md @@ -1,41 +1,49 @@ # ErgoDox EZ -The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). +![ErgoDox EZ](http://www.coolthings.com/wp-content/uploads/2017/05/ergodox-ez-2.jpg) -Linux users need to modify udev rules as described on the [Teensy -Linux page]. Some distributions provide a binary, maybe called -`teensy-loader-cli`. +The ErgoDox EZ is a mass produced version of the original ErgoDox keyboard, with optional support for RGB Light (Shine) or RGB Matrix (Glow). -[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html +* Keyboard Maintainer: [ZSA Technology Labs Inc](https://github.com/zsa), Firmware maintained by [drashna](https://github.com/drashna) +* Hardware Supported: Original ErgoDox, ErgoDox EZ +* Hardware Availability: [ErgoDox EZ](https://ergodox-ez.com/), [ErgoDox.io](https://ergodox.io) -To flash the firmware: +Make example for this keyboard (after setting up your build environment): - - Build the firmware with `make <keyboardname>:<keymapname>`, for example `make ergodox_ez:default` + make ergodox_ez:default:flash + +For the ErgoDox EZ Shine, and Glow, use one of the following: - - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g. - `ergodox_ez_default.hex` + make ergodox_ez/shine:default:flash + make ergodox_ez/glow:default:flash - - Start the teensy loader. +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - - Load the .hex file into it. +## Oryx Configuation - - Press the Reset button by inserting a paperclip gently into the reset hole - in the top right corner. +If you have `ORYX_CONFIGURATOR` defined in your keymap's `config.h`, this enables a number of the built in options from the Oryx Configurator. - - Click the button in the Teensy app to download the firmware. +### Indicator LEDs -See also [video demonstration](https://www.youtube.com/watch?v=9PyiGUO9_KQ) using Teensy in auto mode. +You can use the `LED_LEVEL` keycode to cycle through the brightness levels for the LEDs on the top right of the keyboard. These settings are saved in eeprom (persistant memory). -To flash with ´teensy-loader-cli´: +Alternatively, you can set the brightness by calling the following functions: - - Build the firmware with `make keymapname`, for example `make default` +```c +void ergodox_led_all_set(uint8_t level); +void ergodox_right_led_1_set(uint8_t level); +void ergodox_right_led_2_set(uint8_t level); +void ergodox_right_led_3_set(uint8_t level); +``` - - Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_<keymap>.hex´ +These settings are not persistent, so you'd need to reset it every time the board starts. - - Press the Reset button by inserting a paperclip gently into the reset hole - in the top right corder. +These are on a 0-255 scale -## Settings +### RGB Matrix Features -You may want to enable QMK_KEYS_PER_SCAN because the Ergodox has a relatively -slow scan rate. +If you're using the Smart LED (layer indication) feature from the Oryx Configurator, you want to make sure that you enable these options by adding `#define ORYX_CONFIGURATOR` to your keymap's `config.h`. + +This changes the `RGB_TOG` keycode so that it will toggle the lights on and off, in a way that will allow the Smart LEDs to continue to work, even with the rest of the LEDs turned off. + +Additionally, a new keycode has been added to toggle the Smart LEDs. Use `TOGGLE_LAYER_COLOR`, if you aren't already. diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk index 9ad4eaa186..b6311aca3e 100644 --- a/keyboards/ergodox_ez/rules.mk +++ b/keyboards/ergodox_ez/rules.mk @@ -30,7 +30,6 @@ UNICODE_ENABLE = yes # Unicode SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard SLEEP_LED_ENABLE = no API_SYSEX_ENABLE = no -RGBLIGHT_ENABLE = yes RGB_MATRIX_ENABLE = no # enable later DEBOUNCE_TYPE = eager_pr diff --git a/keyboards/ergodox_ez/shine/config.h b/keyboards/ergodox_ez/shine/config.h new file mode 100644 index 0000000000..c2bc6b5342 --- /dev/null +++ b/keyboards/ergodox_ez/shine/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x4975 +#undef PRODUCT +#define PRODUCT ErgoDox EZ Shine diff --git a/keyboards/ergodox_ez/shine/rules.mk b/keyboards/ergodox_ez/shine/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/ergodox_ez/shine/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/ergodox_ez/shine/shine.h b/keyboards/ergodox_ez/shine/shine.h new file mode 100644 index 0000000000..a504e4fdfb --- /dev/null +++ b/keyboards/ergodox_ez/shine/shine.h @@ -0,0 +1,20 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com> +Copyright 2015 ZSA Technology Labs Inc (@zsa) +Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#include "ergodox_ez.h" |