Merge branch 'develop'

This commit is contained in:
x.yumoto.k 2023-08-04 14:50:59 +09:00
commit d4a2922ae8
487 changed files with 146172 additions and 20 deletions

8
.env Normal file
View File

@ -0,0 +1,8 @@
DB_ENDPOINT=omds-mysql
DB_PORT=3306
DB_EXTERNAL_PORT=3306
DB_NAME=omds
DB_ROOT_PASS=omdsdbpass
DB_USERNAME=omdsdbuser
DB_PASSWORD=omdsdbpass
NO_COLOR=TRUE

View File

@ -0,0 +1,23 @@
FROM node:18.13.0-buster AS build-container
WORKDIR /app
RUN mkdir dictation_server
COPY dictation_server/ dictation_server/
RUN npm install --force -g n && n 18.13.0 \
&& cd dictation_server \
&& npm ci \
&& npm run build \
&& cd ..
FROM node:18.13.0-alpine
RUN apk --no-cache add tzdata \
&& cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
&& apk del tzdata \
&& rm -rf /var/cache/apk/*
WORKDIR /app
RUN mkdir build \
&& mkdir dist \
&& mkdir node_modules
COPY --from=build-container app/dictation_server/dist/ dist/
COPY --from=build-container app/dictation_server/.env ./
COPY --from=build-container app/dictation_server/node_modules/ node_modules/
CMD ["node", "./dist/main.js" ]

View File

@ -1,20 +0,0 @@
# Introduction
TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project.
# Getting Started
TODO: Guide users through getting your code up and running on their own system. In this section you can talk about:
1. Installation process
2. Software dependencies
3. Latest releases
4. API references
# Build and Test
TODO: Describe and show how to build your code and run the tests.
# Contribute
TODO: Explain how other users and developers can contribute to make your code better.
If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files:
- [ASP.NET Core](https://github.com/aspnet/Home)
- [Visual Studio Code](https://github.com/Microsoft/vscode)
- [Chakra Core](https://github.com/Microsoft/ChakraCore)

View File

@ -0,0 +1,56 @@
trigger:
tags:
include:
- release-*
jobs:
- job: initialize
displayName: Initialize
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- script: |
git fetch origin main:main
if git merge-base --is-ancestor $(Build.SourceVersion) main; then
echo "This commit is in the main branch."
else
echo "This commit is not in the main branch."
exit 1
fi
displayName: 'タグが付けられたCommitがmainブランチに存在するか確認'
- job: backend_build
dependsOn: initialize
condition: succeeded('initialize')
displayName: Dictation App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- job: frontend_build
dependsOn: initialize
condition: succeeded('initialize')
displayName: Dictation Static App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- job: migration
condition: succeeded('initialize')
displayName: DB migration
dependsOn:
- initialize
- backend_build
- frontend_build
pool:
name: db-migrate-pipelines
steps:
- checkout: self
clean: true
fetchDepth: 1

View File

@ -0,0 +1,59 @@
trigger:
branches:
include:
- main
tags:
include:
- stage-*
jobs:
- job: initialize
displayName: Initialize
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- script: |
git fetch origin main:main
if git merge-base --is-ancestor $(Build.SourceVersion) main; then
echo "This commit is in the main branch."
else
echo "This commit is not in the main branch."
exit 1
fi
displayName: 'タグが付けられたCommitがmainブランチに存在するか確認'
- job: backend_build
dependsOn: initialize
condition: succeeded('initialize')
displayName: Dictation App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- job: frontend_build
dependsOn: initialize
condition: succeeded('initialize')
displayName: Dictation Static App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- job: migration
condition: succeeded('initialize')
displayName: DB migration
dependsOn:
- initialize
- backend_build
- frontend_build
pool:
name: db-migrate-pipelines
steps:
- checkout: self
clean: true
fetchDepth: 1

View File

@ -0,0 +1,32 @@
name: Azure Static Web Apps CI/CD
pr:
branches:
include:
- develop
trigger:
branches:
include:
- develop
jobs:
- job: build_and_deploy_job
displayName: Build and Deploy Job
condition: or(eq(variables['Build.Reason'], 'Manual'),or(eq(variables['Build.Reason'], 'PullRequest'),eq(variables['Build.Reason'], 'IndividualCI')))
pool:
vmImage: ubuntu-latest
variables:
- group: Azure-Static-Web-Apps-purple-forest-07b9d5300-variable-group
steps:
- checkout: self
submodules: true
- task: AzureStaticWebApp@0
inputs:
azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_FOREST_07B9D5300)
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: "/" # App source code path
api_location: "" # Api source code path - optional
output_location: "" # Built app content directory - optional
###### End of Repository/Build Configurations ######

1
cache/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
dump.rdb

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"b2cDirectories_adb2codmsdev_onmicrosoft_com_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2023-01-18-preview",
"location": "Asia Pacific",
"name": "[parameters('b2cDirectories_adb2codmsdev_onmicrosoft_com_name')]",
"properties": {},
"sku": {
"name": "PremiumP1",
"tier": "A0"
},
"type": "Microsoft.AzureActiveDirectory/b2cDirectories"
}
],
"variables": {}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,95 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"namespaces_ntfns_odms_dev_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2017-04-01",
"location": "Japan East",
"name": "[parameters('namespaces_ntfns_odms_dev_name')]",
"properties": {
"createdAt": "2023-07-24T01:26:14.6870000Z",
"critical": false,
"enabled": true,
"provisioningState": "Succeeded",
"serviceBusEndpoint": "[concat('https://', parameters('namespaces_ntfns_odms_dev_name'), '.servicebus.windows.net:443/')]",
"status": "Active",
"updatedAt": "2023-07-24T01:26:14.7370000Z"
},
"sku": {
"name": "Free"
},
"type": "Microsoft.NotificationHubs/namespaces"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/RootManageSharedAccessKey')]",
"properties": {
"rights": [
"Manage",
"Listen",
"Send"
]
},
"type": "Microsoft.NotificationHubs/namespaces/AuthorizationRules"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev')]",
"properties": {
"authorizationRules": [],
"registrationTtl": "10675199.02:48:05.4775807"
},
"tags": {
"Project": "OMDS",
"environment": "develop"
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_dev_name'), 'ntf-odms-dev')]",
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev/DefaultFullSharedAccessSignature')]",
"properties": {
"rights": [
"Manage",
"Listen",
"Send"
]
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_dev_name'), 'ntf-odms-dev')]",
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev/DefaultListenSharedAccessSignature')]",
"properties": {
"rights": [
"Listen"
]
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
}
],
"variables": {}
}

View File

@ -0,0 +1,688 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccounts_saodmsaudev_name": {
"type": "String"
},
"storageAccounts_saodmseudev_name": {
"type": "String"
},
"storageAccounts_saodmsusdev_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "australiaeast",
"name": "[parameters('storageAccounts_saodmsaudev_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "develop",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "northeurope",
"name": "[parameters('storageAccounts_saodmseudev_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "develop",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "eastus",
"name": "[parameters('storageAccounts_saodmsusdev_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "develop",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": false
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": false,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": false
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": false,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": true
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 2880
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": true,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 0,
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 0,
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 0,
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-1')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-11')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-12')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-13')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaudev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseudev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-3')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-300')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-6')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-8')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaudev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default/account-9')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseudev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default/account-9')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-9')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
}
],
"variables": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [],
"variables": {}
}

View File

@ -0,0 +1,104 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"templateSpecs_tem_network_name": {
"type": "String"
},
"templateSpecs_temp_storage_account_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2022-02-01",
"location": "japaneast",
"name": "[parameters('templateSpecs_tem_network_name')]",
"properties": {},
"type": "Microsoft.Resources/templateSpecs"
},
{
"apiVersion": "2022-02-01",
"location": "japaneast",
"name": "[parameters('templateSpecs_temp_storage_account_name')]",
"properties": {},
"tags": {
"ms-resource-usage": "azure-storage-account"
},
"type": "Microsoft.Resources/templateSpecs"
},
{
"apiVersion": "2022-02-01",
"dependsOn": [
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_tem_network_name'))]"
],
"location": "japaneast",
"name": "[concat(parameters('templateSpecs_tem_network_name'), '/1.0')]",
"properties": {
"mainTemplate": {}
},
"type": "Microsoft.Resources/templateSpecs/versions"
},
{
"apiVersion": "2022-02-01",
"dependsOn": [
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
],
"location": "japaneast",
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/1.0')]",
"properties": {
"mainTemplate": {}
},
"tags": {
"ms-resource-usage": "azure-storage-account"
},
"type": "Microsoft.Resources/templateSpecs/versions"
},
{
"apiVersion": "2022-02-01",
"dependsOn": [
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
],
"location": "japaneast",
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/2.0')]",
"properties": {
"mainTemplate": {}
},
"tags": {
"ms-resource-usage": "azure-storage-account"
},
"type": "Microsoft.Resources/templateSpecs/versions"
},
{
"apiVersion": "2022-02-01",
"dependsOn": [
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
],
"location": "japaneast",
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/3.0')]",
"properties": {
"mainTemplate": {}
},
"tags": {
"ms-resource-usage": "azure-storage-account"
},
"type": "Microsoft.Resources/templateSpecs/versions"
},
{
"apiVersion": "2022-02-01",
"dependsOn": [
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
],
"location": "japaneast",
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/4.0')]",
"properties": {
"mainTemplate": {}
},
"tags": {
"ms-resource-usage": "azure-storage-account"
},
"type": "Microsoft.Resources/templateSpecs/versions"
}
],
"variables": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"b2cDirectories_adb2codmsstg_onmicrosoft_com_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2023-01-18-preview",
"location": "Global",
"name": "[parameters('b2cDirectories_adb2codmsstg_onmicrosoft_com_name')]",
"properties": {},
"sku": {
"name": "PremiumP1",
"tier": "A0"
},
"type": "Microsoft.AzureActiveDirectory/b2cDirectories"
}
],
"variables": {}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,95 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"namespaces_ntfns_odms_stg_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2017-04-01",
"location": "Japan East",
"name": "[parameters('namespaces_ntfns_odms_stg_name')]",
"properties": {
"createdAt": "2023-07-25T01:57:35.5400000Z",
"critical": false,
"enabled": true,
"provisioningState": "Succeeded",
"serviceBusEndpoint": "[concat('https://', parameters('namespaces_ntfns_odms_stg_name'), '.servicebus.windows.net:443/')]",
"status": "Active",
"updatedAt": "2023-07-25T01:57:35.5970000Z"
},
"sku": {
"name": "Free"
},
"type": "Microsoft.NotificationHubs/namespaces"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/RootManageSharedAccessKey')]",
"properties": {
"rights": [
"Manage",
"Listen",
"Send"
]
},
"type": "Microsoft.NotificationHubs/namespaces/AuthorizationRules"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg')]",
"properties": {
"authorizationRules": [],
"registrationTtl": "10675199.02:48:05.4775807"
},
"tags": {
"Project": "OMDS",
"environment": "staging"
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_stg_name'), 'ntf-odms-stg')]",
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg/DefaultFullSharedAccessSignature')]",
"properties": {
"rights": [
"Manage",
"Listen",
"Send"
]
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
},
{
"apiVersion": "2017-04-01",
"dependsOn": [
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_stg_name'), 'ntf-odms-stg')]",
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
],
"location": "Japan East",
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg/DefaultListenSharedAccessSignature')]",
"properties": {
"rights": [
"Listen"
]
},
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
}
],
"variables": {}
}

View File

@ -0,0 +1,651 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccounts_saodmsaustg_name": {
"type": "String"
},
"storageAccounts_saodmseustg_name": {
"type": "String"
},
"storageAccounts_saodmsusstg_name": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "australiaeast",
"name": "[parameters('storageAccounts_saodmsaustg_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "staging",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "northeurope",
"name": "[parameters('storageAccounts_saodmseustg_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "staging",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"kind": "StorageV2",
"location": "eastus",
"name": "[parameters('storageAccounts_saodmsusstg_name')]",
"properties": {
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": true,
"allowSharedKeyAccess": true,
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {
"keySource": "Microsoft.Storage",
"requireInfrastructureEncryption": false,
"services": {
"blob": {
"enabled": true,
"keyType": "Account"
},
"file": {
"enabled": true,
"keyType": "Account"
}
}
},
"minimumTlsVersion": "TLS1_2",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"publicNetworkAccess": "Enabled",
"supportsHttpsTrafficOnly": true
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"tags": {
"Environment": "staging",
"Project": "OMDS"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": false
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"POST"
],
"allowedOrigins": [
"http://localhost:8081"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
},
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"POST"
],
"allowedOrigins": [
"https://10.1.0.10:4443"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
},
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": false,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": false
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8081"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
},
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"PUT"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 28800
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": false,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
"properties": {
"changeFeed": {
"enabled": true
},
"containerDeleteRetentionPolicy": {
"enabled": false
},
"cors": {
"corsRules": [
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"POST",
"PUT"
],
"allowedOrigins": [
"http://localhost:8081"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 2880
},
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"GET",
"POST",
"PUT"
],
"allowedOrigins": [
"http://localhost:3100"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 2880
},
{
"allowedHeaders": [
"*"
],
"allowedMethods": [
"PUT",
"GET"
],
"allowedOrigins": [
"http://localhost:8180"
],
"exposedHeaders": [
"*"
],
"maxAgeInSeconds": 2880
}
]
},
"deleteRetentionPolicy": {
"allowPermanentDelete": false,
"enabled": false
},
"isVersioningEnabled": true,
"restorePolicy": {
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/blobServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 0,
"enabled": false
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 7,
"enabled": true
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
},
"protocolSettings": {
"smb": {}
},
"shareDeleteRetentionPolicy": {
"days": 7,
"enabled": true
}
},
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"type": "Microsoft.Storage/storageAccounts/fileServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/queueServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
"properties": {
"cors": {
"corsRules": []
}
},
"type": "Microsoft.Storage/storageAccounts/tableServices"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-11')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-15')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaustg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseustg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-2')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-21')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
},
{
"apiVersion": "2022-09-01",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
],
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-8')]",
"properties": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"immutableStorageWithVersioning": {
"enabled": false
},
"publicAccess": "None"
},
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
}
],
"variables": {}
}

View File

@ -0,0 +1,122 @@
# Variable 'static_dictation_deployment_token' was defined in the Variables tab
trigger:
branches:
include:
- refs/heads/develop
jobs:
- job: Job_1
displayName: Dictation App Service Deploy
pool:
name: odms-deploy-pipeline
steps:
- checkout: self
clean: true
fetchDepth: 1
- task: Npm@1
displayName: npm ci
inputs:
command: ci
workingDir: dictation_server
verbose: false
- task: AzureKeyVault@2
displayName: 'Azure Key Vault: kv-odms-secret-dev'
inputs:
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
KeyVaultName: kv-odms-secret-dev
SecretsFilter: token-public-key
- task: Bash@3
displayName: Bash Script (Test)
inputs:
targetType: inline
filePath: cd dictation_server && JWT_PUBLIC_KEY="$JWT_PUBLIC_KEY" && npm run test
script: >
cd dictation_server && JWT_PUBLIC_KEY="$JWT_PUBLIC_KEY" && npm run test
- task: Docker@0
displayName: build
inputs:
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
dockerFile: DockerfileServerDictation.dockerfile
imageName: $(Build.Repository.Name)/dictation:latest
- task: Docker@0
displayName: Push
inputs:
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
action: Push an image
imageName: $(Build.Repository.Name)/dictation:latest
- job: Job_2
displayName: Dictation Static App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
clean: true
fetchDepth: 1
- task: Npm@1
displayName: npm ci
inputs:
command: ci
workingDir: dictation_client
verbose: false
- task: Bash@3
displayName: Bash Script
inputs:
targetType: inline
script: cd dictation_client && npm run build
- task: AzureStaticWebApp@0
displayName: 'Static Web App: '
inputs:
app_location: /dictation_client/build
config_file_location: /dictation_client
skip_app_build: true
skip_api_build: true
is_static_export: false
verbose: false
azure_static_web_apps_api_token: $(static_dictation_deployment_token)
- job: Job_3
displayName: DB migration
dependsOn:
- Job_1
- Job_2
pool:
name: odms-deploy-pipeline
steps:
- checkout: self
clean: true
fetchDepth: 1
- task: AzureKeyVault@2
displayName: 'Azure Key Vault: kv-odms-secret-dev'
inputs:
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
KeyVaultName: kv-odms-secret-dev
- task: CmdLine@2
displayName: migration
inputs:
script: >2
# DB接続情報書き換え
sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_PASS/$(db-pass)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_USERNAME/$(db-user)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml
sql-migrate --version
cat ./dictation_server/db/dbconfig.yml
# migration実行
sql-migrate up -config=./dictation_server/db/dbconfig.yml -env=ci
- job: Job_4
displayName: Docker Image Clean Up
dependsOn: Job_1
pool:
name: odms-deploy-pipeline
steps:
- checkout: self
clean: true
fetchDepth: 1
- task: Docker@0
displayName: Clean up
inputs:
action: Run a Docker command
imageName: $(Build.Repository.Name)/dictation:latest
customCommand: 'image prune -af '
...

View File

@ -0,0 +1,114 @@
# Variable 'static_dictation_deployment_token' was defined in the Variables tab
trigger:
branches:
include:
- refs/heads/develop
name: $(date:yyyyMMdd)$(rev:.r)
jobs:
- job: Job_1
displayName: Dictation App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
fetchDepth: 2
- task: Npm@1
displayName: npm ci
inputs:
command: ci
workingDir: dictation_server
verbose: false
- task: AzureKeyVault@2
displayName: 'Azure Key Vault: kv-odms-secret-stg'
enabled: False
inputs:
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
KeyVaultName: kv-odms-secret-stg
SecretsFilter: token-public-key
- task: Bash@3
displayName: Bash Script (Test)
inputs:
targetType: inline
script: cd dictation_server && npm run test
- task: Docker@0
displayName: build
inputs:
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
dockerFile: DockerfileServerDictation.dockerfile
imageName: $(Build.Repository.Name)/staging/dictation:latest
- task: Docker@0
displayName: Push
inputs:
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
action: Push an image
imageName: $(Build.Repository.Name)/staging/dictation:latest
- job: Job_2
displayName: Dictation Static App Service Deploy
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
fetchDepth: 2
- task: Npm@1
displayName: npm ci
inputs:
command: ci
workingDir: dictation_client
verbose: false
- task: Bash@3
displayName: Bash Script
inputs:
targetType: inline
script: cd dictation_client && cp -f .env.staging .env && npm run build
- task: AzureStaticWebApp@0
displayName: 'Static Web App: '
inputs:
app_location: /dictation_client/build
config_file_location: /dictation_client
skip_app_build: true
skip_api_build: true
is_static_export: false
verbose: false
azure_static_web_apps_api_token: $(static_dictation_deployment_token)
- job: Job_3
displayName: DB migration
dependsOn:
- Job_1
- Job_2
pool:
name: db-migrate-pipelines
steps:
- checkout: self
fetchDepth: 2
- task: GoTool@0
displayName: Use Go 1.18
inputs:
version: 1.18
- task: Go@0
displayName: go install
inputs:
command: custom
customCommand: install
arguments: github.com/rubenv/sql-migrate/sql-migrate@latest
- task: AzureKeyVault@2
displayName: 'Azure Key Vault: kv-odms-secret-stg'
inputs:
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
KeyVaultName: kv-odms-secret-stg
- task: CmdLine@2
displayName: migration
inputs:
script: >2
# DB接続情報書き換え
sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_PASS/$(db-pass)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_USERNAME/$(db-user)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml
sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml
/home/azureuser/go/bin/sql-migrate --version
cat ./dictation_server/db/dbconfig.yml
# migration実行
/home/azureuser/go/bin/sql-migrate up -config=dictation_server/db/dbconfig.yml -env=ci
...

4
db/conf/my.cnf Normal file
View File

@ -0,0 +1,4 @@
[mysqld]
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci

3
db/init/create_shema.sql Normal file
View File

@ -0,0 +1,3 @@
CREATE DATABASE IF NOT EXISTS omds_test;
CREATE USER IF NOT EXISTS omdsdbuser@'%' IDENTIFIED BY 'omdsdbpass';
GRANT ALL PRIVILEGES ON omds_test.* TO omdsdbuser@'%';

View File

@ -0,0 +1,32 @@
FROM node:18.13.0-buster
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
echo "Asia/Tokyo" > /etc/timezone
# Options for setup script
ARG INSTALL_ZSH="true"
ARG UPGRADE_PACKAGES="false"
ARG USERNAME=vscode
# 1000 はnodeで使われているためずらす
ARG USER_UID=1001
ARG USER_GID=$USER_UID
# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies.
COPY library-scripts/common-debian.sh /tmp/library-scripts/
RUN bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" \
&& apt-get install default-jre -y \
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts
# Install mob
RUN curl -sL install.mob.sh | sh
# 以下 ユーザー権限で実施
USER $USERNAME
# copy init-script
COPY --chown=$USERNAME:$USERNAME init.sh /home/${USERNAME}/
RUN chmod +x /home/${USERNAME}/init.sh
# 初期化を行う
# node imageのデフォルトENTRYPOINTが邪魔するため上書き
ENTRYPOINT /home/vscode/init.sh

View File

@ -0,0 +1,49 @@
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.137.0/containers/go
{
"name": "Dev Dictation Client",
"dockerComposeFile": [
"./docker-compose.yml"
],
"service": "dictation_client",
//
"shutdownAction": "none",
"workspaceFolder": "/app/dictation_client",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true, // eslint
"source.fixAll.stylelint": true // Stylelint
},
// formatter
"editor.defaultFormatter": "esbenp.prettier-vscode", // Prettier
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"editor.renderWhitespace": "all",
"editor.insertSpaces": false,
"editor.renderLineHighlight": "all"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"dbaeumer.vscode-eslint",
"salbert.comment-ts",
"gruntfuggly.todo-tree",
"esbenp.prettier-vscode",
"ms-vsliveshare.vsliveshare",
"albymor.increment-selection",
"eamodio.gitlens",
"wmaurer.change-case"
],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "yarn install",
"postCreateCommand": "sudo chown -R vscode:vscode /app/dictation_client",
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
}

View File

@ -0,0 +1,21 @@
version: "3"
services:
dictation_client:
build: .
working_dir: /app/dictation_client
ports:
- "3001:3001"
- "6007:6007"
volumes:
- ../../:/app
- node_modules:/app/dictation_client/node_modules
expose:
- "3001"
- "6007"
environment:
- CHOKIDAR_USEPOLLING=true
# Data Volume として永続化する
volumes:
node_modules:

View File

@ -0,0 +1,22 @@
#!/bin/bash
#
# Init Script for client Container
#
echo [init.sh] dictation_client initialize.
# /app の権限がデフォルトでは node ユーザーになっているため、
# 権限確認し、vscode ユーザでない場合付け替える
ls -ld /app | grep vscode
if [ $? -ne 0 ]; then
echo [init.sh] change /app owner to vscode.
sudo chown -R vscode:vscode /app
fi
cd /app/dictation_client
echo [init.sh] \"npm ci\" start.
npm ci
echo [init.sh] initialize completed!
sleep infinity

View File

@ -0,0 +1,190 @@
#!/usr/bin/env bash
#-------------------------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
#-------------------------------------------------------------------------------------------------------------
# Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag]
INSTALL_ZSH=${1:-"true"}
USERNAME=${2:-"vscode"}
USER_UID=${3:-1000}
USER_GID=${4:-1000}
UPGRADE_PACKAGES=${5:-"true"}
set -e
if [ "$(id -u)" -ne 0 ]; then
echo -e 'Script must be run a root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
exit 1
fi
# Treat a user name of "none" as root
if [ "${USERNAME}" = "none" ] || [ "${USERNAME}" = "root" ]; then
USERNAME=root
USER_UID=0
USER_GID=0
fi
# Load markers to see which steps have already run
MARKER_FILE="/usr/local/etc/vscode-dev-containers/common"
if [ -f "${MARKER_FILE}" ]; then
echo "Marker file found:"
cat "${MARKER_FILE}"
source "${MARKER_FILE}"
fi
# Ensure apt is in non-interactive to avoid prompts
export DEBIAN_FRONTEND=noninteractive
# Function to call apt-get if needed
apt-get-update-if-needed()
{
if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
echo "Running apt-get update..."
apt-get update
else
echo "Skipping apt-get update."
fi
}
# Run install apt-utils to avoid debconf warning then verify presence of other common developer tools and dependencies
if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
apt-get-update-if-needed
PACKAGE_LIST="apt-utils \
git \
openssh-client \
less \
iproute2 \
procps \
curl \
wget \
unzip \
zip \
nano \
jq \
lsb-release \
ca-certificates \
apt-transport-https \
dialog \
gnupg2 \
libc6 \
libgcc1 \
libgssapi-krb5-2 \
libicu[0-9][0-9] \
liblttng-ust0 \
libstdc++6 \
zlib1g \
locales \
sudo"
# Install libssl1.1 if available
if [[ ! -z $(apt-cache --names-only search ^libssl1.1$) ]]; then
PACKAGE_LIST="${PACKAGE_LIST} libssl1.1"
fi
# Install appropriate version of libssl1.0.x if available
LIBSSL=$(dpkg-query -f '${db:Status-Abbrev}\t${binary:Package}\n' -W 'libssl1\.0\.?' 2>&1 || echo '')
if [ "$(echo "$LIBSSL" | grep -o 'libssl1\.0\.[0-9]:' | uniq | sort | wc -l)" -eq 0 ]; then
if [[ ! -z $(apt-cache --names-only search ^libssl1.0.2$) ]]; then
# Debian 9
PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.2"
elif [[ ! -z $(apt-cache --names-only search ^libssl1.0.0$) ]]; then
# Ubuntu 18.04, 16.04, earlier
PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.0"
fi
fi
echo "Packages to verify are installed: ${PACKAGE_LIST}"
apt-get -y install --no-install-recommends ${PACKAGE_LIST} 2> >( grep -v 'debconf: delaying package configuration, since apt-utils is not installed' >&2 )
PACKAGES_ALREADY_INSTALLED="true"
fi
# Get to latest versions of all packages
if [ "${UPGRADE_PACKAGES}" = "true" ]; then
apt-get-update-if-needed
apt-get -y upgrade --no-install-recommends
apt-get autoremove -y
fi
# Ensure at least the en_US.UTF-8 UTF-8 locale is available.
# Common need for both applications and things like the agnoster ZSH theme.
if [ "${LOCALE_ALREADY_SET}" != "true" ]; then
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
LOCALE_ALREADY_SET="true"
fi
# Create or update a non-root user to match UID/GID - see https://aka.ms/vscode-remote/containers/non-root-user.
if id -u $USERNAME > /dev/null 2>&1; then
# User exists, update if needed
if [ "$USER_GID" != "$(id -G $USERNAME)" ]; then
groupmod --gid $USER_GID $USERNAME
usermod --gid $USER_GID $USERNAME
fi
if [ "$USER_UID" != "$(id -u $USERNAME)" ]; then
usermod --uid $USER_UID $USERNAME
fi
else
# Create user
groupadd --gid $USER_GID $USERNAME
useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME
fi
# Add add sudo support for non-root user
if [ "${USERNAME}" != "root" ] && [ "${EXISTING_NON_ROOT_USER}" != "${USERNAME}" ]; then
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME
chmod 0440 /etc/sudoers.d/$USERNAME
EXISTING_NON_ROOT_USER="${USERNAME}"
fi
# .bashrc/.zshrc snippet
RC_SNIPPET="$(cat << EOF
export USER=\$(whoami)
export PATH=\$PATH:\$HOME/.local/bin
if [[ \$(which code-insiders 2>&1) && ! \$(which code 2>&1) ]]; then
alias code=code-insiders
fi
EOF
)"
# Ensure ~/.local/bin is in the PATH for root and non-root users for bash. (zsh is later)
if [ "${RC_SNIPPET_ALREADY_ADDED}" != "true" ]; then
echo "${RC_SNIPPET}" | tee -a /root/.bashrc >> /etc/skel/.bashrc
if [ "${USERNAME}" != "root" ]; then
echo "${RC_SNIPPET}" >> /home/$USERNAME/.bashrc
chown $USER_UID:$USER_GID /home/$USERNAME/.bashrc
fi
RC_SNIPPET_ALREADY_ADDED="true"
fi
# Optionally install and configure zsh
if [ "${INSTALL_ZSH}" = "true" ] && [ ! -d "/root/.oh-my-zsh" ] && [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then
apt-get-update-if-needed
apt-get install -y zsh
curl -fsSLo- https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh | bash 2>&1
echo -e "${RC_SNIPPET}\nDEFAULT_USER=\$USER\nprompt_context(){}" >> /root/.zshrc
cp -fR /root/.oh-my-zsh /etc/skel
cp -f /root/.zshrc /etc/skel
sed -i -e "s/\/root\/.oh-my-zsh/\/home\/\$(whoami)\/.oh-my-zsh/g" /etc/skel/.zshrc
if [ "${USERNAME}" != "root" ]; then
cp -fR /etc/skel/.oh-my-zsh /etc/skel/.zshrc /home/$USERNAME
chown -R $USER_UID:$USER_GID /home/$USERNAME/.oh-my-zsh /home/$USERNAME/.zshrc
fi
ZSH_ALREADY_INSTALLED="true"
fi
# Write marker file
mkdir -p "$(dirname "${MARKER_FILE}")"
echo -e "\
PACKAGES_ALREADY_INSTALLED=${PACKAGES_ALREADY_INSTALLED}\n\
LOCALE_ALREADY_SET=${LOCALE_ALREADY_SET}\n\
EXISTING_NON_ROOT_USER=${EXISTING_NON_ROOT_USER}\n\
RC_SNIPPET_ALREADY_ADDED=${RC_SNIPPET_ALREADY_ADDED}\n\
ZSH_ALREADY_INSTALLED=${ZSH_ALREADY_INSTALLED}" > "${MARKER_FILE}"
echo "Done!"

5
dictation_client/.env Normal file
View File

@ -0,0 +1,5 @@
VITE_STAGE=develop
VITE_B2C_CLIENTID=5eb34cba-84b6-46f9-a0ea-bc5c41157d63
VITE_B2C_AUTHORITY=https://adb2codmsdev.b2clogin.com/adb2codmsdev.onmicrosoft.com/b2c_1_signin_dev
VITE_B2C_KNOWNAUTHORITIES=adb2codmsdev.b2clogin.com
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp

View File

@ -0,0 +1,5 @@
VITE_STAGE=local
VITE_B2C_CLIENTID=XXXX-XXXX-XXXXX-XXXX
VITE_B2C_AUTHORITY=https://adb2XXXX.XXXX.com/adb2XXXX.onmicrosoft.com/XXXX
VITE_B2C_KNOWNAUTHORITIES=adb2cXXXX.XXXx.com
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp

View File

@ -0,0 +1,5 @@
VITE_STAGE=staging
VITE_B2C_CLIENTID=5d8f0db9-4506-41d6-a5bb-5ec39f6eba8d
VITE_B2C_AUTHORITY=https://adb2codmsstg.b2clogin.com/adb2codmsstg.onmicrosoft.com/b2c_1_signin_stg
VITE_B2C_KNOWNAUTHORITIES=adb2codmsstg.b2clogin.com
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp

View File

@ -0,0 +1,9 @@
node_modules/
build/
.eslintrc.js
jest.config.js
vite.config.ts
.env.local
# デザイナのcssから生成するため除外
src/styles/app.module.scss.d.ts

View File

@ -0,0 +1,150 @@
module.exports = {
env: {
browser: true,
},
extends: [
"airbnb",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"prettier",
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.json",
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: "module",
},
plugins: [
"react",
"@typescript-eslint",
"prettier",
"react-hooks",
"prefer-arrow",
],
rules: {
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off",
"react/function-component-definition": [
"error",
{
namedComponents: "arrow-function",
unnamedComponents: "arrow-function",
},
],
"react/jsx-filename-extension": [
"error",
{
extensions: ["jsx", "tsx"],
},
],
"import/extensions": [
"error",
"ignorePackages",
{
js: "never",
jsx: "never",
ts: "never",
tsx: "never",
},
],
"import/no-unresolved": "off",
"import/prefer-default-export": "off",
"no-use-before-define": 0,
"prettier/prettier": "error",
"no-param-reassign": 0,
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/prefer-interface": "off",
"@typescript-eslint/indent": "off",
"react-hooks/rules-of-hooks": "error",
// Checks rules of Hooks
"react-hooks/exhaustive-deps": "warn",
// Checks effect dependencies
"import/no-extraneous-dependencies": [
"error",
{
devDependencies: [
"**/*.test.js",
"**/*.spec.js",
"**/*.test.ts",
"**/*.spec.ts",
"**/*.test.tsx",
"**/*.spec.tsx",
"**/setupTests.ts",
],
},
],
camelcase: "off",
"prefer-arrow/prefer-arrow-functions": [
"error",
{
disallowPrototype: true,
singleReturnOnly: false,
classPropertiesAllowed: false,
},
],
"func-style": [
"error",
"expression",
{
allowArrowFunctions: true,
},
],
"react/no-multi-comp": ["error"],
"react/jsx-pascal-case": ["error"],
"@typescript-eslint/naming-convention": [
"error", // default config
{
selector: "default",
format: ["camelCase"],
leadingUnderscore: "allow",
trailingUnderscore: "allow",
},
{
selector: "variable",
format: ["camelCase", "UPPER_CASE"],
leadingUnderscore: "allow",
trailingUnderscore: "allow",
},
{
selector: "typeLike",
format: ["PascalCase"],
}, // custom config
{
selector: ["property"],
format: ["camelCase", "PascalCase"],
},
{
selector: ["variable"],
types: ["function"],
format: ["camelCase", "PascalCase"],
},
{
selector: "interface",
format: ["PascalCase"],
custom: {
regex: "^I[A-Z]",
match: false,
},
},
],
"max-lines": ["error", 3000],
"jsx-a11y/anchor-is-valid": "off",
},
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
node: {
extensions: [".js", "jsx", ".ts", ".tsx"],
paths: ["src"],
},
},
react: {
version: "detect",
},
},
};

