implementation เมื่อสร้างส่วนขยายโมดูล
สมาชิก
- download
- download_and_extract
- execute
- extension_metadata
- extract
- ไฟล์
- getenv
- is_dev_dependency
- โมดูล
- os
- เส้นทาง
- read
- report_progress
- root_module_has_non_dev_dependency
- ดู
- ซึ่ง
ดาวน์โหลด
unknown module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)success ซึ่งเป็นแฟล็กที่ค่าเป็น true หากดาวน์โหลดเสร็จสมบูรณ์ และหากดาวน์โหลดสำเร็จ จะส่งคืนแฮชของไฟล์ที่มีฟิลด์ sha256 และ integrity เมื่อผู้ใช้ระบุ sha256 หรือ integrity เราขอแนะนำอย่างยิ่งให้ตั้งค่า canonical_id อย่างชัดเจน เช่น get_default_canonical_id
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| url | string หรือ Iterable ของ string
                                     ต้องระบุ รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน | 
| output | สตริง หรือ Label หรือ path
                                     ค่าเริ่มต้นคือ ''เส้นทางไปยังไฟล์เอาต์พุตที่เกี่ยวข้องกับไดเรกทอรีที่เก็บ | 
| sha256 | string;
                                     ค่าเริ่มต้นคือ ''แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 ถือเป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช | 
| executable | bool;
                                     ค่าเริ่มต้นคือ Falseตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็น false | 
| allow_fail | bool;
                                     ค่าเริ่มต้นคือ Falseหากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ | 
| canonical_id | string;
                                     ค่าเริ่มต้นคือ ''หากตั้งค่าไว้ ให้จำกัดการเข้าชมที่แคชไว้เฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้ผลรวมตรวจสอบ ( sha256หรือintegrity) | 
| auth | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ | 
| headers | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุส่วนหัว http สำหรับ URL ทั้งหมด | 
| integrity | string;
                                     ค่าเริ่มต้นคือ ''ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบความสมบูรณ์ของทรัพยากรย่อย ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชที่เก็บก่อนเพื่อหาไฟล์ที่มีผลรวมตรวจสอบที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช | 
| block | bool;
                                     ค่าเริ่มต้นคือ Trueหากตั้งค่าเป็น false การเรียกจะแสดงผลทันที และแทนที่จะเป็นค่าที่แสดงผลปกติ การเรียกจะแสดงผลโทเค็นที่มีเมธอดเดียวคือ wait() ซึ่งจะบล็อกจนกว่าการดาวน์โหลดจะเสร็จสิ้นและแสดงผลค่าที่แสดงผลตามปกติหรือส่งข้อยกเว้นตามปกติ | 
download_and_extract
struct module_ctx.download_and_extract(url, output='', sha256='', type='', strip_prefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})
success ซึ่งเป็นแฟล็กที่แสดงเป็น true หากดาวน์โหลดเสร็จสมบูรณ์ และหากดาวน์โหลดสำเร็จ จะแสดงแฮชของไฟล์ที่มีฟิลด์ sha256 และ integrity เมื่อผู้ใช้ระบุ sha256 หรือ integrity เราขอแนะนำอย่างยิ่งให้ตั้งค่า canonical_id อย่างชัดเจน เช่น get_default_canonical_id
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| url | string หรือ Iterable ของ string
                                     ต้องระบุ รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน | 
| output | string หรือ Label หรือ path
                                     ค่าเริ่มต้นคือ ''เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร โดยสัมพันธ์กับไดเรกทอรีที่เก็บ | 
| sha256 | string;
                                     ค่าเริ่มต้นคือ ''แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 ถือเป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช | 
| type | string;
                                     ค่าเริ่มต้นคือ ''ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ระบบจะกำหนดประเภทที่เก็บถาวรจากส่วนขยายของไฟล์ใน URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุ "zip", "jar", "war", "aar", "nupkg", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" หรือ ".deb" ที่นี่ได้ | 
| strip_prefix | string;
                                     ค่าเริ่มต้นคือ ''คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยกออกมา ที่เก็บถาวรจำนวนมากมี ไดเรกทอรีระดับบนสุดซึ่งมีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อนำคำนำหน้านี้ออกจากไฟล์ที่แยกออกมาได้แทนที่จะต้อง ระบุคำนำหน้านี้ซ้ำๆ ใน build_fileเพื่อความเข้ากันได้ คุณอาจใช้พารามิเตอร์นี้ภายใต้ชื่อที่เลิกใช้งานแล้ว
 | 
| allow_fail | bool;
                                     ค่าเริ่มต้นคือ Falseหากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ | 
| canonical_id | string;
                                     ค่าเริ่มต้นคือ ''หากตั้งค่าไว้ ให้จำกัดการเข้าชมที่แคชไว้เฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้ผลรวมตรวจสอบ" ( sha256หรือintegrity) | 
| auth | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ | 
| headers | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุส่วนหัว http สำหรับ URL ทั้งหมด | 
| integrity | string;
                                     ค่าเริ่มต้นคือ ''ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบความสมบูรณ์ของทรัพยากรย่อย ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชที่เก็บก่อนเพื่อหาไฟล์ที่มีผลรวมตรวจสอบที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช | 
