to fit in cache and bucket sort the points into the tiles before apply การแปล - to fit in cache and bucket sort the points into the tiles before apply ไทย วิธีการพูด

to fit in cache and bucket sort the

to fit in cache and bucket sort the points into the tiles before applying z-buffering. This is similar to sort-first2 graphics architectures (e.g., 8).
Although it requires extra work to tile sort the points and requires each point to be written twice before reaching its final destination, this approach produces much more coherent memory accesses. In our implementation, using the tiled z-buffer approach reduced the total time for projection and z-buffering from 42 milliseconds to 25 for a 512x512 image. Since this is the most expensive part of the render cache
computations, this is a significant savings. A tiled approach has be used previously to parallelize3 the render cache by explicitly partitioning the point cloud to reduce communication. By dynamically sorting the projected points each frame, our tiling approach has fewer visual artifacts and can be more flexible in its sampling and point cloud update strategies. We hope to explore our approach as a potentially better parallelization strategy if we have access to a suitable shared memory parallel machine.
3.3. Image Prefilter
Interpolation/smoothing filters are used to reconstruct an image from the frequently sparse point data. There are inherent tradeoffs in the choice of the filter size to use. Small filters are better at producing sharper, higher quality reconstruction when the points are dense, while larger filters are better at filling in the gaps between points when they are sparse.
The original render cache used a single 3x3 weighted image filter as shown in Figure 3. This works well except when no valid point falls within the 3x3 neighborhood of a pixel. In this case the pixel was either left the color it had in the previous frame or cleared to black depending on user preference. However neither choice works very well when the points are too sparse. This often happens when there are large changes in the image from frame to frame or when the rate of samples coming back from the underlying renderer is too low.
To better handle sparse regions we introduce an additional interpolation stage, called the prefilter, with a larger 7x7 uniform filter kernel. Uniform kernels have the advantage that they are cheap to compute and their cost cost does not depend on the size of the kernel (e.g., 5p. 406). Because of its larger kernel though, the prefiltered image is unacceptably blurry in high point density regions.We run the prefilter first and then allow the normal interpolation stage to overwrite any pixels where its smaller filter produces valid data. In effect, the larger prefilter is only used where the smaller 3x3 filter fails. See Figure 4.
The normal interpolation stage with its 3x3 filter also produces the priority image that is used to guide sampling and we have left this unchanged. The use of the prefilter does not effect the priority image of the choice of locations for new samples. Its purpose is simply to reduce the visual artifacts in sparse regions until the point density can be raised to a sufficient level for the 3x3 filter to work. In our implementation the prefilter is actually less expensive than the 3x3 filter and consumes only 10% of the render cache execution time.

3.4. Point Eviction
The render cache uses a fixed size cache of points and in the original version, a point would remain in the cache until it was overwritten by new sample point. Effects such as nondiffuse shading or scene editing can cause a point’s color to become incorrect, or stale. If the rate of new samples being computed per frame is very low, this stale data may remain in the point cache for a long time. We have added a new mechanism to allow points to be evicted from the cache even if there is no point available to overwrite it. Evicting points can actually speed up the image convergence by clearing out stale data more quickly.
Each point has an associated age which is stored in a byte (0-255). At the beginning of each frame, all the existing points are aged by some increment. This increment is chosen based on the number of new points added to the cache such that on average a point should reach the age of 128 before being overwritten. But several conditions can cause points to age at a faster rate such as if the point is not visible in the current frame or if color changes are detected in nearby points in the image plane. These can cause a point to reach the maximum age of 255 at which point it is automatically evicted from the cache. In the future, additional aging penalties may further improve stale data eviction.