24
dictation_client/.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.env.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.eslintcache
# credentials
credentials

15
dictation_client/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Chrome",
"type": "pwa-chrome",
"request": "launch",
"port": 9222,
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src",
"trace": true,
"sourceMaps": true
}
]
}

38
dictation_client/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,38 @@
{
"todo-tree.general.tags": ["TODO", "FIXME", "DEBUG", "XXX"],
"todo-tree.highlights.customHighlight": {
"TODO": {
"foreground": "white",
"background": "#ffa500",
"iconColour": "green"
},
"FIXME": {
"foreground": "white",
"background": "#ff69b4",
"iconColour": "yellow"
},
"DEBUG": {
"foreground": "white",
"background": "#a52a2a",
"icon": "bug",
"iconColour": "green"
},
"XXX": {
"foreground": "white",
"background": "#ff6347",
"icon": "eye-closed",
"iconColour": "red"
}
},
"debug.javascript.usePreview": false,
"editor.copyWithSyntaxHighlighting": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"prettier.disableLanguages": ["markdown"]
}

View File

@ -0,0 +1,46 @@
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app), using the [Redux](https://redux.js.org/) and [Redux Toolkit](https://redux-toolkit.js.org/) TS template.
## Available Scripts
In the project directory, you can run:
### `npm start`
Runs the app in the development mode.\
Open [http://localhost:3001](http://localhost:3001) to view it in the browser.
The page will reload if you make edits.\
You will also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).

View File

@ -0,0 +1,2 @@
npx openapi-generator-cli version-manager set latest
npx openapi-generator-cli generate -g typescript-axios -i /app/dictation_server/src/api/odms/openapi.json -o /app/dictation_client/src/api/

View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

View File

@ -0,0 +1 @@
cp -r build /app/dictation_server

View File

@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "6.6.0"
}
}

11537
dictation_client/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,99 @@
{
"name": "client",
"private": true,
"version": "0.1.0",
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"start": "vite",
"build": "tsc && vite build",
"build:prod": "tsc && vite build",
"build:local": "tsc && vite build && sh localdeploy.sh",
"preview": "vite preview",
"typecheck": "tsc --noEmit",
"codegen": "sh codegen.sh",
"lint": "eslint --cache . --ext .js,.ts,.tsx",
"lint:fix": "npm run lint -- --fix"
},
"dependencies": {
"@azure/msal-browser": "^2.33.0",
"@azure/msal-react": "^1.5.3",
"@reduxjs/toolkit": "^1.8.3",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^14.2.1",
"@types/jest": "^27.5.2",
"@types/node": "^17.0.45",
"@types/react": "^18.0.14",
"@types/react-dom": "^18.0.6",
"@types/react-router-dom": "^5.3.3",
"@types/redux-mock-store": "^1.0.3",
"axios": "^0.27.2",
"classnames-generics": "^1.0.9",
"eslint-plugin-prefer-arrow": "^1.2.3",
"i18next": "^21.10.0",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"luxon": "^3.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-google-recaptcha-v3": "^1.10.0",
"react-i18next": "^11.18.6",
"react-paginate": "^8.1.3",
"react-redux": "^8.0.2",
"react-router-dom": "^6.4.1",
"redux-mock-store": "^1.5.4",
"redux-thunk": "^2.4.1",
"sass": "^1.58.3",
"typescript": "^4.7.4",
"web-vitals": "^2.1.4"
},
"devDependencies": {
"@babel/core": "^7.18.6",
"@mdx-js/react": "^2.1.2",
"@openapitools/openapi-generator-cli": "^2.5.2",
"@types/lodash": "^4.14.191",
"@types/luxon": "^3.2.0",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/redux-mock-store": "^1.0.3",
"@typescript-eslint/eslint-plugin": "^5.30.5",
"@typescript-eslint/parser": "^5.30.5",
"@vitejs/plugin-react": "^1.3.0",
"babel-loader": "^8.2.5",
"eslint": "^8.19.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jsx-a11y": "^6.6.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0",
"license-checker": "^25.0.1",
"prettier": "^2.7.1",
"redux-mock-store": "^1.5.4",
"sass": "^1.58.3",
"typescript": "^4.7.4",
"vite": "^4.1.4",
"vite-plugin-env-compatible": "^1.1.1",
"vite-plugin-sass-dts": "^1.3.1",
"vite-tsconfig-paths": "^3.5.0"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
],
"overrides": [
{
"files": [
"**/*.stories.*"
],
"rules": {
"import/no-anonymous-default-export": "off"
}
}
]
}
}

View File

@ -0,0 +1,75 @@
import AppRouter from "AppRouter";
import { BrowserRouter } from "react-router-dom";
import { PublicClientApplication } from "@azure/msal-browser";
import { MsalProvider, useMsal } from "@azure/msal-react";
import { msalConfig } from "common/msalConfig";
import { useEffect, useLayoutEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import globalAxios, { AxiosError, AxiosResponse } from "axios";
import { clearToken } from "features/auth";
import { useTranslation } from "react-i18next";
import Snackbar from "components/snackbar";
import { selectSnackber } from "features/ui/selectors";
import { closeSnackbar } from "features/ui/uiSlice";
const App = (): JSX.Element => {
const dispatch = useDispatch();
const { instance } = useMsal();
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [t, i18n] = useTranslation();
const pca = new PublicClientApplication(msalConfig);
useEffect(() => {
const id = globalAxios.interceptors.response.use(
(response: AxiosResponse) => response,
(e: AxiosError) => {
if (e?.response?.status === 401) {
dispatch(clearToken());
instance.logout({
postLogoutRedirectUri: "/?logout=true",
});
}
return Promise.reject(e);
}
);
const cleanup = () => {
globalAxios.interceptors.response.eject(id);
};
return cleanup;
}, [dispatch, instance]);
// Language読み取り
useLayoutEffect(() => {
const language = document.cookie
.trim()
.split(";")
.map((x) => x.split("="))
.find((x) => x.length === 2 && x[0] === "language");
if (language) {
i18n.changeLanguage(language[1]);
}
}, [i18n]);
const snackbarInfo = useSelector(selectSnackber);
return (
<>
<Snackbar
isOpen={snackbarInfo.isOpen}
level={snackbarInfo.level}
message={t(snackbarInfo.message)}
duration={snackbarInfo.duration}
onClose={() => {
dispatch(closeSnackbar());
}}
/>
<MsalProvider instance={pca}>
<BrowserRouter>
<AppRouter />
</BrowserRouter>
</MsalProvider>
</>
);
};
export default App;

View File

@ -0,0 +1,71 @@
import { Route, Routes } from "react-router-dom";
import TopPage from "pages/TopPage";
import LoginPage from "pages/LoginPage";
import SamplePage from "pages/SamplePage";
import { AuthErrorPage } from "pages/ErrorPage";
import { NotFoundPage } from "pages/ErrorPage/notFound";
import { RouteAuthGuard } from "components/auth/routeAuthGuard";
import SignupPage from "pages/SignupPage";
import VerifyPage from "pages/VerifyPage";
import UserVerifyPage from "pages/UserVerifyPage";
import VerifySuccessPage from "pages/VerifySuccessPage";
import VerifyFailedPage from "pages/VerifyFailedPage";
import VerifyAlreadyExistPage from "pages/VerifyAlreadyExistPage";
import SignupCompletePage from "pages/SignupCompletePage";
import UserListPage from "pages/UserListPage";
import LicensePage from "pages/LicensePage";
import DictationPage from "pages/DictationPage";
import PartnerPage from "pages/PartnerPage";
const AppRouter: React.FC = () => (
<Routes>
<Route path="/" element={<TopPage />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/authError" element={<AuthErrorPage />} />
<Route
path="/signup"
element={<SignupPage completeTo="/signup/complete" />}
/>
<Route path="/signup/complete" element={<SignupCompletePage />} />
<Route path="/mail-confirm/" element={<VerifyPage />} />
<Route path="/mail-confirm/user" element={<UserVerifyPage />} />
<Route path="/mail-confirm/success" element={<VerifySuccessPage />} />
<Route path="/mail-confirm/failed" element={<VerifyFailedPage />} />
<Route
path="/mail-confirm/alreadyExist"
element={<VerifyAlreadyExistPage />}
/>
<Route
path="/user"
element={<RouteAuthGuard component={<UserListPage />} />}
/>
<Route
path="/license"
element={<RouteAuthGuard component={<LicensePage />} />}
/>
<Route
path="/xxx"
element={<RouteAuthGuard component={<SamplePage />} />}
/>
{/* XXX ヘッダーの挙動確認のため仮のページを作成 */}
<Route
path="/account"
element={<RouteAuthGuard component={<SamplePage />} />}
/>
<Route
path="/dictations"
element={<RouteAuthGuard component={<DictationPage />} />}
/>
<Route
path="/workflow"
element={<RouteAuthGuard component={<SamplePage />} />}
/>
<Route
path="/partners"
element={<RouteAuthGuard component={<PartnerPage />} />}
/>
<Route path="*" element={<NotFoundPage />} />
</Routes>
);
export default AppRouter;

4
dictation_client/src/api/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
wwwroot/*.js
node_modules
typings
dist

View File

@ -0,0 +1 @@
# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,8 @@
.gitignore
.npmignore
api.ts
base.ts
common.ts
configuration.ts
git_push.sh
index.ts

View File

@ -0,0 +1 @@
6.6.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,72 @@
/* tslint:disable */
/* eslint-disable */
/**
* ODMSOpenAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import type { Configuration } from './configuration';
// Some imports not used depending on template conditions
// @ts-ignore
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
export const BASE_PATH = "http://localhost".replace(/\/+$/, "");
/**
*
* @export
*/
export const COLLECTION_FORMATS = {
csv: ",",
ssv: " ",
tsv: "\t",
pipes: "|",
};
/**
*
* @export
* @interface RequestArgs
*/
export interface RequestArgs {
url: string;
options: AxiosRequestConfig;
}
/**
*
* @export
* @class BaseAPI
*/
export class BaseAPI {
protected configuration: Configuration | undefined;
constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {
if (configuration) {
this.configuration = configuration;
this.basePath = configuration.basePath || this.basePath;
}
}
};
/**
*
* @export
* @class RequiredError
* @extends {Error}
*/
export class RequiredError extends Error {
constructor(public field: string, msg?: string) {
super(msg);
this.name = "RequiredError"
}
}

View File

@ -0,0 +1,150 @@
/* tslint:disable */
/* eslint-disable */
/**
* ODMSOpenAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import type { Configuration } from "./configuration";
import type { RequestArgs } from "./base";
import type { AxiosInstance, AxiosResponse } from 'axios';
import { RequiredError } from "./base";
/**
*
* @export
*/
export const DUMMY_BASE_URL = 'https://example.com'
/**
*
* @throws {RequiredError}
* @export
*/
export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) {
if (paramValue === null || paramValue === undefined) {
throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
}
}
/**
*
* @export
*/
export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) {
if (configuration && configuration.apiKey) {
const localVarApiKeyValue = typeof configuration.apiKey === 'function'
? await configuration.apiKey(keyParamName)
: await configuration.apiKey;
object[keyParamName] = localVarApiKeyValue;
}
}
/**
*
* @export
*/
export const setBasicAuthToObject = function (object: any, configuration?: Configuration) {
if (configuration && (configuration.username || configuration.password)) {
object["auth"] = { username: configuration.username, password: configuration.password };
}
}
/**
*
* @export
*/
export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) {
if (configuration && configuration.accessToken) {
const accessToken = typeof configuration.accessToken === 'function'
? await configuration.accessToken()
: await configuration.accessToken;
object["Authorization"] = "Bearer " + accessToken;
}
}
/**
*
* @export
*/
export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) {
if (configuration && configuration.accessToken) {
const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
? await configuration.accessToken(name, scopes)
: await configuration.accessToken;
object["Authorization"] = "Bearer " + localVarAccessTokenValue;
}
}
function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void {
if (parameter == null) return;
if (typeof parameter === "object") {
if (Array.isArray(parameter)) {
(parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
}
else {
Object.keys(parameter).forEach(currentKey =>
setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`)
);
}
}
else {
if (urlSearchParams.has(key)) {
urlSearchParams.append(key, parameter);
}
else {
urlSearchParams.set(key, parameter);
}
}
}
/**
*
* @export
*/
export const setSearchParams = function (url: URL, ...objects: any[]) {
const searchParams = new URLSearchParams(url.search);
setFlattenedQueryParams(searchParams, objects);
url.search = searchParams.toString();
}
/**
*
* @export
*/
export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) {
const nonString = typeof value !== 'string';
const needsSerialization = nonString && configuration && configuration.isJsonMime
? configuration.isJsonMime(requestOptions.headers['Content-Type'])
: nonString;
return needsSerialization
? JSON.stringify(value !== undefined ? value : {})
: (value || "");
}
/**
*
* @export
*/
export const toPathString = function (url: URL) {
return url.pathname + url.search + url.hash
}
/**
*
* @export
*/
export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) {
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url};
return axios.request<T, R>(axiosRequestArgs);
};
}

View File

@ -0,0 +1,101 @@
/* tslint:disable */
/* eslint-disable */
/**
* ODMSOpenAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export interface ConfigurationParameters {
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
username?: string;
password?: string;
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
basePath?: string;
baseOptions?: any;
formDataCtor?: new () => any;
}
export class Configuration {
/**
* parameter for apiKey security
* @param name security name
* @memberof Configuration
*/
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
/**
* parameter for basic security
*
* @type {string}
* @memberof Configuration
*/
username?: string;
/**
* parameter for basic security
*
* @type {string}
* @memberof Configuration
*/
password?: string;
/**
* parameter for oauth2 security
* @param name security name
* @param scopes oauth2 scope
* @memberof Configuration
*/
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
/**
* override base path
*
* @type {string}
* @memberof Configuration
*/
basePath?: string;
/**
* base options for axios calls
*
* @type {any}
* @memberof Configuration
*/
baseOptions?: any;
/**
* The FormData constructor that will be used to create multipart form data
* requests. You can inject this here so that execution environments that
* do not support the FormData class can still run the generated client.
*
* @type {new () => FormData}
*/
formDataCtor?: new () => any;
constructor(param: ConfigurationParameters = {}) {
this.apiKey = param.apiKey;
this.username = param.username;
this.password = param.password;
this.accessToken = param.accessToken;
this.basePath = param.basePath;
this.baseOptions = param.baseOptions;
this.formDataCtor = param.formDataCtor;
}
/**
* Check if the given MIME is a JSON MIME.
* JSON MIME examples:
* application/json
* application/json; charset=UTF8
* APPLICATION/JSON
* application/vnd.company+json
* @param mime - MIME (Multipurpose Internet Mail Extensions)
* @return True if the given MIME is JSON, false otherwise.
*/
public isJsonMime(mime: string): boolean {
const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
}
}

View File

@ -0,0 +1,57 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
fi
if [ "$git_repo_id" = "" ]; then
git_repo_id="GIT_REPO_ID"
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
fi
if [ "$release_note" = "" ]; then
release_note="Minor update"
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
fi
# Initialize the local directory as a Git repository
git init
# Adds the files in the local repository and stages them for commit.
git add .
# Commits the tracked changes and prepares them to be pushed to a remote repository.
git commit -m "$release_note"
# Sets the new remote
git_remote=$(git remote)
if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -0,0 +1,18 @@
/* tslint:disable */
/* eslint-disable */
/**
* ODMSOpenAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export * from "./api";
export * from "./configuration";

View File

@ -0,0 +1,44 @@
import { configureStore, ThunkAction, Action } from "@reduxjs/toolkit";
import login from "features/login/loginSlice";
import auth from "features/auth/authSlice";
import signup from "features/signup/signupSlice";
import verify from "features/verify/verifySlice";
import ui from "features/ui/uiSlice";
import user from "features/user/userSlice";
import license from "features/license/licenseOrder/licenseSlice";
import licenseCardIssue from "features/license/licenseCardIssue/licenseCardIssueSlice";
import licenseCardActivate from "features/license/licenseCardActivate/licenseCardActivateSlice";
import licenseSummary from "features/license/licenseSummary/licenseSummarySlice";
import partnerLicense from "features/license/partnerLicense/partnerLicenseSlice";
import dictation from "features/dictation/dictationSlice";
import partner from "features/partner/partnerSlice";
import licenseOrderHistory from "features/license/licenseOrderHistory/licenseOrderHistorySlice";
export const store = configureStore({
reducer: {
login,
auth,
signup,
verify,
ui,
user,
license,
licenseCardIssue,
licenseCardActivate,
licenseSummary,
licenseOrderHistory,
partnerLicense,
dictation,
partner,
},
});
export type RootState = ReturnType<typeof store.getState>;
export type AppThunk<ReturnType = void> = ThunkAction<
ReturnType,
RootState,
unknown,
Action<string>
>;
export type AppDispatch = typeof store.dispatch;

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 362.41 42" style="enable-background:new 0 0 362.41 42;" xml:space="preserve">
<style type="text/css">
.st0{clip-path:url(#SVGID_00000106112683229958979730000004837138376666885508_);}
.st1{clip-path:url(#SVGID_00000100361991382501253840000013201318416462760885_);}
.st2{clip-path:url(#SVGID_00000100361991382501253840000013201318416462760885_);fill-rule:evenodd;clip-rule:evenodd;}
</style>
<g id="OM_System_Black_-_One_Line_-_RGB_00000168110105817326191910000010615373263908845735_">
<g>
<defs>
<rect id="SVGID_1_" y="0" width="362.41" height="42"/>
</defs>
<clipPath id="SVGID_00000097489272735381870970000015716550008865822343_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g style="clip-path:url(#SVGID_00000097489272735381870970000015716550008865822343_);">
<defs>
<rect id="SVGID_00000084515526535015927220000011441361349608841099_" y="0" width="362.41" height="42"/>
</defs>
<clipPath id="SVGID_00000005241618409923234440000016758378329632926897_">
<use xlink:href="#SVGID_00000084515526535015927220000011441361349608841099_" style="overflow:visible;"/>
</clipPath>
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" d="M62.35,23.65l-9.06-22.2H41.24
v15.26C39.28,7.17,30.89,0,20.84,0C9.33,0,0,9.4,0,21c0,11.59,9.33,21,20.84,21c10.05,0,18.44-7.17,20.4-16.71v15.07h9.45V19.18
l8.07,21.18h7.19l8.07-21.18v21.18h9.45V1.45H71.42L62.35,23.65z M20.84,32.57C14.5,32.57,9.36,27.39,9.36,21
S14.5,9.43,20.84,9.43S32.33,14.61,32.33,21S27.19,32.57,20.84,32.57"/>
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);fill-rule:evenodd;clip-rule:evenodd;" d="
M127.89,17.47h9.94c0,0,0-2.32-0.27-3.9c-0.27-1.58-0.84-3.09-2.45-4.37c-1.62-1.27-5.01-1.81-6.65-2.11
c-1.65-0.3-7.16-0.4-10.55-0.4s-8.27,0.29-10.37,0.73c-2.06,0.43-4.88,1.77-5.96,3.5c-0.75,1.18-1.85,3.52-1.85,6.13
c0,2.65,0.36,5.14,1.09,6.45c0.71,1.26,1.41,2.03,2.58,2.7c1.18,0.67,3.44,1.01,6.32,1.14c2.85,0.13,6.22,0.19,8.93,0.27
c2.75,0.09,6.41,0.25,7.89,0.36c1.63,0.12,2.35,1.15,2.35,2.19c0,1.05-0.5,1.83-1.54,2.19c-1.16,0.39-5.29,0.35-8.01,0.38
c-2.65,0.04-6.03-0.14-7.64-0.32c-1.34-0.15-2.16-1.23-2.32-2.77h-9.85c0,0,0.02,2.8,0.32,4.34c0.3,1.54,1.01,2.72,1.85,3.66
c0.84,0.94,1.68,1.41,3.05,1.85c1.38,0.44,7.76,0.87,13.5,0.87c5.74,0,10.58-0.07,12.43-0.37c1.84-0.31,3.86-0.98,4.93-1.82
c1.08-0.84,2.2-2.25,2.84-3.76c0.48-1.12,0.72-2.99,0.69-4.83c-0.04-1.85-0.57-4.87-1.54-6.18c-0.98-1.31-1.58-2.08-3.12-2.66
c-1.55-0.57-4.16-0.91-5.81-0.97c-1.64-0.07-6.95-0.23-9.54-0.3c-2.11-0.05-6.6-0.24-7.62-0.47c-0.93-0.21-1.54-0.64-1.54-1.92
c0-1.27,0.68-1.73,1.44-1.91c0.99-0.24,3.56-0.66,7.19-0.66c3.63,0,6.35,0.25,7.12,0.42c0.77,0.17,1.38,0.57,1.75,1.04
C127.82,16.46,127.89,17.47,127.89,17.47"/>
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="161.22,19.5 171.82,6.96
184.35,6.96 166.25,28.53 166.25,40.07 156.35,40.07 156.18,28.53 138.08,6.96 150.6,6.96 "/>
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="264.47,6.96 264.47,15.68
249.99,15.68 249.99,40.06 239.92,40.06 239.92,15.68 225.45,15.68 225.45,6.96 "/>
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="278.2,32.47 303.38,32.47
303.38,40.07 278.2,40.07 268.12,40.07 268.12,6.96 278.2,6.96 303.38,6.96 303.38,14.54 278.2,14.54 278.2,19.71 301.84,19.71
301.84,27.31 278.2,27.31 "/>
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" d="M335.48,40.06h-3.85l-12.17-21.95
c-0.11-0.21-0.28-0.5-0.53-0.45c-0.31,0.07-0.31,0.43-0.31,0.68v21.73h-10.08V6.96h15.72l11.09,20c0.03,0.06,0.06,0.09,0.12,0.08
c0.05,0.01,0.09-0.02,0.12-0.08l11.09-20h15.72v33.11h-10.07V18.34c0-0.25,0-0.61-0.31-0.68c-0.24-0.05-0.41,0.25-0.52,0.45
l-12.17,21.95H335.48z"/>
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);fill-rule:evenodd;clip-rule:evenodd;" d="
M212.27,17.47h9.94c0,0,0-2.32-0.27-3.9c-0.27-1.58-0.84-3.09-2.45-4.37c-1.61-1.27-5.01-1.81-6.65-2.11
c-1.65-0.3-7.15-0.4-10.54-0.4c-3.39,0-8.27,0.29-10.37,0.73c-2.06,0.43-4.88,1.77-5.97,3.5c-0.75,1.18-1.85,3.52-1.85,6.13
c0,2.65,0.36,5.14,1.09,6.45c0.71,1.26,1.41,2.03,2.58,2.7c1.18,0.67,3.44,1.01,6.32,1.14c2.85,0.13,6.22,0.19,8.93,0.27
c2.76,0.09,6.42,0.25,7.9,0.36c1.63,0.12,2.35,1.15,2.35,2.19c0,1.05-0.51,1.83-1.55,2.19c-1.15,0.39-5.29,0.35-8.01,0.38
c-2.65,0.04-6.03-0.14-7.64-0.32c-1.33-0.15-2.17-1.23-2.32-2.77h-9.85c0,0,0.02,2.8,0.32,4.34c0.3,1.54,1.01,2.72,1.85,3.66
c0.84,0.94,1.68,1.41,3.05,1.85c1.38,0.44,7.76,0.87,13.5,0.87c5.74,0,10.57-0.07,12.42-0.37c1.84-0.31,3.86-0.98,4.93-1.82
c1.08-0.84,2.2-2.25,2.84-3.76c0.48-1.12,0.72-2.99,0.69-4.83c-0.04-1.85-0.58-4.87-1.54-6.18c-0.98-1.31-1.58-2.08-3.12-2.66
c-1.55-0.57-4.16-0.91-5.81-0.97c-1.64-0.07-6.95-0.23-9.54-0.3c-2.11-0.05-6.6-0.24-7.62-0.47c-0.93-0.21-1.55-0.64-1.55-1.92
c0-1.27,0.69-1.73,1.45-1.91c0.99-0.24,3.56-0.66,7.19-0.66c3.63,0,6.35,0.25,7.12,0.42c0.77,0.17,1.38,0.57,1.75,1.04
C212.2,16.46,212.27,17.47,212.27,17.47"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M11.1,35.2c2.1-1.3,4.2-3.3,6.2-4s4.3-1.5,6.7-1.5s4.6,0.8,6.7,1.5s4.2,2.7,6.2,4c1.5-1.8,2.5-3.6,3.1-5.4
C40.7,28,41,26,41,24c0-4.8-1.6-8.9-4.9-12.1S28.8,7,24,7s-8.9,1.6-12.1,4.9S7,19.2,7,24c0,2,0.3,4,1,5.8
C8.6,31.6,9.6,33.5,11.1,35.2z M24,27.1c-2.1,0-3.9-0.7-5.3-2.1c-1.4-1.4-2.2-3.1-2.2-5.2s0.7-3.8,2.2-5.2s3.2-2.1,5.3-2.1
s3.9,0.7,5.3,2.1s2.2,3.1,2.2,5.2s-0.7,3.8-2.2,5.2C27.9,26.5,26.1,27.1,24,27.1z M24,44c-2.8,0-5.4-0.5-7.8-1.6
c-2.4-1-4.6-2.5-6.4-4.3c-1.8-1.8-3.2-3.9-4.3-6.4c-1-2.4-1.6-5-1.6-7.8s0.5-5.4,1.6-7.8c1-2.4,2.5-4.5,4.3-6.3s3.9-3.2,6.4-4.3
c2.4-1,5-1.6,7.8-1.6s5.4,0.5,7.8,1.6c2.4,1.1,4.5,2.5,6.3,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8s-0.5,5.3-1.6,7.8
c-1,2.4-2.5,4.5-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M24,31.3l2.1-2.1l-3.7-3.7h9.1v-3h-9.1l3.7-3.7L24,16.7L16.7,24L24,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 999 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M24,31.3l7.3-7.3L24,16.7l-2.1,2.1l3.7,3.7h-9.1v3h9.1l-3.7,3.7L24,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 999 B

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m16,32l-2.1-2.1,12.4-12.4H0v-3h26.2L13.9,2.1l2.1-2.1,16,16-16,16Z"/></svg>

After

Width:  |  Height:  |  Size: 262 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_レイヤー_1" data-name="レイヤー 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<defs>
<style>
.cls-1 {
fill: #004086;
}
</style>
</defs>
<path class="cls-1" d="m16,32l-2.1-2.1,12.4-12.4H0v-3h26.2L13.9,2.1l2.1-2.1,16,16-16,16Z"/>
</svg>

After

Width:  |  Height:  |  Size: 338 B

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M22.9,26.5h9c0.8,0,1.5-0.3,2.1-0.8c0.6-0.6,0.8-1.2,0.8-2s-0.3-1.5-0.8-2.1c-0.6-0.6-1.2-0.9-2.1-0.9h-0.6
l-0.1-0.5c-0.1-1-0.6-1.9-1.4-2.6s-1.7-1.1-2.8-1.1c-0.9,0-1.7,0.2-2.4,0.7c-0.7,0.4-1.2,1-1.5,1.8L23,19.3h-0.4
c-1,0-1.8,0.4-2.4,1.1c-0.7,0.7-1,1.6-1,2.5c0,1,0.4,1.8,1.1,2.5C21,26.1,21.9,26.5,22.9,26.5z M5,42c-0.8,0-1.5-0.3-2.1-0.9
C2.3,40.5,2,39.8,2,39V10.5h3V39h36.5v3H5z M11,36c-0.8,0-1.5-0.3-2.1-0.9C8.3,34.5,8,33.8,8,33V7c0-0.8,0.3-1.5,0.9-2.1
C9.5,4.3,10.2,4,11,4h13l3,3h16c0.8,0,1.5,0.3,2.1,0.9C45.7,8.5,46,9.2,46,10v23c0,0.8-0.3,1.5-0.9,2.1C44.5,35.7,43.8,36,43,36H11z
M11,33h32V10H25.8l-3-3H11V33z M11,33V7V33z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M7,44c-0.8,0-1.5-0.3-2.1-0.9C4.3,42.5,4,41.8,4,41V17c0-0.8,0.3-1.5,0.9-2.1C5.5,14.3,6.2,14,7,14h11.9V7
c0-0.8,0.3-1.5,0.9-2.1S21.1,4,21.9,4h4.4c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1v7H41c0.8,0,1.5,0.3,2.1,0.9
c0.6,0.6,0.9,1.3,0.9,2.1v24c0,0.8-0.3,1.5-0.9,2.1C42.5,43.7,41.8,44,41,44H7z M11.6,35.7h12V35c0-0.6-0.2-1.1-0.5-1.6
c-0.3-0.5-0.7-0.8-1.1-0.9c-1.1-0.4-1.9-0.6-2.5-0.7c-0.6-0.1-1.2-0.2-1.8-0.2c-0.6,0-1.3,0.1-2,0.2c-0.7,0.1-1.5,0.4-2.4,0.7
c-0.5,0.2-0.9,0.5-1.2,0.9c-0.3,0.5-0.4,1-0.4,1.6V35.7z M28.4,32.3h8.5v-2.5h-8.5V32.3z M17.7,29.8c0.8,0,1.4-0.3,1.9-0.8
c0.5-0.5,0.8-1.2,0.8-1.9s-0.3-1.4-0.8-1.9c-0.5-0.5-1.2-0.8-1.9-0.8c-0.8,0-1.4,0.3-1.9,0.8c-0.5,0.5-0.8,1.2-0.8,1.9
s0.3,1.4,0.8,1.9C16.3,29.5,16.9,29.8,17.7,29.8z M28.4,26.6h8.5v-2.5h-8.5V26.6z M21.9,17h4.4V7h-4.4V17z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.6.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M24,44c-2.8,0-5.4-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4S4,26.8,4,24s0.5-5.4,1.6-7.8
s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.2,4,24,4s5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8
s-0.5,5.4-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.6,12.1-4.9
C39.4,32.8,41,28.7,41,24c0-2-0.3-4-1-5.8c-0.7-1.9-1.7-3.6-3-5.1l-24,24c1.5,1.3,3.2,2.3,5.1,3C20,40.7,22,41,24,41z M11.1,34.9
L35,11c-1.5-1.3-3.2-2.3-5.1-3S26,7,24,7c-4.7,0-8.8,1.6-12.1,4.9S7,19.3,7,24c0,2,0.4,4,1.1,5.9S9.8,33.4,11.1,34.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 1006 B

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M21,28.5l-4.9-4.9c-0.3-0.3-0.7-0.5-1.1-0.5s-0.8,0.2-1.1,0.5c-0.3,0.3-0.5,0.7-0.5,1.1c0,0.4,0.2,0.8,0.5,1.1
L20,32c0.3,0.3,0.6,0.5,1,0.5s0.7-0.1,1-0.5l12-12c0.3-0.3,0.4-0.7,0.4-1.1c0-0.4-0.2-0.8-0.5-1.1c-0.3-0.3-0.7-0.5-1.1-0.5
c-0.4,0-0.8,0.2-1.2,0.5L21,28.5z M24,44c-2.8,0-5.5-0.5-7.9-1.5c-2.4-1-4.6-2.4-6.4-4.2s-3.2-3.9-4.2-6.4S4,26.8,4,24
c0-2.8,0.5-5.4,1.5-7.9S8,11.6,9.8,9.8s3.9-3.2,6.4-4.2S21.2,4,24,4c2.8,0,5.4,0.5,7.9,1.6s4.5,2.4,6.4,4.2c1.8,1.8,3.2,3.9,4.2,6.3
s1.5,5,1.5,7.9c0,2.8-0.5,5.5-1.5,7.9s-2.5,4.6-4.2,6.4c-1.8,1.8-3.9,3.2-6.4,4.2C29.4,43.5,26.8,44,24,44z M24,41
c4.8,0,8.9-1.6,12.1-4.9S41,28.8,41,24s-1.6-8.9-4.9-12.1S28.8,7,24,7s-8.9,1.6-12.1,4.9S7,19.2,7,24s1.6,8.9,4.9,12.1
S19.2,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M21.1,33.1l14.1-14.2l-2.3-2.2L21.1,28.5l-6-6l-2.2,2.2L21.1,33.1z M24,44c-2.7,0-5.3-0.5-7.8-1.6
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
</svg>

After

Width:  |  Height:  |  Size: 840 B

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m17,24.5l-4.9-4.9c-.3-.3-.7-.5-1.1-.5s-.8.2-1.1.5-.5.7-.5,1.1.2.8.5,1.1l6.1,6.2c.3.3.6.5,1,.5s.7-.1,1-.5l12-12c.3-.3.4-.7.4-1.1s-.2-.8-.5-1.1c-.3-.3-.7-.5-1.1-.5s-.8.2-1.2.5l-10.6,10.7Zm3,15.5c-2.8,0-5.5-.5-7.9-1.5s-4.6-2.4-6.4-4.2-3.2-3.9-4.2-6.4-1.5-5.1-1.5-7.9.5-5.4,1.5-7.9,2.5-4.5,4.3-6.3,3.9-3.2,6.4-4.2,5-1.6,7.8-1.6,5.4.5,7.9,1.6c2.5,1.1,4.5,2.4,6.4,4.2,1.8,1.8,3.2,3.9,4.2,6.3s1.5,5,1.5,7.9-.5,5.5-1.5,7.9c-1,2.4-2.5,4.6-4.2,6.4-1.8,1.8-3.9,3.2-6.4,4.2-2.5,1-5.1,1.5-7.9,1.5Zm0-3c4.8,0,8.9-1.6,12.1-4.9s4.9-7.3,4.9-12.1-1.6-8.9-4.9-12.1-7.3-4.9-12.1-4.9-8.9,1.6-12.1,4.9-4.9,7.3-4.9,12.1,1.6,8.9,4.9,12.1,7.3,4.9,12.1,4.9Z"/></svg>

After

Width:  |  Height:  |  Size: 828 B

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M39.6,4.4H8.4C6,4.4,4,6.4,4,8.8v30.4c0,2.4,2,4.3,4.4,4.3h31.1c2.5,0,4.4-2,4.4-4.3V8.8
C44,6.4,42,4.4,39.6,4.4z M19.6,34.9L8.4,24l3.1-3.1l8,7.8l16.9-16.5l3.1,3.1L19.6,34.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 620 B

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.7.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{display:none;fill:#282828;}
.st1{fill:#A5A5A5;}
</style>
<path class="st0" d="M39.6,4.4H8.4C6,4.4,4,6.4,4,8.8v30.4c0,2.4,2,4.3,4.4,4.3h31.1c2.5,0,4.4-2,4.4-4.3V8.8
C44,6.4,42,4.4,39.6,4.4z M19.6,34.9L8.4,24l3.1-3.1l8,7.8l16.9-16.5l3.1,3.1L19.6,34.9z"/>
<path class="st1" d="M7.4,43.8c-0.9,0-1.6-0.3-2.3-1c-0.7-0.7-1-1.4-1-2.3v-33c0-0.9,0.3-1.6,1-2.3c0.7-0.6,1.4-0.9,2.3-0.9h33.1
c0.9,0,1.6,0.3,2.3,1s1,1.4,1,2.3v33.1c0,0.9-0.3,1.6-1,2.3c-0.7,0.7-1.4,1-2.3,1L7.4,43.8L7.4,43.8z M7.4,40.5h33.1V7.4H7.4V40.5
L7.4,40.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 912 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4S4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8
s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8
c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5
c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.8-5-12.1C32.8,8.6,28.7,7,24,7c-4.7,0-8.7,1.6-12,4.9S7,19.3,7,24c0,4.7,1.7,8.7,5,12
S19.3,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 924 B

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 27.3 27.3" style="enable-background:new 0 0 27.3 27.3;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M2.1,27.4l-2.1-2.1l11.6-11.6L0.1,2l2.1-2.1l11.5,11.6L25.2,0l2.1,2.1L15.8,13.6l11.6,11.5l-2.1,2.1L13.7,15.7
L2.1,27.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 575 B

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27.3 27.3"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m2.1,27.3l-2.1-2.1,11.55-11.55L0,2.1,2.1,0l11.55,11.55L25.2,0l2.1,2.1-11.55,11.55,11.55,11.55-2.1,2.1-11.55-11.55L2.1,27.3Z"/></svg>

After

Width:  |  Height:  |  Size: 324 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M13.1,42c-0.8,0-1.5-0.3-2.1-0.9c-0.6-0.6-0.9-1.3-0.9-2.1V10.5H8v-3h9.4V6h13.2v1.5H40v3h-2V39
c0,0.8-0.3,1.5-0.9,2.1C36.5,41.7,35.8,42,35,42H13.1z M35,10.5H13.1V39H35V10.5z M18.4,34.7h3v-20h-3V34.7z M26.6,34.7h3v-20h-3
V34.7z M13.1,10.5V39V10.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 695 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M9,39h2.2l22.2-22.1l-2.2-2.2L9,36.8V39z M39.7,14.7l-6.4-6.4l2.1-2.1c0.6-0.6,1.3-0.9,2.1-0.9
c0.8,0,1.5,0.3,2.1,0.9l2.2,2.2c0.6,0.6,0.9,1.3,0.9,2.1c0,0.8-0.3,1.5-0.9,2.1L39.7,14.7z M37.6,16.8L12.4,42H6v-6.4l25.2-25.2
L37.6,16.8z M32.2,15.7l-1.1-1.1l2.2,2.2L32.2,15.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 717 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M31.6,44l-8.1-8l2.1-2.2l5.9,5.9l12.2-12.2l2.2,2.1L31.6,44z M23.9,21.6L40.6,11H7.2L23.9,21.6z M23.9,24.6
L7,13.8v22.6h12.8l3,3H7c-0.8,0-1.5-0.3-2.1-0.9S4,37.2,4,36.4V11c0-0.8,0.3-1.5,0.9-2.1C5.5,8.3,6.2,8,7,8h33.8
c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1v12.2l-3,3V13.8L23.9,24.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 736 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#00B4AA;}
</style>
<path class="st0" d="M24,44c-2.8,0-5.5-0.5-7.9-1.5s-4.6-2.4-6.4-4.2S6.5,34.4,5.5,32S4,26.8,4,24s0.5-5.4,1.5-7.8S8,11.6,9.8,9.8
s3.9-3.2,6.4-4.2S21.2,4,24,4c2.5,0,4.8,0.4,7,1.2s4.1,1.9,5.9,3.3l-2.2,2.1c-1.5-1.2-3.1-2.1-4.9-2.7C28,7.3,26.1,7,24,7
c-4.8,0-8.9,1.6-12.1,4.9S7,19.2,7,24s1.6,8.9,4.9,12.1S19.2,41,24,41s8.9-1.6,12.1-4.9S41,28.8,41,24c0-1-0.1-2-0.2-2.9
c-0.2-1-0.4-1.9-0.7-2.8l2.3-2.3c0.5,1.2,0.9,2.5,1.2,3.8s0.4,2.7,0.4,4.1c0,2.8-0.5,5.5-1.5,7.9s-2.5,4.5-4.2,6.3s-3.9,3.2-6.4,4.2
C29.4,43.5,26.8,44,24,44z M21.1,33.1l-8.3-8.3l2.2-2.2l6,6L41.8,7.8l2.3,2.2L21.1,33.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 1009 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M23.9,42c-5,0-9.2-1.8-12.7-5.3C7.7,33.2,6,28.9,6,23.9h3c0,4.2,1.4,7.7,4.3,10.7S19.7,39,23.9,39
c4.2,0,7.8-1.5,10.8-4.5c2.9-3,4.4-6.6,4.4-10.8c0-4.1-1.5-7.6-4.5-10.5S28,9,23.9,9c-2.3,0-4.4,0.5-6.4,1.5s-3.7,2.4-5.2,4.1h5.3v3
H7.1V7.2h3v5.3c1.7-2,3.8-3.6,6.2-4.8S21.2,6,23.9,6c2.5,0,4.9,0.5,7,1.4c2.2,0.9,4.1,2.2,5.8,3.8c1.7,1.6,3,3.5,3.9,5.7
s1.4,4.5,1.4,7s-0.5,4.8-1.4,7s-2.2,4.1-3.9,5.8c-1.6,1.6-3.6,2.9-5.8,3.9C28.7,41.5,26.4,42,23.9,42z M30.2,32.1l-7.7-7.6V13.8h3
v9.5l6.9,6.7L30.2,32.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 944 B

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FF5A33;}
</style>
<path class="st0" d="M26.4,44v-3c1.2-0.2,2.3-0.5,3.5-1c1.1-0.5,2.2-1.1,3.3-1.9l2.1,2.2c-1.3,1-2.8,1.8-4.2,2.4
C29.5,43.3,28,43.8,26.4,44z M21.9,44c-4.6-0.7-8.3-2.7-11.3-6.1s-4.5-7.4-4.5-12.1c0-2.5,0.5-4.8,1.4-7s2.2-4.1,3.9-5.7
c1.6-1.6,3.5-2.9,5.7-3.8s4.5-1.4,7-1.4h1l-4-3.9l2.2-2.2L31,9.3L23.4,17l-2.2-2.2l4-4h-1c-4.2,0-7.8,1.4-10.7,4.3
s-4.3,6.4-4.3,10.7c0,3.9,1.2,7.2,3.6,10s5.5,4.5,9.1,5.2V44z M38.4,37.2L36.2,35c0.8-1,1.4-2.1,1.8-3.2s0.8-2.4,0.9-3.7h3
c-0.2,1.7-0.7,3.3-1.3,4.9C40.1,34.5,39.3,35.9,38.4,37.2z M42,23.6h-3c-0.2-1.2-0.5-2.3-0.9-3.5s-1.1-2.3-1.8-3.4l2.2-2.1
c1,1.3,1.8,2.8,2.3,4.3C41.4,20.3,41.8,21.9,42,23.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 49.1" style="enable-background:new 0 0 48 49.1;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M20.3,34c-0.7,0.8-1.6,1.2-2.6,1.2c-1,0-1.9-0.3-2.7-1c-0.8-0.7-1.2-1.6-1.2-2.6c0-1,0.3-1.9,1-2.7
c0.7-0.8,1.6-1.2,2.6-1.2s1.9,0.3,2.7,1c0.8,0.7,1.2,1.6,1.2,2.6S21,33.3,20.3,34z M27.3,40.6c-2.5,2.7-5.6,4.1-9.3,4.2
c-3.7,0.1-6.9-1.1-9.6-3.6s-4.1-5.7-4.2-9.3c-0.1-3.7,1.1-6.9,3.6-9.6c1.8-1.9,3.9-3.2,6.2-3.8c2.3-0.6,4.8-0.4,7.4,0.5L35,4.5
l8.9-0.3l-0.2,12.6L37.7,18L37,24l-5.3,0.8l-1.9,2.1c1,2.2,1.3,4.5,1,6.9S29.3,38.4,27.3,40.6L27.3,40.6z M24.8,38.3
c1.5-1.6,2.3-3.5,2.5-5.8s-0.3-4.4-1.6-6.3l4.3-4.6l3.9-0.5l0.8-6l5.6-1l0-6.5l-4,0.1L22.3,22.9c-1.8-1.1-3.9-1.5-6.2-1.2
s-4.3,1.2-5.8,2.9c-1.9,2-2.8,4.4-2.7,7.2c0.1,2.7,1.1,5.1,3.2,7c2,1.9,4.4,2.8,7.2,2.7C20.6,41.4,22.9,40.3,24.8,38.3L24.8,38.3z"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M9.5,36.7c-0.8,0-1.4-0.3-2-0.8c-0.5-0.5-0.8-1.2-0.8-2V16.3c0-0.8,0.3-1.4,0.8-2c0.5-0.5,1.2-0.8,2-0.8H12V9.7
c0-2.2,0.8-4.1,2.4-5.7c1.6-1.6,3.5-2.4,5.7-2.4c2.2,0,4.1,0.8,5.7,2.4C27.3,5.6,28,7.5,28,9.7v3.8h2.5c0.8,0,1.4,0.3,2,0.8
c0.5,0.5,0.8,1.2,0.8,2v17.6c0,0.8-0.3,1.4-0.8,2c-0.5,0.5-1.2,0.8-2,0.8H9.5z M20,28.3c0.9,0,1.7-0.3,2.3-0.9c0.6-0.6,1-1.4,1-2.3
c0-0.9-0.3-1.6-1-2.3c-0.6-0.7-1.4-1-2.3-1s-1.7,0.3-2.3,1c-0.6,0.7-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.2C18.3,28,19.1,28.3,20,28.3z
M14.7,13.5h10.6V9.7c0-1.4-0.5-2.7-1.5-3.7S21.5,4.5,20,4.5S17.3,5,16.2,6s-1.5,2.3-1.5,3.7V13.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M11,16.3h19.5v-4.8c0-1.8-0.6-3.3-1.9-4.6C27.3,5.6,25.8,5,24,5c-1.8,0-3.3,0.6-4.6,1.9
c-1.3,1.3-1.9,2.8-1.9,4.6h-3c0-2.6,0.9-4.9,2.8-6.7C19.1,2.9,21.4,2,24,2s4.9,0.9,6.7,2.8s2.8,4.1,2.8,6.7v4.8H37
c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1V41c0,0.8-0.3,1.5-0.9,2.1C38.5,43.7,37.8,44,37,44H11c-0.8,0-1.5-0.3-2.1-0.9
C8.3,42.5,8,41.8,8,41V19.3c0-0.8,0.3-1.5,0.9-2.1C9.5,16.6,10.2,16.3,11,16.3z M11,41h26V19.3H11V41z M24,34c1.1,0,2-0.4,2.7-1.1
c0.8-0.7,1.1-1.6,1.1-2.6c0-1-0.4-1.9-1.1-2.7s-1.7-1.2-2.7-1.2s-2,0.4-2.7,1.2s-1.1,1.7-1.1,2.8c0,1,0.4,1.9,1.1,2.6S22.9,34,24,34
z M11,41V19.3V41z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M19.7,23.6c-2.3,0-4.3-0.7-5.8-2.2s-2.2-3.4-2.2-5.8s0.7-4.3,2.2-5.8s3.4-2.2,5.8-2.2s4.3,0.7,5.8,2.2
s2.2,3.4,2.2,5.8s-0.7,4.3-2.2,5.8S22.1,23.6,19.7,23.6z M2.7,40.7v-5c0-1.2,0.3-2.4,0.9-3.4s1.5-1.8,2.7-2.3c2.6-1.1,4.9-2,7.1-2.5
s4.3-0.7,6.3-0.7H21c-0.2,0.5-0.4,1-0.5,1.5s-0.2,1.1-0.3,1.7h-0.5c-2.1,0-4.1,0.2-6,0.7s-4,1.2-6.1,2.2c-0.6,0.3-1,0.7-1.3,1.2
c-0.3,0.5-0.4,1-0.4,1.6v1.8h14.3c0.2,0.6,0.4,1.2,0.6,1.7c0.2,0.5,0.6,1,0.9,1.5H2.7z M34,43.1l-0.5-3.5c-0.6-0.2-1.2-0.4-1.8-0.8
s-1.1-0.7-1.6-1.1l-2.9,0.6l-1.3-2.2l2.5-2.3c-0.1-0.3-0.1-0.8-0.1-1.3s0-1,0.1-1.3l-2.5-2.3l1.3-2.2l2.9,0.6c0.4-0.4,1-0.8,1.6-1.1
c0.6-0.3,1.2-0.6,1.8-0.8l0.5-3.5h2.9l0.5,3.5c0.6,0.2,1.2,0.4,1.8,0.8c0.6,0.3,1.1,0.7,1.6,1.1l2.9-0.6l1.3,2.2L42.6,31
c0.1,0.3,0.1,0.8,0.1,1.3s0,1-0.1,1.3l2.5,2.3l-1.3,2.2l-2.9-0.6c-0.4,0.4-1,0.8-1.6,1.1c-0.6,0.3-1.2,0.6-1.8,0.8l-0.5,3.5H34z
M35.4,36.6c1.3,0,2.3-0.4,3.1-1.2s1.2-1.8,1.2-3.1c0-1.3-0.4-2.3-1.2-3.1c-0.8-0.8-1.8-1.2-3.1-1.2c-1.3,0-2.3,0.4-3.1,1.2
c-0.8,0.8-1.2,1.8-1.2,3.1c0,1.3,0.4,2.3,1.2,3.1C33.1,36.3,34.1,36.6,35.4,36.6z M19.7,20.4c1.4,0,2.5-0.5,3.4-1.4s1.4-2.1,1.4-3.4
s-0.5-2.5-1.4-3.4c-0.9-0.9-2.1-1.4-3.4-1.4s-2.5,0.5-3.4,1.4c-0.9,0.9-1.4,2.1-1.4,3.4s0.5,2.5,1.4,3.4
C17.2,20,18.4,20.4,19.7,20.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M30.1,39.4h1.9v-7h-1.9V39.4z M31,30.6c0.2,0,0.5-0.1,0.7-0.3c0.2-0.2,0.3-0.4,0.3-0.7s-0.1-0.5-0.3-0.7
c-0.2-0.2-0.4-0.3-0.7-0.3c-0.3,0-0.5,0.1-0.7,0.3c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7C30.5,30.5,30.7,30.6,31,30.6z
M10,8.1v13.8v-0.2v18.2V8.1v8.7V8.1z M14.6,26.8h7.8c0.4-0.5,0.8-1,1.3-1.5c0.5-0.5,1-0.9,1.5-1.3H14.6V26.8z M14.6,34.7h5.7
c-0.1-0.4-0.1-0.9-0.1-1.4c0-0.5,0.1-1,0.1-1.4h-5.8V34.7z M10,42.7c-0.7,0-1.4-0.3-2-0.8s-0.8-1.2-0.8-2V8.1c0-0.7,0.3-1.4,0.8-2
s1.2-0.8,2-0.8h16.8l10.2,10.2v7.2c-0.4-0.2-0.9-0.4-1.4-0.5c-0.5-0.2-0.9-0.3-1.4-0.4v-5.1h-8.8V8.1H10v31.7h12.1
c0.3,0.5,0.7,1,1.1,1.5c0.4,0.5,0.9,0.9,1.4,1.3H10z M32.2,24.5c2.5,0,4.6,0.9,6.4,2.6c1.8,1.8,2.6,3.9,2.6,6.4s-0.9,4.6-2.6,6.4
c-1.8,1.8-3.9,2.6-6.4,2.6s-4.6-0.9-6.4-2.6c-1.8-1.8-2.6-3.9-2.6-6.4s0.9-4.6,2.6-6.4C27.5,25.4,29.7,24.5,32.2,24.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M19.1,32.5L32.5,24l-13.4-8.5V32.5z M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4
C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3
s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z
M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12
c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 963 B

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M13.3,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7s-1.3,0.2-1.8,0.7
s-0.7,1.1-0.7,1.8c0,0.7,0.2,1.3,0.7,1.8S12.6,26.5,13.3,26.5z M24,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8
c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7c-0.7,0-1.3,0.2-1.8,0.7s-0.7,1.1-0.7,1.8c0,0.7,0.2,1.3,0.7,1.8S23.3,26.5,24,26.5z
M34.7,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7s-1.3,0.2-1.8,0.7s-0.7,1.1-0.7,1.8
c0,0.7,0.2,1.3,0.7,1.8S34,26.5,34.7,26.5z M24,44c-2.8,0-5.3-0.5-7.8-1.6c-2.4-1-4.5-2.5-6.4-4.3s-3.2-3.9-4.3-6.4
c-1-2.4-1.5-5-1.5-7.7s0.5-5.4,1.6-7.8c1-2.4,2.5-4.5,4.3-6.3s3.9-3.2,6.4-4.3C18.7,4.5,21.3,4,24,4s5.4,0.5,7.8,1.6
c2.4,1,4.5,2.5,6.3,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8s-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.5-4.3,6.4c-1.8,1.8-3.9,3.2-6.4,4.3
C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.7-1.7,12-5s5-7.3,5-12.1s-1.6-8.7-4.9-12C32.8,8.6,28.7,7,24,7s-8.7,1.6-12,4.9
S7,19.3,7,24s1.7,8.7,5,12S19.3,41,24,41z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M36.5,28v-6.5H30v-3h6.5V12h3v6.5H46v3h-6.5V28H36.5z M18,23.9c-2.2,0-4-0.7-5.4-2.1s-2.1-3.2-2.1-5.4
s0.7-4,2.1-5.4s3.2-2.1,5.4-2.1s4,0.7,5.4,2.1c1.4,1.4,2.1,3.2,2.1,5.4s-0.7,4-2.1,5.4C22,23.2,20.2,23.9,18,23.9z M2,40v-4.7
c0-1.2,0.3-2.2,0.9-3.2c0.6-0.9,1.4-1.7,2.5-2.1c2.5-1.1,4.7-1.9,6.7-2.3C14,27.2,16,27,18,27c2,0,4,0.2,5.9,0.7
c1.9,0.4,4.2,1.2,6.7,2.3c1.1,0.5,1.9,1.2,2.6,2.2c0.6,0.9,0.9,2,0.9,3.1V40H2z M5,37h26v-1.7c0-0.5-0.1-1-0.4-1.5
c-0.3-0.5-0.7-0.8-1.2-1.1c-2.4-1.1-4.4-1.8-6-2.2C21.7,30.2,19.9,30,18,30s-3.7,0.2-5.4,0.5c-1.6,0.3-3.7,1.1-6,2.2
c-0.5,0.2-0.9,0.6-1.2,1.1S5,34.8,5,35.3V37z M18,20.9c1.3,0,2.4-0.4,3.2-1.3s1.3-1.9,1.3-3.2s-0.4-2.4-1.3-3.2
c-0.9-0.8-1.9-1.3-3.2-1.3c-1.3,0-2.4,0.4-3.2,1.3c-0.9,0.9-1.3,1.9-1.3,3.2s0.4,2.4,1.3,3.2C15.6,20.5,16.7,20.9,18,20.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M9,42c-0.8,0-1.5-0.3-2.1-0.9C6.3,40.5,6,39.8,6,39V9c0-0.8,0.3-1.5,0.9-2.1S8.2,6,9,6h19.7v3H9v30h30V19.3h3
V39c0,0.8-0.3,1.5-0.9,2.1C40.5,41.7,39.8,42,39,42H9z M16.1,34.1v-3H32v3H16.1z M16.1,27.8v-3H32v3H16.1z M16.1,21.4v-3H32v3H16.1z
M34.6,17.8v-4.4h-4.4v-3h4.4V6h3v4.4H42v3h-4.4v4.4H34.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 741 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.6.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#999999;}
</style>
<path class="st0" d="M24,44c-2.8,0-5.4-0.5-7.9-1.5s-4.5-2.5-6.3-4.2s-3.2-3.9-4.2-6.4S4,26.8,4,24s0.5-5.4,1.6-7.9S8,11.6,9.8,9.8
s3.9-3.2,6.3-4.2S21.2,4,24,4c0.4,0,0.8,0.2,1.1,0.4c0.3,0.3,0.4,0.7,0.4,1.1s-0.1,0.8-0.4,1.1C24.8,6.8,24.4,7,24,7
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12s1.7,8.7,5,12s7.3,5,12,5s8.7-1.7,12-5s5-7.3,5-12c0-0.4,0.2-0.8,0.5-1c0.3-0.3,0.7-0.5,1-0.5
c0.4,0,0.8,0.1,1,0.5c0.3,0.3,0.5,0.6,0.5,1c0,2.8-0.5,5.4-1.5,7.9s-2.5,4.6-4.2,6.4s-3.9,3.2-6.4,4.2S26.8,44,24,44z"/>
</svg>

After

Width:  |  Height:  |  Size: 897 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#A5A5A5;}
</style>
<path class="st0" d="M24,36.1c0.5,0,1-0.2,1.5-0.6s0.6-0.9,0.6-1.5c0-0.6-0.2-1-0.6-1.5s-0.9-0.6-1.5-0.6s-1,0.2-1.5,0.6
c-0.5,0.4-0.6,0.9-0.6,1.5c0,0.6,0.2,1,0.6,1.5C23,35.9,23.5,36.1,24,36.1z M22.2,27.6h3.5V12.1h-3.5V27.6z M15.1,45.6L2.8,33.2
V15.5L15.1,3.1h17.7l12.4,12.4v17.7L32.8,45.6H15.1z M16.6,42.1h14.8l10.3-10.4V17L31.4,6.6H16.6L6.2,17v14.8L16.6,42.1L16.6,42.1z"
/>
</svg>

After

Width:  |  Height:  |  Size: 801 B

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.52 42.52"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m21.26,33.01c.55,0,1.03-.21,1.45-.62s.62-.9.62-1.45-.21-1.03-.62-1.45-.9-.62-1.45-.62-1.03.21-1.45.62-.62.9-.62,1.45.21,1.03.62,1.45.9.62,1.45.62Zm-1.77-8.5h3.54v-15.53h-3.54v15.53Zm-7.09,18.01L0,30.12V12.4L12.4,0h17.72l12.4,12.4v17.72l-12.4,12.4H12.4Zm1.48-3.54h14.76l10.33-10.33v-14.76L28.64,3.54h-14.76L3.54,13.88v14.76l10.33,10.33Z"/></svg>

After

Width:  |  Height:  |  Size: 538 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M17.5,37H41v-6.8H17.5V37z M7,17.8h7.5V11H7V17.8z M7,27.2h7.5v-6.4H7V27.2z M7,37h7.5v-6.8H7V37z M17.5,27.2
H41v-6.4H17.5V27.2z M17.5,17.8H41V11H17.5V17.8z M7,40c-0.8,0-1.5-0.3-2.1-0.9C4.3,38.5,4,37.8,4,37V11c0-0.8,0.3-1.5,0.9-2.1
S6.2,8,7,8h34c0.8,0,1.5,0.3,2.1,0.9C43.7,9.5,44,10.2,44,11v26c0,0.8-0.3,1.5-0.9,2.1C42.5,39.7,41.8,40,41,40H7z"/>
</svg>

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#282828;}
</style>
<path class="st0" d="M14,38v-3h14.5c2.3,0,4.3-0.8,6-2.3c1.7-1.5,2.5-3.5,2.5-5.8s-0.8-4.2-2.5-5.8c-1.7-1.5-3.7-2.3-6-2.3H13.7
l5.7,5.7l-2.1,2.1L8,17.3L17.3,8l2.1,2.1l-5.7,5.7h14.7c3.2,0,5.9,1.1,8.2,3.2c2.3,2.1,3.4,4.8,3.4,7.9s-1.1,5.8-3.4,7.9
c-2.3,2.1-5,3.2-8.2,3.2H14z"/>
</svg>

After

Width:  |  Height:  |  Size: 699 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#0084B2;}
</style>
<path class="st0" d="M16.9,31.3H32c1.6,0,2.9-0.5,4-1.5s1.7-2.2,1.7-3.7s-0.6-2.7-1.7-3.7S33.5,21,32,21c-0.2-2.1-1-3.8-2.4-5.3
s-3.1-2.2-5.2-2.2c-1.7,0-3.3,0.5-4.7,1.4c-1.4,0.9-2.4,2.3-2.8,3.9c-1.8,0-3.3,0.6-4.6,1.8s-1.9,2.7-1.9,4.5s0.6,3.2,1.9,4.5
C13.5,30.7,15.1,31.3,16.9,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4c-1-2.4-1.5-5-1.5-7.7
c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4
c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Some files were not shown because too many files have changed in this diff Show More