| rename_files | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการแยก รายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์จะได้รับการเปลี่ยนชื่อเป็นค่าก่อนที่จะมีการปรับคำนำหน้าไดเรกทอรี ซึ่งใช้เพื่อแยกไฟล์เก็บถาวรที่มีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแยกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้ | 
ดำเนินการ
exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")
timeout (เป็นวินาที ค่าเริ่มต้นคือ 600 วินาที) เมธอดนี้จะแสดงผลโครงสร้าง exec_result ที่มีเอาต์พุตของคำสั่ง คุณใช้แผนที่ environment เพื่อลบล้างตัวแปรสภาพแวดล้อมบางอย่างที่จะส่งไปยังกระบวนการได้
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| arguments | sequence;
                                     required List of arguments, the first element should be the path to the program to execute. | 
| timeout | int;
                                     ค่าเริ่มต้นคือ 600ระยะเวลาสูงสุดของคำสั่งเป็นวินาที (ค่าเริ่มต้นคือ 600 วินาที) | 
| environment | dict;
                                     ค่าเริ่มต้นคือ {}บังคับให้ตั้งค่าตัวแปรสภาพแวดล้อมบางรายการเพื่อส่งไปยังกระบวนการ ค่าอาจเป็น Noneเพื่อนำตัวแปรสภาพแวดล้อมออก | 
| quiet | bool;
                                     ค่าเริ่มต้นคือ Trueหากควรพิมพ์ stdout และ stderr ไปยังเทอร์มินัล | 
| working_directory | string;
                                     ค่าเริ่มต้นคือ ""ไดเรกทอรีการทำงานสำหรับการเรียกใช้คำสั่ง อาจเป็นแบบสัมพัทธ์กับรูทของที่เก็บหรือแบบสัมบูรณ์ก็ได้ ค่าเริ่มต้นคือรูทของที่เก็บ | 
extension_metadata
extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None, reproducible=False)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| root_module_direct_deps | ลำดับของสตริง หรือสตริง หรือ Noneค่าเริ่มต้นคือNoneชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency โดยตรงของโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่นำเข้าที่เก็บทั้งหมดเหล่านี้ผ่าน use_repoBazel จะพิมพ์คำเตือนเมื่อมีการประเมินส่วนขยาย โดยจะแนะนำให้ผู้ใช้เรียกใช้bazel mod tidyเพื่อแก้ไขการเรียกใช้use_repoโดยอัตโนมัติหากมีข้อใดข้อหนึ่ง  หากมีการระบุ  คุณตั้งค่า  | 
| root_module_direct_dev_deps | ลำดับของสตริง หรือสตริง หรือ Noneค่าเริ่มต้นคือNoneชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency สำหรับการพัฒนาโดยตรงของโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่ได้นำเข้าที่เก็บทั้งหมดเหล่านี้ผ่าน use_repoในพร็อกซีส่วนขยายที่สร้างด้วยuse_extension(..., dev_dependency = True)Bazel จะพิมพ์คำเตือนเมื่อมีการประเมินส่วนขยาย โดยแนะนำให้ผู้ใช้เรียกใช้bazel mod tidyเพื่อแก้ไขการเรียกuse_repoโดยอัตโนมัติหากมีการระบุ  คุณตั้งค่า  | 
| reproducible | bool;
                                     ค่าเริ่มต้นคือ Falseระบุว่าส่วนขยายโมดูลนี้ช่วยให้มั่นใจได้ถึงความสามารถในการทำซ้ำที่สมบูรณ์ จึงไม่ควรจัดเก็บไว้ในไฟล์ล็อก | 
แยก
None module_ctx.extract(archive, output='', strip_prefix='', *, rename_files={}, watch_archive='auto')พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| archive | string หรือ Label หรือ path
                                     required เส้นทางไปยังที่เก็บถาวรที่จะแตกไฟล์ ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ | 
| output | string หรือ Label หรือ path
                                     ค่าเริ่มต้นคือ ''เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ | 
| strip_prefix | string
                                     ค่าเริ่มต้นคือ ''คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยกออกมา ที่เก็บถาวรจำนวนมากมี ไดเรกทอรีระดับบนสุดซึ่งมีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อนำคำนำหน้านี้ออกจากไฟล์ที่แยกออกมาได้ แทนที่จะต้องระบุคำนำหน้านี้ซ้ำๆ ใน build_fileเพื่อความเข้ากันได้ คุณอาจใช้พารามิเตอร์นี้ภายใต้ชื่อที่เลิกใช้งานแล้ว
 | 
| rename_files | dict;
                                     ค่าเริ่มต้นคือ {}พจนานุกรมที่ไม่บังคับซึ่งระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการแยก รายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์จะได้รับการเปลี่ยนชื่อเป็นค่าก่อนที่จะมีการปรับคำนำหน้าไดเรกทอรี ซึ่งใช้เพื่อแยกไฟล์เก็บถาวรที่มีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแยกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้ | 
| watch_archive | string;
                                     ค่าเริ่มต้นคือ 'auto'ระบุว่าจะดูไฟล์ที่เก็บถาวรหรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งค่า "yes" จะเทียบเท่ากับการเรียกใช้เมธอด watch()ทันที ส่วนการส่งค่า "no" จะไม่พยายามดูไฟล์ และการส่งค่า "auto" จะพยายามดูไฟล์เฉพาะเมื่อทำได้อย่างถูกต้องตามกฎหมายเท่านั้น (ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของwatch()) | 
ไฟล์
None module_ctx.file(path, content='', executable=True, legacy_utf8=False)พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| path | สตริง หรือ Label หรือ path
                                     ต้องระบุ เส้นทางของไฟล์ที่จะสร้าง ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ | 
| content | สตริง
                                     ค่าเริ่มต้นคือ ''เนื้อหาของไฟล์ที่จะสร้าง โดยค่าเริ่มต้นจะเป็นค่าว่าง | 
| executable | bool;
                                     ค่าเริ่มต้นคือ Trueตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็นจริง | 
| legacy_utf8 | bool;
                                     ค่าเริ่มต้นคือ Falseไม่มีการดำเนินการ พารามิเตอร์นี้เลิกใช้งานแล้วและจะนำออกใน Bazel เวอร์ชันถัดไป | 
getenv
string module_ctx.getenv(name, default=None)
name เป็นสตริงหากมี หรือ default หากไม่มี เมื่อสร้างทีละรายการ การเปลี่ยนแปลงค่าของตัวแปรที่ตั้งชื่อโดย name จะทําให้ระบบดึงข้อมูลที่เก็บนี้อีกครั้ง
          
      
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| name | สตริง
                                     ต้องระบุ ชื่อของตัวแปรสภาพแวดล้อมที่ต้องการ | 
| default | สตริง หรือ Noneค่าเริ่มต้นคือNoneค่าเริ่มต้นที่จะแสดงหากไม่พบ name | 
None
        is_dev_dependency
bool module_ctx.is_dev_dependency(tag)
devDependency = True หรือไม่
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| tag | bazel_module_tag;
                                     required แท็กที่ได้จาก bazel_module.tags | 
โมดูล
list module_ctx.modules
os
repository_os module_ctx.os
เส้นทาง
path module_ctx.path(path)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| path | string หรือ Label หรือ path
                                     ต้องระบุ string,Labelหรือpathที่จะใช้สร้างเส้นทาง | 
อ่าน
string module_ctx.read(path, *, watch='auto')
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| path | string หรือ Label หรือ path
                                     ต้องระบุ เส้นทางของไฟล์ที่จะอ่าน | 
| watch | string;
                                     ค่าเริ่มต้นคือ 'auto'ระบุว่าจะดูไฟล์หรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งค่า "yes" จะเทียบเท่ากับการเรียกใช้เมธอด watch()ทันที ส่วนการส่งค่า "no" จะไม่พยายามดูไฟล์ และการส่งค่า "auto" จะพยายามดูไฟล์เฉพาะเมื่อทำได้อย่างถูกต้องตามกฎหมายเท่านั้น (ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของwatch()) | 
report_progress
None module_ctx.report_progress(status='')พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| status | string;
                                     ค่าเริ่มต้นคือ ''stringอธิบายสถานะปัจจุบันของความคืบหน้าในการดึงข้อมูล | 
root_module_has_non_dev_dependency
bool module_ctx.root_module_has_non_dev_dependency
นาฬิกา
None module_ctx.watch(path)"การเปลี่ยนแปลง" รวมถึงการเปลี่ยนแปลงเนื้อหาของไฟล์ (หากเส้นทางเป็นไฟล์) หากเส้นทางเคยเป็นไฟล์แต่ตอนนี้เป็นไดเรกทอรี หรือในทางกลับกัน และหากเส้นทางเริ่มหรือหยุดมีอยู่ โปรดทราบว่าการดำเนินการนี้ไม่รวมถึงการเปลี่ยนแปลงไฟล์ใดๆ ในไดเรกทอรีหากเส้นทางเป็นไดเรกทอรี หากต้องการทำเช่นนั้น ให้ใช้ path.readdir() แทน
โปรดทราบว่าการพยายามดูเส้นทางภายใน repo ที่กำลังดึงข้อมูล หรือภายในไดเรกทอรีการทำงานของส่วนขยายโมดูลปัจจุบัน จะทำให้เกิดข้อผิดพลาด ส่วนขยายโมดูลที่พยายามดูเส้นทางนอกพื้นที่ทำงาน Bazel ปัจจุบันจะทำให้เกิดข้อผิดพลาดด้วย
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| path | string หรือ Label หรือ path
                                     ต้องระบุ เส้นทางของไฟล์ที่จะดู | 
ไหน
path module_ctx.which(program)
path ของโปรแกรมที่เกี่ยวข้องหรือ None หากไม่มีโปรแกรมดังกล่าวในเส้นทาง
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| program | string;
                                     required Program to find in the path. | 
None