diff --git a/Web/public/config.json b/Web/public/config.json index a97e582..411e034 100644 --- a/Web/public/config.json +++ b/Web/public/config.json @@ -1,3 +1,3 @@ { - "apiEndpoint": "https://localhost:5001" + "apiEndpoint": "http://localhost:5000" } \ No newline at end of file diff --git a/theme/docs/index.html b/theme/docs/index.html new file mode 100644 index 0000000..be2abec --- /dev/null +++ b/theme/docs/index.html @@ -0,0 +1,15 @@ + + + +
+
+
+
+
+
+
+
+
+
+ + {{ message.subject }} +
+| # | +Item Name | +Unit Price | +Units | +Unit Total Price | ++ | |
|---|---|---|---|---|---|---|
| + {{ index + 1 }} + | + ++ + | + ++ + | + ++ + | + ++ + | ++ @if(addForm.get('rows')) { + + } + | ++ @if(index > 0) { + + } + | +
|
+ |
+
+ |
+ + Id + | ++ {{ element.id }} + | ++ Bill From + | ++ {{ element.billFrom }} + | ++ Bill To + | ++ {{ element.billTo }} + | ++ Total Cost + | ++ {{ element.totalCost }} + | ++ Status + | + ++ + {{ element.status }} + + | ++ Action + | +
+
+ |
+
|---|
| + Item Name + | ++ {{ element.itemName }} + | ++ Unit Price + | ++ {{ element.unitPrice }} + | ++ Unit + | ++ {{ element.units }} + | ++ Total Cost + | ++ {{ element.unitTotalPrice }} + | +
|---|
+ {{ topcard.subtitle }} +
+ @if(topcard.id===2){ ++ From the year we were founded to the impressive customer base + we've built, and the growth percentages that reflect our + continuous improvement, these numbers tell our story at a glance. + Explore the data that drives our mission and underscores our + commitment to excellence. +
++ {{ stat.label }} +
+{{ stat.description }}
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
+ ++ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the + industry's standard dummy text ever since + the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It + has survived not only five centuries, + but also the leap into electronic typesetting, + remaining essentially unchanged. It was popularised in the +
++ Unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not + only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was + popularised in the +
++ We are a dedicated team of passionate product managers, developers, UX/UI designers, QA engineers experts + helping businesses from new startups +
++ There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in + some form, by injected humour, or randomised words which don't look even slightly believable making this the + first true generator on the Internet. It uses a dictionary +
+Email address : Subscribe
+No blog post available.
++ Introducing Modernize's Light & Dark Skins, Exceptional Dashboards, + and Dynamic Pages - Stay Updated on What's New! +
+{{ topcard.subtitle }}
+ @if (topcard.title.includes('12+')) { +
+ {{ topcard.subtitle }}
+{{ topcard.subtitle }}
+ + @if (topcard.title.includes('12+')) { +
+
+ + Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
+ +{{ item.answer }}
+{{ plan.description }}
+Secured payment with PayPal & Razorpay
+{{ productcard.date }}
+
+
+
+
+
+ + {{ message.subject }} +
+| # | +Item Name | +Unit Price | +Units | +Unit Total Price | ++ | |
|---|---|---|---|---|---|---|
| + {{ index + 1 }} + | + ++ + | + ++ + | + ++ + | + ++ + | ++ @if(addForm.get('rows')) { + + } + | ++ @if(index > 0) { + + } + | +
|
+ |
+
+ |
+ + Id + | ++ {{ element.id }} + | ++ Bill From + | ++ {{ element.billFrom }} + | ++ Bill To + | ++ {{ element.billTo }} + | ++ Total Cost + | ++ {{ element.totalCost }} + | ++ Status + | + ++ + {{ element.status }} + + | ++ Action + | +
+
+ |
+
|---|
| + Item Name + | ++ {{ element.itemName }} + | ++ Unit Price + | ++ {{ element.unitPrice }} + | ++ Unit + | ++ {{ element.units }} + | ++ Total Cost + | ++ {{ element.unitTotalPrice }} + | +
|---|
+ {{ topcard.subtitle }} +
+ @if(topcard.id===2){ ++ From the year we were founded to the impressive customer base + we've built, and the growth percentages that reflect our + continuous improvement, these numbers tell our story at a glance. + Explore the data that drives our mission and underscores our + commitment to excellence. +
++ {{ stat.label }} +
+{{ stat.description }}
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
+ ++ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the + industry's standard dummy text ever since + the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It + has survived not only five centuries, + but also the leap into electronic typesetting, + remaining essentially unchanged. It was popularised in the +
++ Unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not + only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was + popularised in the +
++ We are a dedicated team of passionate product managers, developers, UX/UI designers, QA engineers experts + helping businesses from new startups +
++ There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in + some form, by injected humour, or randomised words which don't look even slightly believable making this the + first true generator on the Internet. It uses a dictionary +
+Email address : Subscribe
+No blog post available.
++ Introducing Modernize's Light & Dark Skins, Exceptional Dashboards, + and Dynamic Pages - Stay Updated on What's New! +
+{{ topcard.subtitle }}
+ @if (topcard.title.includes('12+')) { +
+ {{ topcard.subtitle }}
+{{ topcard.subtitle }}
+ + @if (topcard.title.includes('12+')) { +
+
+ + Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Factor in availability for required attendees, and skip + checking for conflicts for optional attendees. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
++ Our users' feedback is a testament to our commitment to quality + and user satisfaction. Read what they have to say about their + journey with us. +
+ +{{ item.answer }}
+{{ plan.description }}
+Secured payment with PayPal & Razorpay
+{{ productcard.date }}
+
+
+ | + Assigned + | +
+
+
+
+
+ + {{ element.uname }} ++ + {{ element.position }} + + |
+ Name | ++ {{ element.productName }} + | ++ Priority + | ++ @if(element.priority == 'low') { + + {{ element.priority | titlecase }} + + + } @if(element.priority == 'medium') { + + {{ element.priority | titlecase }} + + } @if(element.priority == 'high') { + + {{ element.priority | titlecase }} + + } @if(element.priority == 'critical') { + + {{ element.priority | titlecase }} + + } @if(element.priority == 'moderate') { + + {{ element.priority | titlecase }} + + } + | ++ Budget + | ++ ${{ element.budget }}k + | +
|---|
| + Product + | +
+
+
+
+
+ + {{ element.pname }} ++ + {{ element.category }} + + |
+ + Progress + | ++ {{ element.progress }}% + | ++ Status + | ++ @if(element.status == 'low') { + + {{ element.status | titlecase }} + + } @if(element.status == 'medium') { + + {{ element.status | titlecase }} + + } @if(element.status == 'high') { + + {{ element.status | titlecase }} + + } @if(element.status == 'critical') { + + {{ element.status | titlecase }} + + } + | ++ Sales + | ++ ${{ element.sales }}k + | +
|---|
+
+
+
+
+ + But you cannot figure out what it is or what it can do. MTA web directory + is the simplest way in which one can bid on a link, or a few links if they + wish to do so. The link directory on MTA displays all of the links it + currently has, and does so in alphabetical order, which makes it much + easier for someone to find what they are looking for if it is something + specific and they do not want to go through all the other sites and links + as well. It allows you to start your bid at the bottom and slowly work + your way to the top of the list. +
+ ++ Gigure out what it is or what it can do. MTA web directory is the simplest + way in which one can bid on a link, or a few links if they wish to do so. + The link directory on MTA displays all of the links it currently has, and + does so in alphabetical order, which makes it much easier for someone to + find what they are looking for if it is something specific and they do not + want to go through all the other sites and links as well. It allows you to + start your bid at the bottom and slowly work your way to the top of the +
+ +This is strong text.
+This is italic text.
+ +No blog post available.
++ Jigho tabkubho nira carudi ganlac milza dekpo putog iptodok tuhral canse + mi rega ujnuf kukfag osailu bis oca. Gegeholo hata sogi kod bihdelsa + nege evinog mes loz perdutace kehlondip im fep wiven fefu fi tigfiso. +
+ + ++ Diprow wir hilohi ilmi fumow oc co cop iv gi ize tamiv kulok. Bam ci + urkati ul negu ovga hivwe toubugof gok imro ale sujoh saput. +
+ + +
+ + {{ message.subject }} +
+{{ data.message }}
++ {{ contact.department }} +
+
+ No contacts available.
+ } ++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ This is an example step of the course. You can put anything in here + from example codes to videos. +
++ To install the CLI you need to have installed npm which typically + comes with NodeJS.To install or upgrade the CLI run the following npm + command: +
+npm -g install @angular/cli
++ To verify that the CLI has been installed correctly, open a console + and run: +
+ng version
+To moderate the images we'll need a few Node.js packages:
+ The Google Cloud Vision Client Library for Node.js: + @google-cloud/vision to run the image through the Cloud Vision API + to detect inappropriate images. The Google Cloud Storage Client Library + for Node.js: @google-cloud/storage to download and upload the images + from Cloud Storage. A Node.js library allowing us to run processes: + child-process-promise to run ImageMagick since the ImageMagick + command-line tool comes pre-installed on all Functions instances. ++ To install these three packages into your Cloud Functions app, run the + following npm install --save command. Make sure that you do this from + the functions directory. +
++ npm install --save @google-cloud/vision @google-cloud/storage + child-process-promise +
++ This will install the three packages locally and add them as declared + dependencies in your package.js file. +
++ You've built a full-fidelity, offline-capable progressive web app by + leveraging the power of reusable Web Components and Firebase. Why + bother with a native app when you know how to do all that?! +
+|
+ |
+
+ |
+ + Product Name + | +
+
+
+
+
+ + {{ element.product_name }} ++ + {{ element.categories[0] }} + + |
+ + Date + | ++ {{ element.date }} + | ++ Status + | ++ @if (element.status) { + + Stock + + } @else { + + Out Of Stock + + } + | ++ Price + | ++ ${{ element.base_price }} + | ++ Action + | +
+
+ |
+
|---|
{{ product.description || 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ex arcu, tincidunt bibendum felis' }}
+ +
+ Dispatched in 2–3 weeks
+ Why the longer time for delivery?
+
+ Cras eget elit semper, congue sapien id, pellentesque diam. Nulla + faucibus diam nec fermentum ullamcorper. Praesent sed ipsum ut augue + vestibulum malesuada. Duis vitae volutpat odio. Integer sit amet elit ac + justo sagittis dignissim. +
++ Vivamus quis metus in nunc semper efficitur eget vitae diam. Proin justo + diam, venenatis sit amet eros in, iaculis auctor magna. Pellentesque sit + amet accumsan urna, sit amet pretium ipsum. Fusce condimentum venenatis + mauris et luctus. Vestibulum ante ipsum primis in faucibus orci luctus + et ultrices posuere cubilia curae. +
+No emails found.
+ } +
+ + Sure to delete {{local_data.Name}} ? +
+| # | +{{ element.id }} | +Name | +
+
+
+
+
+ + {{ element.Name }} ++ {{ element.Position }} + |
+ + Email + | ++ {{ element.Email }} + | ++ Mobile + | ++ {{ element.Mobile }} + | ++ Date of Joining + | ++ {{ element.DateOfJoining | date : "fullDate" }} + | ++ Salary + | ++ {{ element.Salary }} + | ++ Projects + | ++ {{ element.Projects }} + | ++ Action + | +
+ |
+
|---|
| # | +Item Name | +Unit Price | +Units | +Unit Total Price | ++ | |
|---|---|---|---|---|---|---|
| + {{ index + 1 }} + | + ++ + | + ++ + | + ++ + | + ++ + | ++ @if(addForm.get('rows')) { + + } + | ++ @if(index > 0) { + + } + | +
Invoice Successfully Updated.
+ +Invoice Successfully Updated.
+Are you sure you want to delete this invoice?
+|
+ |
+
+ |
+ + Id + | ++ {{ element.id }} + | ++ Bill From + | ++ {{ element.billFrom }} + | ++ Bill To + | ++ {{ element.billTo }} + | ++ Total Cost + | ++ {{ element.totalCost }} + | ++ Status + | + ++ + {{ element.status }} + + | ++ Action + | +
+
+ |
+
|---|
| + Item Name + | ++ {{ element.itemName }} + | ++ Unit Price + | ++ {{ element.unitPrice }} + | ++ Unit + | ++ {{ element.units }} + | ++ Total Cost + | ++ {{ element.unitTotalPrice }} + | +
|---|
+
+ Your current role: {{ currentRole | json }}
+
+ Your current permissions: {{ currentPermissions | json }}
+
+
+ Posts
+Followers
+Following
+
+ Designer
++ Hello, I am Mathew Anderson. I love making websites and graphics. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+{{ post.data.content }}
+ + + @if (hasFeaturedImages(post)) { + @for (image of getFeaturedImages(post); track i; let i = $index) { +{{ comment.data.comment }}
+ +{{ reply.data.comment }}
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Employee Successfully Added.
+You can find your employee at last of table.
+Sure to delete {{local_data.Name}} ?
+| # | +{{ element.id }} | +Name | +
+
+
+
+
+ + {{ element.Name }} + + {{ element.Position }} + |
+ + Email + | +{{ element.Email }} | ++ Mobile + | ++ {{ element.Mobile }} + | ++ Date of Joining + | ++ {{ element.DateOfJoining | date : "fullDate" }} + | ++ Salary + | ++ {{ element.Salary }} + | ++ Projects + | ++ {{ element.Projects }} + | ++ Action + | +
+ |
+
|---|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+