3.5. Other Optimizations
We have also rewritten our implementation to take advantage of the SIMD (Single Instruction, Multiple Data) instructions available through Intel’s MMX, SSE, and SSE 2 instruction set extensions1. These provides 8 and 16 byte vectors that can be used to operate on multiple data (e.g., four floats) in a single instruction. We can thus project four points at the same time or operate on the red, green, and blue channels of a pixel simultaneously. However it does require some rear_
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
พอดีใน แคชและกลุ่มเรียงลำดับคะแนนเป็นกระเบื้องก่อนที่จะใช้การกำหนดบัฟเฟอร์ z นี่คือคล้ายกับสถาปัตยกรรมกราฟิก first2 เรียงลำดับ (เช่น 8) แม้ ว่าจะต้องเพิ่มเติมการเรียงกระเบื้องจุดต้องจุดแต่ละจุดจะเขียนสองครั้งก่อนที่จะถึงปลายทางสุดท้ายของ วิธีการนี้สร้างมาก coherent หาหน่วยความจำ ในงานของเรา ใช้วิธี z บัฟเฟอร์กระเบื้องลดลงรวมเวลาฉายและบัฟเฟอร์ z จาก 42 มิลลิวินาทีกับ 25 รูป 512 x 512 เนื่องจากเป็นส่วนแพงที่สุดของแคชให้ผลลัพธ์หนึ่ง เป็นการประหยัดอย่างมีนัยสำคัญ วิธีกระเบื้องได้ถูกใช้ก่อนหน้านี้ parallelize3 แค render โดยพาร์ทิชันเมฆจุดอย่างชัดเจนเพื่อลดการสื่อสาร โดยเรียงลำดับแบบไดนามิกการคาดคะแนนเฟรมแต่ละเฟรม วิธีการปูกระเบื้องของเรามีสิ่งประดิษฐ์ภาพน้อยลง และสามารถมีความยืดหยุ่นในการสุ่มตัวอย่างและจุดเมฆปรับปรุงกลยุทธ์ เราหวังว่าการสำรวจวิธีการของเราเป็นกลยุทธ์ parallelization อาจดีกว่าถ้าเราเข้าเครื่องพร้อมหน่วยความจำร่วมที่เหมาะสม3.3 รูป Prefilterสอดแทรก/ปรับให้เรียบการกรองจะใช้ในการสร้างภาพจากข้อมูลจุดบ่อบ่อย ๆ มีการยืนยันโดยธรรมชาติในตัวเลือกขนาดการกรองที่ใช้ ตัวกรองขนาดเล็กจะดีกว่าที่ผลิตคุณภาพสูง คมฟื้นฟูเมื่อจุดหนาแน่น ในขณะที่ตัวกรองขนาดใหญ่จะดีกว่าที่บรรจุในช่องว่างระหว่างจุดเมื่อห่าง แคสร้างภาพเดิมใช้ตัว 3 x 3 ถ่วงน้ำหนักภาพเดียวดังแสดงในรูปที่ 3 นี้ใช้งานได้ดียกเว้นเมื่อจุดไม่ถูกต้องอยู่ภายในพื้นที่ใกล้เคียง 3 x 3 ในพิกเซล ในกรณีนี้ พิกเซลจะเหลือสีในเฟรมก่อนหน้า หรือเลือกเป็นสีดำขึ้นอยู่กับการกำหนดลักษณะผู้ใช้ อย่างไรก็ตาม ทางเลือกที่ไม่ใช้งานเมื่อคะแนนห่างเกินไปดี นี้มักจะเกิดขึ้น เมื่อมีการเปลี่ยนแปลงขนาดใหญ่ในภาพจากเฟรมหนึ่งไปยังอีกเฟรม หรือเมื่ออัตราการกลับมาจากตัวต้นแบบตัวอย่างน้อยเกินไป การจัดการที่ดี เราแนะนำขั้นตอนการแทรกข้อความเพิ่มเติม พื้นที่ห่างเรียก prefilter กับเคอร์เนลกรองสม่ำเสมอ 7 x 7 ที่ใหญ่ เมล็ดเป็นรูปแบบมีข้อดีที่มีราคาถูกการคำนวณ และต้นทุนของต้นทุนขึ้นอยู่กับขนาดของเมล็ด (เช่น 5p. 406) เนื่องจากเคอร์เนลมีขนาดใหญ่ แม้ว่า ภาพ prefiltered ได้ unacceptably มัวในภูมิภาคความหนาแน่นของจุดสูงสุด เราเรียกใช้ prefilter ที่แรก และช่วยให้ระยะการแทรกแทรงปกติการเขียนทับพิกเซลใด ๆ ที่กรองขนาดเล็กที่ให้ข้อมูลที่ถูกต้อง ผล prefilter ที่มีขนาดใหญ่เท่ากันที่ล้มตัวเล็ก 3 x 3 ดูรูปที่ 4 ระยะปกติสอดแทรก ด้วยการกรอง 3 x 3 ยังสร้างภาพสำคัญที่ใช้ในการสุ่มตัวอย่างให้คำแนะนำ และเราได้ทิ้งนี้เปลี่ยนแปลง ใช้ prefilter ที่ลักษณะพิเศษภาพสำคัญของทางเลือกของสถานที่เก็บตัวอย่างใหม่ วัตถุประสงค์นั้นเพื่อ ลดสิ่งประดิษฐ์ภาพในภูมิภาคห่างจนกระทั่งความหนาแน่นของจุดที่สามารถยกระดับเพียงพอสำหรับตัว 3 x 3 ในการทำงาน ในการดำเนินของเรา prefilter ที่แพงจริงน้อยกว่าตัว 3 x 3 และใช้เพียง 10% ของเวลาปฏิบัติการแค render3.4. จุดขับไล่แค render ใช้แคชถาวรขนาด ของจุด และ ในฉบับ จุดจะยังคงอยู่ในแคชจนกว่าจะถูกเขียนทับ โดยจุดตัวอย่างใหม่ ลักษณะพิเศษเช่นการแรเงา nondiffuse หรือฉากการแก้ไขอาจทำให้สีของจุดจะกลายเป็นไม่ถูกต้อง หรือเก่า ถ้าอัตราตัวอย่างใหม่ที่ถูกคำนวณสำหรับแต่ละเฟรมจะต่ำมาก ข้อมูลเก่านี้อาจยังคงอยู่ในแคชของจุดเป็นเวลานาน เราได้เพิ่มระบบใหม่เพื่อให้จุดที่จะถูกเอาออกจากแคชแม้มีจุดไม่มีการเขียนทับ Evicting จุดสามารถจริงเร็วลู่เข้ารูป โดยการล้างข้อมูลเก่าออกได้เร็วขึ้น Each point has an associated age which is stored in a byte (0-255). At the beginning of each frame, all the existing points are aged by some increment. This increment is chosen based on the number of new points added to the cache such that on average a point should reach the age of 128 before being overwritten. But several conditions can cause points to age at a faster rate such as if the point is not visible in the current frame or if color changes are detected in nearby points in the image plane. These can cause a point to reach the maximum age of 255 at which point it is automatically evicted from the cache. In the future, additional aging penalties may further improve stale data eviction.3.5. Other OptimizationsWe have also rewritten our implementation to take advantage of the SIMD (Single Instruction, Multiple Data) instructions available through Intel’s MMX, SSE, and SSE 2 instruction set extensions1. These provides 8 and 16 byte vectors that can be used to operate on multiple data (e.g., four floats) in a single instruction. We can thus project four points at the same time or operate on the red, green, and blue channels of a pixel simultaneously. However it does require some rear_
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ที่จะใส่ในถังแคชและการจัดเรียงลงในจุดกระเบื้องก่อนที่จะใช้ Z-บัฟเฟอร์ นี้จะคล้ายกับการจัดเรียง-first2 สถาปัตยกรรมกราฟิก (เช่น 8).
แม้ว่ามันจะต้องทำงานพิเศษเพื่อจัดเรียงกระเบื้องจุดและต้องใช้แต่ละจุดที่จะเขียนเป็นครั้งที่สองก่อนที่จะถึงปลายทางสุดท้ายของวิธีการนี้ผลิตหน่วยความจำที่เชื่อมโยงกันมากขึ้นเข้าถึง ในการดำเนินงานของเราโดยใช้วิธีการปูกระเบื้องซีบัฟเฟอร์ลดเวลารวมสำหรับการฉาย z และบัฟเฟอร์จาก 42 มิลลิวินาทีถึง 25 สำหรับภาพ 512x512 ตั้งแต่นี้เป็นส่วนที่แพงที่สุดของแคชทำให้
การคำนวณนี้เป็นเงินออมที่สำคัญ วิธีการปูกระเบื้องได้นำมาใช้ก่อนหน้านี้ parallelize3 ทำให้แคชอย่างชัดเจนโดยแบ่งจุดเมฆเพื่อลดการสื่อสาร โดยแบบไดนามิกการเรียงลำดับคะแนนที่คาดการณ์แต่ละเฟรมวิธีการปูกระเบื้องของเรามีสิ่งประดิษฐ์ภาพน้อยลงและสามารถมีความยืดหยุ่นมากขึ้นในการสุ่มตัวอย่างและการจุดกลยุทธ์อัพเดตเมฆ เราหวังที่จะสำรวจวิธีการของเราเป็นกลยุทธ์แบบขนานที่อาจเกิดขึ้นดีกว่าถ้าเรามีการเข้าถึงหน่วยความจำร่วมที่เหมาะสมขนานเครื่อง.
3.3 ภาพ Prefilter
แก้ไข / กรองเรียบที่ใช้ในการสร้างภาพจากข้อมูลจุดเบาบางบ่อย มีความสมดุลอยู่ในตัวเลือกของขนาดตัวกรองที่จะใช้ กรองขนาดเล็กที่มีดีกว่าที่ผลิตภาพที่คมชัด, การฟื้นฟูที่มีคุณภาพสูงขึ้นเมื่อจุดที่มีความหนาแน่นในขณะที่ฟิลเตอร์ที่มีขนาดใหญ่จะดีกว่าที่กรอกในช่องว่างระหว่างจุดเมื่อพวกเขาอยู่ห่าง ๆ .
แคชทำให้เดิมที่ใช้เพียงครั้งเดียว 3x3 กรองภาพถ่วงน้ำหนักตามที่แสดงในรูปที่ 3 . นี้ทำงานได้ดียกเว้นเมื่อไม่มีจุดที่ถูกต้องอยู่ในย่านของ 3x3 พิกเซล ในกรณีนี้พิกเซลถูกทิ้งไว้ทั้งสีที่มีอยู่ในเฟรมก่อนหน้าหรือล้างสีดำขึ้นอยู่กับความชอบของผู้ใช้ แต่ทางเลือกที่ไม่ทำงานได้เป็นอย่างดีเมื่อจุดที่มีความเบาบางเกินไป นี้มักจะเกิดขึ้นเมื่อมีการเปลี่ยนแปลงขนาดใหญ่ในภาพจากกรอบที่จะใส่ร้ายหรือเมื่ออัตราตัวอย่างกลับมาจากการแสดงผลพื้นฐานอยู่ในระดับต่ำเกินไป.
เพื่อให้จัดการกับภูมิภาคเบาบางเราแนะนำขั้นตอนการแก้ไขเพิ่มเติมที่เรียกว่า prefilter ที่มีขนาดใหญ่ 7x7 เครื่องแบบเคอร์เนลกรอง เมล็ดเครื่องแบบมีข้อได้เปรียบที่พวกเขามีราคาถูกในการคำนวณค่าใช้จ่ายและค่าใช้จ่ายของพวกเขาไม่ได้ขึ้นอยู่กับขนาดของเมล็ด (เช่น 5p. 406) เพราะของเมล็ดมีขนาดใหญ่ แต่เป็นภาพที่ไม่น่า prefiltered ตาพร่าความหนาแน่นของจุดสูง regions.We prefilter ทำงานก่อนแล้วจึงช่วยให้ขั้นตอนการแก้ไขตามปกติเพื่อแทนที่พิกเซลใด ๆ ที่กรองเล็กผลิตข้อมูลที่ถูกต้อง ผล prefilter ขนาดใหญ่จะใช้ที่กรอง 3x3 ขนาดเล็กล้มเหลว ดูรูปที่ 4
ขั้นตอนการแก้ไขปกติกับตัวกรอง 3x3 ยังให้ภาพที่มีความสำคัญที่ถูกนำมาใช้เพื่อเป็นแนวทางในการสุ่มตัวอย่างและการที่เราได้ไม่มีการเปลี่ยนแปลงนี้ ใช้ prefilter ไม่ได้มีผลกระทบต่อภาพความสำคัญของการเลือกสถานที่สำหรับตัวอย่างใหม่ โดยมีวัตถุประสงค์คือเพื่อลดสิ่งประดิษฐ์ภาพในภูมิภาคเบาบางจนความหนาแน่นของจุดที่สามารถยกระดับที่เพียงพอสำหรับตัวกรอง 3x3 ในการทำงาน ในการดำเนินการของเรา prefilter เป็นจริงน้อยราคาแพงกว่าตัวกรอง 3x3 และสิ้นเปลืองเพียง 10% ของเวลาที่ทำให้การดำเนินการแคช. 3.4 จุดขับไล่ทำให้แคชใช้แคชขนาดคงที่ของจุดและในรุ่นเดิมจุดที่จะยังคงอยู่ในแคชจนกว่ามันจะถูกเขียนทับโดยจุดตัวอย่างใหม่ ผลเช่นการแรเงา nondiffuse หรือการแก้ไขที่เกิดเหตุสามารถก่อให้เกิดจุดสีที่จะกลายเป็นไม่ถูกต้องหรือเก่า ถ้าอัตราใหม่ของกลุ่มตัวอย่างที่มีการคำนวณต่อกรอบต่ำมากข้อมูลเก่านี้อาจยังคงอยู่ในแคชจุดเป็นเวลานาน เราได้เพิ่มกลไกใหม่ที่จะช่วยให้จุดที่จะต้องถูกขับไล่จากแคชแม้ว่าจะมีจุดที่มีอยู่จะเขียนทับมันไม่มี จุดขี้บ่นจริงสามารถเพิ่มความเร็วในการบรรจบกันของภาพด้วยการล้างข้อมูลเก่าออกได้อย่างรวดเร็ว. แต่ละคนมีจุดอายุที่เกี่ยวข้องซึ่งถูกเก็บไว้ในไบต์ (0-255) ที่จุดเริ่มต้นของแต่ละกรอบทุกจุดที่มีอยู่แยกตามอายุที่เพิ่มขึ้นบางส่วน ที่เพิ่มขึ้นนี้จะได้รับการแต่งตั้งขึ้นอยู่กับจำนวนของจุดใหม่ที่เพิ่มให้กับแคชดังกล่าวว่าโดยเฉลี่ยจุดควรจะถึงอายุ 128 ก่อนที่จะถูกเขียนทับ แต่หลายเงื่อนไขที่สามารถทำให้เกิดจุดอายุในอัตราที่เร็วเช่นถ้าจุดที่มองไม่เห็นในกรอบปัจจุบันหรือหากมีการเปลี่ยนแปลงสีที่มีการตรวจพบในจุดที่ใกล้เคียงในระนาบภาพ เหล่านี้อาจทำให้เป็นจุดที่จะไปถึงอายุสูงสุด 255 จุดที่มันจะถูกขับไล่โดยอัตโนมัติจากแคช ในอนาคต, การลงโทษริ้วรอยที่เพิ่มขึ้นต่อไปอาจขับไล่ปรับปรุงข้อมูลเก่า. 3.5 การเพิ่มประสิทธิภาพอื่น ๆเราได้เขียนยังดำเนินงานของเราที่จะใช้ประโยชน์จาก SIMD (สอนเดี่ยวหลายข้อมูล) คำแนะนำการให้บริการผ่านของ Intel MMX, SSE และ SSE 2 ชุดคำสั่ง extensions1 เหล่านี้มี 8 และ 16 ไบต์เวกเตอร์ที่สามารถใช้ในการดำเนินการเกี่ยวกับข้อมูลหลาย (เช่นสี่ลอย) ในคำสั่งเดียว เราจึงสามารถฉายสี่จุดในเวลาเดียวกันหรือทำงานในสีแดง, สีเขียว, สีฟ้าและช่องทางของพิกเซลพร้อมกัน อย่างไรก็ตามจะต้องมีบาง rear_








การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
พอดีในแคชและถังเรียงคะแนนเป็นกระเบื้องก่อนใช้ z-buffering . นี้จะคล้ายกับ sort-first2 กราฟิกสถาปัตยกรรมเช่น ( 8 ) .
แม้ว่ามันต้องพิเศษ งานกระเบื้อง เรียงคะแนน และต้องใช้แต่ละจุดจะเขียนถึงสองครั้งก่อนที่จะถึงปลายทางสุดท้ายของมัน วิธีการนี้สร้างความเชื่อมโยงกันมากขึ้นมากที . ในการดำเนินงานของเราการใช้กระเบื้อง z-buffer วิธีการลดเวลารวมของการฉายและ z-buffering จาก 42 มิลลิวินาทีถึง 25 สำหรับ 512x512 รูปภาพ ตั้งแต่นี้เป็นส่วนที่แพงที่สุดของการแสดงการคำนวณแคช
นี่อย่างประหยัด วิธีการปูกระเบื้องได้ใช้ก่อนหน้านี้ที่จะ parallelize3 แสดงแคชโดยอย่างชัดเจนแยกจุดเมฆเพื่อลดการสื่อสารโดยแบบไดนามิกการคาดการณ์คะแนนแต่ละเฟรม ของเราปูกระเบื้องแบบมีน้อยภาพสิ่งประดิษฐ์และสามารถมีความยืดหยุ่นมากขึ้นในการสุ่มและกลยุทธ์การปรับปรุงเมฆจุด เราหวังที่จะสำรวจวิธีการของเราเป็นกลยุทธ์ parallelization ไปอาจดีกว่า ถ้าเราเข้าถึงที่เหมาะสมในหน่วยความจำที่ใช้ร่วมกันแบบขนานเครื่อง .
3 . ภาพ prefilter
การแก้ไข / เรียบจะใช้ตัวกรองเพื่อสร้างภาพจากบ่อยมากจุดข้อมูล มีโดยธรรมชาติ tradeoffs ในทางเลือกของตัวกรองที่ขนาดใช้ ตัวกรองขนาดเล็กจะดีกว่าที่ผลิตคมชัด คุณภาพสูง ทันสมัย เมื่อจุดที่หนาแน่น ในขณะที่ตัวกรองที่มีขนาดใหญ่กว่าในการกรอกข้อมูลในช่องว่างระหว่างคะแนนเมื่อพวกเขาเป็นป่าโปร่ง
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: